Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

You will want to read the man pages. 'pee' is straightforward to understand if you already understand 'tee'. 'pee' is used to pipe output from one command to two downstream commands.

https://en.wikipedia.org/wiki/Tee_(command)



I know tee but have no idea what pee would do considering this description.

From your description I guess something like « pee a b » would be the same as « a | b »? If so that’s cool, but the one line descriptions definitely need a rework.


It loosely follows the same metaphor as the T-shaped pipe connector that 'tee' is named for.

    $ seq 3 | tee somefile
    1
    2
    3

            ╔═somefile
    seq═tee═╣    
            ╚═stdout


    $ seq 10 | pee 'head -n 3' 'tail -n 3'
    1
    2
    3
    8 
    9
    10


            ╔═head═╗
    seq═pee═╣      ╠═stdout
            ╚═tail═╝


I believe it's more like `a | pee b x y z | c`. This would run `b x y x` as well as `c` using the output from `a`.

I think Zsh supports this natively with its "multios" option, `a > >(b c y z) > >(c)`. But then you have to write the rest of your pipe inside the ().


I can only guess from that description is that it is the cat command.


The unix shell was designed to optimize for simple pipes. to make pipe networks you usually have to use named pipes, aka fifos.

I once had to use an IBM mainframe shell(cms If I remember correctly) which had pipes however IBM in their infinite wisdom decided to make the pipe network the primary interface, while this made complex pipes a bit less awkward, simple(single output) pipes were wordy compared to the unix equivalent.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: