好的,我正在运行这样一个简单的命令:
find / -name ssh | grep bin
输出就是:
/usr/bin/ssh
现在我想让它看起来像这样,当我cd到它
/usr/bin/
我无法弄清楚如何让它变得聪明,因为我可以强制它只为这个工作,但是当我想在不同的机器上运行相同的代码并且ssh的位置在其他地方时呢。
答案 0 :(得分:3)
你不想要这个吗?
cd $(dirname $(which ssh));
答案 1 :(得分:2)
dirname是你在找什么?
$ dirname `find / -name ssh | grep bin | head -1`
/usr/bin
head -1
部分只是为了确保只有一件事传递给dirname,否则会失败。
答案 2 :(得分:0)
如果您要查找ssh
命令所在的位置,您可以选择以下几种方法:
which ssh
和
whereis ssh
会为您提供此信息(which
将为您提供单一路径,而whereis
将包含所有引用ssh
的路径)
对于find
命令,更改在find
命令中指定的(起始)目录:
find /usr/bin -name ssh
将在/ usr / bin目录中开始搜索。
这是你想要做的吗?我不是百分百肯定我理解你帖子的最后一部分。如果没有,你能考虑改写它吗?
答案 3 :(得分:0)
find / -name ssh|grep bin|xargs dirname
答案 4 :(得分:0)
您可以使用 xargs 获取命令的目录部分。
find / | filter1 | xargs -I_VAR_ dirname _VAR_
答案 5 :(得分:0)
find / -name ssh | grep bin|sed "s/ssh//g"
答案 6 :(得分:0)
dirname 程序是coreutils的一部分,可用于去除路径名序列中的最后一部分:
dirname `find / -name ssh | grep bin`
将输出
/usr/bin
然后