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 +/-n **
pushd +/-n 就是直接切換到對應索引值的目錄。注意,這裡既可以用加號,也可以用減號。如果是加號的話,將從目錄棧由上往下數,而用減號的話,將從目錄棧由下往上數。
接下來就回到了我們本文開頭的問題,如果我們要在兩個或多個路徑很長的目錄之間頻繁切換,該如何操作?
首先,我們用pushd + 目錄的方式將這幾個路徑新增到目錄棧中;
然後,再用pushd +/-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 下對於目錄的切換,大家肯定會想到乙個命令 cd命令。這個是 linux 下再基本不過的命令,如果這個命令都不知道的話,趕緊剖腹自盡去吧。cd 命令確實很方便,但如果需要頻繁在下面的目錄切換,你可能要懷疑人生了 home alvin projects blogdemos linux sys...
Linux下高效切換目錄的方法
linux 下對於目錄的切換,大家肯定會想到乙個命令 cd 命令。這個是 linux 下再基本不過的命令,如果這個命令都不知道的話,趕緊剖腹自盡去吧。cd 命令確實很方便,但如果需要頻繁在下面的目錄切換,你可能要懷疑人生了 home alvin projects blogdemos linux sy...
關於如何快速切換目錄 Linux
想跟大家分享一下,很多人剛開始用linux 的 cli時,最不習慣的一點就是目錄的切換要一直cd來cd去,其實這樣無形中浪費了很多時間,因為根據英國研究 大誤 linux cli的操作者80 會進入的目錄可能集中在全部目錄的2 而已,所以推薦大家乙個工具 那就是 autojump 迷之聲 好像很久很...