天天看點

linux shell之pushd、popd、dirs

1 問題

我們有時候需要儲存多個路徑,上下鍵切換不友善,用cd-隻能到上個目錄,我們可以用dirs和pushd和popd

2 dirs、pushd、popd

dirs: 這個指令顯示棧裡面所有的路徑,一定會包含目前路徑,常用參數如下

dirs -v 顯示棧裡面的所有路徑和下标,通過下标,我們可以用pushd +下标到這個目錄,然後popd+下标把這個路徑在棧裡面彈出來,

dirs -c 清除棧裡所有路徑,但是目前路徑不會删除

pushd:我們可以添加目錄到棧(dirs)裡面,比如添加目前目錄pushd .  然後如果需要到棧裡面具體哪個路徑的話我們可以pushd +下标,如果是-下标的話,我們是從棧底算起

popd:我們可以彈出棧的最上面的一個路徑,我們也可以popd +n彈出棧裡面指定的具體路徑,如果是-下标的話,我們是從棧底算起

3 使用過程

比如我們在目前目錄下建立立4個檔案夾dir1、dir2、dir3、dir4

我們cd到dir1裡面去,然後把目前路徑再添加進去pushd .

我們cd到dir2裡面去,然後把目前路徑再添加進去pushd .

我們cd到dir3裡面去,然後把目前路徑再添加進去pushd .

我們cd到dir4裡面去,然後把目前路徑再添加進去pushd .

我們再檢視dirs -v

0  ~/Desktop/linux/dabian/shell/cat/push/dir3
 1  ~/Desktop/linux/dabian/shell/cat/push/dir3
 2  ~/Desktop/linux/dabian/shell/cat/push/dir4
 3  ~/Desktop/linux/dabian/shell/cat/push/dir2
 4  ~/Desktop/linux/dabian/shell/cat/push/dir1      

很明顯目前目錄是dir3,比如我們現在要去dir2,我們直接執行pushd +3  再執行dirs -v看下

0  ~/Desktop/linux/dabian/shell/cat/push/dir2
1  ~/Desktop/linux/dabian/shell/cat/push/dir1
2  ~/Desktop/linux/dabian/shell/cat/push/dir3
3  ~/Desktop/linux/dabian/shell/cat/push/dir3
4  ~/Desktop/linux/dabian/shell/cat/push/dir4      

很明顯我們可以看到目前目錄是dir2

比如我們執行下popd,彈出最頂層的那個,目錄會切換到最dir1,我們再看下dirs -v

0  ~/Desktop/linux/dabian/shell/cat/push/dir1
 1  ~/Desktop/linux/dabian/shell/cat/push/dir3
 2  ~/Desktop/linux/dabian/shell/cat/push/dir3
 3  ~/Desktop/linux/dabian/shell/cat/push/dir4      

然後我們删除dir4看下,popd +4,然後我們再dirs -v看下

0  ~/Desktop/linux/dabian/shell/cat/push/dir1
 1  ~/Desktop/linux/dabian/shell/cat/push/dir3
 2  ~/Desktop/linux/dabian/shell/cat/push/dir3      

很明顯目前目錄在dir1,我們切換到dir3裡面去,pushd +2 然後dirs -v看下

0  ~/Desktop/linux/dabian/shell/cat/push/dir3
 1  ~/Desktop/linux/dabian/shell/cat/push/dir1
 2  ~/Desktop/linux/dabian/shell/cat/push/dir3      

可以看到到了dir3這個目錄了,我們再清除所有的棧裡面的路徑dirs -c,然後我們再dirs看下

~/Desktop/linux/dabian/shell/cat/push/dir3      

在目前目錄了,沒毛病。

繼續閱讀