有时,我需要指定标准 IO 流 ( stdin, stdout, stderr)之一的“等效路径” 。因为我 99% 的时间都在使用 Linux,所以我只是/dev/在准备 get/dev/stdin等,而这“似乎做对了”。但是,一方面,我一直对这样的理由感到不安(因为,当然,“它似乎有效”,直到它没有为止)。此外,我对这种操作的便携性没有很好的了解。
所以我有几个问题:
在Linux中的情况下,它是安全(是/否)划上等号stdin,
stdout以及stderr用/dev/stdin,/dev/stdout和
/dev/stderr?
更一般地说,这个等价物是否“足够便携”?
我找不到任何 POSIX 参考。
根据 man 定义,此命令从文件中获取输入。
$ command -r FILENAME
Run Code Online (Sandbox Code Playgroud)
假设这FILENAME是一个包含文件名列表的文件,因为它是使用ls > FILENAME.
相反,我如何ls直接将结果提供给命令?在我看来,这样的事情应该是可能的:
$ ls | command -r
但事实并非如此, 的输出ls不会作为参数被挂钩。输出:
Usage: command -r FILENAME
error: -r option requires an argument
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得想要的效果?