shell-腳本概念介紹01

shell:腳本慨念介紹

1、shell腳本簡介

  • 在解釋shell腳本這個名詞之前,我們先來說下什麼是shell

    1.1、什麼是shell

  • shell是一個命令解釋器,它在操作系統的最外層,負責直接與用戶對話,把用戶的輸入解釋給操作系統,並處理各種各樣的操作系統的輸出結果,輸出到屏幕返回給用戶。這種對話方式可以是交互的方式(從鍵盤輸入命令,可以立即得到shell的迴應),或非交互(腳本)的方式。
  • 下面的圖中×××部分就是命令解釋器shell處於的操作系統中的位置。
    shell-腳本概念介紹01
    提示:
    • shell英文是貝殼的意思,從上圖我們可以看出,命令解釋器shell就像一個貝殼一樣包住了系統核心。

2、什麼是shell腳本

  • 當linux命令或語句不在命令行下執行(嚴格說,命令行也是shell),而是通過一程序文件執行時,該程序就被稱爲shell腳本或shell程序,shell程序很類似dos系統下的批處理程序(擴展名*.bat)。用戶可以在shell腳本中敲入一系列的命令及命令語句組合。這些命令、變量和流程控制語句等有機的結合起來就形成了一個功能強大的shell腳本。
    ###2.1、舉例:

案例1、清除/var/log下messages日誌文件的簡單命令腳本

  • 把所有命令放在一個文件裏堆積起來形成了腳本,下面就是一個最簡單的命令堆積形成的shell腳本。
  • 要使用root身份來運行這個腳本。
  • 清除日誌腳本,版本1

    cd  /var/log
    cat  /dev/null   >messages
    echo "logs  cleaned up."
    提示:/var/log/messages 是系統的日誌文件,很重要

    看完這個腳本大家有什麼想法?

    1. 上面的腳本,如果不是root就無法執行清理日誌。
    2. 沒有任何的流程控制語句,簡單的說就是順序操作,沒有成功判斷和邏輯性。

案例2:包含命令、變量和流程控制語句的清除/var/log下messages日誌文件的shell腳本。

[root@1-241 scripts]# vim messages.sh 
[root@1-241 scripts]# cat messages.sh 
#!/bin/sh
#清空日誌腳本
LOG_DIR=/var/log
ROOT_UID=0
if [ "$UID" -ne "$ROOT_UID" ]
    then
        echo "must be root to run this scripts."
        exit 1
fi

cd $LOG_DIR || {
    echo "cannot change to necessary directory." >&2 
    exit 1
}

cat /dev/null > messages && echo "log cleaned UP."
exit 0

拓展:清空日誌及文件內容的三種方法:

[root@1-241 scripts]# echo >/var/log/nginx/ccs_access.log 
[root@1-241 scripts]#  >/var/log/nginx/ccs_access.log 
[root@1-241 scripts]# cat /dev/null >/var/log/nginx/ccs_access.log 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章