介紹如何在 bash shell 環境中使用 alias
建立別名,以簡短的別名代替冗長的指令。
在 Linux 中以指令進行各種操作時,若遇到參數長度很長、又相當常用的指令,每次都要以鍵盤輸入一長串重複的指令,就顯得不是很方便,這時候就可以使用 alias
建立指令的別名,以簡短的別名代替一長串的指令與參數。
alias
建立別名用 alias
建立別名就是使用一個簡短的名稱來代表一串指令,例如建立一個代表 ls -alF
的別名 ll
:
# 建立別名 alias ll='ls -alF'
在建立好別名之後,就可以使用別名來替代冗長的指令:
# 使用別名執行指令
ll
這時候執行 ll
這個別名就相當於執行 ls -alF
這個指令。
若要刪除別名,則可使用 unalias
指令,例如刪除 ll
這個別名:
# 刪除別名
unalias ll
~/.bashrc
別名設定我們可以將常用的別名寫在 ~/.bashrc
設定檔中,在每次登入時自動自動載入別名設定:
# ~/.bashrc 別名設定 alias ll='ls -alF' alias la='ls -A' alias l='ls -CF'
以下是各種實用的別名範例。
cp
、rm
、mv
與 ln
這幾個指令有時候若操作不慎,可能會造成誤刪檔案的問題,透過別名讓它們都自動加上 -i
參數,可以在刪除或覆蓋檔案時,跳出詢問的訊息,讓使用者確認後再進行刪除或覆蓋檔案,對於管理者來說是很常用的別名。
# 防止誤刪檔案 alias cp='cp -i' alias rm='rm -i' alias mv='mv -i' alias ln='ln -i'
對於 rm
指令的保護措施,可以有其他的方式:
# 防止刪除 / 根目錄、確認刪除超過三個檔案 alias rm='rm -I --preserve-root'
以下指令可以防止 root
管理者變更根目錄(/
)的權限:
# 防止變更 / 根目錄 alias chown='chown --preserve-root' alias chmod='chmod --preserve-root' alias chgrp='chgrp --preserve-root'
遠端機器的 ssh
連線指令非常適合用別名的方式來簡化,真的會方便很多,尤其還包含一堆參數的狀況:
# SSH 連線 alias myhost1='ssh ubuntu@192.168.0.1' alias myhost2='ssh -p 2222 ubuntu@192.168.0.2' alias myhost3='ssh -L 8888:localhost:8888 ubuntu@192.168.0.3'
grep
加上顏色讓 grep
輸出加上顏色有助於閱讀:
# 讓 grep 輸出加上顏色 alias grep='grep --color=auto' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto'
colordiff
傳統的 diff
輸出時是沒有顏色的,改用 colordiff
可把輸出加上顏色(但是要另外安裝 colordiff
):
# 改用 colordiff alias diff='colordiff'
iptables
防火牆設定用來列出 iptables
防火牆設定的別名:
# 列出 iptables 防火牆設定 alias iptlist='sudo /sbin/iptables -L -n -v --line-numbers' alias iptlistin='sudo /sbin/iptables -L INPUT -n -v --line-numbers' alias iptlistout='sudo /sbin/iptables -L OUTPUT -n -v --line-numbers' alias iptlistfw='sudo /sbin/iptables -L FORWARD -n -v --line-numbers'
常用的網頁伺服器管理指令也可以寫成別名:
# 各種網頁伺服器控制指令 alias nginxreload='sudo /usr/local/nginx/sbin/nginx -s reload' alias nginxtest='sudo /usr/local/nginx/sbin/nginx -t' alias lightyload='sudo /etc/init.d/lighttpd reload' alias lightytest='sudo /usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf -t' alias httpdreload='sudo /usr/sbin/apachectl -k graceful' alias httpdtest='sudo /usr/sbin/apachectl -t && /usr/sbin/apachectl -t -D DUMP_VHOSTS'
以下的別名可以查看系統上最耗費 CPU 與記憶體的行程:
# 取得最耗費 CPU 的行程 alias pscpu='ps auxf | sort -nr -k 3' alias pscpu10='ps auxf | sort -nr -k 3 | head -10' # 取得最耗費記憶體的行程 alias psmem='ps auxf | sort -nr -k 4' alias psmem10='ps auxf | sort -nr -k 4 | head -10'