讓切換目錄更方便: 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 -v0 /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 -v0 ~
[root@localhost ~]# pushd -n /boot/grub
[root@localhost ~]# dirs -v
0 ~
1 /boot/grub
用 -c引數即可
看例子:
[root@localhost ~]# dirs -v0 ~
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所代表的目錄。引數 指...