Setelah pushd
terlalu banyak kali, saya ingin menghapus seluruh tumpukan jalan.
Bagaimana saya popd
semua barang di tumpukan?
Saya ingin popd
tanpa perlu tahu berapa banyak yang ada di tumpukan?
Manual bash sepertinya tidak membahas hal ini .
Mengapa saya perlu tahu ini? Saya teliti dan untuk membersihkan tumpukan.
Jawaban:
dirs -c
adalah apa yang kamu cari.sumber
Untuk mengosongkan tumpukan dan mengembalikan direktori kerja dari dasar tumpukan, baik:
mengambil direktori itu dari
dirs
, mengubah ke direktori itu, dan daripada menghapus tumpukan:The
-l
pilihan di sini akan daftar path penuh, untuk memastikan kita tidak gagal jika kita mencoba untukcd
menjadi~
, dan-0
mengambil kembali entri pertama dari bawah tumpukan.@ jw013 menyarankan untuk membuat perintah ini lebih kuat, dengan menghindari perluasan jalur:
atau,
popd
hingga Anda menemukan kesalahan (yang merupakan statuspopd
panggilan saat tumpukan direktori kosong):sumber
pushd
beberapa kali, kemudian menghapus salah satu direktori di tengah, kemudianpopd
gagal ketika saya mencoba membuka gulungannya. Saya perlu melompati semua hal yang bermasalah di tengah untuk kembali ke tempat saya mulai.popd
tidak akan menyelamatkan Anda :)pushd -0
daripada tidakcd "$(dirs ...)"
.cd "$(...)"
bekerja di 90%, bahkan mungkin 99% dari kasus penggunaan, tetapi denganpushd -0
Anda dapat dengan yakin mengatakan 100%. Ada begitu banyak potensi gotcha dan kasus tepi yang terkait dengan perluasan jalur file / direktori di shell sehingga hal yang paling kuat untuk dilakukan adalah menghindarinya sama sekali, yangpushd -0
melakukannya dengan sangat ringkas. Tidak ada kemungkinan tertangkap oleh bug dengan kasus tepi aneh jika Anda tidak pernah mengambil risiko. Jika Anda ingin membaca lebih lanjut tentang kemungkinan sakit kepala yang terkait dengan Unix nama file / path, titik awal yang baik adalah mywiki.wooledge.org/ParsingLs