2

假设:

  1. 文件 f 的路径是 ~/f
  2. "which f" 显示 "~/f",

然后,

which f | cat显示~/f。所以cat这里适用于 的引用~/f,与 不同cat ~/f

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

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

非常感谢!

4

7 回答 7

2

尝试:

cat `which ~/f`

对于相关问题:

foo=`which ~/f`
echo $foo
于 2010-01-24T03:41:46.993 回答
1

cat "`which f`"

于 2010-01-24T03:39:37.467 回答
0

像这样bash

cat "$(which f)"
var="$(which f)"
于 2010-01-24T03:39:04.800 回答
0

你想要的是:

cat `which f`
于 2010-01-24T03:40:34.273 回答
0

bash中,您可以使用:

cat "$(which f)"

输出找到的f内容which。这与反引号解决方案一样,采用其中的命令输出$(...)并将其用作cat命令的参数。

我更喜欢$(...)反引号方法,因为前者可以嵌套在更复杂的情况下。

将 的输出分配which给变量的方法类似:

full_f="$(which f)"

在这两种情况下,最好在 case 中使用引号f,或者它的路径包含空格,就像犯罪一样令人发指:-)

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

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

这将为我vim提供所有 makefile 的单个会话(显然,如果有大量,我将使用sedperl修改它们整体而不是vim)。

于 2010-01-24T03:47:39.727 回答
0

在程序中获取标准输入的which f | cat输出。然后只是通过该标准输入,因此结果与普通. 在调用中,数据作为参数传递给命令。然后打开文件并显示其内容。catwhich fwhich fcat ~/fcat~/f

正如其他人回答的那样,要获得which f作为参数的输出cat,请使用反引号或$()

cat `which f`
cat $(which f)

在这里,shell 获取 的输出which f并将其作为参数插入cat.

于 2010-01-24T03:48:49.760 回答
0

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

在 lisp 程序员使用这个词的意义上,没有引用。

于 2010-01-24T05:00:54.713 回答