linux 下對於目錄的切換,大家肯定會想到乙個命令:cd 命令。這個是 linux 下再基本不過的命令,如果這個命令都不知道的話,趕緊剖腹自盡去吧。
cd 命令確實很方便,但如果需要頻繁在下面的目錄切換,你可能要懷疑人生了:
/home/alvin/projects/blogdemos/linux-system-programming/thread
/home/alvin/projects/blogdemos/diff
/home/harry/study/日本文化/中日交流/影視業/動作片
如果只會 cd 命令的話,那麼就需要不停地 cd ,直到你發瘋。
這三個命令其實都是對 目錄棧 進行操作,而 目錄棧 就是乙個儲存目錄的棧結構,該棧結構的頂端永遠都存放著當前目錄(敲黑板了,重點!!)。
有程式設計基礎的同學都知道,棧 都是遵循著 後進先出 的原則。也就是說,在棧結構裡,後面進棧的元素,將先出棧。
複習完基本概念,我們再來詳細這三個命令。
顯示目錄棧內容:dirs
首先是 dirs 。這個命令很簡單,就是顯示目錄棧的內容。它有以下三個常用選項:
選項含義-p每行顯示一條記錄-v每行顯示一條記錄,同時展示該記錄在棧中的index-c清空目錄棧
其中,-p 與 -v 選項的區別是,-v 選項將顯示每條記錄在棧中的索引,除此之外完全一樣。假如現在有乙個目錄棧,我們來看看它裡面有啥內容:
[alvin@vm_0_16_centos dir2]$ pwd
/home/alvin/test/dir2
[alvin@vm_0_16_centos dir2]$ dirs -v
0 ~/test/dir2
1 ~/test/dir1
2 ~/test/dir3
3 ~/test
請注意,最頂部的元素永遠跟當前目錄一致,如果你在其它目錄下檢視目錄棧,第乙個元素將對應發生改變。同理,如果你用後文介紹的 pushd 和 popd 來操作目錄棧的話,當前目錄將切換到目錄棧的第乙個元素對應位址。
如果我們要清空目錄棧,直接使用 -c 選項即可。
[alvin@vm_0_16_centos diff]$ dirs -c
[alvin@vm_0_16_centos diff]$ dirs -v
0 ~/projects/blogdemos/diff
壓入目錄棧:pushd每次 pushd 命令執行完成之後,預設都會執行乙個 dirs 命令來顯示目錄棧的內容。pushd 的用法主要有如下幾種:
(1)pushd + 目錄
pushd 後面如果直接跟目錄使用,會切換到該目錄並且將該目錄置於目錄棧的棧頂。例子:
[alvin@vm_0_16_centos test]$ pushd dir1
~/test/dir1 ~/test
[alvin@vm_0_16_centos dir1]$ pushd ../dir2
~/test/dir2 ~/test/dir1 ~/test
[alvin@vm_0_16_centos dir2]$ pushd ../dir3
~/test/dir3 ~/test/dir2 ~/test/dir1 ~/test
[alvin@vm_0_16_centos dir3]$ dirs -v
0 ~/test/dir3
1 ~/test/dir2
2 ~/test/dir1
3 ~/test
(2) pushd (不帶任何引數)pushd 不帶任何引數執行的效果就是,將目錄棧最頂層的兩個目錄進行交換。前面我們已經強調過,目錄棧第乙個元素與當前目錄是相關的,所以第乙個元素發生改變時,當前目錄將對應切換,反之亦然。
[alvin@vm_0_16_centos dir3]$ dirs -v
0 ~/test/dir3
1 ~/test/dir2
2 ~/test/dir1
3 ~/test
[alvin@vm_0_16_centos dir3]$ pwd
/home/alvin/test/dir3
[alvin@vm_0_16_centos dir3]$ pushd
~/test/dir2 ~/test/dir3 ~/test/dir1 ~/test
[alvin@vm_0_16_centos dir2]$ pwd
/home/alvin/test/dir2 #對應目錄發生改變
[alvin@vm_0_16_centos dir2]$ dirs -v
0 ~/test/dir2
1 ~/test/dir3 #索引 0 和 1 的內容對調
2 ~/test/dir1
3 ~/test
(3) pushd +/-npushd +/-n 就是直接切換到對應索引值的目錄。注意,這裡既可以用加號,也可以用減號。如果是加號的話,將從目錄棧由上往下數,而用減號的話,將從目錄棧由下往上數。
接下來就回到了我們本文開頭的問題,如果我們要在兩個或多個路徑很長的目錄之間頻繁切換,該如何操作?
[alvin@vm_0_16_centos dir2]$ pwd
/home/alvin/test/dir2
[alvin@vm_0_16_centos dir2]$ dirs -v
0 ~/test/dir2
1 ~/test/dir3
2 ~/test/dir1
3 ~/test
[alvin@vm_0_16_centos dir2]$ pushd +2
~/test/dir1 ~/test ~/test/dir2 ~/test/dir3
[alvin@vm_0_16_centos dir1]$ pwd
/home/alvin/test/dir1
[alvin@vm_0_16_centos dir1]$ dirs -v
0 ~/test/dir1
1 ~/test
2 ~/test/dir2
3 ~/test/dir3
彈出目錄棧:popd每次 popd 命令執行完成之後,預設都會執行乙個 dirs 命令來顯示目錄棧的內容。popd 的用法主要有如下幾種:
(1) popd (不帶任何引數)
popd不帶任何引數執行的效果,就是將目錄棧中的棧頂元素出棧。這時,棧頂元素發生變化,自然當前目錄也會發生相應的切換。
[alvin@vm_0_16_centos dir3]$ dirs -v
0 ~/test/dir3
1 ~/test/dir1
2 ~/test
3 ~/test/dir2
[alvin@vm_0_16_centos dir3]$ popd
~/test/dir1 ~/test ~/test/dir2
[alvin@vm_0_16_centos dir1]$ dirs -v
0 ~/test/dir1
1 ~/test
2 ~/test/dir2
(2) popd +/-n將目錄棧中的第n個元素刪除。同樣的,加減號表示從上往下數,還是從下往上數。
[alvin@vm_0_16_centos dir1]$ dirs -v
0 ~/test/dir1
1 ~/test
2 ~/test/dir2
[alvin@vm_0_16_centos dir1]$ popd +1
~/test/dir1 ~/test/dir2
[alvin@vm_0_16_centos dir1]$ dirs -v
0 ~/test/dir1
1 ~/test/dir2
linux就該這麼 如何切換目錄 Linux下如何高效切換目錄?
linux 下對於目錄的切換,大家肯定會想到乙個命令 cd命令。這個是 linux 下再基本不過的命令,如果這個命令都不知道的話,趕緊剖腹自盡去吧。cd 命令確實很方便,但如果需要頻繁在下面的目錄切換,你可能要懷疑人生了 home alvin projects blogdemos linux sys...
Linux下如何高效切換目錄?
linux 下對於目錄的切換,大家肯定會想到乙個命令 cd命令。這個是 linux 下再基本不過的命令,如果這個命令都不知道的話,趕緊剖腹自盡去吧。cd 命令確實很方便,但如果需要頻繁在下面的目錄切換,你可能要懷疑人生了 home alvin projects blogdemos linux sys...
高效切換目錄的方式 pushd popd
平時工作中經常切換 目錄,最常用的就是cd了。但是用cd切換的話,很大的問題就是如果來回切換的目錄大於兩個的話,就需要不斷的敲 cd.這樣子,手都快敲斷了 最近了解乙個命令,可以輕鬆的來回切換目錄。pushd popd 通常,cd 能夠切換 兩個目錄,例如 如上可以看出來,實際上 cd 其中的 應該...