1、什么是shell?
shell也是操作系统中的一个软件,它包在linux内核的外边,为用户和内核之间的交互提供接口;系统中的命令也是用shell去解释的,shell收集系统回应的输出并显示到屏幕中;bash = GNU Bourne-Again Shell.
2、什么是shell脚本?
脚本是一种解释型语言,用shell脚本保存执行动作,用脚本判定命令的执行条件 ,用脚本实现动作的批量执行。
一、常用的命令
1、diff
diff命令用来比较两个文件或目录的不同
diff [option] target1 target2
diff file1 file2
diff directory1 directory2
diff在比较文件的过程中结果的读取方式
【num1,num2】【a|c|d】【num3,num4】
num1,num2表示在第一个文件中的个数
a表示添加--------add
c表示更改--------change
d表示删除--------delete
<表示第一个文件中的内容
>表示第二个文件中的内容
num3,num4表示第二个文件中的行数
diff在比较目录过程中的结果的读取
Only in direstory/:filename
directory 表示在那个目录中
filename 表示在这个目录中
diff常用的参数
-b 不检查空格字符的不同
-B 不检查空白行
-c 显示全部内容并标出不同的地方
-i 不检查大小写的不同
-p 比较c语言文件时,显示差异所在的函数名称
-q 仅显示有无差异不显示详细信息
-r 比较子目录中的文件
-u 以合并的方式来显示文件内容的不同
2、patch
用于不同文件打补丁
patch [options] file.old file.path
-b
3、cut
cut 命令用于字符借取
cut -d 指定分隔符
cut -f 1,7|1-7 指定截取的列
cut -c 1,2|1-2 指定借取的字符位置
4、sort
sort用于字符排序
sort -n 纯数字排序
sort -r 倒序
sort -u 去掉重复数字
sort -o 输出到指定文件中
sort -t 指定分隔符
sort -k 指定要排序的列
5、uniq
对重复的字符做相应的处理
uniq -u 显示唯一的行
uniq -d 显示重复的行
uniq -c 每行显示一次并统计重复次数
6、tr:源文件不变
cat file | tr 'abc' 'xyz' 将file中的‘abc’替换成‘xyz’,
cat file|tr [a-z] [A-Z] 将文件中的小写字母改成大写字母
cat file|tr [0-9] [a-j] 将0-9转化成a-j
cat file|tr -d "字符" 删除文件中出现的字符
cat file | tr -d -c "0-9" 保留文件中的数字,删除其他的内容
cat file | tr -s "\r" "\n" 后者替换前者
cat file | echo $[$(tr '\n' '+')0] 实现加法运算
7、test
test 命令和[]相同,并且在shell中,"==“和”="是相同的
变量比较:
[ "$A" = "$B" ] 两个变量相等为真
[ "$A" != "$B" ] 两个变量不相等为真
[ "$A" -eq "$B" ] 两个变量相等为真
[ "$A" -ne "$B" ] 两个变量不相等为真
[ "$A" -le "$B" ] $A小于等于$B为真
[ "$A" -lt "$B" ] $A小于$B为真
[ "$A" -ge "$B" ] $A大于等于$B为真
[ -z "$A" ] 变量A不存在为真
[ -n "$B"] 变量B存在为真
[ "$A" -ne "$B" a "$A" -gt "$B" ] 两个条件都成立是为真
[ "$A" -ne "$B" o "$A" -gt "$B" ] 两个条件成立一个为真
文件比较:
[ "file" -ef "file1" ] 为硬链接则为真
[ "file" -nf "file1" ] 不是硬链接为真
[ "file" -of "file1" ]
判断文件类型
[ -e "file" ] 文件存在为真
[ -f "file" ] 普通文件为真
[ -L "file" ] 链接为真
[ -S "file" ] sock文件为真
[ -b "file" ] 块设备为真
[ -d "file" ] 目录为真
[ -c "file" ] 字符设备为真
8、&&和||
&& 用来执行条件成立之后指定的命令
|| 用来执行条件不成立之后的命令