首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

Shell 隱藏技巧大公開:25 個你可能不知道的高效操作

     編輯:更多程式設計知識

前言:Shell 不只是打指令的地方

Shell 歷史可追溯至 1971 年 Ken Thompson 的 Thompson sh,比 Linux 核心還年長。Bash (Bourne Again Shell) 1987 年誕生至今仍是絕大多數 *nix/macOS 預設 Shell。TIOBE 排名長期穩定前 20,GitHub 專案佔比 8% 與 Java 齊平。掌握這些「冷門但實用」技巧,能讓終端機效率指數級提升。

🎯 核心效率鍵盤操作

操作 按鍵/指令 說明 場景範例
上一條指令最後參數 !$ 或 Alt+. / Esc+. 重複使用上一指令的最後一個字串 mkdir dir → cd !$
以 root 執行上一指令 sudo !! 忘記加 sudo 時的救星 apt-get install pkg → sudo !!
切換回上一目錄 cd - 在兩目錄間快速來回 /home/a ⇄ /home/b
替換上一指令字串 ^old^new 修正拼字錯誤 echo wanderful → ^a^o
不記錄歷史 指令前加空格 敏感指令不留痕 (需 HISTCONTROL=ignorespace) mysql -psecret
快速編輯長指令 Ctrl+X, Ctrl+E 用 $EDITOR (vim/nano) 編輯當前命令列 複雜管線/迴圈編輯

🛠 實戰單行指令精選

1. 找出當前目錄最大的 10 個檔案/目錄

du -s * | sort -n | tail

2. 用 vim 存檔需 root 權限的檔案

:w !sudo tee %

原理:將緩衝區內容透過 tee 以 root 寫回目標檔案。

3. 時間戳轉可讀時間

date -d @1234567890

4. 建立空檔案 (比 touch 短)

> file.txt

5. 更好的路由追蹤

mtr coolshell.cn

結合 ping + traceroute,即時顯示丟包率與延遲。

6. 定時執行一次性任務

echo "ls -l" | at midnight

7. 終端機發推特 (需 curl)

curl -u user:pass -d "status=Hello from shell" https://twitter.com/statuses/update.xml

8. 檢查 Gmail 未讀郵件

curl -u username --silent "https://mail.google.com/mail/feed/atom" | \
perl -ne 'print "\t" if //; print "$2\n" if /<(title|name)>(.*)<\/\1>/'

9. 找出佔記憶體前 10 的進程

ps aux | sort -nk +4 | tail

10. 本地 ASCII 碼表 (離線查詢)

man ascii

11. 列出監聽埠與進程

netstat -tlnp  # 或 ss -tlnp (現代替代)

12. 即時監控日誌關鍵字並自動退出

tail -f /path/to/log | sed '/^Finished: SUCCESS$/ q'

13. 遠端執行本地腳本 (無需複製)

ssh user@server bash < /path/to/local/script.sh

14. 遠端編輯檔案

vim scp://username@host//path/to/file

15. 一鍵啟動 HTTP 靜態伺服器

python -m SimpleHTTPServer  # Python 2
python -m http.server       # Python 3 (預設 8000 port)

當前目錄即為 Document Root,極適合前端快速預覽、檔案傳輸。

16. 統計你最常用的 10 個指令 (洞察習慣)

history | awk '{CMD[$2]++;count++;} END { for (a in CMD) print CMD[a] " " CMD[a]/count*100 "% " a }' | \
grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n10

簡化版 (陳皓推薦):

history | awk '{print $2}' | awk 'BEGIN{FS="|"} {print $1}' | sort | uniq -c | sort -rn | head -10

17. 終端機 Matrix 風特效

tr -c "[:digit:]" " " < /dev/urandom | dd cbs=$COLUMNS conv=unblock | GREP_COLOR="1;32" grep --color "[^ ]"

💡 進階歷史展開技巧 (Bang Commands)

  • !n:執行歷史第 n 條指令 (history 編號)
  • !-n:執行倒數第 n 條指令
  • !string:執行最近以 string 開頭的指令 (如 !vi)
  • !?string?:執行最近包含 string 的指令
  • !!:s/old/new/:替換上一指令中第一個 old 為 new
  • !!:gs/old/new/:全域替換上一指令所有 old
  • !$:上一指令最後參數 (同 !!:$)
  • !!:*:上一指令所有參數 (不含指令本身)

📚 學習資源推薦

  • 《Linux 命令列與 Shell 腳本編程大全》:系統化入門到進階
  • Bash Hackers Wiki:bash-hackers.org
  • ShellCheck:線上/本地靜態分析工具,shellcheck.net

結語

"Where there is a shell, there is a way!"

Shell 是工程師指尖最貼近作業系統的介面。這 25 個技巧只是冰山一角,真正的精通來自於日常刻意練習與閱讀優秀開源專案的腳本。下次打開終端機,試著少用滑鼠、多用 Alt+.、Ctrl+R 反向搜尋歷史、Ctrl+X E 編輯長指令——肌肉記憶建立後,你會發現自己已經離「終端機大師」更近一步。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved