Linux系统下shell的脚本基础

shell是包裹内核的一层壳,过滤与内核交流的信息
内核不被允许外界直接沟通
内核:调动器,分配程序的优先级
系统是多用户多操作,cpu承载多个程序,一个核一次只能运行一个程序。
常用shell:bash,kcsh,tcsh,csh,sh

在这里插入图片描述

脚本: 文本,是人和系统都能懂,能够以文件形式运行文件内容
shell脚本:记录在系统中的重复步骤,解释性语言,需要开启解释器

	vim test.sh
	#!/bin/bash	幻数:脚本执行时最先开启的程序

幻数不固定,写成什么命令就赋予脚本什么样的执行

在这里插入图片描述

################################
2.shell 脚本的执行

	vim test.sh
	#!/bin/bash
	watch -n 1 date

在这里插入图片描述

	sh test.sh		使用sh另开一个shell程序调用脚本内命令,还可以使用bash等

在这里插入图片描述

	source test.sh	在当前shell中执行,不另外打开
	. test.sh = source test.sh	

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

以上三种不需要有执行权限

	chmod +x test.sh
	./test.sh	相对路径也可使用绝对路径	
	需要有执行权限

例:没有执行权限时,无法以路径的方式运行脚本
在这里插入图片描述

加上执行权限后才可以使用路径方式

在这里插入图片描述

###################################################
4.vim 编辑脚本的格式
vim 编辑新的 以 . sh 结尾的文件会自动添加内容

	vim /etc/vimrc		在最后添加以下内容

在这里插入图片描述

 " map <F11> ms:call WESTOS()<cr>'s				
 被注释的一行,不被注释的情况下作用是vim编辑文件时,按F11作为快捷键沾贴WESTOS内的内容

 autocmd BufNewFile *.sh exec ":call WESTOS()"	
 在vim编辑一个新的以 .sh 结尾的文件时,会自动添加以下 WESTOS内的内容

 function WESTOS()
     call append(0,"##################################")
     call append(1,"# Author:        heihei           #")	脚本的编写者
     call append(2,"# Create_Date:   ".strftime("%Y-%m-%d %H:%M")." #")
     脚本的编辑日期
     call append(3,"# Version:       haha             #")	脚本运行的版本
     call append(4,"# Mail:          hehe             #")	脚本的邮箱
     call append(5,"# Description:   xixi             #")	脚本的描述
     call append(6,"#                                 #")
     call append(7,"#                                 #")
     call append(8,"##################################")
     call append(9,"")
     call append(10,"#!/bin/bash")
 endfunction

只有新编辑的以 .sh 结尾的文件才会生效
例:vim 编辑之前存在的 test.sh 不会自动添加脚本的格式内容
在这里插入图片描述
vim 编辑 一个新的不以 .sh 结尾的文件
在这里插入图片描述
vim 编辑一个以 .sh 结尾的新文件
在这里插入图片描述

#######################################################
4.脚本的调试:

vim date.sh
date
cal
cat

在这里插入图片描述

执行之后会卡住
在这里插入图片描述

执行调试命令可以看到卡在cat命令
sh -x test.sh 进行对脚本 test.sh 进行调试 可以看到卡在哪条命令
在这里插入图片描述

编辑脚本需要一条命令一条命令的调试,直接编辑全部会影响排错
脚本示例:
执行 ip_show.sh 显示当前主机的ip地址

	vim ip_show.sh
	ifconfig | awk ' /inet\>/&&!/127.0.0.1/ { print $2 } '
	^查看所有的ip		^用 awk 截取非贪婪模式下以 inet 开头 并且不为127.0.0.1 的第二列
	可以实现不管当前主机几个ip都可以显示出来,并且屏蔽回环接口

在这里插入图片描述

执行 user_show.sh 显示能登陆系统的用户名称

vim user_show.sh
awk -F : ' /bash$/ {print $1} ' /etc/passwd

在这里插入图片描述

执行 host_message.sh 显示当前主机的名称、ip、能登陆系统的用户

	vim host_message.sh
	echo "hostname: `hostname`"
	echo "ip: `ifconfig | awk ' /inet\>/&&!/127.0.0.1/ {print $2}'`"
	echo "username: `awk -F : '/bash$/{print $1}' /etc/passwd`"

在这里插入图片描述

执行 clear_log.sh 清空日志

	vim clear_log.sh
 [ "$USER" = "root" ]&&{
      > /var/log/message
      echo -e "\033[35m success\033[0m"
 }||{
      echo -e "\033[31m This must run with root!!!\033[0m"
 }

echo -e " \033[字号颜色 需要显示的内容 \033[0m " 可以让脚本输出带有颜色的字体
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值