命令行里打 cd 簡直是浪費生命

簡評:作為工程師,你在命令行下最常打的命令無非就是 cd 與 ls。這些年你浪費了多少時間?

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

比如像這樣:

當然你可能用的稍微熟練點了,用 Tab 能省不少事,像這樣:

不錯!你大約節省了 20 次的輸入,值得稱讚。你也會使用 mkdir 創建新目錄並直接進入新建目錄(cd !$),你也能記住 project 的目錄,你就不用老 ls 來尋找文件。不過現實問題,人不是電腦,我們能記住一兩個,但不可能記住全部,我們的效率不夠高。

有沒有想過這種方式?

現在只需要 j d(或者 j dev、j develop)就可以跳轉到 ~/Develop 目錄,j p 就可以跳轉單 ~/Develop/project。效率大幅提高。

看看對比:

這是如何實現的?

用 AutoJump 可以做到。(GitHub 地址:wting/autojump)

根據官方介紹,它能以更快的方式瀏覽系統文件,這並不準確,或者說很謙虛。據我完全估計,用 AutoJump 至少讓我省了 100 個小時,最起碼省了這麼多。

Autojump 是如何工作的?

看看這兩個命令:

它們的作用相同。AutoJump 會記住 cd 命令並用 j 來進入所有的目錄。更重要的是 AutoJump 可以模糊匹配。意味著只需要提供一個字母,就可以匹配到之前訪問過的該首字母的目錄。

如果有兩個以 p 為開頭的目錄怎麼辦?

這就是有趣的地方。

當你第一次輸入 cd directory_name,AutoJump 會記錄該目錄並成為絕對路徑,並將其指定權重為 10.0 分。

舉個例子:

然後輸入 j -s 命令可以看到(s 代表統計信息):

如果你再次 cd/var 後,j -s,看看會發生什麼?

對,這個路徑的權重增加了。比如看看我電腦上的 j -s,我平時都在幹什麼你就會一目了然:

我第一個campus 和第四個 SodeSchool 都包含字母 c,那麼 AutoJump 應該縣跳轉到哪個目錄呢?

由於 campus 權重低,所以會 j c 會跳到 CodeSchool 目錄,如果重複 j c 命令,就會跳轉到 campus 目錄。

如果你不喜歡 AutoJump 自動設置的路徑,你可以自己設置匹配:

你可以設置後面的數字, j c _4 就是 j c 跳轉到第四個目錄。

高級功能

  • jc(注意沒空格 不是上面的 j c)僅在子目錄下跳轉,非常適合尋找被嵌套的 log
  • jo 會在操作系統下打開匹配的目錄。
  • j -i 增加當前目錄權重
  • j -d 減少當前目錄權重
  • j --purge 消除所有的權重

安裝 AutoJump

AutoJump 支持:

  • Python v2.6+(除了 3.2 版本)
  • 支持的 shell:
  • bash v4.0+
  • zsh
  • fish
  • tcsh (experimental)
  • clink (Windows, experimental)

你可以通過許多 Linux 軟體包安裝器來安裝。對於 MacOS 我推薦 Homebrew 的 brew install autojump,真的超簡單方便。

把 Autojump 放在.bash_profile 或者 .szhrc 下,輸入命令行:

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

它會自動檢查腳本是否可用並載入到 shell 中。

你也可以克隆 git 倉庫,手動安裝。不管怎麼說,它都是一個非常簡單的、穩定的工具。

我用了它的這些年裡,從來沒有後悔過。

下載地址:wting/autojump(GitHub)


園長:翻譯完這篇我就馬上安裝了,最開始還不太習慣,不過感覺確實能快了不少。

極光日報,極光開發者旗下媒體。

每天導讀三篇英文技術文章。

推薦閱讀:

學編程有前途嗎?
關於在坐標系中旋轉平移物體的理論基礎解析
編程中所講的「思維深度」的本質是什麼?
家裡沒人怎麼防火防盜?裝上這段自動看家程序
從零開始手敲次世代遊戲引擎(DX12特別篇)

TAG:Shell編程 | 編程 | 軟體開發 |