Shell 使用 pushd 和 popd實現快速定位


Shell 使用 pushd 和 popd實現快速定位,如果需要在文件系統的多個位置上切換時,慣常的實踐就是復制並粘貼路徑,然后使用cd命令。但當涉及位置不止一個的時候,這種方法的效率並不高。如果需要在位置之間來回切換,時間都耗費在輸入或粘貼路徑上了。Bash和其他shell都支持使用pushdpopd命令切換目錄。

 

預備知識

pushdpopd可以用於在多個目錄之間切換而無需重新輸入目錄路徑。這兩個命令會創建一個路徑棧,它是一個保存了已訪問目錄的LIFO列表(LastInFirstOut,后進先出)。

實戰演練

可以使用pushdpopd來代替cd命令。
(1) 壓入並切換路徑:

~ $ pushd /var/www 
Shell

現在棧中包含/var/www ~,當前目錄為 /var/www。
(2) 再壓入下一個目錄路徑:

/var/www $ pushd /usr/src 
Shell

現在棧中包含/usr/src /var/www ~,當前目錄為/usr/src。
你可以根據需要壓入更多的目錄路徑。
(3) 查看棧的內容:

$ dirs /usr/src /var/www ~ /usr/share /etc 0 1 2 3 4
Shell

(4) 當你想切換到棧中任意一個路徑時,將每條路徑從0編號到n,然后使用你希望切換到的路徑編號。例如:

$ pushd +3
Shell

這條命令會將棧進行翻轉並切換到目錄/usr/share。
pushd總是向棧中添加路徑。如果要從棧中刪除路徑,可以使用popd
(5) 刪除最近壓入的路徑並切換到下一個目錄:

$ popd 
Shell

假設現在棧包含/usr/src /var/www ~ /usr/share /etc,當前目錄是 /usr/src,popd會將棧更改為/var/www ~ /usr/share /etc,然后把當前目錄切換至/var/www。
(6) 用popd +num可以從棧中移除特定的路徑。num是從左到右、從0到n開始計數的。

補充內容

讓我們再進行一些基本的目錄定位練習。
當涉及3個以上的目錄時,pushdpopd就可以發揮作用了。但是如果只涉及兩個位置,還有另一個更簡便的方法:cd -
假設當前路徑是 /var/www,執行下面的命令:

/var/www $ cd /usr/src /usr/src $ # 做點什么
Shell

現在要切換回 /var/www,不需要再輸入/var/www了,只執行:

/usr/src $ cd -
Shell

你還可以再切換到 /usr/src:

/var/www $ cd -


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM