0

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

find / -name ssh | grep bin

的输出是这样的:

/usr/bin/ssh

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

/usr/bin/

我不知道如何让它变得聪明,因为我可以强制它只为这个工作,但是当我想在另一台机器上运行相同的代码并且 ssh 的位置在别处时怎么办。

4

7 回答 7

3

你不想要这个吗?

cd $(dirname $(which ssh));
于 2012-06-20T17:27:41.810 回答
2

dirname 是您要查找的内容吗?

$ dirname `find / -name ssh | grep bin | head -1`
/usr/bin

head -1部分只是为了确保只有 1 个东西被传递给 dirname,否则它将失败。

于 2012-06-20T17:28:59.287 回答
0

dirname程序是 coreutils的一部分,可用于去除路径名序列中的最后一部分:

dirname `find / -name ssh | grep bin`

将输出

/usr/bin

然后。

于 2012-06-20T17:46:14.623 回答
0

如果您试图找到ssh命令所在的位置,您有几个选择:

  which ssh

  whereis ssh

将为您提供此信息(which将为您提供一条路径,同时whereis将包含所有引用的路径ssh

至于find命令,更改您在命令中指定的(起始)目录find

  find /usr/bin -name ssh

将在 /usr/bin 目录中开始搜索。

这是你想要做的吗?我不是 100% 确定我理解了你帖子的最后一部分。如果没有,您可以考虑改写它吗?

于 2012-06-20T17:25:38.113 回答
0
find / -name ssh|grep bin|xargs dirname
于 2012-06-20T17:28:29.340 回答
0

您可以使用xargs获取命令的目录部分。

find / | filter1 | xargs -I_VAR_ dirname _VAR_
于 2012-06-20T17:30:05.813 回答
0
find / -name ssh | grep bin|sed "s/ssh//g"
于 2012-06-20T17:30:17.350 回答