我回答了这个问题但意识到情况还可以变得更好。
我如何转换:
$ 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
其他地方,这可能会成为一个问题