Katakan jika saya harus sering melakukan ini:
cd ../../../../foo/sub1/bar/dest/
cd ../../../../foo2/sub1/bar/dest/
cd ../../../../foo3/sub1/bar/dest/
cd ../../../../foo/sub1/bar/dest/
Apakah ada cara yang lebih cepat untuk tidak selalu mengetik ../../../../
berkali-kali? Adakah ide kreatif?
cd ../../../..
dan menyelesaikannya saja?pushd
danpopd
atau bahkancd -
.cd -
( untuk pergi ke direktori terakhir ) lebih mudah. Saya biasanyaalias h="history|grep"
agar saya bisa menggunakan pintasan entri riwayat sebagai gantinya. Sesuatu sepertih foo3
, diikuti oleh!450
untuk mengulangi perintah itu.Jawaban:
Cara klasik untuk melakukan ini adalah mengatur
CDPATH
variabel. Dalam kasus Anda itu dapat diatur ke.:../../../../
atau.:/path/to/the/parent/of/foo
untuk mencapai efek yang diinginkan. Anda kemudian dapat dengan mudah melakukancd foo/sub1/bar/dest
dan sampai ke tempat yang Anda inginkan.Keuntungan dari ini adalah bahwa penyelesaian tab untuk
cd
juga melihat$CDPATH
dan secara ajaib akan bekerja.sumber
Anda dapat menggunakan autojump yang secara otomatis belajar dari perintah cd sebelumnya dan Anda hanya perlu menentukan string unik dari path lengkap lain kali. ex.
j foo
,j foo1
,j foo2
sumber
Anda dapat membuat pintasan untuk perintah ini dengan menambahkan alias ke file konfigurasi bash (~ / .bashrc atau /etc/bash.bashrc)
Kemudian ketika Anda mengetiknya
cdd
akan menjalankan perintah itu.sumber
function cdd () { cd ../../../../$1/bar/dest ; }
, sehingga maka Anda hanya bisa mengetik misalnyacdd foo
,cdd foo2
.Saya baru-baru ini menemukan https://github.com/rupa/z , yang memungkinkan Anda melompat ke direktori yang baru saja digunakan oleh regex. Jadi Anda bisa melakukan sesuatu seperti:
dari pada:
(selama Anda telah mengunjungi direktori itu sebelumnya, dan tidak ada yang lebih baru / sering digunakan yang cocok dengan regex)
sumber