shell 的一些實用 demo 和 技巧分析

wonbin發表於2020-02-02

使用迴圈在 /test 目錄下建立10個 txt檔案,要求檔名稱有6 位隨機小寫字母加固定字串(_gg)組成,例如 pzjebg_gg.txt

隨機字串生成

  • /dev/random 依賴系統中斷生成隨機字串,可以保證資料的隨機性但生成資料慢,會佔用系統程式資源
  • /dev/urandom 不依賴系統中斷生成隨機字串,生成速度快,但資料隨機性不足(一般使用/dev/urandom)

tr 命令

tr 命令可以對來自標準輸入的字元進行替換、壓縮和刪除。它可以將一組字元變成另一組字元。

  • -c: 取代所有不屬於第一字符集的字元
  • -d:刪除所有屬於第一字符集的字元

例如:從輸入文字中,把不在字符集中的字元刪除

➜  ~ echo "aa..,+1 b2c /* $dd 3 ls 4" | tr -dc '0-9 \n'
1 2   3  4

參考程式碼:

#!/bin/bash

if [ ! -d /test ]; then
    mkdir /test
fi

cd /test

for((i=0;i<10;i++));do
    filename=$(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 6)
    touch ${filename}_gg.txt
done

相關試題

生成隨機數字

  • $RANDOM # 此係統變數可以預設隨機生成 0~32767 的數字
    [root@localhost ~]# echo $RANDOM
    16120
    [root@localhost ~]# echo $(($RANDOM%1000))   //1000 以內的隨機數
    171

有一個a.txt 文字(內容如下),要求將所有域名擷取出來, 並統計重複域名出現的次數

http://www.baidu.com/index.html
https://www.atguigu.com/index.html
http://www.sina.com.cn/1024.html
https://www.atguigu.com/2048.html
http://www.sina.com.cn/4096.html
https://www.atguigu.com/8192.html

  [root@localhost ~]# cat a.txt  | cut -d '/' -f 3 | sort | uniq -c | sort -nr
      3 www.atguigu.com
      2 www.sina.com.cn
      1 www.baidu.com
  • 命令解釋
    • cut -d "/" -f 3 用 "/" 作為分隔符,獲取第三欄位
    • sort 第一次排序
    • uniq -c 顯示改行重複次數
    • sort -nr 按照數值從大到小排序(預設從小到大,-r 引數反轉)

統計當前伺服器正在連線的ip地址,並按連線次數排序

[root@localhost ~]# netstat -an | grep ESTABLISHED | awk '{print $5}' | cut -d ':' -f 1 | sort -n | uniq -c | sort -nr
      1 192.168.1.31
  • 命令解釋 ,當使用空格作為分割符時,建議使用 awk ,cut 容易出問題

批量檢查多個網站是否可以正常訪問,要求使用 shell 陣列實現, 檢測策略儘量模仿使用者真實的訪問模式

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章