1.シェルとは
Shellは、ユーザーがLinuxを使用するためのブリッジであるC言語で記述されたプログラムです。シェルはコマンド言語であると同時にプログラミング言語でもあります。シェルとは、ユーザーがオペレーティングシステムカーネルのサービスにアクセスするためのインターフェイスを提供するアプリケーションプログラムを指します。Ken Thompsonのshは最初のUnixシェルであり、WindowsExplorerは典型的なグラフィカルシェルです。
シェルスクリプト(シェルスクリプト)は、シェル用に作成されたスクリプトプログラムです。
2.シェルスクリプトの意味
- 将来繰り返し実行するために、コマンドの実行プロセスと実行ロジックを記録します
- スクリプトはホストをバッチで処理できます
- スクリプトはホストを定期的に処理できます
3.シェルスクリプトを作成します
#! :スクリプトが実行する必要のあるインタープリター、つまり使用されるシェルの種類をシステムに通知する合意済みのマークです。
#!/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: [email protected]")
call append(5,"## Info: ")
call append(6,"###########################")
call append(7,"")
call append(8,"#!/bin/bash")
endfunc
テスト:拡張子sh(shはシェルを表す)を使用して新しいファイルtest.shを作成し、ヘッダーを自動的に生成します
4.シェルスクリプトを実行します
操作方法1:
- 環境内で指定されたインタープリターを手動で起動します
sh 脚本文件
:run
操作方法2:
現在の環境でシェル内のコマンドを直接実行します(新しいシェルを開かないでください)
source 脚本文件
. 脚本文件
実行方法3:
スクリプトで指定されたシェルを開き、このシェル環境を使用してスクリプト内のコマンドを実行します
(最初の行に通訳者情報を指定する必要はありません)
-
chmod +x 脚本文件名
:実行許可を与える -
/脚本文件名
または. /脚本文件名
:実行
5.シェルスクリプトをデバッグします
|
|
---|---|
|
コマンドは-cの後の文字列から読み取ります |
|
スクリプトの相互作用を実現する |
|
シェルスクリプトの構文を確認してください |
|
ステートメントごとのシェルスクリプトステートメントの追跡を実現します |
sh -x 脚本文件
:スクリプト実行プロセスを表示します
+ #运行指令
不带+ #命令运行的输出
6.スクリプト演習
演習1:
「ip_show.shネットワークカード」を実行して、現在のIPを表示します
ifconfig $1 | awk '/inet\>/{print $2}'
演習2:
host_messages.sh
- 現在のホスト名を表示し、現在のホストにipログインします
- 格式:
ホスト名:XXXX IPアドレス:
XXXX.XXXX.XXXX.XXXX
ユーザー名:ルート
echo "hostname: $HOSTNAME"
echo "ipaddress: $(ifconfig 网卡 | awk '/inet\>/{print $2}')"
echo "username: $USER"
演習3:
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