一.什么是shell?
在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。同时它又是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
二.shell 脚本中的常用命令
1.diff命令
diff 命令是用来比较两个文件或目录的不同
格式:diff [options] target1 target2
diff file1 file2比较两个文件的不同之处
diff direcory1 directory2比较两个目录的不同之处
diff -b 或 --ignore-space-change 不检查空格字符的不同
-B 或 --ignore-blank-lines 不检查空白行
-c 显示全部内文,并标出不同之处
-i 或 --ignore-case 不检查大小写的不同
-p 若比较的文件为 C 语言的程序码文件时,显示差异所在的函数名称
-q 或 --brief 仅显示有无差异,不显示详细的信息
-r 或 --recursive 比较子目录中的文件
-u 以合并的方式来显示文件内容的不同
-q和-c的不同之处 -c更智能一些
2.patch命令
Linux patch命令用于修补文件,用于文件不同文件打布丁,这个指令常与 diff 配合使用,diff 可以用来分辨两个版本之间的差异
yum install patch -y ##安装打补丁的软件
diff -u westos1 westos2 > westos.patch ##生成补丁文件westos.patch
patch -b westos1 westos.patch ##修补文件westos
1
3.cut命令:cut 命令多用于字符截取
cut -d 指定分隔符
cut -f 1,7 1-7
cut -c 1,4 1-4 指定截取的字符位置
4.sort命令:sort多用于字符排序
sort -n 纯数字排序
sort -r 倒序
sort -u 去掉重复数字
sort -o 输出到指定文件中
sort -t 指定分隔符
sort -k 指定要排序的列
vim westos(竖着写一些数字)
sort westos 仅对第一列数字排序
sort -n westos对数字排序
sort -nr westos对数字倒序排序
sort -nru westos去掉重复的数字对数字倒序排序
5.uniq命令:对重复的字符做相应的处理
uniq -u 显示唯一的行
uniq -d 显示重复的行
uniq -c 每行显示一次并统计重复次数
sort -n westos | uniq -c 每个数字只显示一次,并且显示出现的次数
sort -n westos | uniq -d显示重复的行并且进行排序
sort -n westos | uniq -u显示唯一的行并且排序
6.&&(表示true条件为真)命令和||(表示false条件为假)命令
&&命令:用来执行条件成立后执行的命令
||命令: 用来执行条件不成立后执行的命令
7.test命令:test 是 Shell 内置命令,用来检测某个条件是否成立
test "$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" -ne "$B" -o "$A" -gt "$B" ]或条件(至少有一个条件满足才成立)
[-z "$A" ]判断是否为空,空为真,非空为假
[-n "$A" ]和条件相反就是真,非空为真,空为假
["file1" -ef "file2" ] 判断前后两个文件是否互相为硬链接
["file1" -nt "file2" ]判断前面的硬链接是否与新
["file1" -ot "file2" ]判断前面的硬链接是否旧
[-e "file" ]判断文件是否存在
[-f "file" ]判断文件是否为普通文件
[-L "file" ]是否为软链接
[-S "file" ]判断是否为套接字
[-b "file" ]判断是否为块设备
[-d "file" ]判断是否为目录
[-c "file" ]判断是否为字符设备
实验步骤如下
a=1
b=1
test "$a" = "$b" && echo yes || echo no
8.tr命令:tr是translate的简写,只能翻译单个字符,不能翻译句子
tr命令可以对来自标准输入的字符进行替换、压缩和删除。它可以将一组字符变成另一组字符