Shell
Shell
是操作系統中的一個軟件它包在
Linux
內核外面,爲用戶和內核之間的交互提供了一個接口系統中的命令用
Shell
去解釋
Shell
接收系統迴應的輸出並顯示其到屏幕中
bash = GNU Bourne-Again Shell
Shell
腳本
腳本是一種解釋性的語言
用
Shell
腳本保存執行動作用腳本判定命令的執行條件
用腳本來實現動作的批量執行
創建 Shell
腳本
vim script.sh
使用 vim 編寫腳本
#!/bin/bash
腳本使用的解釋器,通常用幻數 “#!” 指定
AUTHOR
腳本作者
DATE
腳本創作時間
腳本作者聯繫方式
VERSION
腳本的版本
第一個 Shell
腳本
vim test.sh
編輯腳本
cat test.sh
#!/bin/bash
#!
— 幻數:指定腳本所使用的解釋器
/bin/bash
使用bash
解釋器
echo Hello World !!!
sh test.sh
執行腳本
Shell
腳本的四種執行方式
vim watch.sh
cat watch.sh
watch -n 1 date
1秒監控一次 date 命令
sh watch.sh
source watch.sh
. watch.sh
chmod +x watch.sh
./watch.sh
製作 Shell
腳本簡介
vim /etc/vimrc
編輯 /etc/vimrc 配置文件
map <F9> ms:call TEST()<cr>'s
設置 F9 快捷鍵執行 TEST 函數
function TEST()
call append(0,"########################")
第 0 行添加 ################## 符
注:
計算機是從 0 開始計算
新建文本
使用 F9 快捷鍵後效果
call append(1,"#Name: #")
第 2 行添加 #Name: #
F9
call append(1,"#Name:Leon #")
第 2 行添加 #Name:Leon #
call append(2,"#Age:20 #")
第 3 行添加 #Age:20 #
call append(3,"#Create_Date:".strftime("%Y-%m-%d %H:%M). "#")
第 4 行添加 #Create_Date:".strftime("%Y-%m-%d %H:%M). "#
同步建立 Shell 腳本時間
call append(4,"##########")
第 5 行添加 ##########
F9
map <F9> ms:call TEST()<cr>'s
設置 F9 快捷鍵執行 TEST 函數
function TEST()
call append(0,"########################")
第 0 行添加 ################## 符
call append(1,"#Name:Leon #")
第 2 行添加 #Name:Leon #
call append(2,"#Age:20 #")
第 3 行添加 #Age:20 #
call append(3,"#Create_Date:".strftime("%Y-%m-%d %H:%M). "#")
第 4 行添加 #Create_Date:".strftime("%Y-%m-%d %H:%M). "#
同步建立 Shell 腳本時間
call append(4,"##########")
第 5 行添加 ##########
call append(5,"")
第 6 行添加 空行
call append(6,"#!/bin/bash")
第 7 行添加 幻數
endfunction
結束
F9
模板
" map <F9> ms:call TEST()<cr>'s
註銷快捷鍵
autocmd BufNewFile *.sh exec ":call TEST()"
添加:在新建立的 Shell 腳本里,自動執行函數生成 Shell 腳本簡介
vim file1.sh
新建立 file1.sh
cat file1.sh
自動執行函數生成 Shell 腳本簡介
touch file2.sh
建立 file2.sh
vim file2.sh
再編輯 file2.sh
cat file2.sh
無法自動執行函數生成 Shell 腳本簡介
Shell
腳本調試
-x
適用於所有 Shell 腳本
vim test.sh
echo ""
echo Hello World !!!
echo ""
cal
cat
sh test.sh
命令行卡住,有未執行的錯誤命令
ctrl + c
結束
sh -x test.sh
調試腳本,查看問題
ctrl + c
cat -n test.sh
補全命令
sh -x test.sh
再次執行腳本
Shell
腳本實驗
實驗一
執行 ip_show.sh
顯示當前主機的 ip 地址
vim ip_show.sh
#!/bin/bash
echo "host ipaddress:
ifconfig | awk '/inet\>/&&!/127.0.0.1/{print $2}'
"sh ip_show.sh
實驗二
執行user_show.sh
顯示當前主機中能登陸系統的用戶
vim user_show.sh
#!/bin/bash
echo "Login user list: "
echo “”
echo “
awk -F : '/bash$/||/sh/{print $1}' /etc/passwd
”sh user_show.sh
實驗三
執行host_message.sh
顯示當前主機的名稱、ip 以及能夠登陸系統的用戶
vim user_show.sh
#!/bin/bash
顯示當前主機的名稱
echo "hostname:
hostname
"echo “”
顯示當前主機的 ip
echo "host ipaddress:
ifconfig | awk '/inet\>/&&!/127.0.0.1/{print $2}'
"echo “”
能夠登陸系統的用戶
echo "Login user list: "
echo “”
echo “
awk -F : '/bash$/||/sh/{print $1}' /etc/passwd
”sh host_message.sh
實驗四
clear_log.sh
執行命令清空日誌
vim clear_log.sh
#!/bin/bash
[ “$USER” = “root” ] && {
> /var/log/messages
echo -e “\033[32m clean /var/log/messages successful!!\033[0m”
} || {
echo -e “\033[31m This script must run with root !!\033[0m”
}
sh clear_log.sh
在這個實驗中,我們用到了 改變字符顏色功能