【Linux學習筆記29】shell指令碼基礎
1. 什麼是shell
Shell 是一個用 C 語言編寫的程式,它是使用者使用 Linux 的橋樑。Shell 既是一種命令語言,又是一種程式設計語言。Shell 是指一種應用程式,這個應用程式提供了一個介面,使用者通過這個介面訪問作業系統核心的服務。Ken Thompson 的 sh 是第一種 Unix Shell,Windows Explorer 是一個典型的圖形介面 Shell
Shell 指令碼(shell script),是一種為 shell 編寫的指令碼程式
2. shell指令碼的意義
- 紀錄命令執行的過程和執行邏輯,以便以後重複執行
- 指令碼可以批量處理主機
- 指令碼可以定時處理主機
3. 建立shell指令碼
#!:是一個約定的標記,它告訴系統這個指令碼需要什麼直譯器來執行,即使用哪一種 Shell。
#!/bin/bash:幻數(此指令碼用/bin/bash來解釋執行)
自動新增指令碼首部:vim ~/.vimrc
autocmd FileType yaml setlocal ai ts=2 sw=2 et
autocmd FileType sh set ai ts=4
autocmd BufNewFile *.sh,*.script call WESTOS()
"map <F4> ms:call WESTOS()<cr>'s
func WESTOS()
call append(0,"###########################")
call append(1,"## Author: zy")
call append(2,"## Version:")
call append(3,"## Create_Time: ".strftime("%Y/%m/%d"))
call append(4,"## Mail: zy@westos.org")
call append(5,"## Info: ")
call append(6,"###########################")
call append(7,"")
call append(8,"#!/bin/bash")
endfunc
測試:新建一個檔案 test.sh,副檔名為 sh(sh代表shell),自動生成首部
4. 執行shell指令碼
執行方法1:
- 手動在環境中開啟指定直譯器
sh 指令碼檔案
:執行
執行方法2:
直接在當前環境中執行shell中的指令(不開啟新的shell)
source 指令碼檔案
. 指令碼檔案
執行方法3:
開啟指令碼中指定的shell並使用此shell環境執行指令碼中的指令
(不需要在第一行指定直譯器資訊)
-
chmod +x 指令碼檔名
:給予執行許可權 -
/指令碼檔名
或. /指令碼檔名
:執行
5. 除錯shell指令碼
| |
---|---|
| 命令從-c後的字串讀取 |
| 實現指令碼互動 |
| 進行shell指令碼的語法檢查 |
| 實現shell指令碼逐條語句的跟蹤 |
sh -x 指令碼檔案
:顯示指令碼執行過程
+ #執行指令
不帶+ #命令執行的輸出
6. 指令碼練習
練習一:
執行 ‘ip_show.sh 網路卡’ ,顯示當前IP
ifconfig $1 | awk '/inet\>/{print $2}'
練習二:
host_messages.sh
- 顯示當前主機名稱,ip登陸當前主機的用
- 格式:
hostname: XXXX
ipaddress: XXXX.XXXX.XXXX.XXXX
username: root
echo "hostname: $HOSTNAME"
echo "ipaddress: $(ifconfig 網路卡 | awk '/inet\>/{print $2}')"
echo "username: $USER"
練習三:
clear_log.sh
執行此指令碼後可以清空日誌
#檢測是否是root使用者執行此指令碼
[ "$USER" = "root" ] || {
echo -e "\033[31m Error: Please run script with root ! \033[0m"
exit 1
}
#清空日誌
LOGS=`sed -n '/RULES/,$p' /etc/rsyslog.conf | awk '!/^#|^$/&&/var/{print $2}' | sed 's/-//g'`
for LOG in $LOGS
do
> $LOG && echo -e "\033[32m $LOG is cleared ! \033[0m"
done
相關文章
- Shell指令碼學習筆記指令碼筆記
- Shell 學習筆記 基礎筆記
- 《Shell指令碼學習指南》學習筆記指令碼筆記
- shell指令碼學習筆記-1指令碼筆記
- Linux Bash Shell學習(七):shell程式設計基礎——執行Shell指令碼、functionLinux程式設計指令碼Function
- Linux基礎五(shell指令碼)Linux指令碼
- linux shell 指令碼攻略筆記Linux指令碼筆記
- Linux基礎學習-Docker學習筆記LinuxDocker筆記
- Linux學習(Shell基礎)Linux
- Linux shell 指令碼基礎介紹Linux指令碼
- Shell指令碼基礎指令碼
- shell指令碼程式設計學習筆記-運算子指令碼程式設計筆記
- shell指令碼程式設計學習筆記——變數指令碼程式設計筆記變數
- 基礎 IO (Linux學習筆記)Linux筆記
- Linux學習-shell基礎02Linux
- Linux 筆記分享四:Shell 基礎Linux筆記
- linux基礎知識學習筆記Linux筆記
- Linux命令和shell指令碼學習Linux指令碼
- Redis基礎知識(學習筆記21--Lua 指令碼語言)Redis筆記指令碼
- Linux必須掌握的shell指令碼基礎Linux指令碼
- Linux Shell指令碼程式設計-基礎1Linux指令碼程式設計
- 【學習】Linux Shell指令碼程式設計Linux指令碼程式設計
- Linux學習之路(三)Shell指令碼初探Linux指令碼
- 【連結】LINUX SHELL指令碼攻略筆記[速查]Linux指令碼筆記
- CSS 基礎學習筆記CSS筆記
- node基礎學習筆記筆記
- Web基礎學習筆記Web筆記
- Redis基礎學習筆記Redis筆記
- Oracle基礎學習筆記Oracle筆記
- Java基礎學習筆記Java筆記
- Redis基礎知識(學習筆記21--Lua 指令碼語言2)Redis筆記指令碼
- shell學習筆記筆記
- Linux學習筆記(2)——ls指令Linux筆記
- linux學習day3——shell指令碼上Linux指令碼
- linux學習day4——shell指令碼中Linux指令碼
- Linux Shell 程式設計學習筆記Linux程式設計筆記
- shell指令碼的基礎知識指令碼
- shell指令碼程式設計基礎指令碼程式設計