linux用命令列快速切換目錄

2021-07-24 11:47:47 字數 3048 閱讀 4031

和很多人一樣,我也是在電腦前度過一天的大部分時間。為了提高效率(並且不讓我的身體有太多的抱怨),我試著建立乙個優化的環境。例如,我使用vim寫**,使用vimperator瀏覽網頁,使用 i3 視窗管理器。其他日常事情就是檔案系統導航(從乙個目錄切換到另乙個目錄——譯者注)。我更喜歡使用命令列來,但是一遍又一遍的輸入 cd ~/some/very/deep/often-used/directory 變得很麻煩。

像autojump、z 和 fasd 這樣的自動工具,通過提供乙個指向你常用資料夾的快捷方式來處理這個問題。就我個人來說,我希望有乙個更加手動的方法,我將這個方法向大家分享。我發現用這個方法後,效率有很大的提高,並且希望你們也能提高效率。

使用符號鏈結跳轉

export markpath=$home/.marks 

function jump  

function mark  

function unmark  

function marks  

將它們放在你的.zshrc或.bashrc 檔案,你就可以開始跳轉了(mac os x使用者需要乙個稍微有些不同的makes函式版本,請見下方)。我也把這轉換成了乙個叫做jump的oh-my-zsh外掛程式,但是這玩意目前還在pull-request。為了新增乙個新書籤,cd到目錄然後使用乙個你喜歡的名字標記上它。

$ cd ~/some/very/deep/often-used/directory 

$ mark deep 

這段文字將在目錄~/.marks中新增乙個叫做deep的符號鏈結。跳轉到這個目錄,在檔案系統中的任何地方輸入以下命令。

$ jump deep 

$ unmark deep 

你可以通過輸入如下指令來瀏覽所有的標籤

$ marks 

deep    -> /home/johndoe/some/very/deep/often-used/directory 

foo     -> /usr/bin/foo/bar 

沒了

新增tab補齊

為了給jump和unmark函式新增tab補齊,新增如下**到.zshrc中(感謝tiziano88):

function _completemarks  

compctl -k _completemarks jump 

compctl -k _completemarks unmark 

或者新增如下**到.bashrc中(感謝microcolonl)

_completemarks()  

local wordlist=$(find $markpath -type l -printf "%f\n") 

compreply=($(compgen -w '$' -- "$curw")) 

return 0 

} complete -f _completemarks jump unmark 

現在如果你輸入jump或者unmark 然後回車,你會看見乙個所有可用的標籤.碉堡了!

給mac os x>使用者:

如guygurari指出的,mac os x使用者需要乙個稍微有些不同的makes函式版本:

function marks ' 

}

譯者注:

此功能windows下也可以實現。做4個批處理 :jump.bat、mark.bat、unmark.bat、marks.bat。每個bat的內容如下:

jump.bat:

@echo off 

set markpath=%~dp0.marks 

if [%1]== goto err 

if not exist "%markpath%/%1" (echo "no such mark: %1") else cd "%markpath%/%1" 

:err 

echo type a mark, please. 

mark.bat

@echo off 

set markpath=%~dp0.marks 

set tar=%cd% 

if not exist %markpath% ( goto makedir ) else ( goto makelink ) 

:makedir 

md %markpath% 

attrib +h %markpath% 

goto makelink 

:makelink 

cd %markpath% 

mklink /j %1 %tar% 

cd %tar% 

unmark.bat

@echo off 

set markpath=%~dp0.marks 

rd %markpath%\%1 

marks.bat

@echo off 

set markpath=%~dp0.marks 

echo mark list: 

dir /b %markpath% 

將4個bat都放在系統環境變數%path%中任意乙個目錄下,或者將bat檔案所在目錄新增進%path%中就行了。因為window在 vista/win7在引入這個功能,因此只能在vista/win7以上的系統中使用。還有一點不一樣的是,鏈結檔案儲存在bat檔案所在目錄下 的.marks隱藏資料夾下,而不是某個系統資料夾,這樣在刪除的時候也不用亂找了。

使用的時候和上述描述一樣,使用如下命令:

跳**

jump markname 

mark markname 

unmark markname 

marks 

就是marks的功能就沒有那麼強了。。。

Linux 命令列快速切換回切換目錄之前的目錄

看到這個標題,是不是感覺有點繞?linux 下的 cd change directory 命令相信大家都用過,雖然不敢說是大家使用最多的命令,但至少算使用最多之一的了吧!root master ruby learning pwd root ruby learning root master ruby...

Alfred 在命令列快速切換目錄

alfred 的安裝與使用 每天在命令列下,一大部分的工作都是一遍又一遍的輸入 cd some very deep often used directory這樣來切換目錄,現在利用乙個簡單的配置可以實現如下效果 首先進入我的日常工作目錄,標記乙個書籤mark sanguo cd users kimi...

windows 命令列切換目錄

windows命令列切換目錄的方式不如linux下直接好用,不同的目錄還需要不同的切換方法,記錄下來以備以後查閱,也希望能幫到有需要的人。1.切換到c盤根目錄 開啟終端cmd後,輸入cd c 一定要加上後面的反斜扛 2.切換到c盤子目錄 開啟終端cmd後,輸入cd c dir1 切換到c盤下目錄di...