shell脚本中常用的命令

1.shell

shell 也是操作系统中的一个软件它包在 linux 内核的外面,为用户和内核
之间的交互提供了一个接口系统中的命令用 shell 去解释shell 接收系统回
应的输出并显示其到屏幕中

shell是解释型语言
shell相当于解释器

#!/bin/bash 是幻数,指定解释器
#!/usr/bin/env bash 自动匹配解释器

执行shell时系统会新建一个bash,并用新建的bash去执行内容

vim /mnt/westos.sh
    #!/bin/bash
    date

这里写图片描述

两种执行方式
sh westos.sh
这里写图片描述
chmod +x /mnt/westos.sh
/mnt/westos.sh
这里写图片描述

检测脚本运行
sh -x /mnt/westos.sh
或者在shell中写入#!/bin/bash -x 用绝对路径执行(幻数前不能添任何说明)
这里写图片描述

这里写图片描述

这里写图片描述

常用格式例子

vim /etc/vimrc

在文件中按F9填充

67 map ms:call WESTOS()’s
68 function WESTOS()
69 call append(0,”###########################################”)
70 call append(1,”# Auther: lee #”)
71 call append(2,”# CreateTime: “.strftime(“%Y-%m-%d %H:%M:%S”).(” #”))
72 call append(3,”# Version: 1.0 #”)
73 call append(4,”# Mail lee@westos.or #”)
74 call append(5,”# Description: #”)
75 call append(6,”# #”)
76 call append(7,”###########################################”)
77 call append(8,” “)
78 call append(9,”#!/bin/bash”)
79 endfunction
这里写图片描述

这里写图片描述

或者是

新建.sh结尾文件时自动填充

67 autocmd BufNewFile *.sh exec “:call WESTOS()”
68 function WESTOS()
69 call append(0,”###########################################”)
70 call append(1,”# Auther: lee #”)
71 call append(2,”# CreateTime: “.strftime(“%Y-%m-%d %H:%M:%S”).(” #”))
72 call append(3,”# Version: 1.0 #”)
73 call append(4,”# Mail lee@westos.or #”)
74 call append(5,”# Description: #”)
75 call append(6,”# #”)
76 call append(7,”###########################################”)
77 call append(8,” “)
78 call append(9,”#!/bin/bash”)
79 endfunction
这里写图片描述

这里写图片描述

2.shell常用指令

diff ##比较文件

[num1, num2][a|c|d][num3, num4]
num1, num2表示在第一个文件中的行数
a表示添加—add
这里写图片描述
c表示更改—change
这里写图片描述
d表示删除—delete
这里写图片描述
<表示第一个文件中的内容,>表示第二个文件中的内容,—分割线
num3, num4表示在第二个文件中的行数
2,4c2,4表示改变第一个文件中的第二行和第四行才能匹配第二个文件
的第二行和第四行

diff中常用的参数
-b 或 –ignore-space-change 不检查空格字符的不同(句末的空白)
-B 或 –ignore-blank-lines 不检查空白行(尾行的空白)
-c 显示全部内文,并标出不同之处
-i 或 –ignore-case 不检查大小写的不同
-p :若比较的文件为 C 语言的程序码文件时,显示差异所在的
函数名称;
-q 或 –brief :仅显示有无差异,不显示详细的信息
-r 或 –recursive :比较子目录中的文件
-u 以合并的方式来显示文件内容的不同

打补丁
diff westos westos.new -u >westos.path
yum install patch -y
patch westos westos.path ##打补丁
这里写图片描述
patch -b westos westos.path ##打补丁并新存原文件
这里写图片描述

cut

cut ##命令多用与字符截取
cut -d ##指定分隔符
cut -f 1,7|1-7 ##指定截取的列
cut -c 1,4|1-4 ##指定截取的字符位置
这里写图片描述

sort

sort -n 纯属字排序
sort -r 倒序
sort -u 去掉重复数字
sort -o 输出到指定文件中
这里写图片描述
sort -t 指定分隔符
sort -k 指定要排序的列
这里写图片描述

uniq

对重复字符做相应的处理
uniq -u 显示唯一的行
这里写图片描述
uniq -d 显示重复的行
这里写图片描述
uniq -c 每行显示一次并统计重复次数
这里写图片描述

&&和||

&&用来执行条件成立后执行的命令
||用来执行条件不成立后执行的命令
例如:
ping -c1 -w1 172.25.254.100 && echo up
ping -c1 -w1 172.25.254.100 || echo down
这里写图片描述

test

test命令和[]等同
test "$A" == "$B" 等同[ "$A" == "$B" ]    ##等于
[ "$A" = "$B" ]    ##等于
[ "$A" != "$B" ]    ##不等
[ ! "$A" = "$B" ]  ##不取等于
[ "$A" -eq "$B" ]    ##相等
[ "$A" -ne "$B" ]    ##不等
[ "$A" -le "$B" ]    ##小于等于
[ "$A" -lt "$B" ]    ##小于
[ "$A" -ge "$B" ]    ##大于等于
[ "$A" -gt "$B" ]   ##大于
[ "$A" -ne "$B" -a "$A"-gt"$B" ]  ##-a 和
[ "$A" -ne "$B" -o "$A"-gt"$B" ]  ##-o 或
[ "file1" -ef "file2" ] ##判断是否为同一档案,可用在判断hard link的判断上
[ "file1" -ot "file2" ] ##判断file1是否比file2旧
[ "file1" -nt "file2" ] ##判断file1是否比file2新
[ -z "$A" ]    ##判断字符串是否为空,为空返回true
[ -n "$A" ]    ##判断字符串是否不为空,为空返回false
[ -e "file" ]   ##是否存在
[ -f "file" ]   ##是否为档案
[ -L "file" ]   ##是否为链接
[ -S "file" ]   ##是否为套接字
[ -b "file" ]   ##是否为块设备
[ -d "file" ]   ##是否是目录
[ -c "file" ]   ##是否是char
[ -p "file" ]   ##是否是pipe
[ -r "file" ]   ##是否存在且具有可读权限
[ -w "file" ]   ##是否存在且具有可写权限
[ -x "file" ]   ##是否存在且具有可执行权限
[ -u "file" ]   ##是否存在且具有『SUID』权限
[ -g "file" ]   ##是否存在且具有『SHID』权限
[ -k "file" ]   ##是否存在且具有『Sticky bit』的属性
[ -s "file" ]   ##是否为非空白文档
c=1
[ -z "$c" ] && echo yes || echo no
[ -n "$c" ] && echo yes || echo no

这里写图片描述

字体属性

echo -e “\033[背景;字体;属性 \033[0m”
echo -e “\033[背景;字体;属性 \033”

字背景颜色   字颜色     ANSI控制码的说明
40:黑        30:黑        033[0m 关闭所有属性
41:深红      31:红        \033[1m  设置高亮度
42:绿        32:绿        \033[4m 下划线
43:黄        33:黄        \033[5m 闪烁
44:蓝        34:蓝        \033[7m 反显
45:紫        35:紫        \033[8m 消隐
46:深绿      36:深绿       \033[30m -- \33[37m 设置前景色
47:白        37:白        \033[40m -- \33[47m 设置背景色
                            \033[nA 光标上移n行
                            \033[nB 光标下移n行
                            \033[nC 光标右移n行
                            \033[nD 光标左移n行
                            \033[y;xH 设置光标位置
                            \033[2J 清屏
                            \033[K  清除从光标到行尾的内容
                            \033[s  保存光标位置
                            \033[u  恢复光标位置
                            \033[?25l 隐藏光标
                            \033[?25h 显示光标

例子

执行脚本 显示当前主机的 ip 地址

#!/bin/bash
INTER=eth0
ifconfig $INTER | head -n 2 | tail -n 1 | awk -F " " '{print $2}'

#!/bin/bash
INTER=eth0
ifconfig $INTER | head -n 2 | tail -n 2 | cut -d " " -f 10

这里写图片描述

这里写图片描述

这里写图片描述

执行脚本 测试ip是否通畅

#!/bin/bash
[ -n "$1" ] && (
    ping -c1 -w1 $1 &> /dev/null && echo is up || echo is down
) || (
    echo -e "\033[31;1m ERROR:please input a ipaddress after scripts!! \033[0m"
)

这里写图片描述

这里写图片描述

执行脚本 设备负载超过80%提醒

#!/bin/bash
NUM=`df -h / | tail -n 1 | awk -F " " '{print $5}' | cut -d "%" -f 1`
[ "$NUM" -ge "80" ] && (
    echo "/ is full " | mail -s warning root
    )

这里写图片描述

执行脚本 显示当前主机中能登陆系统的用户

执行脚本 显示当前主机的名称, ip ,以及能够登陆系统的用户

执行脚本 执行命令后可以清空日志

执行脚本 ip_show.sh

在虚拟机中执行 ip_show.sh eth0
可以显示 eth0 的信息
思考
如果没有 eth0

执行脚本 user_show.sh

显示当前系统中可以登陆的用户名称
思考
能登陆系统的用户的特性是什么

执行脚本 host_message.sh

显示当前系统 ip ,当前用户名称,当前目录,当前主机名称

执行脚本 clear_log.sh

脚本执行后系统日志清空
思考
当前不是 root 用户
日志不在 /var/logs 中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值