我试图通过此命令传递which env
to的结果,但似乎我不理解整个概念。nano
nano < which env
当我执行此操作时,我假设:which env
STDOUT 将转到nano
STDIN。所以这将等于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
一下。详细信息请参见
为什么不用“哪个”呢?那该用什么呢?