1、sort排序
原理:sort 将文件的每一行作为一个单位,相互比较,比较原则默认情况是从首字符向后,依次按 ASCII 码值进行比较, 后将他们按升序输出。
语法:sort [OPTION]... [FILE]…
选项说明:
- -t:指定以什么作为列分割
- -k:用来制定利用那列进行排序,通常
-t于-k配合使用 - -r:降序输出(默认升序,不加-r即升序)
- -n:以数组来进行排序(会讲分割后的列作为数组,排序默认是单个字符的ASCII比较,例如99会大于1001。加入-n后会做自然排序,1000大于99)
- -f:忽略大小写字母
-u:取消重复的行
# 以:分割文件,以第3列排序,-r降序,-n以数组因子排序[root@VM-0-17-centos shell]# sort -t: -k3 -n -r /etc/passwdwww:x:1002:1002::/home/www:/sbin/nologinmysql:x:1001:1001::/home/mysql:/sbin/nologinzhangl:x:1000:1000::/home/zhangl:/bin/bashsystemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologinsystemd-network:x:998:996:systemd Network Management:/:/sbin/nologinpolkitd:x:997:995:User for polkitd:/:/sbin/nologinlibstoragemgmt:x:996:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologinchrony:x:995:993::/var/lib/chrony:/sbin/nologinsyslog:x:994:992::/home/syslog:/bin/falsesaslauth:x:993:76:Saslauthd user:/run/saslauthd:/sbin/nologinabrt:x:173:173::/etc/abrt:/sbin/nologinavahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologinnobody:x:99:99:Nobody:/:/sbin/nologin
2、uniq去重
语法:
uniq [OPTION]... [INPUT [OUTPUT]]
选项说明:-c: 打印出现的次数,只能统计相邻的;
- -d: 只打印重复行;
- -u: 只打印不重复行;
-D: 只打印重复行,并且把所有重复行打印出来
# 以:分割文件,统计文件中最后一列出现的次数,降序排列[root@VM-0-17-centos shell]# awk -F: '{print $NF}' /etc/passwd | sort | uniq -c | sort -nr26 /sbin/nologin2 /bin/bash1 /sbin/shutdown1 /sbin/halt1 /bin/sync1 /bin/false
3、find命令
语法:
find path -option [ -print ] [ -exec -ok command ] {} \;
原理:find 根据option在指定的系统路径中查找文件,如果查找到与对应的exec命令,则执行对应的command。print: find 命令将匹配的文件输出到标准输出;
- exec: find 命令对匹配的文件执行该参数所给出的 shell 命令。相应命令的形式为 ‘command’ {} ;,注意 {} 和 \;之间的空格;
- ok: 和 - exec 的作用相同,只不过以一种更为安全的模式来执行该参数所给出的 shell 命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行;
选项说明:
- -name filename #查找名为 filename 的文件- -perm #按执行权限来查找- -user username #按文件属主来查找- -group groupname #按组来查找- -mtime -n +n #按文件更改时间来查找文件,-n 指 n 天以内,+n 指 n 天以前- -atime -n +n #按文件访问时间来查 GIN: 0px">- -ctime -n +n #按文件创建时间来查找文件,-n 指 n 天以内,+n 指 n 天以前- -type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件- -size n [c] #查长度为 n 块 [或 n 字节] 的文件- -depth #使查找在进入子目录前先行查找完本目录- -prune #通常和 -path 一起使用,用于将特定目录排除在搜索条件之外。过滤条件写在其他条件前面。
# 在当前目录寻找文件名称以.txt结尾的文件并打印出来[root@VM-0-17-centos shell]# find ~ -name "*.txt"/root/.phpstorm_helpers/build.txt/root/oneinstack/versions.txt# 查找指定目录下,大于10M的文件,并打印文件大小[root@VM-0-17-centos shell]# find /usr/bin -size +10000k -exec ls -ld {} \;-rwxr-xr-x 1 root root 5204272 Nov 5 2016 /usr/bin/ctest-rwxr-xr-x 1 root root 4084352 Nov 5 2016 /usr/bin/cmake-rwxr-xr-x 1 root root 19719152 Mar 9 06:56 /usr/bin/runc# 查找当前目录下644权限的文件[root@VM-0-17-centos shell]# find . -perm 644 -print;./nginx_log.sh./until.sh
find /usr/bin -size +1000k -exec ls -ld {} \; 命令结尾处,\;不能有空格,否则报错
4、date日期时间
date 可以用来显示或设定系统的日期与时间
-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;-u:显示GMT;
时间格式:
%Y -- 年份%m -- 月份%d -- 当月第几天%t -- Tab 跳格%H -- 小时,24 小时格式 (0~23)%I -- 小时,12 小时格式 (0~12)%M -- 分钟 (00~59)%S -- 秒 (00~59)%j -- 今年中的第几天%Z -- 以字符串形式输出当前时区%z -- 以数字形式输出当前时区%F -- 文件时间格式 same as % Y-% m-% d%T -- 24 小时制时间表示 (hh:mm:ss)
# 打印命令耗时start=$(date +%s)echo "$(date +%F" "%T) 任务开始执行..."sleep 5echo "$(date +%F" "%T) 任务执行结束..."end=$(date +%s)difference=$(( end - start))echo "命令耗时:${difference} secounds."
5、xargs 转换参数
将标准输入转换为命令行参数
linux 命令行中经常要使用到管道符连接不同的命令,但是有些命令不支持标准输入,此时就需要使用 xargs 将标准输入转换为参数,
语法:stdin_input | xargs [option] cmd
原理:xargs 一般是通过管道符接受标准输入并将其转换为命令行参数传递给 cmd。
# 打印1~6,默认每次输出一行[root@VM-0-17-centos shell]# seq 1 6123456# 每行输出3个参数[root@VM-0-17-centos shell]# seq 1 6 | xargs -n 31 2 34 5 6# 删除日志文件ls *.log |xargs rm -r f {}# 查找 /home/data 下权限为 644 的文件修改权限为 600find /home/data -perm 644 | xargs chmod 600# 查找 jpg 文件并打包find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz
