假设我执行以下do工作的命令:
seq 1 100 > x
cat y_data | paste x /dev/stdin
现在,我要执行以下操作:
cat y_data | paste $(seq 1 100) /dev/stdin
但是,我处于猜测和检查模式,具有各种重定向排列。有没有办法对粘贴进行此子Shell重定向?
paste
接受文件名。您需要一些可以视为文件名的内容,并且在读取时会产生seq 1 100
的输出。
创建真实文件是一种方法。另一个是流程替换:
cat y_data | paste <(seq 1 100) /dev/stdin | less
[<(...)
将由Bash设置的管道的文件名替换,打开此文件名进行读取将读取命令的输出:
$ echo <(seq 1 3)
/dev/fd/63
$ cat <(seq 1 3)
1
2
3
您可以类似地使用>(...)
创建可以写入的文件名,以将数据通过管道传递到命令的stdin。