出力をCDにリダイレクトする方法は?

出力をCDにリダイレクトする方法は?

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

私はこれを試しました:

$ 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
$ 

不運。これは特に役に立たないかもしれませんが、気になります。

答え1

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

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

$(との間のビットは)コマンドとして実行され、出力(最後の改行を除く)はコマンド全体に置き換えられます。

「バックティック」(「``」)を使用してこれを行うこともできます。

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

ドル角かっこ構文は、入れ子になった場合に扱いやすいため、一般的に好まれます。

# contrived
cd "$(grep '^dir: ' "$(locate interesting-places | head -1)" | sed 's/^[^ ]*//')"

関連情報