出力をCDにリダイレクトするにはどうすればよいですか?


11

コマンドの出力をにリダイレクトすることは可能cdですか?たとえば、を使用してディレクトリを検索し、locateそのパスを取得しました。これで、cdパスを書き込む代わりに、locate出力をにリダイレクトできcdますか?

私はこれを試しました:

$ locate Descargas | grep Descargas$
/home/oliver/Descargas
$ locate Descargas | grep Descargas$ | cd
$ locate Descargas | grep Descargas$ > cd
$ locate Descargas | grep Descargas$ < cd
/home/oliver/Descargas
$ 

運が悪い。これは特に便利ではないかもしれませんが、私は興味があります。

回答:


16

リダイレクトではなく、コマンド置換が必要です。

cd "$(locate Descargas | grep -F 'Descargas$')"

間のビット$()コマンドとして実行され、(最終的な改行を取り除いた)出力は、全体的なコマンドに置換されています。

これは、「バックティック」(「 `」)でも実行できます。

cd "`locate Descargas | grep -F 'Descargas$'`"

ネストされた状況での扱いが容易になるため、ドル括弧の構文が一般的に推奨されます。

# contrived
cd "$(grep '^dir: ' "$(locate interesting-places | head -1)" | sed 's/^[^ ]*//')"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.