本文主要是介绍shell中常用的基础命令(diff、patch、cut、sort、uniq、tr、test、 ||),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
shell中常用的基础命令
- 一、diff
- 二、patch
- 三、cut
- 四、sort
- 五、uniq
- 六、tr
- 七、&& ||
- 八、test
一、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 | 合并输出 |
-b
,-B
,-i
示例:
-c
,-r
,-u
示例:
可用-u
生成补丁文件
二、patch
-b
:备份原文件
yum install patch -y ##安装patch
patch [-b] 原文件 补丁文件
用file.path
文件为file1
文件打补丁,并备份原文件
三、cut
cut [-d] [-f] [-c] files
-d : | 指定: 为分割符,空为“” |
-f | 指定显示的列5 第5列3,5 3和5列3-5 3到5列5- 第5列以后-5 到第5列 |
-c | 指定指定截取的字符(数字用法同-f ) |
head -n 3 /etc/passwd > passwd
四、sort
-n | 纯数字排序 |
-r | 倒叙 |
-u | 去掉重复 |
-o | 输出到指定文件 |
-t | 指定分割符 |
-k | 指定排序的列 |
sort -nur sortfile
sort -t " " -k 2 -nur sortfile ##指定分割符为空格,第二列,去掉重复,纯数字倒叙排序
示例:选取优先级最高的五个进程
ps ax -o nice,pid | sort -n | head -n 5 | awk '{print $2}'
五、uniq
-c | 合并重复并统计重复个数 |
-d | 显示重复的行 |
-u | 显示唯一的行 |
注意:使用uniq -c
进行统计数据时,需要先sort -n
,不然只会按相邻顺序统计,一旦乱序就达不到统计效果
示例1:使用
ifconfig
命令,可以显示网卡的信息,其中包括ip
地址,请显示处ip信息
ifconfig eth0 | head -n 2 | tail -n 1 | cut -d " " -f 10
示例2:找出能登陆系统用户中UID最大的用户,并显示其名称及UID
grep bash$ /etc/passwd | sort -t : -k 3 -nr | head -n 1 | cut -d : -f 1
六、tr
tr 'a-z' 'A-Z' | 小写转大写 |
tr ‘A-Z’ ‘a-z’ | 大写转小写 |
cat file1 | tr 'a-z' 'A-Z'
cat file1 | tr 'a-h' 'A-H'
七、&& ||
&& | 符合条件动作 |
|| | 不符合条件动作 |
示例1:编写脚本判断用户是否存在
vim test.shid $1 &> /dev/null && {echo $1 is exist
}||{echo $1 is not exist
}
示例2:编写脚本,测试主机能否ping通
vim ping.shping $1 -w 1 -c 1 &> /dev/null && {echo $1 is up
}||{echo $1 is down
}
八、test
test = [ ] ##[ ]就相当于test命令
"test $a = $b" = [ "$a"="$b" ] ##注意[]前后要有空格
test数字的对比
=/-eq | 等于 |
!/-ne | 不等于 |
-le | 小于等于 |
-lt | 小于 |
-ge | 大于等于 |
-gt | 大于 |
test的条件关系
-a | 并且 |
-o | 或者 |
! | 条件成立为假 |
test对空的判定
-n | nozero,判定内容不为空 |
-z | zero,判定内容为空 |
unset a | 对a的数值的彻底删除 |
test对文件的判定
-e | 存在 |
-s | 文件存在且文件大小大于零 |
-ef | 文件节点是否一致(即inode号) |
-nt | 文件1是否比文件2新 |
-ot | 文件1是否比文件2老 |
-d | 目录 |
-S | 套接字 |
-L | 软链接 |
-f | 普通文件 |
-b | 块设备 |
-c | 字符设备 |
示例1:编写脚本,实现以下条件:
file_check.sh
在执行时
如果脚本后未指定检测文件,报错”未指定检测文件,请指定“
如果脚本后指定文件不存在,报错“此文件不存在”
当文件存在时,请检测文件类型并显示到输出中
vim file_check.sh#!/bin/bash
[ -z "$1" ] && {echo "ERROR: No file specified,please specify"exit
}
[ -e "$1" ] || {echo "$1 is not exist "exit
}
[ -f "$1" ] && {[ -L "$1" ] && {echo "$1 is link file"} || {echo "$1 is file"exit}
}
[ -d "$1" ] && {echo "$1 is directory"exit
}
示例2:编写脚本,实现以下条件:
skk.sh
在执行时
如果脚本后未指定检测文件,报错”未指定检测文件,请指定“
如果文件不存在,报错“此文件不存在”
如果文件存在,请检测文件大小并显示到输出中,当文件大小为0时,报告“此文件大小为0”
vim skk.sh#!/bin/bash
[ -z "$1" ] && {echo "ERROR: No file specified,please specify"exit
}
[ -e "$1" ] || {echo "$1 is not exist "exit
}
[ -f "$1" ] && {[ ! -s "$1" ] && {echo "$1 size is 0"exit} || {du -sh $1exit}
}
这篇关于shell中常用的基础命令(diff、patch、cut、sort、uniq、tr、test、 ||)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!