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部分は、dirnameに渡されるものが1つだけであることを確認することだけです。そうしないと、失敗します。

于 2012-06-20T17:28:59.287 に答える
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 に答える
0

coreutilsの一部であるdirnameプログラムを使用して、パス名シーケンスの最後の部分を取り除くことができます。

dirname `find / -name ssh | grep bin`

出力します

/usr/bin

それから。

于 2012-06-20T17:46:14.623 に答える