Linux--Shell腳本中的基礎知識

Shell

Shell 是操作系統中的一個軟件

它包在 Linux 內核外面,爲用戶和內核之間的交互提供了一個接口

系統中的命令用 Shell 去解釋

Shell 接收系統迴應的輸出並顯示其到屏幕中

bash = GNU Bourne-Again Shell
在這裏插入圖片描述

Shell 腳本

腳本是一種解釋性的語言

Shell 腳本保存執行動作

用腳本判定命令的執行條件

用腳本來實現動作的批量執行

創建 Shell 腳本

vim script.sh

使用 vim 編寫腳本

#!/bin/bash

腳本使用的解釋器,通常用幻數 “#!” 指定

AUTHOR

腳本作者

DATE

腳本創作時間

MAIL

腳本作者聯繫方式

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

在這裏插入圖片描述

在這裏插入圖片描述

在這個實驗中,我們用到了 改變字符顏色功能
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章