歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

如何在Shell中快速切換目錄?

經常在shell下工作的筒子們經常會在不同的目錄來回切換,那麼,如何能提高切換的效率呢?不用每次手動輸入cd /path/to/dir1; cd /path/to/dir2?
在只有兩個目錄的情況下,有個很簡單也很直觀的辦法:
$ cd -          #表示回到之前的目錄                                   
多說一句,這個-還有其他的一個典型用法:如果文件名參數是一個單破折號"-",表示從標准輸入讀取文件列表:
$ grep 'abc' -  #表示接受標准輸入的數據,並從中找到包含'abc'字符串的行,打印出來
abdse           #我在鍵盤的輸入                                      
abc                                                                
abc             #grep的輸出                                         
lsl                                                                
[CTRL-C]        #按ctrl+c結束輸入                                    

兩個目錄尚且可以用上述方法快速切換,那麼對於多個目錄呢?pushd,dirs和popd這一組強大而易用的命令現在可以上場了.
對於CS畢業的人來說,棧是很熟悉的了,這一組命令實際上也是維護了一個目錄棧.

    pushd /path/to/dir,顧名思義,表示將指定目錄入棧,另外,它還具有一個更強大的附加功能:像將棧內的元素順序隨意調整(似乎有些違背棧的原理了:),
正是這個功能讓我們可以隨心所欲的切換目錄,而無視目錄在棧中的位置.這種用法可以描述為pushd +num 後面我將詳細介紹.
 
    popd /path/to/dir,表示將指定的目錄出棧,當我們不需要訪問某個目錄時,就是用這個命令將其清理出'門戶'.與pushd對應,popd也有另一種形式的命令:popd +num.
  
    dirs,顯示當前棧的內容,從左向右分別是棧頂->棧底.

應用示例:
$ cd                                                                       
                                                                           
~$ dirs                         #顯示當前目錄棧                               
                                                                           
#---------------------------------                                         
#我們先加幾個目錄玩玩                                                          
#---------------------------------                                         
~$ pushd ~/A              #將指定目錄入棧                                     
~/A ~                                                                      
                                                                           
~/A$ pushd ~/B            #繼續入棧, 注意此時的當前目錄已經切換到剛剛入棧的目錄,即:~/A
~/B ~/A ~                 #當前棧的內容從左往右:棧頂->棧底                      
                                                                           
~/B$ pushd ~/C            #最後一個了,大家堅持住                               
~/C ~/B ~/A ~                                                              
                                                                           
#---------------------------------                                         
#現在我們試試切換目錄                                                          
#---------------------------------                                         
~/C$dirs                  #打印當前棧的內容                                   
~/C ~/B ~/A ~                                                              
                                                                           
~/C$ pushd                #切換到B目錄,pushd 意思隱含為pushd +1                          
~/B ~/C ~/A               #切換過去的同時會打印出切換後的棧情形.                  
~/B$                      #注意當B到棧頂後,剩余元素位置按其之前棧內順序排列         
                                                                           
~/B$ pushd +2             #切換到棧頂+2個目錄即A目錄                           
~/A ~/B ~/C                                                                
~/A$                                                                       
#---------------------------------                                         
#有不用的目錄,將其扔出                                                         
#---------------------------------                                         
~/A$ popd +1              #將~/B目錄出棧                                     
~/A ~/C                                                                    
~/A$                      #此時目錄不會切換   

Copyright © Linux教程網 All Rights Reserved