如何对“which”返回的文件名进行“cat”?

如何对“which”返回的文件名进行“cat”?

我回答了这个问题但意识到情况还可以变得更好。

我如何转换:

$ which gjslint
$ cat /usr/local/bin/gjslint

变成这样:

$ cat < which gjslint
-bash: which: No such file or directory

..以便将输出路径+文件名which传递到cat它然后执行其工作(即将文件名的内容打印到屏幕上)。

答案1

使用反引号:

cat `which gjslint`

如果路径包含空格(默认路径不太可能),则需要将其放在括号中:

cat "`which gjslint`"

另一种方法是cat "$(which gjslint)"。我使用反引号而不是 的原因$()是它更容易打字,一只手敲两次键,而两只手敲四次键。我知道使用 的缺点`$()但这些缺点不适用于这种情况。您不会嵌套反引号或使用斜线来快速查找程序。

答案2

您在链接的问题中所拥有的是:

$ cat $(which gjslint) | grep [0-9] --color=always

您可以做的是:

$ grep '[0-9]' --color=always "$(which gjslint)"

有几点需要注意:

  • 无需cat归档。grep以文件作为参数
  • 用单引号括住你的正则表达式;这样做的原因是 shell 会尝试将其扩展[0-9]为文件名。如果有文件 0、1、2、3 等等到 9,shell 会将你的命令扩展为grep 0 1 2 3 ...和其余的参数。尝试这样做 - touch 0 1 2 && stat [0-2],你会看到。如果你需要将输出传递到grep其他地方,这可能会成为一个问题

相关内容