假设:
然后,
which f | cat
显示~/f
。因此cat
此处适用于~/f
的引文,与cat ~/f
不同。
我的问题是:如何使用由which
和cat
组成的一个命令来实现cat ~/f
的结果?如果我事先不知道which f
的结果,使用这种构图可能非常方便。目前,如果我事先不知道which f
的结果,我必须先调用which f
,然后将结果复制粘贴到Feed less
。
相关问题是:如何将which f
的结果分配给变量?
非常感谢!
答案 0 :(得分:2)
尝试:
cat `which ~/f`
对于相关问题:
foo=`which ~/f`
echo $foo
答案 1 :(得分:1)
cat "`which f`"
答案 2 :(得分:0)
在bash
中也是如此:
cat "$(which f)"
var="$(which f)"
答案 3 :(得分:0)
你想要的是:
cat `which f`
答案 4 :(得分:0)
在bash
中,您可以使用:
cat "$(which f)"
输出f
找到的which
的内容。这与反引号解决方案一样,在$(...)
中获取命令的输出,并将其用作cat
命令的参数。
我更喜欢$(...)
到反引号方法,因为前者可以嵌套在更复杂的情况下。
将which
的输出分配给变量的过程类似:
full_f="$(which f)"
在这两种情况下,最好在f
的情况下使用引号,或者它的路径包含空格,因为该犯罪是令人发指的: - )
当我想在给定的子目录下编辑一小组具有相似名称的文件时,我经常使用类似的技巧:
vim $(find . -type f -name Makefile)
这将为我提供所有makefile的单个vim
会话(显然,如果有大量的,我将使用sed
或perl
来大量修改它们而不是vim
)。
答案 5 :(得分:0)
在which f | cat
中,cat
程序会在标准输入上获得which f
的输出。然后只传递标准输入,因此结果与普通which f
相同。在调用cat ~/f
中,数据作为参数传递给命令。然后cat
打开文件~/f
并显示其内容。
要将which f
的输出作为cat
的参数,您可以像其他人一样回答,使用反引号或$()
:
cat `which f`
cat $(which f)
这里shell获取which f
的输出并将其作为cat
的参数插入。
答案 6 :(得分:0)
cat
将文件内容回显到标准输出。当您编写stuff | cat
时,文件cat工作是标准输入,它连接到stuff
的输出(因为管道是文件,就像unix中的其他所有文件一样)。
在lisp程序员使用单词的意义上没有引用。