shell脚本的基础知识(自动添加脚本首部+脚本的3种运行环境)

1.什么是shell

脚本中命令的解释器
Shell指“为使用者提供操作界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。


2.shell脚本的意义

1.记录命令执行的过程和执行逻辑,以便以后重复执行
2.脚本可以批量处理主机
3.脚本可以定时处理主机


3.如何创建shell脚本

3.1 !/bin/bash

一个规范的Shell脚本在第一行会指出由哪个程序(解释器)来执行脚本中的内容,这一行内容在Linux中的编程一般为

#!/bin/bash

或者

#!/bin/sh

开头的“#!"字符又称为幻数,在执行bash脚本的时候,内核会根据“#!”后面的解释器来确认哪个程序解释这个脚本中的内容
(注意:这一行必须写在每个脚本的第一行,即最优先执行的命令)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Linux中常用的解释器有:bash,sh,csh,tch等
UNIX中常用的解释器有:sh,kcsh等


3.2 vim自动添加脚本首部

/etc/vimrc配置文件中进行配置自动添加脚本首部
1.指定快捷键的方式添加脚本首部

map <F4> ms:call CVIMTITLE()<cr>'s ###快捷键指定方式

func CVIMTITLE()
        call append (0,"#############################")
        call append (1,"# Author:     red")
        call append (2,"# Version:             ")
        call append (3,"# Create_Time:    ".strftime("%Y/%m/%d"))
        call append (4,"# Mail:            red@.org")
        call append (5,"# Info:                  ")
        call append (6,"#")
        call append (7,"#############################")
        call append (8,"")
        call append (9,"#!/bin/bash")
endfunc

在这里插入图片描述
在这里插入图片描述


2.在新建脚本时自动添加脚本首部
注意:
1.此方式针对于新建的shell
2.以.sh .script结尾(可自己设定)

autocmd BufNewFile *.sh,*.script call CVIMTITLE()  ###自动添加脚本首部

func CVIMTITLE()
        call append (0,"#############################")
        call append (1,"# Author:     red")
        call append (2,"# Version:             ")
        call append (3,"# Create_Time:    ".strftime("%Y/%m/%d"))
        call append (4,"# Mail:            red@.org")
        call append (5,"# Info:                  ")
        call append (6,"#")
        call append (7,"#############################")
        call append (8,"")
        call append (9,"#!/bin/bash")
endfunc

在这里插入图片描述
在这里插入图片描述


4.如何执行shell脚本

4.1 手动在环境中开启指定解释器

(不运行脚本文件中的幻数,在纯净环境中执行命令)

sh  script.sh

在这里插入图片描述
在这里插入图片描述


4.2 直接在当前环境中运行shell中的指令不开启新的shell

(在当前shell中执行命令,以下两种用法相同,写法不同)

source  script.sh
.   script.sh

在这里插入图片描述
在这里插入图片描述


4.3 开启脚本中指定的shell并使用此shell环境运行脚本中的指令

chmod +x script.sh

/xxx/xxx/script.sh
./script.sh

在这里插入图片描述
在这里插入图片描述


5.如何对脚本进行调试

sh -x /xxx/script.sh

带 + :运行指令
不带+ :命令运行的输出

在这里插入图片描述


6.脚本练习

1.ip_show.sh 网卡 ——显示当前的IP

#!/bin/bash
[ -z "$1" ] && {
        echo "Error:no interface name Please input interface following Script!"
        exit
}

ifconfig $1 &>/dev/null || {
        echo "Error:interface $1 is not found"
        exit
}

ifconfig $1 | awk '/inet\>/{print $2}'

在这里插入图片描述
在这里插入图片描述ps:过滤网卡的方式如下:

nmcli device status | awk '$2~/ethernet/{print $4}'

在这里插入图片描述


2.host_messages.sh 显示当前主机的名称,ip,登陆当前主机的用户
格式如下:
hostname: xxxxx
ipaddress: xxxx.xxxx.xxx.xxx
username: root

#!/bin/bash:
echo "hostname: `hostname`"
echo "ipaddress: `ifconfig $1 | awk '/inet\>/{print $2}'|head -n 1`"
echo "username: `whoami`"

在这里插入图片描述
在这里插入图片描述


3.clear_log.sh 执行次脚本后可以清空日志
注意:日志在 /etc/rsyslog.conf
在rhel8中
在这里插入图片描述

!/bin/bash
[ "`whoami`" = "root" ] || {
        echo "Error: This script must run as root"
        exit
}

for Log_Name in `awk '/./&&!/^#/&&!/"/&&$2~/^\/|^\-/{print $2}' /etc/rsyslog.conf | sed  's/-//g'`
do
        > $Log_Name && {
                echo $Log_Name is cleared.
        }
done

在这里插入图片描述
在这里插入图片描述


在rhel7中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#!/bin/bash
[ "`whoami`" = "root" ] || {
        echo "Error: This script must run as root"
        exit
}

for Log_Name in $(awk '/./&&!/^#/&&!/^\$/&&$2~/^\/|^\-/{print $2}' /etc/rsyslog.conf | sed  's/-//g')
do
        > $Log_Name && {
                echo $Log_Name is cleared.
        }
done

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值