當前位置: 妍妍網 > 碼農

分享一份曾讓我通宵刷完的shell總結~

2024-05-24碼農

關註上方 浩道Linux ,回復 資料 ,即可獲取海量 L inux Python 網路通訊、網路安全 等學習資料!

前言

大家好,這裏是 浩道Linux ,主要給大家分享 L inux P ython 網路通訊、網路安全等 相關的IT知識平台。

好多私信我的朋友都問,能不能短時間內掌握shell編程,畢竟面試時還是經常會遇到相關筆試題。今天浩道跟大家分享一份關於shell知識硬核幹貨,這份資料包含shell編程相關知識點總結,同時又有幾百條經典的shell指令碼供大家練習,要我說認真肝3天,掌握shell自然不在話下! 有需要的朋友,可以看下文 免費領取

而且,這份資料不是掃描版的,都是清晰可見的,非常便於我們學習:

點選👆👆👆卡片,關註後回復【shell總結】,即可獲取

這份資料非常全面且詳細,包含諸多的shell經典例項 ,非常適合初學者入門! 多看、多練、多學,相信你一定能寫出滿意的指令碼。

除此之外,還準備了一些Shell指令碼的編寫規範、入門手冊、編寫指南等資源,今天一並分享給大家。

  • 由於指令碼案例太多,在此僅展示部份,完整版領取方式請見文末

  • 249個拿來即用的shell指令碼!

    這249個Shell指令碼共147頁,目錄清楚,一鍵搜尋定位,程式碼清晰可復制,電子版可以隨時拿來練習提升,是學習、提升、面試必備精品。

    1、透過位置變量建立Linux系統帳戶及密碼

    #!/bin/bash

    # 透過位置變量建立 Linux 系統帳戶及密碼
    #$1 是執行指令碼的第一個參數,$2 是執行指令碼的第二個參數
    useradd "$1"
    echo"$2" | passwd ‐‐stdin "$1"

    2、備份日誌

    #!/bin/bash
    # 每周 5 使用 tar 命令備份/var/log 下的所有日誌檔
    # vim /root/logbak.sh
    # 編寫備份指令碼,備份後的檔名包含日期標簽,防止後面的備份將前面的備份數據覆蓋
    # 註意 date 命令需要使用反引號括起來,反引號在鍵盤<tab>鍵上面
    tar -czf log-`date +%Y%m%d`.tar.gz /var/log
    # crontab ‐e #編寫計劃任務,執行備份指令碼
    00 03 * * 5 /root/logbak.sh

    3、輸入三個數並進行升序排序

    #!/bin/bash

    # 依次提示使用者輸入 3 個整數,指令碼根據數位大小依次排序輸出 3 個數位
    read -p "請輸入一個整數:" num1
    read -p "請輸入一個整數:" num2
    read -p "請輸入一個整數:" num3
    # 不管誰大誰小,最後都打印 echo "$num1,$num2,$num3"
    # num1 中永遠存最小的值,num2 中永遠存中間值,num3 永遠存最大值
    # 如果輸入的不是這樣的順序,則改變數的儲存順序,如:可以將 num1 和 num2 的值對調
    tmp=0
    # 如果 num1 大於 num2,就把 num1 和和 num2 的值對調,確保 num1 變量中存的是最小值
    if [ $num1 -gt $num2 ];then
    tmp=$num1
    num1=$num2
    num2=$tmp
    fi
    # 如果 num1 大於 num3,就把 num1 和 num3 對調,確保 num1 變量中存的是最小值
    if [ $num1 -gt $num3 ];then
    tmp=$num1
    num1=$num3
    num3=$tmp
    fi
    # 如果 num2 大於 num3,就把 num2 和 num3 對標,確保 num2 變量中存的是小一點的值
    if [ $num2 -gt $num3 ];then
    tmp=$num2
    num2=$num3
    num3=$tmp
    fi
    echo"排序後數據(從小到大)為:$num1,$num2,$num3"

    4、點名器指令碼

    #!/bin/bash

    # 編寫一個點名器指令碼
    # 該指令碼,需要提前準備一個 user.txt 檔
    # 該檔中需要包含所有姓名的資訊,一行一個姓名,指令碼每次隨機顯示一個姓名
    while :
    do
    #統計 user 檔中有多少使用者
    line=`cat user.txt |wc ‐l`
    num=$[RANDOM%line+1]
    sed -n "${num}p" user.txt
    sleep 0.2
    clear
    done

    5、對100以內的所有正整數相加求和(1+2+3.....+100)

    #!/bin/bash

    # 對 100 以內的所有正整數相加求和(1+2+3+4...+100)
    #seq 100 可以快速自動生成 100 個整數
    sum=0
    for i in `seq 100`
    do
    sum=$[sum+i]
    done
    echo"總和是:$sum"

    6、統計當前Linux系統中可以登入電腦的帳戶有多少個

    #!/bin/bash

    # 統計當前 Linux 系統中可以登入電腦的帳戶有多少個
    #方法 1:
    grep "bash$" /etc/passwd | wc -l
    #方法 2:
    awk -f: '/bash$/{x++}end{print x}' /etc/passwd

    8、打印各種格式的時間

    #!/bin/bash

    # 打印各種時間格式 
    echo"顯示星期簡稱(如:Sun)"
    date +%a
    echo"顯示星期全稱(如:Sunday)"
    date +%A
    echo"顯示月份簡稱(如:Jan)"
    date +%b
    echo"顯示月份全稱(如:January)"
    date +%B
    echo"顯示數位月份(如:12)"
    date +%m
    echo"顯示數位日期(如:01 號)"
    date +%d
    echo"顯示數位年(如:01 號)"
    date +%Y echo"顯示年‐月‐日"
    date +%F
    echo"顯示小時(24 小時制)"
    date +%H
    echo"顯示分鐘(00..59)"
    date +%M
    echo"顯示秒"
    date +%S
    echo"顯示納秒"
    date +%N
    echo"組合顯示"
    date +"%Y%m%d %H:%M:%S"

    更多內容展示

    上下捲動檢視更多,僅展示部份內容

    Shell指令碼是自動化運維的關鍵組成部份,雖然簡簡單單幾十行程式碼,但可是蘊藏著巨大的能量和智慧,還是很值得運維朋友學習的。

    所有資料已經打包好了,想要提升的同學請務必拿走學習!

    而且,這份資料不是掃描版的,都是清晰可見的,非常便於我們學習:

    點選👆👆👆卡片,關註後回復【shell總結】,即可獲取

    更多精彩

    關註公眾號 浩道Linux

    浩道Linux ,專註於 Linux系統 的相關知識、 網路通訊 網路安全 Python相關 知識以及涵蓋IT行業相關技能的學習, 理論與實戰結合,真正讓你在學習工作中真正去用到所學。同時也會分享一些面試經驗,助你找到高薪offer,讓我們一起去學習,一起去進步,一起去漲薪!期待您的加入~~~ 關註回復「資料」可 免費獲取學習資料 (含有電子書籍、視訊等)。

    喜歡的話,記得 點「贊」 「在看」