情景linux--如何擺脫深路徑的頻繁切換煩惱?
情景
通常情況下,在linux系統上切換目錄的成本很低,使用cd命令就可以了。如果需要在一個目錄的不同的子目錄和其父目錄之間切換,進入到這個目錄之後,再使用相對路徑會比較方便。如果要切換的目錄的路徑較淺,那使用絕對路徑也未嘗不可。
但是,如果需要頻繁在兩個以上的深路徑的目錄裡切換,無論使用相對路徑還是絕對路徑,切換目錄都會比較耗時,嚴重影響你工作的效率。
有沒有什麼好方法呢?
方案
為了方便舉例,我們在當前使用者的根目錄下建立一個目錄dir_test
,然後進入到該目錄下。
$ pwd
/home/j-tester/dir_test
再在這個目錄下建立幾個路徑較深的目錄:
$ mkdir -p 1/11/111/1111/11111 2/22/222/2222/22222 3/33/333/3333/33333 4/44/444/4444/44444
為了方便演示和說明,故意將每個目錄的名稱都設定為數字,且根據層次依次增加數字的位數。實際情景下遇到的長路徑無論是目錄名稱的長度還是每層目錄下的子目錄數量都比本例要複雜得多的。
檢視一下這些個目錄:
$ ls -l */*/*/*/*
1/11/111/1111/11111:
總用量 0
2/22/222/2222/22222:
總用量 0
3/33/333/3333/33333:
總用量 0
4/44/444/4444/44444:
總用量 0
兩個目錄
如果只需要在兩個目錄之間切換,無論目錄的路徑長短,使用cd -
(切換到上一個目錄)應該是最高效的。
比如,只需要在11111
和33333
兩個目錄之間切換:
先進入11111
目錄,再進入33333
目錄,此時執行cd -
就進入了11111
目錄。再執行cd -
就又回到了33333
目錄,如此反覆。並且cd -
執行後會輸出當前所在的目錄。
$ cd /home/j-tester/dir_test/1/11/111/1111/11111
$ pwd
/home/j-tester/dir_test/1/11/111/1111/11111
$ cd /home/j-tester/dir_test/3/33/333/3333/33333
$ pwd
/home/j-tester/dir_test/3/33/333/3333/33333
$ cd -
~/dir_test/1/11/111/1111/11111
$ cd -
~/dir_test/3/33/333/3333/33333
$ cd -
~/dir_test/1/11/111/1111/11111
是不是很方便?但務必注意,它只能記住上一個目錄是什麼,所以如果在兩個目錄之間切換它剛好適用。當需要在更多的目錄裡切換時,它就Hold不住了。
軟連結
linux系統下可以建立軟連結,相當於windows下的快捷方式。
使用軟連結的方式可以從一定程度上降低切換目錄的成本,但也有著明顯的缺點:
- 如果實現n個目錄的自由切換,需要建立n*(n-1)個軟連結,這樣看來,似乎僅當n=2時工作量還可以接受;
- 切換別的目錄時,還需要重新建立軟連結;
- 建立軟連結畢竟需要對目錄內容進行了改變,這往往不是預期的效果;
所以,介紹軟連結用於切換目錄只是提供一種思路而已。
目錄棧命令
但凡是切換目錄的場景,目錄棧命令都hold住。
目錄棧命令共有三個:pushd、popd、dirs。
要想熟練使用這三個命令,首先要理解什麼是目錄棧。
目錄棧
目錄棧是使用者最近訪問過的系統目錄的列表(和環境變數DIRSTACK內容相對應),並以堆疊的形式管理,列表中的每一項都是絕對路徑。
dirs
dirs命令的結果顯示當前目錄棧中的所有記錄。預設情況下的目錄棧是當前目錄。
dirs
~
cd dir_test
dirs
~/dir_test ~
進入到dir_test
目錄後執行dirs
,結果首先是當前目錄,其次是進入dir_test
之前的目錄棧內容。這說明了,cd dir_test
的操作是除了進入目錄之外,還將dir_test
這個目錄加入到了目錄棧中。目錄棧的最左端是棧頂,最右端是棧底。
用法:
dirs [+N] [-N] [-cplv]
引數說明:
+N 將第N個目錄顯示出來(從左邊棧頂數起,數字從0開始)
-N 將第N個目錄顯示出來(從右邊棧底數起,數字從0開始)
-c 刪除目錄棧中的所有記錄
-l 以完整格式顯示(預設情況下當前使用者的根路徑用~表示)
-p 每行一個目錄來顯示目錄棧的內容
-v 每行一個目錄來顯示目錄棧的內容,每個目錄前加上的編號,從0開始
pushd
pushd的作用是將目錄加入到目錄棧的頂部,並切換到該目錄。
不帶引數執行時,效果是互換目錄棧頂部的前兩個目錄的位置,也就實現了在棧頂的最上面兩個目錄之間切換。
用法:
pushd [-n] [+N] [-N]
pushd [-n] [dir]
引數說明:
-n 將目錄入棧時,不切換目錄
+N 將第N個目錄移至棧頂(從左邊棧頂數起,數字從0開始)
-N 將第N個目錄移至棧頂(從右邊棧底數起,數字從0開始)
popd
popd的用途是刪除目錄棧中的記錄。
不帶引數執行時將刪除目錄棧頂部的目錄,然後切換到新的棧頂元素所指向的目錄。
用法:
popd [-n] [+N] [-N]
引數說明:
+N 將第N個目錄刪除(從左邊棧頂數起,數字從0開始)
-N 將第N個目錄刪除(從右邊棧底數起,數字從0開始)
-n 將目錄出棧時,不切換目錄
三個命令都有+N和-N的引數,且規則一致,為了避免混淆,記住一個方向即可:
自頂(棧頂、左邊)向下(棧底、右邊)是正道(正號、+N)。
建立別名
實際使用時還可以為pushd和popd設定別名,比如:
alias p1="pushd +1"
alias p2="pushd +2"
alias pp1="popd +1"
alias pp2="popd +2"
可根據自己的實際需求定製。
目錄棧命令用起來非常靈活,也非常便利。
擴充套件知識
- 快捷目錄
-
- 軟連結
- 目錄棧及命令
相關文章
- 六位一體Serverless化應用,幫你擺脫伺服器的煩惱Server伺服器
- 擺脫詳情頁設計的文案排版困難!解決你的設計煩惱!
- REDIS主從頻繁切換事件排查Redis事件
- 如何向外行解釋PM頻繁更改需求為什麼會令程式設計師煩惱?程式設計師
- 擺脫redux繁瑣操作,搭建mobx框架Redux框架
- 漫畫 | 如何向外行解釋產品經理頻繁更改需求會令程式設計師很煩惱?程式設計師
- 程式設計師如何擺脫單身煩惱,這七張圖將告訴你如何脫單!程式設計師
- 如何擺脫工具類
- 擺脫IT思維,工業網際網路才能走深向實
- 如何例項化不同頁面物件對應不同的 iframe,而不用頻繁切換物件
- 80埠的煩惱
- [20160119]日誌頻繁切換.txt
- Google 能擺脫路徑依賴,不只做一個廣告公司麼?Go
- 程式設計師如何擺脫平庸?程式設計師
- 工程師如何解決穿衣搭配煩惱?工程師
- 智慧考勤管理工具,讓HR擺脫考勤統計麻煩的困擾
- 煩惱是人生的一部分——《少年維特的煩惱》讀書筆記筆記
- 如何讓AI系統擺脫偏見AI
- 金融機構如何應對日益頻繁的網路攻擊?
- redo切換頻率查詢
- oracle 歸檔切換頻率Oracle
- REDO日誌切換頻率
- win10輸入法簡繁切換怎麼設定_win10電腦輸入法如何切換簡體繁體Win10
- 如何處理頻繁建立物件然後丟棄導致頻繁GC的情況物件GC
- 如何擺脫專案命名困難的尷尬局面
- 程式設計師如何擺脫IT職場的內卷困局?程式設計師
- 軟體測試人員的煩惱
- 網路攻擊日益頻繁,金融機構該如何應對?
- 迷茫的軟體測試員,如何擺脫工具人身份?
- python如何將相對路徑轉換為絕對路徑?Python
- 解耦解的早,改需求沒煩惱解耦
- 程式設計師的十大煩惱程式設計師
- 如何用極低成本解決網站託管煩惱?網站
- 網際網路產品經理的三大煩惱,你有嗎?
- Istio:微服務開發的終極利器,你還在為繁瑣的通訊和部署流程煩惱嗎?微服務
- 檢視Oracle的redo日誌切換頻率Oracle
- win10簡體繁體切換快捷鍵是哪個_win10快捷鍵怎麼切換簡體繁體Win10
- 擺脫面試恐懼症的六招面試