shell脚本的基础知识

本文详细介绍了shell脚本的基础概念、创建和执行方法,包括如何编写ip_show.sh、host_messages.sh和clear_log.sh脚本,以及如何调试。涉及的关键技能有命令解释器、批量处理、定时任务和日志管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、什么是shell

脚本中命令的解释器

2、shell脚本的意义

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

3、如何创建shell脚本

#!/bin/bash   ##幻数

vim自动添加脚本首部

打开vim 按F4可以获取所设置内容

[root@westos111 ~]# vim ~/.vimrc
[root@westos111 mnt]# cat ~/.vimrc
set nu ts=2 sw=2 et ai

map <F4> ms:call WESTOSSHELL()<cr>'s

func WESTOSSHELL()
	call append(0,"###############################")
	call append(1,"# Author:   ")
	call append(2,"# Version:  ")
	call append(3,"# CreateTime:    ".strftime("%Y-%m-%d"))
	call append(4,"# Mail:     ")
	call append(5,"# INFO:     ")
  call append(6,"###############################")	
endfunc

 打开sh或script结尾的文件自动获取设置内容

[root@westos111 mnt]# cat ~/.vimrc
set nu ts=2 sw=2 et ai

"map <F4> ms:call WESTOSSHELL()<cr>'s
autocmd BufNewFile *.sh,.script call WESTOSSHELL()

func WESTOSSHELL()
	call append(0,"###############################")
	call append(1,"# Author:   ")
	call append(2,"# Version:  ")
	call append(3,"# CreateTime:    ".strftime("%Y-%m-%d"))
	call append(4,"# Mail:     ")
	call append(5,"# INFO:     ")
  call append(6,"###############################")	
endfunc

 

 4、如何执行shell脚本

(1)手动在环境中开启指定解释器

sh script.sh

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

source script.sh
. script.sh

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

chmod +x script.sh
/xxx/xxx/script.sh
./script.sh

 

 5、如何对脚本进行调试

sh -x /mnt/westos.sh
+                 ##运行指令
不带+         ##命令运行的输出

 脚本练习:

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

[root@westos111 mnt]# cat ip_show.sh

#!/bin/bash
[ -z "$*" ] && {
  echo please input dev
  exit
}

DEV_MASSAGE=$( ifconfig "$*" 2> /dev/null )||{
  echo $* is not exist!!
}&&{
  echo $DEV_MASSAGE | awk '/inet\>/{print$6}'
}

(2)host_messages.sh 显示当前主机的名称,ip登陆当前主机的用户

hostname:       xxxxx
ipaddress:       xxxx.xxxx.xxx.xxx
username:       root

[root@westos111 mnt]# cat host_messages.sh 
###############################
# Author:   
# Version:  
# CreateTime:    2021-11-23
# Mail:     
# INFO:     
###############################

#!/bin/bash
echo -e "hostname: \t $HOSTNAME"
echo -e "ipaddress: \t `ifconfig ens3 | awk '/inet\>/{print $2}'`"
echo -e "username:\t $USER"

如果有多个网卡时

[root@westos111 mnt]# cat host_messages.sh 

#!/bin/bash
echo -e "hostname: \t $HOSTNAME"
for NETDEV in `awk -F : '/:/&&!/lo/{print $1}' /proc/net/dev`
do
  echo -e "$NETDEV\tipaddress: \t `ifconfig ens3 | awk '/inet\>/{print $2}'`"
done
  echo -e "username:\t $USER"

(3)clear_log.sh  执行次脚本后可以清空日志

思路:首先判定用户是否为root,如果不是需要提醒用户切换。如果是,在配置文件中截取日志的所有类型,然后清空。

判定用户是否为root:

配置文件中,日志目录都在RULES下,先过滤出RULES到最后一行

 grep -A `sed -n $= /etc/rsyslog.conf` RULES /etc/rsyslog.conf

筛选不是以#开头的 awk '!/^#/{print $0}'

 过滤所有空行并输出第二列awk '!/^#|^$/{print $2}'

 过滤掉:开头的行,并将 - 改为空。到此筛选出了所有日志文件

 完整代码:

[root@westos111 mnt]# cat clear_log.sh 


#!/bin/bash
[ "$USER" != "root" ] && {                ##判定用户是否为root
  echo "please run $0 with root!!"
  exit
 }
