作者/来源:新睿云 发布时间:2019-11-11
Linux系统拥有免费开源、管理更加简化、灵活性更高、开发和部署速度更快、安全性更高等优势,让越来越多的管理员和开发人员选择使用Linux。那么,作为Linux系统中的shell脚本是什么?
Shell是命令解释器(command interpreter),是Unix操作系统的用户接口,程序从用户接口得到输入信息,shell将用户程序及其输入翻译成操作系统内核(kernel)能够识别的指令,并且操作系统内核执行完将返回的输出通过shell再呈现给用户,下图所示用户、shell和操作系统的关系:
Shell也是一门编程语言,即shell脚本,shell是解释执行的脚本语言,可直接调用linux命令。一个系统可以存在多个shell,可以通过cat /etc/shells命令查看系统中安装的shell,不同的shell可能支持的命令语法是不相同的。
Linux系统为什么要使用shell脚本?
因为在Linux中,几乎所有的配置文件、日志都是纯文本类型文件,而shell脚本擅长处理纯文本类型的数据。
常用shell脚本命令介绍
1.diff命令
diff命令是用来比较两个文件或目录的不同
c –change d –delete a –add
<表示第一个文件中的内容
—-分割线
>表示第二个文件中的内容
2.cut命令
cut 命令多用与字符截取
cut -d 指定分隔符
cut -f 1,7|1-7 指定截取的列 1,7(1和7) 1-7(1到7)
cut -c 1,4|1-4 指定截取的字符位置
3.sort命令
多用于字符排序
sort -n 纯数字排序
sort -r 倒序
sort -u 去掉重复数字
sort -o 输出到指定文件中
sort -t 指定分隔符
sort -k 指定要排序的列
4.uniq命令
对重复字符做相应的处理
uniq -u 显示唯一的行
uniq -d 显示重复的行
uniq -c 每行显示一次并统计重复次数
5.&&和||运算符
&&用来执行条件成立后执行的命令,||用来执行条件不成立后执行的命令
[root@localhost mnt]# ping -c1 -w1 172.25.254.62 &> /dev/null && echo this is up|| echo this is down
this is up
## -c代表次数 -w代表等待时间
6.test命令
test 命令和[ ]等同
test “A”==“A”==“B” 等同 [ “A”==“A”==“B” ]
[ “A”=“A”=“B” ]等于
[ “A”!=“A”!=“B” ]不等于
[ “A”?eq“A”?eq“B” ] 等于
[ “A”?ne“A”?ne“B” ] 不等于
[ “A”?le“A”?le“B” ] 小于等于
[ “A”?lt“A”?lt“B” ] 小于
[ “A”?ge“A”?ge“B” ] 大于等于
[ “A”?gt“A”?gt“B” ] 大于
[ “A”?ne“A”?ne“B” -a “A”?gt“A”?gt“B” ] ne表示不等于,a表示and都满足
[ “A”?ne“A”?ne“B” -o “A”?gt“A”?gt“B” ] o表示or至少满足一个
[ -z “A”]表示值为空[?n“A”]表示值为空[?n“A” ] 表示值不为空
[ “file1” -ef “file2” ] ef 表示节点是否相同
[ “file1” -nt “file2” ] 表示new,file1是否比file2文件新
[ “file1” -ot “file2” ] 表示old,file1是否比file2文件老
[-e “file”] 文件是否存在
[-f “file”] 文件是否为普通文件
[-L “file”] 文件是否为符号链接
[-S “file”] 文件是否为套接字
[-b “file”] 文件是否为块设备
[-d “file”] 文件是否为目录
[-c “file”] 文件是否为特殊文件
7.tr命令
tr命令用于大小写转换。编写脚本,判断输入的内容和hello是否相等:
[root@localhost mnt]# vim test.sh
#!/bin/bash
[ "$1" = "hello" ]&& {
echo yes
}||{
echo no
}