Apakah sebaiknya menggunakan alias berikut:
cd() {
pushd $1;
}
di bash?
Saya pikir ini akan sangat berguna, karena saya kemudian dapat menggunakan serangkaian popd
s bukan hanya cd -
sekali.
Apakah ada kasus di mana ini mungkin menjadi masalah?
bash
shell
shell-script
alias
Lazer
sumber
sumber
alias cd=pushd
?pd
? Apakah Anda satu-satunya pengguna dan administrator sistem Anda?autopushd
Jawaban:
Secara pribadi, saya memiliki ini di bashrc saya dan menggunakannya sepanjang waktu:
Anda kemudian dapat bernavigasi di sekitar baris perintah seperti browser.
cd
mengubah direktori.back
pergi ke direktori sebelumnya yang Andacd
gunakan. Danflip
akan berpindah di antara direktori saat ini dan sebelumnya tanpa muncul dari tumpukan direktori. Secara keseluruhan, ini bekerja dengan baik.Satu-satunya masalah nyata yang saya sadari adalah kenyataan bahwa itu adalah seperangkat perintah yang saya sudah terbiasa tetapi tidak ada pada mesin orang lain. Jadi, jika saya harus menggunakan mesin orang lain, itu bisa sedikit frustasi. Jika Anda terbiasa hanya menggunakan
pushd
danpopd
langsung, Anda tidak memiliki masalah itu. Dan sementara jika Anda hanyacd
memasukkan alias tidakpopd
, Anda tidak akan memiliki masalahback
tidak ada, Anda masih akan memiliki masalah yangcd
tidak melakukan apa yang Anda harapkan pada komputer lain.Saya akan mencatat, bagaimanapun, bahwa implementasi khusus Anda
cd
tidak cukup berfungsi seperticd
pada normalcd
dengan sendirinya akan pergi ke direktori home Anda, tetapi Anda tidak. Versi yang saya miliki di sini tidak memiliki masalah itu. Milik saya juga ditambahkanDIRSTACK
ke bagian depandirs
cetakan, tetapi itu lebih merupakan masalah selera pribadi daripada apa pun.Jadi, seperti yang saya katakan, saya menggunakan alias ini sepanjang waktu dan tidak punya masalah dengan mereka. Hanya saja bisa sedikit frustasi jika harus menggunakan mesin lain dan kemudian menemukan mereka tidak ada di sana (yang seharusnya tidak mengejutkan, tetapi mereka adalah salah satu hal yang sering Anda gunakan sehingga Anda tidak memikirkannya) , jadi memiliki mereka tidak bekerja seperti dulu masih bisa mengejutkan).
sumber
<C-o>
untukpopd
untuk pengalaman otentik.Ini bukan jawaban langsung untuk pertanyaan itu, tetapi saya jatuh cinta dengan jendela histori direktori di 4DOS. Sedemikian rupa sehingga saya menulis versi saya sendiri untuk Linux (dan Cygwin). Aku tidak pernah sempat untuk membuat sebuah utilitas yang mudah-ke-install, tetapi jika Anda tahu jalan di prompt Bash, seharusnya tidak bahwa sulit untuk mendapatkan berjalan. Pertanyaan Anda menginspirasi saya untuk memasukkannya ke repo Git dan mengunggahnya ke GitHub: dirhistory .
Pada dasarnya, ini adalah daemon yang mengumpulkan perubahan direktori dari semua shell Anda, dan program Cdk yang menampilkan histori dan memungkinkan Anda memilih direktori mana saja untuk beralih (sehingga Anda tidak terbatas pada tumpukan). Saya merasa ini sangat berguna, dan saya harus mengaitkannya dengan Ctrl-PageUp, seperti yang dilakukan 4DOS. (Saya bahkan menambal Putty sehingga akan mengirim Ctrl-PageUp ke Bash.)
sumber
Bagi saya pushd / popd / dirs hampir membantu, tetapi kurang. Jadi saya membuat 'pembungkus' di sekitar ini yang disebut 'navd', diimplementasikan pada dasarnya satu set 20 alias. (Salah satunya adalah fungsi, sungguh.) Kode di bawah ini, tetapi di sini adalah penjelasan singkat terlebih dahulu. (Satu hal yang menyenangkan tentang "navd" dan bekerja di mesin orang lain: Ada bentuk "no-install" untuk menjalankannya: Sebagai satu opsi instal, Anda cukup menempel-di perintah yang mengimplementasikan "navd" di bash-prompt) , dan selama sesi bash untuk mesin itu navd akan bekerja. Itu memberikan nol kaki-cetak dalam sistem file, namun itu adalah instalasi sementara. Masukkan perintah-perintah itu dalam .bashrc untuk instalasi "nyata", dari tentu saja.)
Fitur:
Setiap perintah <N> sembilan belas navd memutar tumpukan sehingga direktori yang menjadi direktori saat ini juga sekarang ditampilkan di bagian depan tumpukan. Nilai <N> positif menemukan dir menghitung dari kiri, dengan pengindeksan dimulai dari nol. Nilai <N> negatif menemukan penghitungan dir dari KANAN, dengan pengindeksan dimulai pada -1. (Ini mengikuti konvensi tentang bagaimana indeks array dapat digunakan dalam Java dan bahasa lainnya.)
Catatan: Setiap perintah "navd" menampilkan tumpukan yang sama yang digunakan "pushd" dan "dirs" - tetapi menampilkannya TANPA entri paling kiri yang akan ditampilkan "dirs" (karena entri itu tidak benar-benar di stack - itu direktori saat ini dan dengan "dirs" yang paling kiri akan berubah jika perintah cd dimasukkan). (The "cd <path>" perintah tidak mempengaruhi perilaku navd meskipun tentu saja mempengaruhi perilaku dari pushd / dirs / popd Juga ... Saya suka menggunakan. "Cd -" untuk "kembali" sekali ke direktori yang baru saja saya navigasikan, dan "cd -" tidak mempengaruhi perilaku nAVD juga.)
Bonus: Ada 19 alias lebih yang TIDAK memutar stack, tetapi hanya mengubah dir ke tempat yang ditunjukkan pada stack.
Bonus 2: "navh" menunjukkan perintah npath <path> dari histori, untuk dengan mudah memuat stack dengan cut-n-paste. (Masing-masing terdaftar hanya sekali walaupun itu ada dalam sejarah beberapa kali, dan daftarnya diurutkan. Selain itu, entri dapat dimasukkan ke dalam file $ HOME / .navhignore untuk mencegah entri yang tepat itu muncul di daftar navh.)
Tiga perilaku utama:
Jika Anda mengosongkan tumpukan dan mengulangi perintah "navd <path>" tertentu, jalur itu akan berada di tumpukan. Itulah yang saya inginkan dan harapkan ... tetapi pushd tidak melakukan itu - itu membuat direktori saat ini Anda menavigasi JAUH dari stack - sehingga efek pada stack adalah variabel (terasa tidak dapat diprediksi) ketika Anda mengulangi perintah .
"navd <path>" tidak akan menempatkan jalur yang sama pada tumpukan dua kali.
"navd <path>" menempatkan dirinya dalam sejarah perintah dengan path absolut bahkan jika path relatif diketik untuk perintah.
Bagi saya, tiga perilaku terakhir yang dijelaskan membuat menggunakan perintah "navd <path>" dari sejarah jauh lebih bermanfaat daripada menggunakan "pushd <path>" dari sejarah. Saya benar - benar dapat menggunakan kembali sejarah untuk pergi ke suatu tempat. Dan ketika saya melakukannya saya tidak "merusak" tumpukan saya.
Jika Anda bisa dan ingin membungkus otak Anda dengannya, Anda dapat beralih antara menggunakan navd dan pushd / dirs / popd. Keduanya menggunakan tumpukan yang sama; hanya dengan gaya yang berbeda. Misalnya, gunakan "popd" untuk menghapus hal-hal dari tumpukan "navd", atau gunakan "dirs -c" untuk menghapus tumpukan navd.
Pikirkan pushd / dirs / popd sebagai "bagaimana cara menelusuri kembali langkah saya?".
Pikirkan navd sebagai "bagaimana cara mempertahankan satu set direktori favorit, dan dengan mudah beralih di antara mereka?".
Rekatkan yang berikut ke jendela terminal, dan Anda dapat segera mulai menggunakan navd selama sesi-terminal itu. Ini semua kode yang ada untuk fitur ini.
Alias ini didasarkan pada perintah "bash". Perhatian khusus diberikan untuk menjaga perilaku normal "cd -". (Banyak kali saya menggunakan "cd -" bukannya repot dengan pushd atau navd - karena "cd -" sangat berguna untuk kembali ke "tempat" terakhir Anda, atau beralih di antara hanya 2 tempat, dan ini bekerja di mana saja tanpa instalasi.)
Perintah-perintah ini, tentu saja, dapat dimasukkan ke dalam file .bashrc untuk instalasi yang lebih permanen.
sumber
Inilah solusi lain yang mungkin Anda sukai. Saya menulis ini setelah bermain dengan solusi oleh @cjm. Ini menggunakan perintah dialog untuk membuat menu jenis ncurses dari output dirs. Memilih item akan membawa direktori itu ke atas tumpukan dan cd ke dalamnya. Ini memiliki keunggulan dibandingkan dirhistory dengan memberikan setiap emulator terminal buffer sejarah direktori sendiri, dan menjadi sedikit lebih mudah untuk menginstal.
Untuk menginstal: Setelah Anda menambahkan cd ke pushd, instal dialog, lalu masukkan fungsi ini di bashrc Anda:
Saya suka ini sedikit lebih baik daripada menjalankan dirs -v, kemudian menjalankan perintah lain untuk pop atau cd ke direktori yang saya inginkan. Menu dialog juga dapat sangat disesuaikan melalui dialogrc-nya.
Jadi untuk menjawab pertanyaan Anda, ya, saya pikir aliasing pushd to cd adalah ide bagus. Anda tidak mungkin memiliki masalah buffer overflow jika Anda me-reboot mesin Anda secara rutin setidaknya untuk pembaruan. Meskipun saya akan berhati-hati menggunakan cd saat scripting; cd dalam loop sementara berpotensi menyebabkan masalah buffer overflow. Saya tidak yakin apa yang mengontrol ukuran buffer dirs / pushd.
sumber