for MESSAGES_FILE in `grep -A $(sed -n $= /etc/rsyslog.conf) RULES /etc/rsyslog.conf | awk '!/^#|^$|:/{print $2}' |sed 's/-//g'`       ##筛选所有日志目录
do
> $MESSAGES_FILE    ##用for循环将每个日志目录清空
done

 

### 回答1: b'shell脚本基础知识'是指对b'shell脚本'进行基础掌握的知识,包括b'shell脚本'的语法、变量、流程控制、函数等基础内容。了解b'shell脚本基础知识,可以帮助用户更好地编写和运行b'shell脚本',提高工作效率和准确性。 ### 回答2Shell是一种可以执行Linux命令的脚本语言,是Linux系统中必不可少的一部分。Shell脚本是一种文本文件,其扩展名通常为.sh或.bash。Shell脚本可以编写一些自动化的任务,使得Linux操作更加方便和高效。 Shell脚本基础知识包括以下内容: 1. Shell脚本的创建和执行 Shell脚本可以使用vi或其他文本编辑器创建,创建完成后用chmod命令设置为可执行权限。执行脚本有两种方式:直接输入脚本名,或用bash命令执行脚本。例如,执行名为test.sh的脚本,可用以下两种方式: ./test.sh bash test.sh 2. Shebang行 Shell脚本的第一行需要写上Shebang行,指定解释器的路径。在Linux系统中,默认的解释器为/bin/bash。因此,Shebang行通常是: #!/bin/bash 3. 变量和环境变量 Shell脚本中使用的变量需要先定义,然后才能使用。定义变量的方式为: 变量名=变量值 变量名前面必须添加美元符号$,才能获取到变量的值。可以使用echo命令输出变量值,例如: name="tom" echo $name 环境变量是一种全局变量,可以在Shell脚本中使用。Linux系统中有很多预定义的环境变量,例如: $HOME:当前用户的家目录。 $PATH:程序搜索路径。 $USER:当前登录用户的用户名。 4. 控制流语句和函数 Shell脚本支持各种控制流语句,例如if、for、while等。函数的定义和使用也和其他编程语言类似,例如: function_name(){ commands } function_name 5. 输入和输出重定向 在Shell脚本中,可以使用重定向符号>和<来重定向输入和输出。例如,将输出重定向到文件中,可以使用: echo "hello" > output.txt 将输入重定向到文件中,可以使用: read input_var < input.txt Shell脚本基础知识是编写自动化任务的基础,了解和掌握这些知识可以使得Shell脚本更加高效和便捷。 ### 回答3: Shell脚本是一个用来编写命令行脚本脚本语言。脚本语言和编译型语言不同,它的代码不需要被编译成可执行文件,而是直接解释执行。 Shell脚本的特点是读写文本文件,执行系统命令。在Unix/Linux操作系统中,Shell是最基本的界面,与其他操作系统类似,用户可以在Shell界面下输入各种命令来控制和操作计算机系统。 Shell脚本基础知识包括: 1. Shell脚本的文件格式,一般以.sh作为文件扩展名,脚本的执行需要给定执行权限(chmod +x filename.sh)。 2. 开始行(Shebang):开头的两个字符#!(Shebang)指定执行本脚本文件所使用的Shell解释器。一般来说,使用Bash解释器,开始行应该这样写:#!/bin/bash 3. 变量:在Shell脚本中,用$符号表示,变量名和等号之间不能有空格。例如:var=123 4. 数组:在Shell脚本中,用小括号()表示,使用花括号{}和下标来引用数组中的元素。例如:arr=(1 2 3) echo ${arr[1]} 5. 流程控制语句:if、while、case、for等,用于实现分支和循环等控制流程。 6. 命令行参数:在执行脚本时从命令行传入,用$符号表示。例如:在命令行执行:./test.sh arg1 arg2,则脚本中可以用$1表示arg1,$2表示arg2。 7. 读取键盘输入:使用read命令,例如:read name,表示从键盘读取一行文本并存储到变量name中。 8. 函数:用于将一些重复的命令封装起来,实现代码复用。例如: function test(){ echo "hello world"}。 Shell脚本是Unix/Linux操作系统的基础,掌握Shell脚本基础知识是很重要的。在实践中不断熟练掌握Shell脚本,可以提高个人的工作效率和工作质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值