管道符介绍
管道操作符号 "|" 连接左右两个命令, 将左侧的命令的标准输出, 交给右侧命令的标准输入。
# 格式:
cmd1 | cmd2 [...|cmdn]
# 注意事项
1.在管道后面的命令,都不应该在写文件名
2.在管道中只有标准输出才可以传递下一个命令, 标准错误输出会直接输出终端显示, 建议在使用管道前将标准错误输出重定向。
例如: find /etc -name "*.conf" 2>/dev/null | grep rc
3.有些命令不支持管道技术, 但是可以通过xargs来实现管道传递。
应用1 统计出最占CPU的5个进程
ps aux --sort=-%cpu |head -6
2.请统计出下面文件中,域名被访问的次数
https://blog.driverzeng.com/index.html
https://blog.driverzeng.com/1.html
http://post.driverzeng.com/index.html
http://mp3.driverzeng.com/index.html
https://blog.driverzeng.com/3.html
http://post.driverzeng.com/2.html
排序:sort
去重:uniq
截取出域名:cut
先把这些放进yuming.txt
以/截取
命令:cut -d '/' -f 3 yuming.txt | sort |uniq -c
3 blog.driverzeng.com
1 mp3。。。
2 post。。。
**xargs(英文全拼:eXtended ARGuments)**
xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
# xargs 一般是和管道一起使用,可以让一些不支持管道的命令比如前面讲的find命令可以使用管道
格式:somecommand |xargs -item command
加与不加xargs的区别:
[root@localhost ~]# find /run -type s | ls -l 前面的废掉了,流不过去,直接相当于# ls -l
total 20
-rw-r--r--. 1 root root 23 Aug 25 09:24 001
-rw-r--r--. 1 root root 0 Aug 24 17:20 123
-rw-r---w-. 1 root root 877 Aug 25 08:28 abc
-rw-------. 1 root root 1447 Aug 17 15:28 anaconda-ks.cfg
-rw-r---w-. 1 root root 0 Aug 24 21:00 demo.txt
...
[root@localhost ~]# find /run -type s |xargs ls -l 加个xargs 可以了 所有s属性的文件
srw-rw-rw-. 1 root root 0 Aug 24 15:41 /run/dbus/system_bus_socket
srwx------. 1 root root 0 Aug 24 15:41 /run/systemd/cgroups-agent
srw-rw-rw-. 1 root root 0 Aug 24 15:41 /run/systemd/journal/socket
srw-rw-rw-. 1 root root 0 Aug 24 15:41 /run/systemd/journal/stdout
srwxrwxrwx. 1 root root 0 Aug 24 15:41 /run/systemd/notify
srwxrwxrwx. 1 root root 0 Aug 24 15:41 /run/systemd/private
srw-------. 1 root root 0 Aug 24 15:41 /run/systemd/shutdownd
srw-------. 1 root root 0 Aug 24 15:41 /run/udev/control
srw-rw-rw-. 1 root root 0 Aug 24 15:41 /run/vmware/guestServicePipe
,