[vox-tech] writing to a shell instance

Bill Broadley bill at broadley.org
Wed Oct 26 19:27:18 PDT 2011


I was wondering if I could get this down to just a few lines of code
then realized that the shell should be able to handle this.  Turns out
it works okay.

In terminal a:
$  while /bin/true; do echo date; sleep 1; done  | nc localhost 9999

In terminal b I run:
( nc -d  -l 9999 & cat) | bash

And I see
Wed Oct 26 19:21:54 PDT 2011
Wed Oct 26 19:21:55 PDT 2011
Wed Oct 26 19:21:56 PDT 2011
Wed Oct 26 19:21:57 PDT 2011

In terminal b if I say ls -al:
Wed Oct 26 19:23:09 PDT 2011
ls -al
total 16
drwxrwsr-x   2 bill bill  4096 2011-10-26 19:18 .
drwxrwsr-x 143 bill bill 12288 2011-10-26 19:18 ..
-rw-rw-r--   1 bill bill     0 2011-10-26 19:18 filea
-rw-rw-r--   1 bill bill     0 2011-10-26 19:18 fileb
Wed Oct 26 19:23:10 PDT 2011

A nice side effect is if I type slowly in terminal B:
Wed Oct 26 19:24:26 PDT 2011
tWed Oct 26 19:24:27 PDT 2011
oWed Oct 26 19:24:28 PDT 2011
uWed Oct 26 19:24:29 PDT 2011
cWed Oct 26 19:24:30 PDT 2011
hWed Oct 26 19:24:31 PDT 2011
 fWed Oct 26 19:24:32 PDT 2011
ilecWed Oct 26 19:24:33 PDT 2011

Wed Oct 26 19:24:34 PDT 2011
ls
filea  fileb  filec
Wed Oct 26 19:24:35 PDT 2011

So basically the buffering means that the streams don't stomp on each
other unnecessarily.  Assuming there's a nc/bash port to windows or a
functional equivalent it should work there as well.

Not pretty, but it seems workable.  You could of course have perl/python
send or receive in either terminal A or B.


More information about the vox-tech mailing list