输出重定向、管道和``

输出重定向、管道和``

我试图通过此命令传递which envto的结果,但似乎我不理解整个概念。nanonano < which env

当我执行此操作时,我假设:which envSTDOUT 将转到nanoSTDIN。所以这将等于nano /some/path.但显然,我错了。

我也尝试了which env | nano相同的目的,但输出是:

收到 SIGHUP 或 SIGTERM

有人可以澄清这一点吗?

答案1

nano与大多数文本编辑器一样,期望将文件名作为其命令行参数进行编辑,而不是作为标准输入。

$ which env | nano    # pass as standard input, does not work
$ nano "$(which env)" # pass as command-line argument, works

所以它不起作用,因为这不是 nano 期望的使用方式。

对于某些编辑器(显然不是您的 nano 版本),您可以使用:

$ which env | some-other-editor -  # note hyphen as file name

编辑作为文本的标准输入(您将使用字符串“/usr/bin/env”编辑文档,而不是程序 /usr/bin/env 本身)。

另外,如果您想将标准输入上的分隔名称更改为参数,xargs我们将为您做到这一点。

PS:which并不总是做你想做的事,而是要考虑command -v一下。详细信息请参见 为什么不用“哪个”呢?那该用什么呢?

相关内容