shell常用基本命令
diff命令
diff diff描述两个文件不同的方式是告诉我们怎么样改变第一个文件之后与第二个文件匹配
diff [options]target1 target2
differ A B
常用参数:
-b 忽略空格字符的不同
-B 忽略空白行的不同
-c显示全部内文,并标出不同
-i 忽略字母的大小写
-q只显示有无差异,并不显示详细信息
-r 比较子目录中的文件
-u合并方式显示同
-u 合并方式表不同
补丁的建立:yum install patch -y 下载patche
diff -u yun zhai > name.path将不同放到name.path
patch -b yun name.path 将不同再添加到yun这个文件里,此时文件修复完成
打完补丁:—p会生成一个备份文件.orig,如图
cut 命令多用于字符截取
cut -d 指定分离符
-f 指定列
-c 指定截取位置
例1:截取ifconfig eth0 的IP
方法一:ifconfig eth0 | cut -d " " -f 10 | head -n 2 | taile -n 1
方法二:ifconfig eth0 | awk '/inet\>{clprint $2}'
找到int开始的这个字符,/inet\表示找到该字符,然后输出该字符后边的第二个字符
方法三:ifconfig eth0 | grep "inet" | cut -d " " -f 10
sort 多用于字符排序
sort -n 纯数字排序
-r 倒序
-u 去掉重复数字
-o 输出到指定文件里
-t 指定分隔符
-k 指定要排序的列
uniq 对重复数字进行相应的处理
uniq -u 显示唯一的行
-d 显示重复的行
-c 每行显示一次,并且统计重复的次数
这两个经常搭配使用:
例2:分离出/etc/*.conf里最大的五个文件的文件名字
ls -l | sort -t " " -k 5 -nr | head -n 5 | cut -c 43-
含义:先把这些文件放到一个目录里,然后进入该目录:
test命令:
test相当于[ ]
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" ] 字符串长度是否为0
[ -n "$A" ] 字符串长度是否不为0
[ "file1" -ef "file2" ] 两个文件具有相同的设备号和节点号
[ "file1" -nt "file2" ] 文件1比文件2新
[ "file1" -ot "file2" ] 文件1比文件2旧
[ -e "file" ] 是否存在
[ -f "file" ] 普通文件
[ -L "file" ] 软连接tr命令:
[ -S "file" ] 套接字
[ -b "file" ] 块设备
[ -d "file" ] 目录
[ -c "file" ] 字符设备
例题1:判断输入的数字是否在10以内
1.输入是否为空
2.是否在10以内
3.1<a<10−−>yes4.a<10−−>yes4.a<1 $a>10 --> no
例题2:写一个脚本,判断该文件的属性
tr命令:
进行字母大小写转换:
tr "a-z" "A-Z" 将小写转换成大写
tr "A-Z" "a-z" 将大写转换成小写