本文將精選介紹一些「知道的人都知道,但其實不太常被使用」的實用指令。
我已整理成可直接複製貼上、馬上就能使用的形式,建議你一邊開著終端機一邊閱讀。
在日常使用 Linux 的過程中,總會有讓人想著「有沒有辦法更快一點?」的時刻。
這裡不介紹常見的 ls 或 grep,而是精選 5 個一旦知道就能大幅提升工作效率的指令。
適合讀者:
fzf — 將各種選擇變成交互式# Ubuntu / Debian
sudo apt install fzf
# macOS (Homebrew)
brew install fzf
# 啟用按鍵綁定(依環境不同,路徑或步驟可能不同)
$(brew --prefix)/opt/fzf/install
# 載入 Bash 的按鍵綁定(依環境不同,路徑可能不同,請確認)
source /usr/share/doc/fzf/examples/key-bindings.bash
# 或參考安裝時提示的 key-bindings 路徑
fzf 是一個稱為模糊搜尋器的工具,能夠將透過管線傳入的任意清單進行互動式篩選。
# 互動式選擇檔案並開啟
vim $(fzf)
# 讓歷史搜尋快到飛起來(加入 .bashrc / .zshrc)
# 按 Ctrl+R 啟動
source /usr/share/doc/fzf/examples/key-bindings.bash
# 排除目前分支(前面會有 *)以安全選擇
git checkout $(git branch | grep -v "^\*" | fzf)
你可以邊篩選邊選擇分支。再也不用擔心輸入很長的分支名稱時打錯字。
fzf 本身就很強大,但和其他指令搭配時更能發揮真正價值。這正是「把所有東西都用管線串起來」的 UNIX 哲學體現。
※互動式:會依操作即時回應的雙向系統
tldr — man 指令的輕鬆版# 官方 Node.js 用戶端(建議)
npm install -g tldr
# (參考)也有 Python 實作等其他用戶端,
# 但本文以 npm 版本為前提說明。
man 指令雖然詳細,但閱讀起來很花時間。tldr 會直接顯示實用的指令範例。
# 快速確認 tar 指令的用法
tldr tar
輸出範例:
tar
Archiving utility.
Often combined with a compression method, such as gzip or bzip2.
- Create an archive and write it to a file:
tar cf target.tar file1 file2 file3
- Extract a (compressed) archive file into the current directory:
tar xf source.tar[.gz|.bz2|.xz]
- List the contents of a tar file:
tar tvf source.tar
這樣就不用打開 man tar 一直往下捲了。
watch — 即時監視指令多數 Linux 發行版都有預先安裝。
如果沒有,可以用以下指令安裝:
sudo apt install procps
其他發行版請在套件管理器中搜尋 watch。
watch 會定期執行指定指令,並持續更新畫面上的輸出。很適合用來監控日誌或確認資源使用狀況。
# 每 2 秒更新一次磁碟使用量(預設)
watch df -h
# 每 1 秒更新一次
watch -n 1 df -h
# 將變動的部分以反白方式顯示
watch -d free -h
watch -n 2 docker ps
你只要在另一個終端機跑部署流程,同時在這個視窗看著容器啟動狀況就好。按 Ctrl+C 結束。
xargs — 將標準輸出轉成參數傳給下一個指令管線 | 會把標準輸出當作「文字串流」傳遞,但 xargs 則是把這些文字以空白或換行分割後,展開成參數的橋接工具。
# 刪除目前目錄下所有 .log 檔
find . -name "*.log" | xargs rm
# 透過平行執行加速建置(使用 -P 指定程序數)
cat targets.txt | xargs -P 4 -I {} make {}
如果檔名包含空白,xargs 可能會誤判。與 find 搭配時,建議使用 -print0 與 -0 來安全處理。
# 先確認要刪除的目標(也支援包含空白的檔名)
find . -name "*.log" -print0 | xargs -0 echo rm
# 確認沒問題後,移除 echo 直接執行
find . -name "*.log" -print0 | xargs -0 rm
xargs rm 的威力非常強,正式環境中建議先養成用 xargs echo 確認刪除目標的習慣。
tmux — 終端機分割與隨機管理sudo apt install tmux
tmux 是終端機多工器。它可以把一個終端機視窗分割成多個區塊,也能在 SSH 連線中斷後讓工作繼續執行。
Ctrl+b)操作指令新建一個工作階段tmux new -s mysession工作階段列表tmux ls附加到工作階段tmux attach -t mysession左右分割畫面Ctrl+b %上下分割畫面Ctrl+b "在面板之間移動Ctrl+b ←↑↓→分離工作階段Ctrl+b d### 最強的使用情境:SSH 連線斷開了也能繼續幹活
# 透過 SSH 登入伺服器後
tmux new -s deploy
# 執行需要較長時間的處理
./deploy.sh
### 最強的使用情境:SSH 斷線後仍可在伺服器上持續執行工作
# 即使 SSH 連線中斷,伺服器上的 tmux 工作階段與工作也會持續存在
# 重新連線後可用 tmux attach 重新開始作業
# 重新連線後
tmux attach -t deploy
對於長時間的批次處理或部署作業來說,這是必備工具。
一句話說明各指令:fzf:將任何內容交互式篩選 tldr:man 的輕鬆版 watch:即時監視指令 xargs:將輸出作為參數傳給下一個指令 tmux:終端機分割與工作階段管理
有沒有哪一個指令讓你特別感興趣呢?
先用 tldr 減少「查指令的時間」,再用 fzf 減少「選擇的時間」,光是這樣就能明顯感受到工作速度變快。
不妨實際試試看,並把你喜歡的工具整合到 shell 設定檔裡吧!