2 ms·
The <() is a Bashism isn't it?
by toastal 6y ago
The <() is a Bashism isn't it?
- gravitas 6y ago< is a redirect operator, the out of the item on the right is redirected to the in of the item on the left; () are just grouping operators like math to ensure that bit is self contained inline for the parser.
- inyourtenement 6y agoThat might be a way to remember what it does, but I don't think that's how it works. Try doing `echo <(ls)` to see how it differs. Or, from the manpage: > Process substitution is supported on systems that support named pipes (FIFOs) or the /dev/fd method of naming open files. It takes the form of <(list) or >(list). The process list is run with its input or output connected to a FIFO or some file in /dev/fd. The name of this file is passed as an argument to the current command as the result of the expansion. If the >(list) form is used, writing to the file will provide input for list. If the <(list) form is used, the file passed as an argument should be read to obtain the output of list.
- spyc 6y agoYes. See "Process Substitution" in "man bash". It works great, e.g. with diff (or meld): # diff -u <(echo $'one\ntwo') <(echo one) --- /dev/fd/63 2020-08-13 16:14:44.449379498 +0200 +++ /dev/fd/62 2020-08-13 16:14:44.450379506 +0200 @@ -1,2 +1 @@ one -two
- toastal 6y agoGotcha. I wanted to know if it was POSIX compliant (it wasn't clear to me last time I looked it up).