Dapatkah saya mempersingkat pengetikan yang diperlukan untuk `cd` ke beberapa direktori yang sudah diketahui dengan baik


11

Saya menemukan diri saya membuka terminal dan kemudian banyak CD ke direktori yang sama jalan yang sangat panjang.

Ini berarti saya banyak melakukan cd dan menggunakan tab untuk mempercepat banyak hal.

Akan lebih bagus jika saya bisa memiliki semacam tautan ke direktori ini dan kemudian hanya cd untuk itu sehingga saya akan berada di direktori bersarang dalam dengan cepat.

Apakah ini mungkin?


1
Saya memiliki beberapa skrip (bash) yang melakukan tugas kecil (terkait) seperti melakukan cd ke proyek github dan menjalankannya git status. Saya juga punya beberapa alias di blog saya .bash_profile. Bukan apa yang Anda minta, tetapi terkait.
keyser

Jawaban:


24

Inilah cara untuk berurusan dengan jalur yang rumit untuk cdsering.

mkdir ~/Links
ln -s /complexpath/there ~/Links

ini akan membuat tautan simbolik

~/Links/there

Untuk menggunakan baru ini Linksdirektori efisien, jika shell login Anda bash hanya termasuk perintah ini di Anda ~/.profile(yang digunakan oleh semua kerang gaya Bourne bash, ksh, zsh...):

CDPATH=~/Links:.
export CDPATH

Ini berarti bahwa untuk setiap cd, shell Anda akan mencari dalam 2 direktori untuk menemukan nama lokal:

~/Links
.

Anda tidak perlu memulai kembali sesi Anda untuk mengujinya, jalankan saja:

. ~/.profile

yang berarti baru saja membaca saya ~/.profile. (Anda tidak perlu memasukkannya ke dalam ~/.bashrckarena Anda tidak perlu mengulang inisialisasi variabel yang sama ketika Anda tidak mengubahnya.)

Setelah Anda mengujinya, Anda akan dapat memulai kembali sesi Anda;).

Mulai sekarang, setiap kali Anda ingin pergi, thereAnda harus mengetik:

cd there

Ini adalah solusi umum paling elegan yang pernah saya lihat. Saya biasanya membuat alias untuk tujuan umum (seperti alias cdorake cd $ORACLE_HOMEdan semacamnya ...)
bmike

Adakah yang tertarik dengan persamaan sederhana melalui antarmuka Finder?
dan

11

Mendefinisikan alias adalah cara yang sangat mudah untuk memiliki singkatan pendek untuk perintah yang lebih panjang. Setelah Anda memiliki alias dengan benar, Anda dapat membuat bagian di file .bashrc Anda (atau file startup lainnya) sehingga Anda tidak perlu mengetik ulang alias ini untuk setiap shell baru yang Anda mulai:

dalam .bashrc:

alias ws4='ssh qsv-rhws4'
alias httpdlog='cd /var/log/httpd/'
alias EC2='ssh -i BMTestEC2.pem ec2-user@xxxxxxxx.compute.amazonaws.com'

dll.

Logout dan kembali (atau jalankan saja . ~/.bashrc) dan sekarang Anda bisa mengetik httpdlogdan menjalankan cd. Atau ws4dan itu benar-benar melakukan perintah ssh dll.

Ini menghilangkan kebutuhan untuk membuat (sejumlah besar) tautan kosong yang akan menyebabkan direktori rumah Anda juga terlihat berantakan.


10

Coba gunakan autojump atau z .

Setelah menginstal salah satu dari keduanya, Anda hanya cdseperti biasa dan mereka mempelajari direktori yang paling sering dikunjungi dan memungkinkan Anda untuk pergi ke mereka hanya dengan mengetikkan bagian dari jalan:

$ cd /very/long/path/foobar
$ cd
$ z foobar
$ echo $PWD
/very/long/path/foobar

Saya lebih suka z dari keduanya.


tidak tahu tentang autojump tetapi skrip batu 'z'!
Kris

7

