用命令列在檔案系統中快速導航

2021-06-18 00:07:13 字數 3167 閱讀 3845

2013-8-18更新: 感謝hacker news的討論中很多有用的建議,我新增了(1)**的引用,(2)tab補齊的章節,和(3) 給mac os x使用者的注釋。

跟很多人一樣,我在電腦度過一天的大部分時間。為了提高效率(並且不讓我的身體有太多的抱怨)我試著建立乙個優化的環境.例如,我使用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中(感謝microcolonel)

_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 '

}

如果你喜歡我所講的東西,你可能想在twitter上follow我。

譯者注:

此功能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的功能就沒有那麼強了…

Hadoop 檔案系統命令列基礎詳解

hadoop 命令列最常用指令篇 1.ls list directory usage hadoop fs 程式設計客棧 ls r option r 遞迴顯示 2.mkdir make directory u程式設計客棧sage hadoop fs mkdir p takes path uri s a...

命令列在程式執行中的使用

我們做開發的時候,比如需要呼叫api實現的一些功能,比如殺掉某個程序,獲取當前程序列表 判斷當前有無某個程序 或者註冊服務,或者查詢當前某個埠是否有被占用的時候。大部分都是通過獲取api進行解決,查介面文件比如msdn,或者系統相關的介面看是否有可以實現功能的函式。但是我在這裡講解一下另外一種方法,...

linux用命令列快速切換目錄

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