linux 經典的shell 腳本 --總結

運維中 shell 是最基礎也是最實用的工具了,使用的好可以幫助我們解決很多問題。以下是一些總結的shell編程題目。

1.  打印1到50之間的隨機數,中心周圍的正態分佈。中間的數字最有可能發生,你越遠,它們越少越不常見。

   您可以使用以下命令對此進行測試並觀察數字分佈: 

     for i in `seq 100000`;

           do echo $[(${RANDOM}%40+${RANDOM}%40)/2+1];

           done | sort -n | uniq -c 

  echo $ [($ {RANDOM}%100 + $ {RANDOM}%100)/ 2 + 1]

    2.  替換文本中的字符串

       說明: -e是腳本函數,它執行搜索和替換,如vi,-i是編輯文件到位

      sed -e 's / dapper / edgy / g'-i /etc/apt/sources.list

     3. 在pastebin.com上下載所有最近上傳的貼紙

       elinks -dump https://pastebin.com/archive|grep https | cut -c 7- | sed 's / com / com \ / raw / g' | awk'length ($ 0)> 32 && length($ 0)< 35' | grep -v'messages \ | settings \ | languages \ | archive \ | facebook \ | scraping' | xargs wget

     注意:elinks 是一款linux 下的文本瀏覽器,所有都以文字顯示。具體可以查看百度解釋,此處不做詳細介紹。

   4. 從當前目錄下的* .html和* .htm文件中刪除腳本標記

   find ./ - type f \(-iname '* .html'- or -iname '* .htm' \) - exec sed -i '/ <script /,/ <\ / script> / d' '{}' \;

   5. 推送到git目錄中的所有(不同)遙控器,而不必將它們組合在一起

  git remote | 而 讀線; 做 git push $ line ; DONE

  6. 獲取超過50%使用率的分區 ------- 在監控中非常使用,可以用來監控磁盤使用率

            df -h | awk '{a=$5; gsub(/%/,"",a); if(a> 50){print $ 0}}'    

 注意標點符號必須是英文狀態下的哦。否則linux  shell 無法識別。

  7.  收聽YouTube無線電流媒體

收聽YouTube無線電流媒體。我在別名上使用它來輕鬆進入學習/編程的有點流狀態。

 streamlink --player = “cvlc --no-video” “https://www.youtube.com/freecodecamp/live” 720p |&tee / dev / null

8. 監控我的進程組樹

 觀看"ps --forest -o pid = PID,tty = TTY,stat = STAT,time = TIME,pcpu = CPU,cmd = CMD -g $(ps -o sid = -p $(pgrep -f "<my_process_name >"))"

9. 使用curl和jq獲取您的IP地理位置

 curl -s https://ipvigilante.com/$(curl -s https://ipinfo.io/ip)| JQ '.data.latitude,.data.longitude,.data.city_name,.data.country_name'

10. 查找/ var目錄中的前10個最大文件(包含子目錄和隱藏文件)

 tree -ihafF / var | tr '[]' '' | sort -k1hr | head -10

 11.  將當前環境保存爲一堆默認值

  環境| sed 's /\(。*。)= \(。*。)/:$ {\ 1:=“\ 2”} /' > mydefaults.bash

  12. 將VPS磁盤備份到另一臺主機

  ssh [email protected] -p22 “cat / dev / sda1 | gzip -1 - ” > vps.sda1.img.gz

   13. 將ArchLinux上安裝的軟件包從低到高排序

  pacman -Qi | egrep '^(名稱|已安裝)' | cut -f2 -d ':' | 粘貼 - - | 列-t | sort -nk 2 | grep MiB

  14. 使用sed從文件中刪除^ M個字符

  sed 's / \ r // g' <input.txt> output.txt

  15. 僅使用Bash檢查主機端口訪問:

    s = “ $(cat 2> / dev / null </ dev / null> / dev / tcp / $ {target_ip} / $ {target_port}&WPID = $ !; sleep 3 && kill $!> / dev / null 2 >&1&KPID = $ !;等待$ WPID && echo 1) “ ; s = “ $ {s:-0} ” ; echo “ $ {s} ” | sed 's / 0/2 /; s / 1/0 /; s / 2/1 /'

  16.  網絡發現一個

   nmap -sn 192.168.1.0/24 -oG - | awk '$ 4 ==“狀態:”&& $ 5 ==“向上”{print $ 0}' |列-t

  17. 顯示當前正在使用的網絡接口

    路線| grep -m1 ^默認| awk '{print $ NF}'

  18. 創建一個文件並操縱日期

   touch -d' -1 year' / tmp / oldfile

  19. 將所有連接的PulseAudio藍牙設備切換到A2DP配置文件

