Shell腳本基礎
随着linux系統在企業中的應用越來越多,伺服器的安全防護與自動化管理逐漸也變得越來越重要。在linux伺服器的自動化維護工作中,除了計劃任務的設定以外,shell腳本的應用也是非常重要的一部分。Shell腳本雖然隻是一個簡單的解釋性語言,不會受到研發人員的重視,但是對于工程人員來說有着舉足輕重的作用。它可以幫助工程人員減少日常的工作量,成為他們的萬能工具箱。
簡單了解shell腳本
Linux中的shell是什麼?
Linux系統中的shell是一個特殊的應用程式,它介于作業系統核心和使用者之間,充當了一個“指令解釋器”的角色,負責接收使用者輸入的操作指令并進行解釋,将需要執行的操作傳遞到核心執行,并輸出執行結果。
2. 常見的shell解釋器
/bin/bash是目前大多數linux版本采用的預設shell。
注意:
通過/etc/shells檔案可以了解目前系統所支援的所有shell種類
3. 什麼是shell腳本?
Shell腳本與windows/Dos下的批處理相似,也就是用各類指令預先放入到一個檔案中,同時給予該檔案相應的執行權限,友善一次性執行的一個程式檔案,主要是友善管理者進行設定或者管理用的。但是它比windows下的批處理更強大,比用其他變成程式編輯的程式效率更高。
學會編寫腳本
使用工具
Vim編輯器
2. 腳本的編寫步驟
(1)、建立以.sh為檔案字尾的檔案
腳本=腳本名+字尾(.sh)
(2)、編寫腳本内容
示例:
[root@localhost~]#vi First.sh
#!/bin/bash
#This is my firstshell-script.
cd /home
echo “In the current directory:”
注解:“#!/bin/bash”這是一行特殊的腳本聲明,表示此行以後的語句通過/bin/bash程式來解釋執行;
其他以“#”開頭的語句表示注釋資訊;對腳本内容進行解釋;
“echo”指令用于輸出字元串,将“”中的内容顯示到螢幕上,對執行的腳本指令後的結果進行解釋,以使腳本的輸出資訊更容易讀懂。
(3)、賦予腳本可執行權限
[root@localhost ~]# chmod+x First.sh
(4)、執行腳本
[root@localhost ~]#./First.sh
In the current directory:
/home
注意:執行腳本的方法
〈1、 通過檔案路徑,如上所示:“./First.sh”的方式執行腳本,但要求檔案本身具有X可執行權限。
〈2、 指定某個shell來解釋腳本語句。可沒有X可執行權限。
[root@localhost ~]# sh First.sh
[root@localhost ~]# . First.sh
〈3、 通過内部指令Source來加載檔案中的源代碼執行.X可執行權限可有可無。
[root@localohost ~]# source First.sh
重定向與管道操作
linxu系統互動裝置檔案
類型
裝置檔案
檔案描述編号
裝置
标準輸入(STDIN)
/dev/stdin
鍵盤
标準輸出(STDOUT)
/dev/stdout
1
顯示器
标準錯誤(STDERR)
/dev/stderr
2
2. 重定向
在實際的linux系統維護中,可以改變輸入輸出内容的方向,而不使用預設的标準輸入輸出裝置(鍵盤和顯示器),這種操作被稱為“重定向”。
(1)、重定向輸出
重定向輸出指的是将指令的正常輸出結果儲存到指定的檔案中,而不是直接的顯示在顯示器的螢幕上。
示例:
“〉”将前端執行指令内容儲存并覆寫到指定的檔案中。
[root@localhost ~]# uname –p >CPUkernel.txt
[root@localhost ~]# cat CPUkernel.txt
i686
“》”在原内容不變的情況下追添新的内容到指定的檔案中。
(2)、重定向輸入
重定向輸入指的是将指令中輸入的途徑由預設的鍵盤改為指定的檔案,而不是等待鍵盤輸入。
示例:
[root@localhost ~]# vimpasswd.txt //添加密碼字元串
[root@localhost ~]#passwd - - stdin jerry < passwd.txt //從passwd.txt提取密碼
(3)、錯誤重定向(操作符“2)”)
錯誤重定向指的是将執行指令過程中出現的錯誤資訊儲存到指定的檔案。
用途:收集程式執行錯誤的資訊,為排錯提供依據。對于shell腳本來說,将無關緊要的錯誤資訊重定向到空檔案/dev/null中,保持腳本輸出的整潔。

注:“2>”覆寫目标檔案内容,将正确和錯誤資訊分開儲存到不同檔案。
“2>>”在目标檔案後面追加内容,将正确和錯誤資訊分開儲存到不同檔案。
“&>”将正确資訊和錯誤資訊儲存到同一檔案。