GNU/Linux >> Belajar Linux >  >> Linux

Menavigasi shell Bash dengan pushd dan popd

Tekan dan munculkan perintah adalah fitur bawaan dari shell Bash untuk membantu Anda "membookmark" direktori untuk navigasi cepat antar lokasi di hard drive Anda. Anda mungkin sudah merasa bahwa terminal adalah cara yang sangat cepat untuk menavigasi komputer Anda; hanya dengan beberapa penekanan tombol, Anda dapat pergi ke mana saja di hard drive, penyimpanan terpasang, atau berbagi jaringan. Tetapi kecepatan itu dapat rusak ketika Anda menemukan diri Anda bolak-balik antar direktori, atau ketika Anda "tersesat" di dalam sistem file Anda. Itulah masalahnya pushd dan munculkan dapat membantu Anda memecahkannya.

pushd

Pada dasarnya, pushd sangat mirip dengan cd . Ini membawa Anda dari satu direktori ke direktori lain. Asumsikan Anda memiliki direktori bernama satu , yang berisi subdirektori bernama dua , yang berisi subdirektori bernama tiga , dan seterusnya. Jika direktori kerja Anda saat ini adalah satu , lalu Anda dapat pindah ke dua atau tiga atau di mana saja dengan cd perintah:

$ pwd
satu
$ cd dua/tiga
$ pwd
tiga

Anda dapat melakukan hal yang sama dengan pushd :

$ pwd
satu
$ pushd dua/tiga
~/satu/dua/tiga ~/satu
$ pwd
tiga

Hasil akhir dari pushd sama dengan cd , tetapi ada hasil antara tambahan:pushd menggemakan direktori tujuan Anda dan titik asal Anda. Ini adalah tumpukan direktori your Anda , dan itulah yang membuat pushd unik.

Stacks

Tumpukan, dalam terminologi komputer, mengacu pada kumpulan elemen. Dalam konteks perintah ini, elemennya adalah direktori yang baru saja Anda kunjungi dengan menggunakan pushd memerintah. Anda dapat menganggapnya sebagai sejarah atau jejak remah roti.

Anda dapat memindahkan seluruh sistem file Anda dengan pushd; setiap kali, lokasi Anda sebelumnya dan baru ditambahkan ke tumpukan:

$ mendorong empat
~/satu/dua/tiga/empat ~/satu/dua/tiga ~/satu
$ mendorong lima
~/satu/dua/tiga/empat/ lima ~/satu/dua/tiga/empat ~/satu/dua/tiga ~/satu

Setelah Anda membuat tumpukan, Anda dapat menggunakannya sebagai kumpulan bookmark atau titik arah perjalanan cepat. Misalnya, asumsikan bahwa selama sesi Anda melakukan banyak pekerjaan dalam ~/satu/dua/tiga/empat/lima struktur direktori dari contoh ini. Anda tahu bahwa Anda pernah ke satu baru-baru ini, tetapi Anda tidak dapat mengingat lokasinya di pushd . Anda tumpukan. Anda dapat melihat tumpukan Anda dengan +0 (itu adalah tanda plus diikuti dengan nol) argumen, yang memberi tahu pushd untuk tidak mengubah ke direktori mana pun di tumpukan Anda, tetapi juga meminta pushd untuk menggemakan tumpukan Anda saat ini:

$ pushd +0
~/satu/dua/tiga/empat ~/satu/dua/tiga ~/satu ~/satu/dua/tiga/empat/lima

Atau, Anda dapat melihat tumpukan dengan dir perintah, dan Anda dapat melihat nomor indeks untuk setiap direktori dengan menggunakan -v pilihan:

$ dirs -v
0  ~/satu/dua/tiga/empat
1  ~/satu/dua/tiga
2  ~/satu
3  ~/satu/ dua/tiga/empat/lima

Entri pertama di tumpukan Anda adalah lokasi Anda saat ini. Anda dapat mengonfirmasinya dengan pwd seperti biasa:

$ pwd
~/satu/dua/tiga/empat

Mulai dari 0 (lokasi Anda saat ini dan entri pertama tumpukan Anda), kedua elemen dalam tumpukan Anda adalah ~/satu , yang merupakan tujuan yang Anda inginkan. Anda dapat bergerak maju dalam tumpukan Anda menggunakan +2 pilihan:

$ pushd +2
~/satu ~/satu/dua/tiga/empat/lima ~/satu/dua/tiga/empat ~/satu/dua/tiga
$ pwd
~/satu

Ini mengubah direktori kerja Anda menjadi ~/one dan juga telah menggeser tumpukan sehingga lokasi baru Anda berada di depan.

Anda juga dapat bergerak mundur di tumpukan Anda. Misalnya, untuk dengan cepat mencapai ~/satu/dua/tiga diberikan contoh keluaran, Anda dapat mundur satu per satu, dengan mengingat bahwa pushd dimulai dengan 0:

$ pushd -0
~/satu/dua/tiga ~/satu ~/satu/dua/tiga/empat/lima ~/satu/dua/tiga/empat

Menambahkan ke tumpukan

