Bee*_*jor 2 pipe io-redirection file-descriptors stdout stdin
考虑一个类似的命令foo -in /path/to/infile -out /path/to/outfile
,您希望将字符串传递给它而不是使用临时文件。它可能会被调用很多导致大量磁盘访问,或者与您不想将敏感数据写入磁盘(或处理加密和/或 ram 磁盘等)的加密有关。
有没有办法给它stdin并在stdout 中获得输出,
比如echo "abc" | foo -in &0 -out &1
?
我知道有一些文件描述符可以重定向数据,比如echo "foo" 1>&2
. 并且xargs
可以将字符串作为参数传递之类的东西。但是是否可以以某种方式将标准文件描述符作为文件路径传递?如果我可以将 stdin/out 作为文件读写,为什么不能获得它的“虚拟”文件路径?
您可以使用特殊的文件/dev/stdin
或/dev/fd/0
对标准输入,以及/dev/stdout
或/dev/fd/1
标准输出。
在你的例子中:
echo "abc" | foo -in /dev/fd/0 -out /dev/fd/1
Run Code Online (Sandbox Code Playgroud)
这些特殊文件的可用性取决于您使用的操作系统,但在 Linux(以及大多数 Linux 发行版)上,您应该不会在查找或使用它们时遇到问题。
这些文件是“虚拟的”,从某种意义上说,写入其中之一不会将数据写入磁盘。打开这些特殊文件之一相当于调用dup(2)系统调用,它将现有的文件描述符复制到一个新的文件描述符上。
归档时间: |
|
查看次数: |
1400 次 |
最近记录: |