嘗試將所有音頻設備切換到A2DP配置文件以獲得最佳音質。適用於始終以HSP / HFP模式供電的藍牙揚聲器和耳機。但請注意,此命令只是GUI的簡寫,因此它無法修復頑固的BT控制器,使您的設備停留在HSP模式,直到手動重新耦合。

   $(pacmd list-cards | grep'name :' | sed 's /.* <\(。* \)>。* / \ 1 /'); 做 pacmd set -card -profile $ card a2dp_sink; DONE
   20. 檢查Web服務器端口80響應頭

   curl -I <IPaddress>

  21.  更改用戶密碼

  echo -e “linuxpassword \ nlinuxpassword” | passwd linuxuser

   22. 檢查Web服務器端口80響應頭

  echo -e'GET / HTTP / 1.0 \ r \ n \ r \ n' ;)| ncat <IPaddress> 80

  23. 命令shell生成隨機強密碼

  LEN = 20; tr -dc A-Za-z0-9_ </ dev / urandom | head -c $ {len} | xargs的

   24.  查找和設置時區

   sudo timedatectl set -timezone $(curl -s worldtimeapi.org/api/ip.txt | sed -n 's / ^ timezone:// p'

   25.  對pdf 文件做處理,減小文件大小

   gs -sDEVICE = pdfwrite -dCompatibilityLevel = 1.4 -dPDFSETTINGS = / screen -dNOPAUSE -dBATCH -dQUIET -dColorImageResolution = 600 -dMonoImageResolution = 600 -sOutputFile = output.pdf input.pdf

     26. 使用一些精美的sed正則表達式提取rpm包名稱,版本和發行版

     rpm -qa | sed 's / ^ \(。* \) - \([^ - ] \ {1,\} \) - \([^ - ] \ {1,\} \)$ / \ 1 \ 2 \ 3 / ' | 排序| 列-t

  27. 網站遞歸離線鏡像與wget

  wget --mirror --convert-links --adjust-extension --page-requisites --recursive --no-parent www.example.com

   28.  使用curl檢查每個URL重定向(HTTP狀態代碼301/302)

   curl -sLkIv --stderr - https://exemple.com | AWK 'BEGIN {IGNORECASE = 1}; / <位置:/ {打印$ 3}'

  29.  比特幣Brainwallet私鑰計算器

  bitgen hex 12312381273918273128937128912c3b1293cb712938cb12983cb192cb1289b3 info

  30. 刪除包含字符串的所有匹配項,直到下一個空格

    sed 's / linux - [^] * \ {0,1 \} // g' / path / to / file

   31.   du命令沒有顯示其他已安裝的文件系統

   du -h --max-depth = 1 --one-file-system /

  32. 查看bash歷史記錄中n個最常用的命令

  sort ~/.bash_history|uniq -c|sort -n|tail -n 10|tr -s " "|cut -d' ' -f3- >> ~/.bash_history
  33. 刪除.bash_history中同一命令的多個條目,同時保留按時間順序排列

   要查看已刪除重複命令的統計信息: diff --suppress-common-lines -y ~/.bash_history.bak ~/.bash_history|uniq -c|sort -n|tr -s " "|sed '/^ 1/d'|grep '<'

  34. 找到包含最多文件數的前10個目錄

find  / - input f!-regex '^ / \(dev \ | proc \ | run \ | sys \)。*' | sed 的@ ^ \(。* \)/ [^ /] * $ @ \ 1 @' | sort| uniq -c | sort -n | tail-n 10

  35. 在一個grep命令中刪除註釋(甚至是以空格開頭的註釋),空行(甚至包含空格的行)

  grep -vE '^ \ s *(#| $)' textfile

36. 顯示根文件系統的每個目錄使用的空間(不包括掛載點/外部文件系統)(並對輸出進行排序)

  find / -maxdepth 1 -mindepth 1 - type d - exec du -skx {} \; | sort  -n

37. 顯示根文件系統的每個目錄使用的空間(不包括掛載點/外部文件系統)(並對輸出進行排序)

   find / -maxdepth 1 - type d | xargs -I {} sh -c “mountpoint -q {} || du -sk {}” | 排序-n

38. 在新安裝的計算機上找到您可能希望在防火牆中打開的端口

 lsof -i -nlP | awk '{print $ 9,$ 8,$ 1}' | sed 's /.*://' | sort  -u

39. 使用curl檢查每個URL重定向(HTTP狀態代碼301/302

curl -sLkIv --stderr - https://t.co/2rQjHfptZ8 -s:當管道輸出到另一個命令時靜音輸出-L:跟隨每個重定向-k:忽略證書錯誤-I:只請求頭-v:是詳細的--stderr - :將stderr重定向到stdout https://t.co/2rQjHfptZ8:用於檢查管道重定向到grep -i位置的URL:-i:grep目標文本忽略大小寫位置:: greps包含“location”的每個字符串:“管道輸入awk {'print $ 3'}打印每個用於sed的字符串中的第三列'/ ^ $ / d'

curl -sLkIv --stderr - http://example.org | grep -i location:| awk { 'print $ 3' } | sed '/ ^ $ / d'

40. 使用dd iso到USB並顯示進度狀態

dd if = / dev / archlinux.iso = / dev / sdb status = progress

41. 顯示前十個正在運行的進程 - 按內存使用情況排序

ps aux | sort -nk +4 | tail

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章