さて、私は次のような簡単なコマンドを実行しています:
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
部分は、dirnameに渡されるものが1つだけであることを確認することだけです。そうしないと、失敗します。
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"
coreutilsの一部であるdirnameプログラムを使用して、パス名シーケンスの最後の部分を取り除くことができます。
dirname `find / -name ssh | grep bin`
出力します
/usr/bin
それから。