2010-01-24 136 views
2

的组成假设:关于Linux命令

  1. 文件f的路径是〜/ F
  2. “其中,f” 示出 “〜/ F”,

然后,

which f | cat显示~/f。因此cat适用于~/f的报价,与cat ~/f不同。

我的问题是:如何使用一个由whichcat组成的命令来实现cat ~/f的结果?当我事先不知道which f的结果时,使用这种组合可以非常方便。目前,如果我事先不知道which f的结果,我必须先调用which f,然后将结果复制粘贴到less

一个相关的问题是:如何将which f的结果赋值给一个变量?

非常感谢!

+0

谢谢大家! – zzhang 2010-01-24 20:14:29

回答

0

像这样在bash

cat "$(which f)" 
var="$(which f)" 
2

尝试:

cat `which ~/f` 

对于相关的问题:

foo=`which ~/f` 
echo $foo 
0

bash,你可以使用:

cat "$(which f)" 

输出fwhich认定的内容。这与反引号解决方案一样,将命令的输出作为$(...)内的命令,并将其用作cat命令的参数。

我更喜欢$(...)反向方法,因为前者可以嵌套在更复杂的情况。作为犯罪是

full_f="$(which f)" 

在这两种情况下,最好的情况下,f使用引号,或者它的路径,包含空格,如令人发指:

分配的which输出到一个变量同样做:-)

我经常使用类似的技巧,当我想给定的子目录下编辑一小群具有类似名称的文件:

vim $(find . -type f -name Makefile) 

这将给我一个单一的vim会话所有的makefile(显然,如果有一个很大的数字,我会用sedperl来修改它们而不是vim)。

0

which f | catcat程序在标准输入上得到which f的输出。那只是通过标准输入,所以结果与普通的which f相同。在呼叫cat ~/f中,数据作为参数传递给命令。 cat然后打开文件~/f并显示它的内容。

要获得which f输出作为参数传递给cat你可以像其他人回答,使用反引号或$()

cat `which f` 
cat $(which f) 

在这里,外壳采用的which f输出并将其作为一个参数cat

0

cat将文件的内容回显到标准输出。当你编写stuff | cat时,cat所处理的文件是标准输入,它连接到stuff的输出(因为管道是文件,就像unix中的几乎所有其他文件一样)。

从某种意义上讲,lisp程序员会使用这个词,这里没有引用。

+0

是的,的确,我在想Lisp :-) – zzhang 2010-01-24 20:15:04