好的,所以我正在运行一个像这样的简单命令:
find / -name ssh | grep bin
的输出是这样的:
/usr/bin/ssh
现在我想让它看起来像这样,当我 cd 到它时
/usr/bin/
我不知道如何让它变得聪明,因为我可以强制它只为这个工作,但是当我想在另一台机器上运行相同的代码并且 ssh 的位置在别处时怎么办。
你不想要这个吗?
cd $(dirname $(which ssh));
dirname 是您要查找的内容吗?
$ dirname `find / -name ssh | grep bin | head -1`
/usr/bin
这head -1
部分只是为了确保只有 1 个东西被传递给 dirname,否则它将失败。
dirname程序是 coreutils的一部分,可用于去除路径名序列中的最后一部分:
dirname `find / -name ssh | grep bin`
将输出
/usr/bin
然后。
如果您试图找到ssh
命令所在的位置,您有几个选择:
which ssh
和
whereis ssh
将为您提供此信息(which
将为您提供一条路径,同时whereis
将包含所有引用的路径ssh
)
至于find
命令,更改您在命令中指定的(起始)目录find
:
find /usr/bin -name ssh
将在 /usr/bin 目录中开始搜索。
这是你想要做的吗?我不是 100% 确定我理解了你帖子的最后一部分。如果没有,您可以考虑改写它吗?
find / -name ssh|grep bin|xargs dirname
您可以使用xargs获取命令的目录部分。
find / | filter1 | xargs -I_VAR_ dirname _VAR_
find / -name ssh | grep bin|sed "s/ssh//g"