command help

T

Tom Allison

Found a buddy who used something like:

hostname = open("|hostname").gets

And...

I see that it works, but I don't find any of the documentation that makes sense.

So -- it seems to be IO class, but how? There's no IO declaration there.
Also, I can't find anything that says you can open a command with a preceding
pipe and get the output of the executed command.

I'm familiar with perls open: open(FH, "hostname |") with a suffixed pipe --
which is consistent with unix pipe usage.

But can someone explain to me what's going on here so my brain doesn't implode?
 
J

Jan Svitok

Found a buddy who used something like:

hostname = open("|hostname").gets

And...

I see that it works, but I don't find any of the documentation that makes sense.

So -- it seems to be IO class, but how? There's no IO declaration there.
Also, I can't find anything that says you can open a command with a preceding
pipe and get the output of the executed command.

I'm familiar with perls open: open(FH, "hostname |") with a suffixed pipe --
which is consistent with unix pipe usage.

But can someone explain to me what's going on here so my brain doesn't implode?

http://ruby-doc.org/core/classes/Kernel.html#M001989
 
P

Pit Capitain

Tom said:
What's with the pipe being at the wrong end?
What's the thinking behind that?

You can find a short description in ri or the Pickaxe:

C:\tmp>ri IO
-------------------------------------------------------------- Class: IO
Class +IO+ is the basis for all input and output in Ruby. An I/O
stream may be _duplexed_ (that is, bidirectional), and so may use
more than one native operating system stream.

Many of the examples in this section use class +File+, the only
standard subclass of +IO+. The two classes are closely associated.

As used in this section, _portname_ may take any of the following
forms.

* A plain string represents a filename suitable for the
underlying operating system.
* A string starting with ``+|+'' indicates a subprocess. The
remainder of the string following the ``+|+'' is invoked as a
process with appropriate input/output channels connected to it.
* A string equal to ``+|-+'' will create another Ruby instance as
a subprocess.

Regards,
Pit
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,214
Messages
2,571,112
Members
47,704
Latest member
DavidSuita

Latest Threads

Top