Linux

Bash 程式設計教學與範例:alias 建立指令別名

介紹如何在 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'

實用別名範例

以下是各種實用的別名範例。

防止誤刪檔案

cprmmvln 這幾個指令有時候若操作不慎,可能會造成誤刪檔案的問題,透過別名讓它們都自動加上 -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 連線指令非常適合用別名的方式來簡化,真的會方便很多,尤其還包含一堆參數的狀況:

# 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'

參考資料

Share
Published by
Office Guide
Tags: Bash

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

9 個月 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

9 個月 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

9 個月 ago

Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例

本篇介紹如何在 Windows...

10 個月 ago

Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例

介紹如何在 Linux 中使用...

11 個月 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

11 個月 ago