Shell

如何使用 pushd 和 popd 命令?

  • September 22, 2021

兩者的實際用途是什麼?pushd何時popd使用這兩個命令優於cdand cd -

編輯:我正在尋找一些使用這兩個命令的實際範例或將堆棧與目錄保持一致的原因(當您有製表符完成時,,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

引用自:https://unix.stackexchange.com/questions/77077