Zsh:75個命令、插件、別名和工具,助你提升終端效率
我每天大部分時間都在終端工作,而我選擇的 shell 是 Zsh——一個高度可定制的 Unix shell,擁有許多強大的功能。作為一個懶惰的開發者™,我一直在尋找減少輸入量並自動化所有任務的方法。幸運的是,Zsh 正是為此而生的。
在這篇文章中,我將分享 75 個命令、插件、別名和工具,希望能幫助你節省一些按鍵次數,提高日常工作的效率。
如果你還沒有在你的機器上安裝 Zsh,請查看這篇文章,我將向你展示如何快速上手。
關鍵要點
Zsh 的 15 個開箱即用功能
Zsh 與 Bash 共享許多方便的功能。以下功能並非 Zsh 獨有,但仍然值得了解。我鼓勵你開始使用命令行來執行以下列出的操作。起初,它可能看起來比使用 GUI 更費力,但一旦你掌握了竅門,你將永遠不會後悔。
cd
將直接帶你回到你的主目錄。 !!
將調出最後一個命令。如果命令失敗是因為需要管理員權限,這將非常方便。在這種情況下,你可以輸入 sudo !!
。 &&
來鏈接多個命令。例如,mkdir project && cd project && npm init -y
。 ||
可以進行條件執行。例如,git commit -m "whatever..." || echo "Commit failed"
。 mkdir
命令的 -p
開關將允許你根據需要創建父目錄。使用花括號擴展可以減少重複。例如,mkdir -p articles/jim/sitepoint/article{1,2,3}
。 NODE_DEBUG=myapp node index.js
。或者,在每個會話的基礎上設置:export NODE_DEBUG=myapp
。你可以通過輸入 echo $variable-name
來檢查它是否已設置。 cat /var/log/kern.log | less
使長的日誌易於閱讀,或者 history | grep ssh
搜索包含“ssh”的任何歷史記錄條目。 nano ~/.zshrc
(nano),subl ~/.zshrc
(Sublime Text),code ~/.zshrc
(VS Code)。如果文件不存在,當你按下編輯器中的“保存”時,它將被創建。 <kbd>Ctrl</kbd> <kbd>a</kbd>
將帶你到一行的開頭。 <kbd>Ctrl</kbd> <kbd>e</kbd>
將帶你到結尾。 <kbd>Ctrl</kbd> <kbd>w</kbd>
刪除一個單詞(向後)。 <kbd>Ctrl</kbd> <kbd>u</kbd>
將刪除從光標到行首的所有內容。 <kbd>Ctrl</kbd> <kbd>k</kbd>
將清除從光標到行尾的所有內容。最後三個可以使用 <kbd>Ctrl</kbd> <kbd>y</kbd>
撤消。 <kbd>Ctrl</kbd> <kbd>Shift</kbd> <kbd>c</kbd>
複製文本。這比右鍵單擊並選擇“複製”要優雅得多。 <kbd>Ctrl</kbd> <kbd>shift</kbd> <kbd>v</kbd>
粘貼複製的文本。 嘗試記住這些按鍵組合。你會驚訝於它們會有多麼頻繁地派上用場。
15 個自定義別名,提升你的生產力
別名是常規命令的終端快捷方式。你可以將它們添加到你的 ~/.zshrc
文件中,然後重新加載你的終端(使用 source ~/.zshrc
)以使它們生效。
聲明(簡單)別名的語法如下:
<code>alias [alias-name]='[command]'</code>
別名非常適合常用命令、長命令或語法難以記住的命令。以下是一些我經常使用的別名:
一個 myip
別名,它將你當前的公共 IP 地址打印到終端:alias myip='curl http://ipecho.net/plain; echo'
。
一個 distro
別名,用於輸出有關你的 Linux 發行版的信息:alias distro='cat /etc/*-release'
。
一個 reload
別名,因為我似乎總是記不住如何重新加載我的終端:alias reload='source ~/.zshrc'
。
一個 undo-git-reset
別名:alias undo-git-reset-head="git reset 'HEAD@{1}'"
。這將恢復運行 git reset HEAD~
的效果。
一個更新包列表的別名:alias sapu='sudo apt-get update'
。
一個使用 sudo 重新運行上一個命令的別名:alias ffs='sudo !!'
。
因為我很懶,所以我將 y
作為 yarn
命令的別名:alias y='yarn'
。這意味著我可以克隆一個倉庫,然後只需輸入 <kbd>y</kbd>
即可引入所有依賴項。我從 Syntax 上的 Scott Tolinski 那裡學到了這個。
我不常用,但這個別名會清除 node_modules
文件夾並刪除 package-lock.json
文件,然後重新安裝項目的依賴項:alias yolo='rm -rf node_modules/ && rm package-lock.json && yarn install'
。正如你可能知道的,yolo 代表 You Only Live Once。
一個打開我的 .zshrc
文件進行編輯的別名:alias zshconfig='subl $HOME/.zshrc'
。
一個更新 rbenv 可以安裝的 Ruby 版本列表的別名:alias update-available-rubies='cd ~/.rbenv/plugins/ruby-build && git pull'
一個在你當前目錄啟動服務器的別名(不需要 npm 包):alias server='python -m SimpleHTTPServer 8000'
。
你還可以創建一個別名,以便在瀏覽器中打開文檔:alias npmhelp='firefox https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/npm'
。
一個全局別名,用於將命令的輸出管道傳輸到 less:alias -g L='| less'
。你可以像這樣使用它:cat production.log L
。
一個全局別名,用於將命令的輸出管道傳輸到 grep:alias -g G='| grep'
。你可以像這樣使用它:history G ssh
。
你還可以使用函數來創建別名。以下(取自此處)創建了一個添加、提交並將代碼推送到 GitHub 的別名:
<code>alias [alias-name]='[command]'</code>
在線上有很多地方可以找到更多關於別名的想法。例如,這個 Hacker News 討論,或者這篇關於使用 Zsh 提高命令行生產力的文章。
使用 (Oh My) Zsh 可以完成的 15 件很酷的事情
Oh My Zsh 是一個社區驅動的框架,用於管理你的 Zsh 配置,並捆綁了數千個有用的函數、助手、插件和主題。如果你要將 Z shell 作為你的日常驅動程序,你應該 真的 安裝 Oh My Zsh。
以下是 Oh My Zsh 可以為你做的十五件有用的事情:
take
命令將創建一個新目錄 並 進入該目錄。 take my-project
替換 mkdir my-project && cd my-project
。 zsh_stats
將為你提供前 20 個命令及其運行次數的列表。 ..
是 cd ...
的別名。 ...
將你向上移動兩個目錄,....
向上移動三個,.....
向上移動四個。 cd
。例如,輸入 /
將直接帶你到你的文件系統根目錄。 /h/j/De
並按下 <kbd>TAB</kbd>
,然後 <kbd>Return</kbd>
,將帶我到 /home/jim/Desktop/
。 rd
是 rmdir
的別名,md
是 mkdir -p
的別名。 d
來列出終端會話中最後使用的目錄。 cd -n
導航到這些目錄中的任何一個,其中 n 是目錄編號。 ls -
並按下 <kbd>TAB</kbd>
將列出所有命令選項,以及對它們功能的有用描述。這也適用於 cap
、rake
、ssh
和 kill
。 alias
將列出你當前的所有別名。 ls *.html
將列出當前目錄中的所有 HTML 文件。要包含子目錄,請更改為:ls **/*.html
。 ls -l **/*(.x)
將查找當前目錄和所有子目錄中的所有可執行文件。 ls *(m-7)
將列出過去一周內修改的所有文件。 ls *(Lm 1)
將查找大小大於 1MB 的所有文件。 使用插件,獲得樂趣和收益
Oh My Zsh 附帶 大量 插件。你應該瀏覽這些插件,並投入一些時間學習那些可以幫助你工作流程的插件。
以下是我經常使用的三個插件,它們提供了大量方便的快捷方式和別名。
10 個漂亮的 Git 別名
git 插件提供了許多別名和一些有用的函數。為什麼不瀏覽這些並嘗試記住你最常用的十個呢?以下是我最常用的那些。
g
是 git
的方便別名。這意味著你可以輸入諸如 g clone <whatever></whatever>
之類的內容,而不是 git clone <whatever></whatever>
。可能只有兩個按鍵,但它們很快就會累積起來。 gaa
是 git add all
的別名。我一直都在使用這個。 gb
是 git branch
的別名,它將列出當前倉庫中的所有分支,並顯示你當前所在的哪個分支。 gcb
是 git checkout -b
的別名,這個命令允許你創建一個新的分支。 gcm
是 git checkout master
的別名。這將你返回到主分支。 gdca
是 git diff --cached
的別名。這允許你對已暫存以進行提交的任何文件進行差異比較。 gf
是 git fetch
的別名。 gm
是 git merge
的別名。 gp
是 git push
的別名。要同步倉庫的分支,你可以執行:gf upstream
,gm upstream/master
,然後是 gp
。 glog
是 git log --oneline --decorate --graph
的別名,它將為你提供一個漂亮的 git 分支圖。 10 個方便的 npm 別名
npm 插件提供了補全以及許多有用的別名。
npmg
是 npm install --global
的別名,你可以使用它在你的系統上全局安裝依賴項。例如,npmg nodemon
。 npmS
是 npm install --save
的別名,你可以使用它來安裝依賴項並將它們添加到你的 package.json
的 dependencies
部分。請注意,從 npm 5.0.0 開始,在運行 npm i <package></package>
時,這是默認值。 npmD
是 npm install --save-dev
的別名,你可以使用它來安裝依賴項並將它們添加到你的 package.json
的 devDependencies
部分。 npmO
是 npm outdated
的別名,它將檢查註冊表以查看任何(或特定)已安裝的包當前是否已過期。 npmL
是 npm list
的別名,它將列出已安裝的包。 npmL0
是 npm list --depth=0
的別名,它列出頂級包。這對於查看全局安裝了哪些模塊特別有用,而不會用巨大的依賴樹淹沒你的終端:npmL0 -g
。 npmst
是 npm run start
的別名,這是一個常用於啟動應用程序的 npm 腳本。 npmt
是 npm run test
的別名,正如你可能猜到的那樣,它用於運行你的測試。 npmR
是 npm run
的別名。它本身將列出項目的所有可用 npm 腳本,以及對它們功能的描述。與腳本名稱一起使用時,它將運行該腳本,例如,npmR build
。 npmI
是 npm init
的別名。這將向你提出一些問題,然後根據你的答案創建一個 package.json
。使用 -y
標誌來自動化此過程。例如,npmI -y
。 10 個節省時間的 Rails/Rake 別名
此插件增加了對 Ruby on Rails 框架和 Rake 程序的補全,以及一些用於日誌和環境變量的別名。
rc
是 rails console
的別名,它允許你從 CLI 與你的 Rails 應用程序交互。 rdc
是 rake db:create
的別名,它(除非設置了 RAILS_ENV
)將為你的應用程序創建開發和測試數據庫。 rdd
是 rake db:drop
的別名,它將刪除你的應用程序的開發和測試數據庫。 rdm
是 rake db:migrate
的別名,它將運行任何掛起的數據庫遷移。 rds
是 rake db:seed
的別名,它運行 db/seeds.rb
文件以使用數據填充你的開發數據庫。 rgen
是 rails generate
的別名,它將生成樣板代碼。例如:rgen scaffold item name:string description:text
。 rgm
是 rails generate migration
的別名,它將生成數據庫遷移。例如:rgm add_description_to_products description:string
。 rr
是 rake routes
的別名,它列出應用程序的所有已定義路由。 rrg
是 rake routes | grep
的別名,它允許你列出和過濾已定義的路由。例如,rrg user
。 rs
是 rails server
的別名,它啟動 Rails 默認的 Web 服務器。 其他資源
上面列出的插件的主要工作是為常用命令提供別名。請注意,還有許多其他插件可以為你的 shell 添加其他功能。
以下是我最喜歡的四個:
sudo
允許你通過按兩次 <kbd>ESC</kbd>
來輕鬆地為當前或之前的命令添加 sudo
前綴。 autosuggestions
根據歷史記錄和補全內容在你鍵入時建議命令。如果建議的是你正在尋找的命令,請按 <kbd>→</kbd>
鍵接受它。一個真正的節省時間的工具! command-not-found
:如果 $PATH
中未識別命令,它將使用 Ubuntu 的 command-not-found
包來查找它或建議拼寫錯誤。 z
是一個方便的插件,它會構建你最常用和最近的文件夾列表(它稱之為“frecent”),並允許你使用一個命令跳轉到它們。 不要忘記,如果你在終端上花費大量時間,那麼讓它在視覺上更具吸引力是值得的。幸運的是,Oh My Zsh 附帶了許多主題供你選擇。我最喜歡的主題是 Agnoster。
你可以在我的文章《10 個 Zsh 提示和技巧:配置、自定義和用法》中了解更多關於主題的信息。
結論
就是這樣:75 個 Zsh 命令、插件、別名和工具。我希望你在學習過程中學到了一兩個技巧,並且我鼓勵你離開你的 GUI 並進入終端。它比看起來容易得多,並且是提高生產力的好方法。
如果我錯過了你最喜歡的插件或節省時間的別名/命令,請在 Twitter 上告訴我。
想從你的工具包中獲得更多收益嗎?請查看 Wiley 的《Visual Studio Code:Web 開發人員的端到端編輯和調試工具》。
關於 Zsh 命令、插件、別名和工具的常見問題
Zsh,也稱為 Z shell,是一個強大的 shell,包含來自其他 shell(如 Bash、tcsh 和 ksh)的功能。它比這些 shell 提供了一些優勢。首先,Zsh 具有強大的自動完成功能,可以建議命令、文件名、選項甚至主機名。此功能可以顯著加快你的工作流程。其次,Zsh 支持共享命令歷史記錄,這允許你查看在另一個終端會話中鍵入的命令。第三,Zsh 允許你同時使用 Emacs 和 vi 編輯模式,這使得它對不同的用戶來說更加靈活。最後,Zsh 擁有一種強大的腳本語言,具有關聯數組和浮點運算等功能,這些功能在 Bash 中是不可用的。
Zsh 允許你使用 PROMPT
變量來自定義你的提示符。你可以在你的 .zshrc
文件中設置此變量。例如,如果你想在你的提示符中顯示當前目錄,你可以使用 %~
參數。因此,你的 PROMPT
變量將如下所示:PROMPT='%~%# '
。你還可以使用 %F{color}
參數向你的提示符添加顏色。例如,要使你的提示符為綠色,你可以使用:PROMPT='%F{green}%~%# %f'
。 %f
將顏色重置為默認顏色。
Zsh 中的別名可以通過允許你為長命令或常用命令創建快捷方式來幫助你節省時間。你可以使用 alias
命令後跟別名和你要快捷的命令來創建一個別名。例如,要為 ls -l
命令創建一個別名,你可以使用:alias ll='ls -l'
。你可以將此行添加到你的 .zshrc
文件中以使別名永久生效。
Zsh 插件是為你的 Zsh shell 添加附加功能的腳本。它們可以幫助你自動化任務、添加新功能或自定義你的 shell。要使用 Zsh 插件,你首先需要安裝它。這通常涉及將插件的存儲庫克隆到你的 .oh-my-zsh/plugins
目錄中,然後將插件添加到你的 .zshrc
文件中的 plugins
數組中。安裝插件後,你就可以開始使用它的功能了。
從 Bash 切換到 Zsh 是一個簡單的過程。首先,你需要使用你的包管理器安裝 Zsh。例如,在 Ubuntu 上,你可以使用:sudo apt install zsh
。安裝 Zsh 後,你可以使用 chsh
命令將其設置為你的默認 shell:chsh -s $(which zsh)
。下次你打開終端時,它將使用 Zsh。
Zsh 主題允許你自定義 shell 的外觀。你可以更改配色方案、提示符佈局,甚至添加當前時間或 git 狀態等元素。要使用 Zsh 主題,你首先需要安裝它。這通常涉及將主題的存儲庫克隆到你的 .oh-my-zsh/themes
目錄中,然後將你的 .zshrc
文件中的 ZSH_THEME
變量設置為主題的名稱。安裝主題後,你可以通過獲取你的 .zshrc
文件來激活它:source ~/.zshrc
。
Oh My Zsh 是一個社區驅動的框架,用於管理你的 Zsh 配置。它附帶了許多有用的函數、插件和主題。要使用 Oh My Zsh,你首先需要安裝它。這通常涉及下載安裝腳本並在你的終端中運行它。安裝 Oh My Zsh 後,你可以通過編輯你的 .zshrc
文件來開始自定義你的 shell。
Zsh 函數允許你將命令組合在一起並將其作為單個命令執行。你可以使用 function
關鍵字後跟函數名稱和命令塊來定義函數。例如,要創建一個打印“Hello, world!”的函數,你可以使用:function hello { echo "Hello, world!"; }
。你可以通過鍵入函數名稱來調用此函數:hello
。
Zsh 支持索引數組和關聯數組。你可以使用 set
命令後跟數組名稱和元素來創建索引數組。例如,要創建一個顏色數組,你可以使用:set -A colors red green blue
。你可以使用其索引訪問數組的元素:echo $colors[1]
。要創建關聯數組,你可以使用 typeset
命令:typeset -A colors; colors[red]=#FF0000; colors[green]=#00FF00; colors[blue]=#0000FF;
。
Zsh 支持幾種類型的循環,包括 for、while 和 until 循環。 for 循環允許你為列表中的每個元素重複執行命令塊。例如,要打印從 1 到 5 的數字,你可以使用:for i in {1..5}; do echo $i; done
。 while 循環允許你在條件為真時重複執行命令塊。例如,要打印從 1 到 5 的數字,你可以使用:i=1; while (( i < 6 )); do echo $i; i=$((i 1)); done
。 until 循環允許你在條件為假時重複執行命令塊。例如,要打印從 1 到 5 的數字,你可以使用:i=1; until (( i > 5 )); do echo $i; i=$((i 1)); done
。
以上是75個ZSH命令,插件,別名和工具的詳細內容。更多資訊請關注PHP中文網其他相關文章!