Saya sangat merekomendasikan fasd yang mirip dengan autojump dan z tetapi IMHO lebih baik. Dari situs web:

Fasd (diucapkan mirip dengan "cepat") adalah penguat produktivitas baris perintah. Fasd menawarkan akses cepat ke file dan direktori untuk shell POSIX. Itu terinspirasi oleh alat-alat seperti autojump, z dan v. Fasd melacak file dan direktori yang telah Anda akses, sehingga Anda dapat dengan cepat referensi mereka di baris perintah.

Nama fasd berasal dari alias yang disarankan alias f (file), a (file / direktori), s (tampilkan / cari / pilih), d (direktori).

Fasd memberi peringkat file dan direktori berdasarkan "frecency," yaitu, berdasarkan "frekuensi" dan "kebaruan". Istilah "frecency" pertama kali diciptakan oleh Mozilla dan digunakan di Firefox (tautan).


4

Atau Anda dapat membuat alias. Lemparkan yang berikut ke dalam sesuatu seperti .bashrc atau .aliases

alias shortcut='cd ~/path/to/deep/deep/deep/directory/'

Kemudian pastikan bahwa file apa pun yang ada di dalamnya adalah sourced. Alias ​​saya ada di .bashrc, yang saya sumber dengan baris ini di .bash_profile: source ~/.bashrc


2

Menambahkan symlink kenyamanan tidak apa-apa untuk satu atau dua direktori khusus, tetapi sangat cepat menjadi susah diatur. Solusi yang jauh lebih baik adalah dengan menggunakan variabel lingkungan CDPATH, tersedia di bashdan cangkang lain hanya untuk tujuan ini.

CDPATHadalah daftar yang dipisahkan oleh titik dua (seperti PATH) tempat untuk mencari nama direktori. Ini dapat berisi nama path absolut dan relatif. Saya punya set saya untuk sesuatu seperti export CDPATH=".:..:$HOME/work/repos:$HOME/projects:<etc>".

Dengan pengaturan ini, saya dapat mengetik cd pdftools dari mana saja dan itu akan membawa saya ke ~/projects/pdftools. (Dengan symlink, aku harus mengetik cd ~/pdftoolsjika saya tidak di direktori HOME saya.) Saya juga dapat jalan pintas ke subdirektori: cd pdftools/bin.

Di ..dalam saya CDPATHizinkan saya mengetik cd sisterdiralih-alih cd ../sisterdir, dll. Seperti yang dapat Anda harapkan, ketika saya membuat direktori baru di mana saja di dalam CDPATHmereka akan secara otomatis ditemukan cd- tidak perlu membuat symlink atau alias baru.

Fitur ini menjadi lebih baik jika Anda menggunakan bash_completionfile yang didistribusikan, misalnya, dengan sistem Debian. Itu tidak datang dengan kotak OS X saya, jadi saya mengambil salinan dan berfungsi dengan baik. (Dapatkan dengan brew, atau hanya men-download secara manual dari sini .) File ini mendefinisikan perangkat tambahan untuk penyelesaian commandline, sehingga saya bisa mengetik cd pdf<TAB>dan pdftoolsdirektori ditemukan dan diperluas dari mana saja di CDPATH.


1

Tentu: Buat tautan simbolis

ln -s /some/really/long/path/to/somewhere/ ~/shortcut
cd ~/shortcut


1

Atau Anda juga dapat mencoba memasang kerang ikan.

http://fishshell.com/

Ini memiliki prediksi yang sangat baik untuk perintah. Ini juga memungkinkan Anda mengetik huruf sensitif tanpa mengacaukan.

Kelemahan dari ikan adalah bahwa ia memiliki bahasa scripting sendiri dan mereka tidak kompatibel dengan bash.


1

Yang saya lakukan adalah mengetik "cd" dan kemudian tarik folder dari Finder ke Terminal yang menempel di path lengkap. Mungkin tidak cukup elegan, tetapi berfungsi untuk semua folder vs beberapa pintasan yang sudah ada?

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.