Anda dapat terus menavigasi tumpukan Anda dengan cara ini, dan itu akan tetap menjadi daftar statis direktori yang baru saja Anda kunjungi. Jika Anda ingin menambahkan direktori, cukup sediakan path direktori tersebut. Jika sebuah direktori baru di tumpukan, itu akan ditambahkan ke daftar seperti yang Anda harapkan:

$ pushd /tmp
/tmp ~/satu/dua/tiga ~/satu ~/satu/dua/tiga/empat/lima ~/satu/dua/tiga/empat

Tetapi jika sudah ada di tumpukan, itu ditambahkan untuk kedua kalinya:

$ pushd ~/satu
~/satu /tmp ~/satu/dua/tiga ~/satu ~/satu/dua/tiga/empat/lima ~/satu/dua/tiga/empat

Sementara tumpukan sering digunakan sebagai daftar direktori yang Anda ingin akses cepat, itu benar-benar sejarah yang benar di mana Anda pernah. Jika Anda tidak ingin direktori ditambahkan secara berlebihan ke tumpukan, Anda harus menggunakan +N dan -N notasi.

Menghapus direktori dari tumpukan

Tumpukan Anda, jelas, tidak berubah. Anda dapat menambahkannya dengan pushd atau hapus item darinya dengan popd .

Misalnya, anggap Anda baru saja menggunakan pushd untuk menambahkan ~/satu ke tumpukan Anda, membuat ~/satu direktori kerja Anda saat ini. Untuk menghapus elemen pertama (atau "nol", jika Anda mau):

$ pwd
~/satu
$ popd +0
/tmp ~/satu/dua/tiga ~/satu ~/satu/dua/tiga/empat/lima ~/satu /dua/tiga/empat
$ pwd
~/satu

Tentu saja, Anda dapat menghapus elemen apa pun, mulai hitungan Anda dari 0:

$ pwd ~/satu
$ popd +2
/tmp ~/satu/dua/tiga ~/satu/dua/tiga/empat/lima ~/satu/dua/tiga/empat
$ pwd ~/one

Anda juga dapat menggunakan popd dari belakang tumpukan Anda, sekali lagi dimulai dengan 0. Misalnya, untuk menghapus direktori akhir dari tumpukan Anda:

$ popd -0
/tmp ~/one/two/three ~/one/two/three/four/five

Saat digunakan seperti ini, popd tidak mengubah direktori kerja Anda. Itu hanya memanipulasi tumpukan Anda.

Perilaku default popd , tanpa argumen, adalah menghapus item pertama (nol) dari tumpukan Anda dan menjadikan item berikutnya sebagai direktori kerja Anda saat ini.

Ini paling berguna sebagai perintah perubahan cepat, ketika Anda, misalnya, bekerja di dua direktori berbeda dan hanya perlu merunduk sejenak ke lokasi lain. Anda tidak perlu memikirkan tumpukan direktori jika tidak memerlukan riwayat yang rumit:

$ pwd
~/satu
$ pushd ~/satu/dua/tiga/empat/lima
$ popd
$ pwd
~/satu

Anda juga tidak diharuskan menggunakan pushd dan munculkan dalam suksesi yang cepat. Jika Anda menggunakan pushd untuk mengunjungi lokasi yang berbeda, kemudian terganggu selama tiga jam mengejar bug atau melakukan penelitian, Anda akan menemukan tumpukan direktori Anda menunggu dengan sabar (kecuali Anda telah mengakhiri sesi terminal Anda):

$ pwd ~/one
$ pushd /tmp
$ cd {/etc,/var,/usr}; sleep 2001
[...]
$ popd
$ pwd
~/one

Pushd dan popd di dunia nyata

Tekan dan munculkan perintah sangat berguna. Setelah Anda mempelajarinya, Anda akan menemukan alasan untuk menggunakannya dengan baik, dan Anda akan terbiasa dengan konsep tumpukan direktori. Menjadi nyaman dengan pushd itulah yang membantu saya memahami git stash , yang sama sekali tidak terkait dengan pushd tetapi serupa dalam wujud konseptual.

Menggunakan pushd dan munculkan dalam skrip shell dapat menggoda, tetapi secara umum, mungkin lebih baik untuk menghindarinya. Mereka tidak portabel di luar Bash dan Zsh, dan mereka bisa tumpul saat Anda membaca ulang skrip (pushd +3 kurang jelas dari cd $HOME/$DIR/$TMP atau serupa).

Selain peringatan ini, jika Anda adalah pengguna Bash atau Zsh biasa, maka Anda dapat dan harus mencoba pushd dan munculkan .


Linux
  1. Menyesuaikan shell Bash

  2. Memahami Arti `$_`?

  3. Mengapa Regex Di Bash Hanya Bekerja Jika Itu Adalah Variabel Dan Tidak Secara Langsung??

  1. Tutorial Bash Array Terbaik dengan 15 Contoh

  2. Cakupan variabel untuk skrip bash shell dan fungsi dalam skrip

  3. '&&' vs. '&' dengan perintah 'test' di Bash

  1. Tonton perintah dan tugas dengan perintah jam tangan Linux

  2. Apa yang salah dengan skrip bash saya untuk menyimpan file x terakhir dan menghapus sisanya?

  3. Bisakah saya memanggil pushd/popd dan mencegahnya mencetak tumpukan?