1.什么是重定向
将原本要输出到屏幕的信息 重新定向到某个文件或者黑洞
2.为什么要使用重定向
- 屏幕输出的信息很重要,且希望保存重要信息
- 后台执行中的程序,不希望他干扰屏幕的输出结果
- 系统的例行命令,例如定时任务的执行结果,希望保存下来
- 一些执行命令,我门已知他可能出现的错误信息,将他直接丢弃时
- 错误日志与正确的日志需要分别输出至不通的文件保存
3.标准输入 与 输出
名称 | 文件描述符 | 作用 |
---|---|---|
标准输入(stdin) | 0 | 默认是键盘也可以是文件输入 |
标准输出(stdout) | 1 | 默认输出到屏幕 |
错误输出(stderr) | 2 | 默认输出到屏幕 |
4.输出重定向
输出重定向的主要方式:
类型 | 操作符号 | 用途 | |
---|---|---|---|
1 | 标准覆盖输出重定向 | > | 将程序输出的正确结果输出到指定的文件中,会覆盖文件原有内容 |
2 | 标准追加输出重定向 | >> | 将程序输出的正确结果已追加的方式输出到指定文件 |
3 | 错误覆盖输出重定向 | 2> | 将程序输出的错误结果输出到指定的文件中,会覆盖文件原有内容 |
4 | 错误追加输出重定向 | 2>> | 将程序输出的错误结果已追加的方式输出到指定文件 |
5 | 混合重定向 | &> | 正确输出和错误输出重定向于同一个文件 |
6 | >a 2>&1 |
5.管道技术
管道操作符 | 主要用来连接左右两个命令,将左侧的标准输出stdout,交给右侧命令的标准输入stdin
注:无法传递标准错误输出至后者
例1: 将/etc/passwd 中的用户按 UID 大小排序
[root@wangjc ~]# cat /etc/passwd |awk -F ":" '{print $3}'|sort -n
例2: 统计当前/etc/passwd 中用户使用的 shell 类型
[root@wangjc ~]# cat /etc/passwd |awk -F ":" '{print $7}'|sort|uniq -c |sort -nr
16 /sbin/nologin
9 /bin/bash
1 /sbin/shutdown
1 /sbin/halt
1 /bin/sync
管道技术中的 tee 命令
将|操作符前命令结果通过 tee命令 截取一份输出至指定文件 并将|前的命令输出传递给|右面命令的输入
选项 -a 追加方式
[root@wangjc ~]# ifconfig ens32 |grep "netmask"|awk '{print $2}'
10.0.0.200
[root@wangjc ~]# ifconfig ens32 |grep "netmask"|tee /root/wjc/ip.txt|awk '{print $2}'
10.0.0.200
[root@wangjc ~]# cat /root/wjc/ip.txt
inet 10.0.0.200 netmask 255.255.255.0 broadcast 10.0.0.255
管道技术中的 xargs
参数的传递 将 | 前的命令结果作用于 命令的参数
[root@wangjc wjc]# ls #显示当前路径下文件
file1.txt ip.txt
[root@wangjc wjc]# ls |xargs rm -f #将当前路径下的文件 作为rm的参数执行删除
[root@wangjc wjc]# ls