shell中常用的基础命令
1.diff
1.用法:
diff [options] files|directorys
2.输出信息:
[num1,num2][a|c|d][num3,num4]
输出信息 | 含义 |
---|---|
num1,num2 | 第一个文件中的行 |
a | 添加 |
c | 更改 |
d | 删除 |
< | 第一个文件中的内容 |
> | 第二个文件中的内容 |
num3,num4 | 第二个文件中的行 |
3.常用参数:
参数 | 含义 |
---|---|
-b | 对比时忽略空格 |
-B | 对比时忽略空行 |
-i | 对比时忽略大小写 |
-c | 显示文件所有内容并标示有不同的行 |
-r | 对比目录 |
-u | 对比后合并输出 |
实验:
显示文件所有内容并标示有不同的行
2.patch
patch 原文件 补丁文件
patch -b 原文件 补丁文件 ##备份原文件
3.cut
-d : 指定:为分隔符
-f 指定显示的列
5 第五列
3,5 3和5列
3-5 3到5列
5- 第五列以后
-5 到第五列
-c 指定截取的字符(数字用法同-f)
4.sort
参数 | 含义 |
---|---|
-n | 纯数字排序 |
-r | 倒叙 |
-u | 去掉重复 |
-o | 输出到指定文件 |
-t | 指定分隔符 |
-k | 指定排序的列 |
实验环境:切换到一个空目录/mnt中,新建编辑文件westos,写入多行数字
sort westos 此时直接使用sort对文件进行排序,得到的是以首个字符为排序准则的排序结果
5.uniq
参数 | 含义 |
---|---|
-c | 合并重复并统计重复个数 |
-d | 显示重复的行 |
-u | 显示唯一的行 |
命令练习:
1、ifcongfig 网卡 可以显示此网卡的信息
显示信息中包含此网卡使用的ip地址
请用命令过滤此ip并在输出时只显示ip其他信息不显示2、找出能登陆系统用户中UID最大的用户,并显示其名称
6.tr
tr ‘a-z’ ‘A-Z’ ##小写转大写
tr ‘A-Z’ ‘a-z’ ##大写转小写
7.test
test = [ ] ##[ ] 就相当于test命令
“test $a = b " = [ " b" = [ " b"=["a” = “$b” ]
注:在【】书写内容时,两边必须有空格,元素必须用引号引起来
7.1 test数字对比
参数 | 含义 |
---|---|
-eq | 等于 |
-ne | 不等于 |
-le | 小于等于 |
-lt | 小于 |
-ge | 大于等于 |
-gt | 大于 |
7.2 test的条件关系
-a ##并且
-o ##或者
7.3 test对空的判定
-n ##nozero 判定内容不为空
-z ##zero 判定内容为空
a=1
[ -z "$a" ] && echo yes || echo no
//判断直为空
[ -n "$a" ] && echo yes || echo no
//判断直不为空
7.4 test对于文件的判定
参数 | 含义 |
---|---|
-ef | 文件节点号是否一致(硬链) |
-nt | 文件1是不是比文件2新 |
-ot | 文件1是不是比文件2老 |
-d | 目录 |
-S | 套结字 |
-L | 软连接 |
-e | 存在 |
-f | 普通文件 |
-b | 块设备 |
-c | 字符设备 |
[ -e "/mnt/file" ] && echo yes || echo no //判断文件是否存在
[ -f "/mnt/file" ] && echo yes || echo no //判断目标是否是文件
[ -d "/mnt" ] && echo yes || echo no //判断目标是否是目录
[ -b "/dev/vda" ] && echo yes || echo no //判断目标是否是块设备
[ -S "/var/lib/mysql/mysql.sock" ] && echo yes || echo no //判断目标是否是套接字
[ -L "/mnt/westos1" ] && echo yes || echo no //判断是否是链接
[ -c "/dev/pts/0" ] && echo yes || echo no //判断目标是否是字符设备
[ "/mnt/file" -ef "/mnt/file1" ] && echo yes || echo no //判断两文件是否是相同节点号
[ "/mnt/file" -nt "/mnt/file1" ] && echo yes || echo no //对比file文件是否比file1新
[ "/mnt/file" -ot "/mnt/file1" ] && echo yes || echo no //对比file文件是否比file1更老
8.
&& 符合条件作动作
|| 不符合条件作动作