关于Linux命令的组成

时间:2010-01-24 03:35:51

标签: linux command composition

假设:

  1. 文件f的路径是〜/ f
  2. “f”表示“〜/ f”,
  3. 然后,

    which f | cat显示~/f。因此cat此处适用于~/f的引文,与cat ~/f不同。

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

    相关问题是:如何将which f的结果分配给变量?

    非常感谢!

7 个答案:

答案 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会话(显然,如果有大量的,我将使用sedperl来大量修改它们而不是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程序员使用单词的意义上没有引用。