Saya berurusan dengan proyek-proyek java yang sering mengakibatkan folder sangat bersarang (/ path / ke / project / com / java / lang / apa pun, dll) dan kadang-kadang ingin dapat melompat, katakanlah, 4 level direktori ke atas. Mengetik cd ../../../ .. menyakitkan, dan saya tidak ingin symlink. Apakah ada beberapa flag ke cd yang memungkinkan Anda naik beberapa level direktori (di kepala saya, itu akan menjadi sesuatu seperti cd -u 4)? Sayangnya saya tidak dapat menemukan halaman manual untuk cd secara khusus, alih-alih hanya mendapatkan halaman "bawaan" yang tidak berguna.
linux
command-line
Tossrock
sumber
sumber
cd ...
mana jumlah '.' akan menjadi jumlah level untuk naik. Apakah ini akan menyebabkan konflik yang tidak saya sadari?zsh
danOh My Zsh
yang merupakan alternatif yang lebih baik untukbash
dan kemudian Anda bisa melakukancd ...
(beberapa titik) seperti seharusnyaJawaban:
Atau ... coba ini: (yay Google)
Lihat Retas # 2
sumber
..
,...
dan....
karena mereka lebih cepat mengetik, tetapi prinsip alias tentu saja sama.cd ...
,cd ....
dll. Itu sangat berguna.Fungsi sederhana, dengan alias juga:
(Anda dapat mendefinisikan ini
~/.bashrc
jika Anda menginginkannya dalam setiap contoh).Mudah digunakan:
sumber
eval $(printf "cd ..;%.s" $(seq $1))
yangcd
berkali-kali, karena~-
alias$OLDPWD
diatur ke direktori kerja dari sebelum pemanggilan, daripada ke direktori perantara. PS - menyederhanakancd $(printf %.s../ $(seq "$1"))
jika Anda inginkan.Solusi sederhana, berteknologi rendah yang tidak memerlukan pengaturan apa pun. Hanya bekerja dalam shell dengan
bash
pengeditan perintah -style.cd ..
sumber
Ternyata jawaban yang benar adalah 'cd + n', di mana n adalah jumlah level yang ingin Anda naikkan. Sayang sekali ini tidak didokumentasikan di mana pun!
sumber
dirs
yang mengambil [+ n] sebagai argumen, dan mencetak direktori unik ke-n yang ditambahkan melaluipushd
. Jika Andaalias
cd
maupushd
, maka Anda bisa menggunakan ini. Namun, perhatikan bahwa ini secara teknis bukan jawaban untuk pertanyaan OP, karena ini ada hubungannya dengan direktori unik , yang berarti bahwa pesanan akan kacau seiring waktu, ketika Anda kembali ke direktori yang sama.pushd
danpopd
juga ambil opsi [+ n], itulah sebabnya itu bisa bekerja. Juga, meskipun tidak sempurna dan tidak langsung, saya kira ini dapat digunakan sebagai jawaban untuk pertanyaan itu. Seringkali Anda mengunjungi direktori di atas Anda baru-baru ini, sehingga direktori tersebut akan berada dalam 10 dir terakhir yang disimpan oleh tumpukan direktori.Anda bisa menulis sebuah fungsi (itu harus fungsi, karena Anda ingin mengubah keadaan shell Anda sendiri, yaitu direktori kerja; perintah eksternal hanya akan memengaruhi prosesnya sendiri).
Berikut adalah fungsi yang akan naik sejumlah level yang dilewati sebagai argumen (default 1) dalam struktur direktori fisik (jadi, seperti
cd -P ..
, n kali):Gunakan seperti ini:
sumber
up 4
benar - benar setara dengancd /some/dir/
asumsi$PWD = "/some/dir/that/is/deeply/nested/"
?Tidak persis apa yang Anda minta tetapi Anda harus melihat
pushd
danpopd
. Saya menemukan mereka jauh lebih berguna untuk navigasi folder daripada beberapacd...
aliasJika Anda bolak-balik dari beberapa area tetap, hal yang biasa adalah memiliki alias.
sumber
Alih-alih menggunakan alias, Anda juga dapat menggunakan fungsi bash berikut:
(atau sebagai satu-liner:
function mcd() { up=""; for ((i=1; i<=$1;i++)); do up="${up}../"; done; cd $up; }
)Menambahkan ini ke
~/.bashrc
file Anda akan membuatnya tersedia di terminal Anda dan pembangunan sebuah String../../../../../../
sebelum meneleponcd
juga akan memungkinkan untuk digunakancd -
untuk melompat kembali ke direktori awal.Implementasi yang lebih bermanfaat juga dapat berisi beberapa pemeriksaan input pengguna:
sumber
Apakah Anda tahu tentang autojump ? Ini peretasan pihak ketiga, tetapi bisa berguna dalam skenario Anda.
sumber
Coba parameter lingkungan yang jarang digunakan
CDPATH
. Maka Anda mungkin tidak perlu mengatur level secara eksplisit.Contoh:
Jika bekerja pada banyak proyek, Anda dapat membuat pengaturan CDPATH menjadi file lingkungan khusus proyek. Dan picu dengan shim untuk otomatisasi tambahan.
Saya cenderung menggunakan pushd dan popd cukup banyak. Saya cenderung menggunakan CDPATH untuk membiarkan saya melompat di antara pohon-pohon proyek daripada subdirat dalam suatu proyek - tetapi saat ini saya sedang mengerjakan banyak proyek kecil, bukan beberapa proyek besar. :)
sumber
Jika sebelumnya Anda berada di direktori target:
sumber
Lihatlah DirB . Ini adalah skrip BASH yang memungkinkan Anda membuat bookmark sebagai berikut:
OPERASI
Sangat sederhana, sangat efektif.
sumber
Selangkah lebih jauh dari jawaban @ Grigory:
Itu adalah :
sumber
Muak dengan masalah yang sama persis ini dan akhirnya menulis cd-plus sebagai hasilnya. Utilitas CLI file tunggal yang memungkinkan Anda membuat banyak direktori.
Pemakaian
sumber
Menambahkan kode di bawah ini ke
.bashrc
ekstensi Anda akan memperpanjangcd
untuk menghormati notasi tiga ditambah titikSetelah potongan ini dijalankan dalam mengetikkan bash shell Anda
cd .../
dan memukul<TAB>
akan menyelesaikan jalur ke../../
dan daftar jalur relatif dari semua direktori yang dua tingkat di atas, misalnya.Pembaruan :
bash-completion
harus diinstal untuk memiliki akses ke_cd
metode yang dirujuk dalam kode di atas. Ini dapat diinstal melalui sebagian besar manajer paket baris perintahsumber