高效SHELL環境 step by step(一): 命令別名

基礎環境

在進行高效的SHELL實踐以前,首先配置一下基礎環境,固然首先是須要一臺MacOS電腦。這裏採用: zsh + oh-my-zsh + zsh-completions + zsh-autosuggestions 。具體安裝步驟以下:git

# 切換默認SHELL爲 zsh
$: chsh -s /bin/zsh

# 安裝 oh-my-zsh
$: sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

# 安裝 zsh-completions
$: git clone https://github.com/zsh-users/zsh-completions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-completions

# 安裝 zsh-autosuggestions
$: git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

複製代碼

安裝完成後,輕鬆敲打幾個命令,該提示的、補全的也都如預期般的展現,的確大大的提高了命令輸入的效率。github

命令別名

減小輸入的另外一個辦法就是對拼寫複雜的命令設置簡易的別名。alias別名命令最常規的用法就是,定義別名。固然這是alias命令的主要功能之一。不過它還具備其它功能,不細看的話很容易被忽略掉。shell

不妨經過tldr命令查詢看看alias的功能列表:bash

$: tldr alias
alias

Creates aliases -- words that are replaced by a command string.
Aliases expire with the current shell session, unless they're defined in the shell's configuration file, e.g. `~/.bashrc`.

- List all aliases:
    alias

- Create a generic alias:
    alias word="command"

- View the command associated to a given alias:
    alias word

- Remove an aliased command:
    unalias word

- Turn `rm` into an interactive command:
    alias rm="rm -i"

- Create `la` as a shortcut for `ls -a`:
    alias la="ls -a"
複製代碼

不難看出,alias命令還有另外檢索的功能,該功能在咱們設置別名時先判斷是否已經存在別名很是有用。session

框架擴展

若是僅僅認爲oh-my-zsh只是提供的個性化的主題腳本框架,真是過小看它了。它一套真正的基於zsh的腳本框架,其真正的威力還表如今其提供的200多個插件上, 固然這些插件是須要安裝的,在 oh-my-zsh 的插件目錄中僅僅是這些工具的輔助函數或是別名。經過這個插件目錄,咱們能夠發現大量功能強大的工具。固然咱們也能夠將本身經常使用的腳本放進來,做爲獨立的分支維護我的命令。app

一般,oh-my-zsh都會開啓默認插件git功能。可是具體git插件提供了哪些功能則須要經過插件的README文件。打開一看,裏面提供的別名有 141 個之多,這麼多的別名很明顯是沒法記憶的。框架

# 統計一些git的別名總數
$: alias | grep ^g | wc -l
141
複製代碼

若是可以在使用時快速的查詢這些別名,用時查詢,一旦用得多了,也就記住了。先經過別名命令手動查詢:less

$: alias | grep ^g
g=git
ga='git add'
gaa='git add --all'
gap='git apply'
gapa='git add --patch'
gau='git add --update'
gav='git add --verbose'
gb='git branch'
gbD='git branch -D'
...
複製代碼

如今,咱們就能夠經過將這個簡單命令行,寫出本身的腳本,集成的oh-my-zsh的框架,做爲本身的插件獨立維護。在oh-my-zsh的插件目錄中,增長一個自定義的插件alias.提供一個快速查詢現有別名的功能。curl

$: mkdir ~/.oh-my-zsh/plugins/alias
$: cd ~/.oh-my-zsh/plugins/alias
$: cat <<EOF > alias.plugin.zsh
function alias-find(){
    alias | grep $1
}

alias af="alias-find "
EOF

複製代碼

完成編輯後,.zshrc中增長alias插件。從新開啓新的SHELL窗口,如今就能夠經過af別名命令查詢已有的別名了。svn

$: af commit
gc='git commit -v'
'gc!'='git commit -v --amend'
gca='git commit -v -a'
'gca!'='git commit -v -a --amend'
gcam='git commit -a -m'
'gcan!'='git commit -v -a --no-edit --amend'
'gcans!'='git commit -v -a -s --no-edit --amend'
gcmsg='git commit -m'
'gcn!'='git commit -v --no-edit --amend'
gcs='git commit -S'
gcsm='git commit -s -m'
gdt='git diff-tree --no-commit-id --name-only -r'
git-svn-dcommit-push='git svn dcommit && git push github master:svntrunk'
gsd='git svn dcommit'
gwch='git whatchanged -p --abbrev-commit --pretty=medium'
gwip='git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify --no-gpg-sign -m "--wip-- [skip ci]"'
複製代碼

這樣就能夠快速的查詢已有存在commit內容的別名命令了。

總結

  • oh-my-zsh是一個腳本框架,若是使用該框架,儘量最大化的使用到它的功能。
  • 擴展本身的插件,能夠很是有效的管理本身的腳本。

參考項目

我的的alias插件項目,請參閱:liujianping/oh-my-zsh.

相關文章
相關標籤/搜索