切換目錄pushd,popd,dirs,cd

2021-10-04 01:10:35 字數 4061 閱讀 7669

讓切換目錄更方便: pushd,popd,dirs,cd -

可能大家會有疑問,為何要使用這幾個命令,

難道用cd不就可以切換目錄了嗎?

沒錯,使用cd就可以切換到需要訪問的目錄,

但是有時會是乙個路徑很長,層次很多的目錄,進到此目錄下後,這時我們不小心執行了 cd命令,

理所當然,我們回到了自己的home目錄,這時如果想回去怎麼辦?

還有:因為工作的需要,我們需要不停在幾個很深層的目錄之間切換,不止乙個,

那麼即使有tab鍵幫忙,我們也會因為乙個cd命令花費很多時間,如何在多個目錄之間切換時能更方便些

pushd,popd是我們的好幫手

說明:  pushd,popd,dirs這幾個我們講到的命令是bash內建的命令,

所以只要登入到了bash,這幾個命令就可以使用了

如果只是在兩個目錄之間切換,那麼還不必使用pushd,

這時只需使用 cd -就可以了

cd -的作用是可以回到前乙個目錄,

看例子:

[root@localhost pics]# cd -

/root

[root@localhost ~]# cd -

[root@localhost pics]#

怎麼樣?在兩個目錄之間切換非常方便,無需再輸入很長的路徑

說明:為何cd -能夠回到前乙個目錄?

這是因為 -在此處等同於 $oldpwd變數,

此問題可以參見bash的info資訊,

cd 一項有相關的說明: an argument of - is equivalent to $oldpwd.  

$oldpwd變數就是bash所記錄的前乙個目錄

也就是說:$oldpwd和-相等

下面我們再看乙個例子:

[root@localhost pics]# echo $oldpwd;

/root

[root@localhost pics]# cd $oldpwd

[root@localhost ~]# echo $oldpwd;

[root@localhost ~]# cd $oldpwd;

[root@localhost pics]# echo $oldpwd;

/root

我們可以得到結構:  用cd -和cd $oldpwd都可以在最近所操作的兩個目錄之間進行切換

因為 cd -和 cd $oldpwd都是只支援最近操作的兩個目錄,所以要在多個目錄之間操作時,

我們需要使用 pushd

pushd:切換到作為引數的目錄,並把原目錄和當前目錄壓入到乙個虛擬的堆疊中

如果不指定引數,則會回到前乙個目錄,並把堆疊中最近的兩個目錄作交換

popd: 彈出堆疊中最近的目錄

dirs: 列出當前堆疊中儲存的目錄列表

看例子:

[root@localhost ~]# pushd /usr/local/sbin/

/usr/local/sbin ~

[root@localhost sbin]# dirs

/usr/local/sbin ~

[root@localhost sbin]# dirs -p -v

0 /usr/local/sbin

1 ~

[root@localhost kget]# dirs -p -v

1 /usr/local/sbin

2 ~

說明: dirs的 -p引數可以每行乙個目錄的形式顯示堆疊中的目錄列表

-v引數可以在目錄前加上編號

注意:有 -v時,不新增 -p也可以每行乙個目錄的形式顯示

說明之二:我們可以看到:最近壓入堆疊的目錄位於最上面

在最近的兩個目錄之間切換:用pushd不加引數即可

[root@localhost kget]# pushd /boot/grub/

[root@localhost grub]# dirs -v

0 /boot/grub

2 /usr/local/sbin

3 ~

[root@localhost grub]# pushd

[root@localhost kget]# dirs -v

1 /boot/grub

2 /usr/local/sbin

3 ~

[root@localhost kget]# pushd

[root@localhost grub]# dirs -v

0 /boot/grub

2 /usr/local/sbin

3 ~

[root@localhost grub]# dirs -v

0 /boot/grub

2 /usr/local/sbin

3 ~

[root@localhost grub]# pushd

[root@localhost kget]# dirs -v

1 /boot/grub

2 /usr/local/sbin

3 ~

[root@localhost kget]# pushd

[root@localhost grub]# dirs -v

0 /boot/grub

2 /usr/local/sbin

3 ~

說明:可以看到,用pushd不加引數在最近的兩個目錄之間切換時,

當前目錄總是位於堆疊的最上面

用 pushd +n即可

說明:n是乙個數字,有此引數時,是切換到堆疊中的第n個目錄,並把此目錄以堆疊迴圈的方式推到堆疊的頂部

需要注意: 堆疊從第0個開始數起

看例子:

[root@localhost grub]# dirs -v

0 /boot/grub

2 /usr/local/sbin

3 ~

[root@localhost grub]# pushd +2

[root@localhost sbin]# dirs -v

0 /usr/local/sbin

1 ~

2 /boot/grub

用popd即可

看例子:

[root@localhost sbin]# dirs -v

0 /usr/local/sbin

1 ~

2 /boot/grub

[root@localhost sbin]# popd

[root@localhost ~]# dirs -v

0 ~

1 /boot/grub

[root@localhost ~]# popd +1

[root@localhost ~]# dirs -v

0 ~

說明:可以看到popd不加引數的運**況:

popd把堆疊頂端的目錄從堆疊中刪除,並切換於位於新的頂端的目錄

說明之二: popd 加有引數 +n時,

n是堆疊中的第n個目錄,表示把堆疊中第n個目錄從堆疊中刪除

用 -n引數即可

看例子:

[root@localhost ~]# dirs -v

0 ~

[root@localhost ~]# pushd -n /boot/grub

[root@localhost ~]# dirs -v

0 ~

1 /boot/grub

用 -c引數即可

看例子:

[root@localhost ~]# dirs -v

0 ~

1 /boot/grub

[root@localhost ~]# dirs -c

[root@localhost ~]# dirs -v

0 ~

說明:  位於堆疊頂部的目錄是當前目錄,它不能被pop出去的

linux目錄切換

這兩天回看了一下自己的部落格內容.雖然目前沒有多少,但是也體現出了一些問題.最初的文章前面都有一句,專案需要.最初的內容都是東拼西湊.終於系統的接觸一些內容的時候發現.書籍仍然是學習知識最重要的途徑.可能同乙個經驗豐富的前輩共事也會學到很多.但是這樣的學習畢竟是不系統的.缺乏連續性.今天要談的內容,...

pushd popd切換目錄

讓切換目錄更方便 pushd,popd,dirs,cd 一,為何要使用這幾個命令?可能大家會有疑問,為何要使用這幾個命令,難道用cd不就可以切換目錄了嗎?沒錯,使用cd就可以切換到需要訪問的目錄,但是有時會是乙個路徑很長,層次很多的目錄,進到此目錄下後,這時我們不小心執行了 cd命令,理所當然,我們...

cd切換目錄

cd的基本語法是 cd 選項 引數 選項 p,如果目錄是符號鏈結,則進入實際的目錄 l,如果目錄是符號鏈結,則進行鏈結目錄 單獨的 選項,進入到呼叫cd命令時的上一次的工作目錄,即oldpwd所代表的目錄。預設情況下,cd可以不有任何選項,此時將進入到使用者主目錄,即 home所代表的目錄。引數 指...