Shell
如何使用 pushd 和 popd 命令?
兩者的實際用途是什麼?
pushd
何時popd
使用這兩個命令優於cd
andcd -
?編輯:我正在尋找一些使用這兩個命令的實際範例或將堆棧與目錄保持一致的原因(當您有製表符完成時,,
cd -
縮短別名cd ..
等)。
pushd
,popd
, 和是允許您操作目錄堆棧dirs
的 shell 內置函式。這可用於更改目錄但返回到您所在的目錄。例如
從以下目錄啟動:
$ pwd /home/saml/somedir $ ls dir1 dir2 dir3
推送到 dir1
$ pushd dir1 ~/somedir/dir1 ~/somedir $ dirs ~/somedir/dir1 ~/somedir
dirs
命令確認我們現在在堆棧上有 2 個目錄。dir1
和原始目錄,somedir
. **注意:**我們的“目前”目錄是~/somedir/dir1
.推到 ../dir3 (因為我們現在在裡面
dir1
)$ pushd ../dir3 ~/somedir/dir3 ~/somedir/dir1 ~/somedir $ dirs ~/somedir/dir3 ~/somedir/dir1 ~/somedir $ pwd /home/saml/somedir/dir3
dirs
顯示我們現在在堆棧中有 3 個目錄。dir3
,dir1
, 和somedir
. 注意方向。每個新目錄都被添加到左側。當我們開始彈出目錄時,它們也將來自左側。手動將目錄更改為
../dir2
$ cd ../dir2 $ pwd /home/saml/somedir/dir2 $ dirs ~/somedir/dir2 ~/somedir/dir1 ~/somedir
現在開始彈出目錄
$ popd ~/somedir/dir1 ~/somedir $ pwd /home/saml/somedir/dir1
注意我們彈回到
dir1
.再次彈出…
$ popd ~/somedir $ pwd /home/saml/somedir
我們又回到了我們開始的地方,
somedir
.可能會有點混亂,但堆棧的頭部是您目前所在的目錄。因此,當我們回到 時
somedir
,即使dirs
顯示如下:$ dirs ~/somedir
我們的堆棧實際上是空的。
$ popd bash: popd: directory stack empty