Pushd / popd adalah konsep sederhana yang membuat saya perlu memahaminya karena orang cenderung mengajarkannya dengan mendefinisikan perintah-perintah ini sebagai perintah yang 'memanipulasi tumpukan direktori' yang menurut saya membingungkan.
Saya melihatnya dengan cara yang berbeda:
pushd [folder_name] - akan cd ke [folder_name] dan akan mendokumentasikan tujuan yang [folder_name] dalam direktori stack sementara direktori teratas di stack akan selalu menjadi direktori saat ini Anda berada di
popd - pertama-tama akan cd Anda ke dalam catatan direktori yang ada di atas tumpukan kemudian dan menghapusnya dari tumpukan
dirs - Akan mencetak dir stack (dapat dianggap sebagai dir Db di mana entri paling kiri adalah direktori saat ini (atas tumpukan)
Jadi 2 kasus penggunaan paling populer adalah:
Use case 1: Navigasi menggunakan pushd dan popd
root@mypc:/main/$ ls
dir1 dir2 dir3 dir4
root@mypc:/main/$ dirs # prints the current stack
/main
root@mypc:/main/$ pushd dir1 # Will cd to dir1 and document dir1 in dir stack, stack is now:
/main/dir1 /main
root@mypc:/main/dir1$ # I am now in /main/dir1
root@mypc:/main/dir1$ # Now let's go wild and document whatever I want
root@mypc:/main/dir1$ pushd ../dir2
root@mypc:/main/dir2$ # Woo I am in /main/dir2
root@mypc:/main/dir2$ pushd ../dir3
root@mypc:/main/dir3$ # Woo I am in /main/dir3
root@mypc:/main/dir3$ pushd ../dir4
root@mypc:/main/dir4$ # Woo I am in /main/dir4
root@mypc:/main/dir4$ dirs # Now dir stack is:
/main/dir4 /main/dir3 /main/dir2 /main/dir1 /main
Katakanlah saya melakukan hal di atas karena saya ingin menavigasi kembali ke folder yang saya dokumentasikan!
Perhatikan bahwa jika saya melakukan cd secara manual, saya akan memengaruhi entri tumpukan direktori teratas (yang selalu merupakan direktori saat ini)
root@mypc:/main/dir4$ cd .. # Now dir stack is:
# (note that /main appear in the leftmost as well which is the top of the stack)
/main /main/dir3 /main/dir2 /main/dir1 /main
root@mypc:/main$
Mari bernavigasi mundur sekarang:
root@mypc:/main$ popd
root@mypc:/main$ # Still in /main since it was at the top of the dir stack
root@mypc:/main$ dirs # Stack is now:
/main/dir3 /main/dir2 /main/dir1 /main
root@mypc:/main$ popd
root@mypc:/main/dir3$ popd # Woo in dir3 now, about to navigate to dir2
root@mypc:/main/dir2$ popd # Woo in dir2, about to navigate to dir1
root@mypc:/main/dir1$ dirs # Stack is now:
/main
Sekali lagi saya dapat mendokumentasikan dir apa pun yang saya inginkan dan kemudian menavigasi secara manual ke dir lain maka saya akan dapat dengan mudah kembali ke dir yang terdokumentasi yang saya masukkan ke stack.
Use case 2: Menavigasi menggunakan indeks tumpukan numerik
Katakanlah saya mendorong menggunakan dird dir4 dir3 dir2 dir1, sekarang menjalankan dir -v akan menunjukkan:
root@mypc:/main$ dirs -v
0 /main/dir1 (this is the current dir you are in always)
1 /main/dir2
2 /main/dir3
3 /main/dir4
Sekarang Anda dapat melakukan operasi Linux apa pun yang melibatkan direktori menggunakan indeks tumpukan:
root@mypc:/main$ cp ~2/temp.txt ~3/new_temp.txt # this will run in the background, something like:
# cp /main/dir2/temp.txt /main/dir3/new_temp.txt
Anda bahkan dapat menghapus entri tertentu dari tumpukan direktori:
root@mypc:/main$ popd ~4
Berharap bahwa menggunakan kata-kata "mendokumentasikan" atau berpikir tentang tumpukan stack karena beberapa jenis Db menyederhanakan konsep!
cd -
,, alias untuk memperpendekcd ..
, dll.).