Saya menemukan diri saya perlu melompati beberapa direktori di folder rumah saya sering dan bosan menulisnya. Saya ingin pendekatan yang lebih cepat, yang secara tradisional akan menjadi tautan simbolik.
Namun, saya tidak ingin mengacaukan direktori rumah saya dengan lusinan tautan simbolik. Aku bisa membuat beberapa ~/links/
direktori dan kekacauan itu dengan link simbolik, tapi masih jelek. Selain itu, saya mungkin ingin membuat tautan simbolis yang berubah setiap hari (didefinisikan dalam .bashrc) untuk melompat ke direktori hari ini.
Apakah ada cara untuk secara efektif alias tautan simbolik, membuat sesuatu yang akan dikenali sebagai tautan untuk navigasi cepat, tetapi tidak akan benar-benar muncul ketika saya melakukan ls
direktori rumah saya, dan tidak akan bertahan melampaui sesi saat ini?
sumber
cd -
akancd
ke direktori terakhir sebelumnya. Oleh karena itu, jika Anda melakukannya dua kali, Anda akan kembali ke tempat Anda memulai ... sangat bagus untuk situasi "oh saya lupa mengedit someFile.txt di lokasi sebelumnya" => Cukupcd -
:, edit someFile.txtcd -
Jawaban:
Anda dapat menggunakan penyelesaian tab. Secara default pada banyak distribusi Linux, bash sudah diatur sehingga ketika Anda menekan tombol [TAB], Anda diberikan daftar kemungkinan kecocokan, atau jika hanya ada satu kecocokan, semuanya diisi. Untuk cd, ini biasanya daftar subdirektori dari direktori kerja saat ini. Anda bisa menimpanya, tapi saya sarankan daripada membuat alias, seperti
jd
untuk "direktori melompat":dan kemudian, mendefinisikan "bookmark" yang Anda inginkan sebagai pelengkap untuk jd. Lihatlah halaman bash man untuk lebih banyak opsi (termasuk menghasilkan secara otomatis hasil langsung dari perintah atau fungsi), tetapi cara termudah hanyalah daftar kata, dengan
-W
:lengkap -W "/ srv / www ~ / tmp ~ / work" jd
Sekarang, ketik
jd
dan tekan [TAB], dan Anda akan melihat "bookmark" Anda. Ketik setiap bagian yang ambigu, dan kemudian tekan [TAB] untuk menyelesaikan. (Di atas,~
s meluas ke direktori home saya, jadi [TAB] pertama memberi saya/
, dan jika saya menekanw
dan [TAB] lagi,/srv/www
diisi.)Tentu saja, masukkan ini
~/.bash_profile
untuk membuatnya bertahan.Atau, kita bisa membawa ini ke level selanjutnya. Buat direktori
~/.shortcuts
- dimulai dengan titik, itu akan disembunyikan dan tidak direproduksi direktori home bersih Anda - dan mengisinya dengan symlink ke direktori yang Anda inginkan. Kemudian, letakkan ini di ~ / .bash_profile Anda:Ini mendefinisikan penyelesaian yang sedikit lebih rumit dalam fungsinya
_list_shortcuts
untuk membangun daftar nama, dan menjadikannyajd
fungsi daripada alias sederhana, karena kita ingin itu bertindak berbeda dari adilcd
. The-P
bendera untukcd
merek itu menyelesaikan symlink, sehingga semuanya menjadi sihir transparan. Nama pintasan Anda bahkan tidak harus sesuai dengan target.Begitu:
Dan, untuk dosis mewah, buat
jd
daftar semua pintasan Anda saat dijalankan tanpa parameter apa pun:Catatan: Saya menggunakan
compgen -W $( cmd )
bukancompgen -C 'cmd'
karena yang terakhir tidak pernah bekerja untuk saya dan saya tidak mengerti mengapa. Itu mungkin pertanyaan baru saya sendiri. :)sumber
Alias Shell memiliki fitur yang dapat Anda lakukan (beberapa) nama-penyelesaiannya (biasanya terikat tab). Atau, Anda dapat menggunakan
CDPATH
fitur, yang "baru-baru ini" (dalam 5-6 tahun terakhir) telah ditingkatkan untuk mendukung penyelesaian nama. Jika itu berhasil untuk Anda, itu memiliki keuntungan bahwa apa yang Anda ketik adalah nama sebenarnya dari direktori daripada mnemonik untuk itu.Menurut manual bash
Bacaan lebih lanjut:
sumber
CDPATH
variabel lingkungan, terima kasih. Saya mungkin menambahkangit_repos
direktori saya ke variabel itu ....Untuk direktori yang sering Anda kunjungi, tetapi jangan berubah setiap hari, opsi lain hanya memiliki beberapa
alias
perintah di.bashrc
file Anda :Seorang teman memiliki sekitar 50 di antaranya; Saya punya beberapa; cepat dan mudah. Hanya
untuk mengubah direktori ke / u01 / app / oracle
sumber
Saya merekomendasikan
pushd
danpopd
.Saya pribadi menemukan mereka berguna ketika melakukan pekerjaan pengembangan / membaca kode sumber, ketika beberapa direktori terlibat.
Mereka secara efektif menerapkan struktur stack / LIFO, di mana Anda PUSH direktori (
pushd
), dan perintah direktori POP berikutnya (popd
) mengambilnya.Jadi, ketika di dalam dir, Anda akan melakukan:
Dan ketika Anda perlu mengambilnya, Anda lakukan
Anda dapat melakukan banyak
pushd
, dan melakukan yang sesuaipopd
nanti, untuk kembali ke direktori.Saya akan meninggalkan di sini tautan.
http://www.eriwen.com/bash/pushd-and-popd/
sumber
popd
banyak menggunakan . Saya mengisidirs
daftar saya (yang diisi olehpushd
perintah) dengan semua direktori yang ingin saya kunjungi / kerjakan untuk itu, kemudian saya jalankanpushd +1
. Lalu, saya bisa menelusuri direktori dengan sederhana!pu
yang sangat cepat. (Perhatikan bahwa pada Ubuntu dan CentOS,pushd
adalah satu - satunya perintah yang tersedia pada instalasi bersih yang dimulai denganpu
.)Anda bisa menempatkan mereka sebagai variabel di Anda
~/.bashrc
, dan kemudian mereka hanya$
pergi.sumber
Jawaban yang jelas adalah variabel , hal-hal simbolis dalam shell yang mewakili hal-hal lain, mirip dengan tautan simbolis dalam sistem file.
Dalam shell yang layak, Anda mendapatkan Tabpenyelesaian pada nama variabel yang selanjutnya membantu.
sumber