CommandShell and stream protocol

David T. Lewis lewis at
Thu Nov 22 00:06:52 UTC 2007

Hi Frits,

I am away from my computers for the holiday (USA Thanksgiving) so I
can't give you a good answer right now. But from memory, the method
PipeableOSProcess class>>command is just a convenience method that
runs the command and gives you the contents of the output stream. The
actual instances of PipeableOSProcess have the streams that you are
looking for, so if you step through your example in a debugger you
will see them.

I should mention that I have done a rewrite of most of CommandShell
which I hope will do a better job of handling piping and other issues.
This is on SqueakSource, but I have not gotten around to releasing
it on SqueakMap or Universes (partly because I have not updated the
documentation). Nevertheless, if you are interested in experimenting
with pipes and OS process pipelines, you may want to try loading the
latest versions of OSProcess and CommandShell directly from SqueakSource.


On Wed, Nov 21, 2007 at 03:18:41PM -0800, frits.swinkels wrote:
> I installed CommandShell in a small 3.7 image.
> On evaluating the following line in a bash shell I get a 4 lines 
> response of file paths
> find /home/frits/DB -exec grep -q "France" ''{}'' \; -print
> When I evaluate
> command := PipeableOSProcess command: ' find /home/frits/DB -exec grep 
> -q "France" ''{}'' \; -print' . in a workspace I get a string with the 
> correct 4 file names separated by ASCII 10.
> The documentation (almost unique in the Squeak world, thanks;) states 
> that there are three streams: input output and error. Thus I expected to 
> use a stream protocol like:
> command := PipeableOSProcess etc
> output := command output.
> [output atEnd] whileFalse: [ output next......]
> and get myself a list (and not a string) of file names.
> I must misunderstand something. Any way of achieving such an result: 
> e.g. a pipe which blocks till items are removed?
> (I googled and searched the archives, no luck although I believe this 
> must have come up before.)

More information about the Squeak-dev mailing list