前言
Linux系統中,我們在目錄之間切換一般使用cd命令,cd雖然可在目錄之間來回切換,但是cd的效率太低,進入之後退出需要反覆輸入路徑;那有沒有一種高效簡單的目錄操作命令?
答案是肯定的,那就是:pushd & popd
命令簡述
- dirs:顯示當前所在目錄以及目錄棧的內容
- pushd(push dir): 將目錄壓入目錄棧
- popd(pop dir): 將目錄彈出目錄棧
目錄棧遵循先進後出原則
dirs使用
dirs命令顯示當前所在目錄及目錄棧中的內容。即使目錄棧爲空,dirs也會顯示當前所在的目錄
code sample:
# popd
-bash: popd: directory stack empty
# dirs
~
# pwd
/home/ramesh
pushd使用
先創建一些臨時的目錄然後把他們壓入目錄堆棧中去,執行pushd的同時也會跳轉到對應的目錄
code sample:
# mkdir /tmp/dir1
# mkdir /tmp/dir2
# mkdir /tmp/dir3
# mkdir /tmp/dir4
# cd /tmp/dir1
# pushd .
# cd /tmp/dir2
# pushd .
# cd /tmp/dir3
# pushd .
# cd /tmp/dir4
# pushd .
# dirs
/tmp/dir4 /tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1
dirs顯示的第一個目錄名總會是當前所在的目錄,而不是顯式壓入堆棧裏的內容
當前目錄棧的內容如下:
/tmp/dir4
/tmp/dir3
/tmp/dir2
/tmp/dir1
popd使用
最後被壓入的目錄會在堆棧的頂端。當你執行“popd”,系統就會跳轉到棧頂的目錄中,並且從堆棧中把它清除掉。正如上面所展示的,最後壓入堆棧的是/tmp/dir4,所以當進行一次popd時,就會跳轉到/tmp/dir4目錄下同時從堆棧中將它移除
code sample:
# popd
# pwd
/tmp/dir4
[注:執行完上popd命令之後,目錄棧包括以下目錄
/tmp/dir3
/tmp/dir2
/tmp/dir1]
# popd
# pwd
/tmp/dir3
[注:執行完上popd命令之後,目錄棧包括以下目錄
/tmp/dir2
/tmp/dir1]
# popd
# pwd
/tmp/dir2
[注:執行完上popd命令之後,目錄棧包括以下目錄 /tmp/dir1]
# popd
# pwd
/tmp/dir1
[注:執行完上popd命令之後,目錄棧包括以下目錄]
# popd
-bash: popd: directory stack empty