Saya melakukan banyak pekerjaan di Magento, dan begitu juga banyak orang yang bekerja dengan saya, dan itu menjengkelkan harus mengetik:
cd ../../../../../../
Untuk hanya menemukan Anda masih beberapa direktori dari folder 'httpdocs' root Anda, jadi saya mencoba membuat skrip yang mengikuti pseudo-code ini:
while lowest level directory != httpdocs
cd ../
end while;
Kelihatannya cukup sederhana, saya berasumsi saya harus melakukan beberapa bentuk grep saat memeriksa apakah bagian terakhir dari direktori kerja saat ini adalah httpdocs, jika tidak terus naik level sampai itu benar.
Saya sudah mencari belajar bash untuk ini, meskipun sepertinya harus ada sesuatu di luar sana yang mirip, dan sintaksnya membuat saya bingung sampai akhir.
sumber
cd -
setelahnya untuk kembali ke tempat Anda berada.Saya memiliki fungsi yang disebut
upto
di .bashrc saya yang memungkinkan Anda untuk naik ke direktori apa pun di jalur saat ini dengan nama:Saya juga memiliki penyelesaian untuk fungsi ini, sehingga memberi saya nama direktori yang valid dan penyelesaian ketika saya menekan tab:
Selain itu, saya memiliki fungsi lain
jd
yang memungkinkan saya untuk beralih ke direktori apa pun di bawah yang sekarang:Contoh:
sumber
upto httpdocs
.jd
tampaknya tidak berfungsi di setiap kasus, maukah Anda menjelaskan cara kerjanya?**
). Untuk mengaktifkan fitur ini dalam penggunaan bash shell Andashopt -s globstar
.jd
fungsi, lihat gist.github.com/Rob--W/5888648 . Saya hanya mengujinya dengan Bash 4.2.45, jadi YMMV.Fungsi bash paling sederhana yang dapat Anda masukkan ke dalam Anda
.bashrc
yang dapat saya pikirkan (sederhana karena tidak menggunakan loop atau proses eksternal) adalah:Ini menggunakan Pola substitusi ekspansi parameter untuk menggantikan semuanya setelah
/httpdocs/
di$PWD
dengan `/ httpdocs'. Ini terlihat sangat berantakan karena kita harus melarikan diri dari garis miring ke depan untuk membedakannya dari garis miring ke depan dalam sintaks ekspansi bash. Plus jangan luput ke depan garis miring pada string pengganti, sehingga juga terlihat tidak konsisten.Jika tidak ada
/httpdocs/
di jalur saat ini maka tidak ada pergantian akan dilakukan dan itu hanya akan berubah ke direktori saat ini.Misalnya, substitusi akan diganti
/a/b/c/httpdocs/e/f/g
dengan/a/b/c/httpdocs
dancd
ke dalam direktori itu.Fungsi tersebut harus berada di lingkungan shell Anda saat ini (baik sebagai fungsi atau alias) karena proses anak tidak dapat mengubah direktori saat ini dari induknya. Inilah mengapa saya mengatakan untuk meletakkannya di
.bashrc
skrip shell Anda dan bukan di skrip shell.sumber
Anda juga dapat memasukkan sesuatu seperti ini di profil Anda:
Pengetikan yang adil
cdh
akan membawa Anda kehttpdocs
direktori paling atas di jalur Anda saat ini.sumber
Itu tidak sepenuhnya mengatasi masalah Anda, tetapi itu akan menghemat melakukan
cd ../../../../../../
sedikit. Saya sudah meminjam ini dari pengguna yang tidak dikenal pos di sini .up N
lompat N direktori di pohon direktori
Alih-alih mengetik
Anda cukup mengetik
dan a
akan membawamu kembali
Masukkan fungsi ke dalam .bashrc Anda untuk menggunakannya.
sumber