Bagaimana cara mengarahkan output ke cd?

11

Apakah mungkin untuk mengarahkan output perintah cd? Sebagai contoh, saya mencari direktori menggunakan locatedan mendapatkan path ke sana. Sekarang, alih-alih menulis cdlintasan, dapatkah saya mengarahkan ulang locatehasilnya cd?

Saya mencoba ini:

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

Tidak berhasil Ini mungkin tidak terlalu berguna, tapi saya penasaran.

oli206
sumber

Jawaban:

16

Anda ingin penggantian perintah, bukan pengalihan:

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

Bit antara $(dan )dijalankan sebagai perintah dan output (dilucuti dari setiap baris baru) diganti dengan perintah keseluruhan.

Ini juga dapat dilakukan dengan 'kutu belakang' ("` "):

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

Sintaks dolar-paren umumnya lebih disukai karena lebih mudah untuk dihadapi dalam situasi bersarang:

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