03.28 作為程序員 cd命令是在浪費你的時間

作為程序員 cd命令是在浪費你的時間

作為一個程序員或者在命令行shell中花費大量時間的人,您可能會經常以目錄效率低下的方式在目錄中移動。特別是如果你經常每天訪問相同的目錄。

可能有點像這樣:

cd ~/Development

ls # look around...

cd project

# whoops, never mind, let's go back...

cd ..

# time to start something new...

mkdir new_project

cd new_project

# need to check something in that other directory...

cd ../project

也許有了更多的經驗,你有一些製表符完成技巧,以避免輸入這些完整的目錄名稱,所以實際上它看起來更像是:

cd ~/Dev

ls # look around...

cd pro

cd ..

mkdir new_project

cd new

cd ../pro

是的,您也可以使用mkdir命令的返回值立即移動到新創建的目錄(cd !$)中。你可以記住它project/嵌套在裡面,Development/這樣你就不需要ls四處尋找自己的路。現實是,人們不是電腦,記住你整個目錄的樹狀結構是一種只能讓那些時間太長的人印象深刻的技巧。

但是這個怎麼樣?

j d

j p

cd ..

mkdir new_project

cd new

j p

最明顯的好處是,這個歷時18次較少的按鍵來完成同樣的目標,但什麼可能不那麼明顯的是,j d(或者j dev,j develop等)命令現在將帶你到 ~/Development/和j p到~/Development/project從你的文件系統內的任意位置。因此,打字效率的這種相對較小的增長將隨時間而複合化。

cd /usr/local/lib/something/log/

j p

pwd

~/Development/project

作為程序員 cd命令是在浪費你的時間

它是如何工作的?AutoJump

AutoJump是魔術披風,可以讓你在命令行中繞過目錄。該工具的官方描述是“一種更快的方式來瀏覽你的文件系統” - 但這並不公平。它有點欠佳。我完全估計,Autojump已經讓我至少在整整一年的時間內都有所收穫。至少這是它的感覺。

Autojump如何工作

這個命令:

j project

/Users/olivierlacan/Development/project

與此命令的作用相同:

j p

/Users/olivierlacan/Development/project

為什麼?因為AutoJump會記住您使用該cd命令或使用其自己的j命令進入的所有目錄。更重要的是,AutoJump可以進行模糊匹配。這意味著即使您只提供一個字母,它也會查找您之前訪問過的包含您提供的字符串的目錄。

如果你有兩個以這個字母開頭的目錄p?這就是它變得有趣的地方。

第一次鍵入時cd directory_name,Autojump會記錄該目錄的絕對路徑,並將其指定為權重(或評分)10.0。

所以如果你這樣做:

cd /var

您將在j -s命令中看到以下內容(s代表“統計信息”):

10.0: /var

如果你/var再次訪問會怎麼樣?

14.1: /var

等等。如果您經常訪問目錄,那麼該目錄的評分將會增加。就我而言,通過查看我的前5名,您可以輕鬆地猜出我大部分時間所花費的時間:

j -s

(...)

234.7: /Users/olivierlacan/Development/cs/campus

262.7: /Users/olivierlacan/Development/rubyheroes/rubyheroes.com

417.4: /Users/olivierlacan/Development/perso/orientation

874.1: /Users/olivierlacan/Development/cs/CodeSchool

________________________________________

10810: total weight

198: number of entries

0.00: current directory weight

data: /Users/olivierlacan/Library/autojump/autojump.txt

因為我的第一個(CodeSchool)和第四個(campus)目錄都包含這個字母c。AutoJump如何決定去哪裡?再次,評級。


由於campus評分低得多,AutoJump會先帶我去 CodeSchool。但是,如果我重複該j c命令,它將嘗試與該字母匹配的下一個最高評分目錄c。

j c

/Users/olivierlacan/Development/cs/CodeSchool

j c

/Users/olivierlacan/Development/cs/campus

如果您不喜歡盲目飛行並假設AutoJump會為您做出正確選擇,還可以查看哪些目錄與您提供的特定字符串匹配:

j c

$ j c__

c__1__/Users/olivierlacan/Development/cs/CodeSchool

c__2__/Users/olivierlacan/Development/cs/campus

c__3__/Users/olivierlacan/Development/perso/keep-a-changelog

c__4__/Users/olivierlacan/Development/perso/olivierlacan.com

$ j c__4

/Users/olivierlacan/Development/perso/olivierlacan.com

作為程序員 cd命令是在浪費你的時間

顯示與提供的參數相匹配的目錄編號列表後,AutoJump將預先填寫該命令,j c__並讓您鍵入要跳轉到的目錄號碼。

高級功能

在jc命令將範圍搜索只在當前目錄下,這是非常有用的發現嵌套的子目錄log 的目錄。

在jo命令會在操作系統的文件管理器打開匹配目錄。

該j -i命令將增加當前目錄的權重。

該j -d命令將減少當前目錄的權重。

j --purge如果您需要從頭開始,該命令將擦除AutoJump依賴的加權目錄列表。

安裝AutoJump

雖然AutoJump確實需要Python,但它是大多數shell(bash,zsh,fish)支持的一種簡單工具,您可以通過許多Linux軟件包管理器安裝AutoJump 。對於macOS,我推薦Homebrew's brew install autojump,它不能簡單,但要記住你必須在你的源代碼中添加AutoJump .bash_profile或.zshrc添加以下代

[ -f /usr/local/etc/profile.d/autojump.sh ] && . /usr/local/etc/profile.d/autojump.sh

它會檢查AutoJump腳本是否可用,並將其加載到shell中。

您也可以克隆git存儲庫,並使用手動安裝過程,如果您想保持最新的優勢,但由於其簡單性,它是一個令人難以置信的穩定工具。我不認為我在使用多年後遇到過單個錯誤。


分享到:


相關文章: