97色精品视频在线观看免费,日韩欧美亚洲每日更新网,国产精品色婷婷99久久精品,99e热久久免费精品首页

Shell 腳本提速秘籍:80 個高頻命令組合用法,新手也能輕松駕馭!

2025-07-30 09:13:02 RAIZ

 

Shell 腳本是自動化運維、數據處理和系統管理的利器。掌握核心命令的組合使用,能極大提升腳本效率和解決問題的能力。本文精心整理 80 個 Shell 腳本中高頻出現的命令組合用法,涵蓋文件操作、文本處理、系統監控、條件判斷等核心場景,條條實用!即使你是 Shell 新手,也能通過這些“積木塊”快速搭建起自己的腳本世界。


一、文件與目錄操作基礎

  1. 1. 創建并進入目錄: mkdir -p project/data && cd project/data (-p 確保父目錄存在)
  2. 2. 復制并保留屬性: cp -a source_dir destination_dir (-a 歸檔模式,保留權限、時間戳等)
  3. 3. 移動文件到特定目錄: find . -name "*.log" -exec mv -t /backup/ {} + (高效移動大量文件)
  4. 4. 安全刪除(先確認): rm -i *.tmp (-i 交互式刪除,每個文件都詢問)
  5. 5. 強制遞歸刪除目錄: rm -rf old_build/ (慎用! -r 遞歸, -f 強制)
  6. 6. 查看文件前10行: head -n 10 access.log
  7. 7. 查看文件后15行: tail -n 15 error.log
  8. 8. 實時跟蹤日志新增內容: tail -f app.log (-f follow, 持續輸出新增內容)
  9. 9. 查找文件(按名稱): find /home/user -type f -name "config.ini"
  10. 10. 查找目錄: find /var -type d -name "www"
  11. 11. 查找并刪除(謹慎!): find /tmp -name "core.*" -mtime +7 -exec rm {} \; (刪除 /tmp 下超過 7 天的 core 文件)
  12. 12. 查找并統計文件數: find src/ -type f | wc -l
  13. 13. 創建文件軟鏈接: ln -s /path/to/original /path/to/link
  14. 14. 創建目錄軟鏈接: ln -s /path/to/original_dir /path/to/link_dir
  15. 15. 查看文件類型: file unknown_file.bin
  16. 16. 比較兩個文件差異: diff file1.txt file2.txt
  17. 17. 比較并排顯示差異: diff -y file1.txt file2.txt
  18. 18. 生成目錄樹結構: tree -L 2 (顯示當前目錄樹,深度為 2 級)
  19. 19. 更改文件擴展名: for f in *.txt; do mv -- "$f" "${f%.txt}.csv"; done (批量 .txt 改為 .csv)
  20. 20. 備份文件(帶時間戳): cp important.conf{,.bak_$(date +%Y%m%d)} (生成 important.conf.bak_20230713)

二、文本處理利器 (grep, sed, awk, sort, uniq)

  1. 21. 搜索文件中包含關鍵詞的行: grep "ERROR" system.log
  2. 22. 遞歸搜索目錄下文件內容: grep -r "function_name" src/
  3. 23. 搜索時忽略大小寫: grep -i "warning" app.log
  4. 24. 顯示匹配行及其后2行: grep -A 2 "Exception" trace.log
  5. 25. 顯示匹配行及其前3行: grep -B 3 "Starting" boot.log
  6. 26. 只顯示匹配的文件名: grep -l "pattern" *.py
  7. 27. 反轉匹配(顯示不包含的行): grep -v "DEBUG" verbose.log
  8. 28. 使用擴展正則表達式: grep -E "error|warning" messages.log
  9. 29. 統計匹配行數: grep -c "success" report.txt
  10. 30. 簡單文本替換: sed 's/old_text/new_text/' input.txt (輸出到屏幕,不修改原文件)
  11. 31. 替換并保存修改(原地編輯): sed -i 's/foo/bar/g' file.txt (-i 直接修改文件, g 全局替換)
  12. 32. 刪除空白行: sed '/^$/d' messy.txt
  13. 33. 打印特定行(第5行): sed -n '5p' data.txt
  14. 34. 打印行范圍(10到20行): sed -n '10,20p' longfile.log
  15. 35. 打印最后一列(默認空格分隔): awk '{print $NF}' columns.dat
  16. 36. 打印特定列(第2和第4列): awk '{print $2, $4}' table.csv
  17. 37. 根據條件打印行(第3列大于100): awk '$3 > 100 {print $0}' numbers.txt
  18. 38. 設置輸入字段分隔符(如逗號): awk -F',' '{print $1}' data.csv
  19. 39. 統計文件行數、單詞數、字符數: wc report.txt
  20. 40. 排序文件內容: sort unsorted_list.txt

