Hi List!
I have a question about piping in fish. In the documentation I read
under “Piping“:
Pipes usually connect file descriptor 1 (standard output) of the
first process to file descriptor 0 (standard input) of the second
process. It is possible use a different output file descriptor by
prepending the desired FD number and then output redirect symbol to
the pipe.
I made a little script to test this:
ea@heldphd6 ~> cat ./oe
#!/usr/bin/perl -l
print STDOUT out;
print STDERR err;
Then, as I would expect:
ea@heldphd6 ~> ./oe | cat -n
err
1 out
ea@heldphd6 ~> ./oe ^| cat -n
out
1 err
The problem I was trying to solve is: How do I pipe both STDERR and
STDOUT?
These do not work:
ea@heldphd6 ~> ./oe ^&1 | cat -n
err
1 out
ea@heldphd6 ~> ./oe 2>/dev/stdout | cat -n
err
1 out
Of course a named pipe works
ea@heldphd6 ~> mkfifo p
ea@heldphd6 ~> ./oe ^p >p & cat -n p
1 err
2 out
but this seems needlessly complicated.
While I was trying to figure this out, I noticed some strange
behavior:
ea@heldphd6 ~> ./oe | true
ea@heldphd6 ~> ./oe | true
err
ea@heldphd6 ~> ./oe | true
err
ea@heldphd6 ~> ./oe | true
ea@heldphd6 ~> ./oe | true
ea@heldphd6 ~> ./oe | true
err
ea@heldphd6 ~> ./oe | true
ea@heldphd6 ~> ./oe | true
ea@heldphd6 ~> ./oe | true
ea@heldphd6 ~> ./oe | true
err
ea@heldphd6 ~> ./oe | true
ea@heldphd6 ~> ./oe | true
ea@heldphd6 ~> ./oe | true
ea@heldphd6 ~> ./oe | true
ea@heldphd6 ~> ./oe | true
ea@heldphd6 ~> ./oe | true
ea@heldphd6 ~> ./oe | true
ea@heldphd6 ~> ./oe | true
err⏎
Note how ‘err’ is printed only sometimes, and the “carriage return”
sign was printed only once. The same thing happened with /bin/echo.
If I continue doing this for a while, fish crashes. (Specifically, it
crashes when I press the ‘up’ key. There were no crashes using
‘cat’.)
Using the builtin ‘echo’, ‘err’ is always printed, but the crashes
happen much more quickly.
Note: I am using fish 2.0.0.
Elias
------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT
organizations don't have a clear picture of how application performance
affects their revenue. With AppDynamics, you get 100% visibility into your
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
Fish-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/fish-users