在linux中查找命令

时间:2012-06-20 17:24:28

标签: linux shell unix find

好的,我正在运行这样一个简单的命令:

find / -name ssh | grep bin

输出就是:

/usr/bin/ssh

现在我想让它看起来像这样,当我cd到它

/usr/bin/

我无法弄清楚如何让它变得聪明,因为我可以强制它只为这个工作,但是当我想在不同的机器上运行相同的代码并且ssh的位置在其他地方时呢。

7 个答案:

答案 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

然后