三、文本處理進階與數據操作

  1. 41. 排序(數值順序): sort -n numeric_data.txt
  2. 42. 排序(逆序): sort -r names.txt
  3. 43. 排序并去重: sort names.txt | uniq
  4. 44. 僅顯示重復行: sort dups.txt | uniq -d
  5. 45. 顯示唯一行(去除所有重復): sort dups.txt | uniq -u
  6. 46. 統計每行出現次數: sort log_levels.txt | uniq -c
  7. 47. 按次數降序排列: sort log_levels.txt | uniq -c | sort -nr
  8. 48. 提取文件路徑的目錄部分: dirname /var/log/apache/access.log (輸出 /var/log/apache)
  9. 49. 提取文件路徑的文件名部分: basename /var/log/apache/access.log (輸出 access.log)
  10. 50. 提取文件名(不含擴展名): basename /path/to/file.tar.gz .tar.gz (輸出 file)
  11. 51. 連接多個文件: cat header.txt body.txt footer.txt > complete.html
  12. 52. 查看壓縮文本文件: zcat access.log.gz | grep "404" (適用于 gzip)
  13. 53. 分頁查看長輸出: ls -l /etc | less (按空格下翻頁, q 退出)
  14. 54. 轉換DOS換行符(CRLF)為Unix(LF): dos2unix script.sh (或 sed -i 's/\r$//' script.sh)
  15. 55. 轉換Unix換行符為DOS: unix2dos document.txt (或 sed -i 's/$/\r/' document.txt)
  16. 56. 生成隨機密碼(16字符): head /dev/urandom | tr -dc A-Za-z0-9 | head -c 16; echo
  17. 57. 計算文件MD5校驗和: md5sum important.iso (Linux)
  18. 58. 計算文件SHA256校驗和: sha256sum critical.zip (Linux)
  19. 59. 按列合并兩個文件: paste file1.txt file2.txt > combined.txt
  20. 60. 轉換字符大小寫(小寫轉大寫): echo "Hello" | tr 'a-z' 'A-Z' (輸出 HELLO)

四、系統、進程、網絡與腳本技巧

  1. 61. 查看當前用戶名: whoami
  2. 62. 查看系統運行時間與負載: uptime
  3. 63. 查看磁盤空間使用: df -h (-h 人類可讀格式)
  4. 64. 查看目錄大小: du -sh /home/user (-s 總大小, -h 可讀)
  5. 65. 查看內存使用情況: free -h
  6. 66. 查看最耗CPU的進程: top -o %CPU (動態, q退出) 或 ps aux --sort=-%cpu | head -n 11
  7. 67. 查看最耗內存的進程: top -o %MEM 或 ps aux --sort=-%mem | head -n 11
  8. 68. 根據進程名查找PID: pgrep -f "nginx master process"
  9. 69. 根據進程名發送信號(如TERM): pkill -TERM -f "python myapp.py"
  10. 70. 后臺運行命令: long_running_command &
  11. 71. 將后臺作業帶到前臺: fg %1 (1 是作業號, 用 jobs 查看)
  12. 72. 暫停當前前臺作業: 按 Ctrl+Z
  13. 73. 讓暫停的作業在后臺繼續運行: bg %1
  14. 74. 使進程不受終端關閉影響: nohup ./start_server.sh & (輸出默認到 nohup.out)
  15. 75. 查看網絡連接狀態: netstat -tulnp (查看監聽端口及對應進程)
  16. 76. 查看主機路由表: route -n 或 ip route show
  17. 77. 測試網絡連通性: ping -c 4 google.com (-c 指定次數)
  18. 78. 下載文件: wget https://example.com/file.tar.gz
  19. 79. 命令行HTTP客戶端: curl -O https://example.com/image.jpg (-O 下載文件)
  20. 80. 安全復制文件到遠程主機: scp local_file.txt user@remote_host:/remote/directory/

這 80 個命令組合是 Shell 腳本的“瑞士軍刀”,熟練掌握能解決日常大部分自動化任務。需要注意的是:

  1. 1. 理解原理: 了解每個命令選項的含義 (man command)。
  2. 2. 安全第一: 對 rm -rffind -execchmodchown 等操作保持警惕,尤其涉及系統文件或重要數據時。操作前務必確認路徑和條件。
  3. 3. 循序漸進: 從簡單組合開始嘗試,逐步構建更復雜的邏輯。
  4. 4. 善用測試: 在非生產環境測試腳本邏輯。
  5. 5. 添加注釋: 為腳本中的復雜命令組合添加注釋說明意圖。

 


我要咨詢
主站蜘蛛池模板: 大港区| 无极县| 蒙自县| 柳江县| 富蕴县| 塘沽区| 饶阳县| 会宁县| 江孜县| 竹溪县| 阿鲁科尔沁旗| 鞍山市| 贵南县| 偃师市| 抚顺市| 佛坪县| 文成县| 玛曲县| 广安市| 商都县| 佛山市| 棋牌| 三台县| 吉安县| 天全县| 丰镇市| 建始县| 米泉市| 仁化县| 沙湾县| 垣曲县| 邹平县| 西畴县| 镇沅| 上饶县| 福泉市| 巴里| 汝州市| 伽师县| 苗栗市| 岳普湖县|