在 Linux 中使用 pushd 和 popd 命令來進行目錄導航
看到別人寫的指令碼中有pushd 和popd 。 查資料學習了一下。
自己的總結如下:
目錄壓入棧和調到指定目錄都使用pushd。popd 用於刪除指定的目錄,當刪除棧的第一個元素時,當前目錄會變為原來棧中的第二個目錄。
pushd不加引數時,棧內的第0個目錄和第1個目錄會互換位置。
原文地址:https://linux.cn/article-8558-1.html
我們將討論兩個相關的命令:pushd
和popd
,使用它們可以高效的瀏覽 Linux 目錄結構。這兩個命令在大多數 shell ,比如 bash、tcsh 中都存在。
pushd
和popd
命令根據 ‘LIFO’(後進先出)原則工作。在這個原則之下,只有兩個操作是允許的:把一個目錄壓入棧,以及把一個目錄彈出棧。
pushd
命令會增加一個目錄到棧頂,而popd
命令會從棧頂移除一個目錄。
為了顯示目錄棧中(或歷史)的目錄,我們可以使用下面展示的dirs
命令:
pushd
命令:將一個目錄路徑新增到/放入目錄棧(歷史)中,之後,你可以瀏覽位於目錄棧(歷史)中的任意目錄。當把一個新的目錄入棧時,會打印出當前位於棧中的所有目錄。
下面這些命令會展示這個命令是如何工作的:
根據上面輸出的目錄棧可知(目錄索引按倒序排列):
/var/log
是目錄棧中的第五個目錄,索引為 0~/Desktop/
是第四個,索引為 1~/Document/
是第三個,索引為 2/var/www/html
是第二個,索引為 3~
另外,我們也可以使用目錄索引的形式pushd +#
或pushd -#
來新增目錄入棧。為了進入目錄~/Documents
,我們可以輸入:
注意,經過上一步操作以後,棧的內容便發生了改變。所以,要從上面的例子中進入目錄/var/www/html
,我們應該使用下面的命令:pushd +1
popd
命令-從棧頂或歷史中移除一個目錄。為了列出目錄棧中的所有目錄,只需輸入: popd
為了從目錄棧中移除一個目錄,我們可以使用popd +#
或popd -#
命令,在這時,我們需要輸入下面的命令來移除目錄~/Documents
:pop +1