linux之管道与重定向
时间:2019-05-10 17:34 来源:linux.it.net.cn 作者:IT
输入与输出重定向:
在linux操作系统中,输入和输出是两个相对的操作,用户将数据输入到系统的寄存器中,cpu调用处理,处理后的数据同样放入寄存器中,当然系统有很多的寄存器,输入输出的内容在不同的寄存器中,而后在屏幕上显示出来。
输入重定向:
cat > file <<EOF
文件中的内容
............
EOF
输出重定向:
> + 文件名 ##正确的输出重定向
2> + 文件名 ##错误的输出重定向
&> + 文件名 ##全部重定向
>> ##追加正确输出到文件最后
2>> ##追加错误输出到文件最后
&>> ##追加所有输出到文件最后
示例:
find /etc/ -name passwd > file ##定向正确输出到file
find /etc/ -name passwd 2> file ##定向错误输出到file
find /etc/ -name passwd &> file ##定向所有输出到file
find /etc/ -name passwd >> file ##追加正确输出到file
find /etc/ -name passwd 2>> file##追加错误输出到file
find /etc/ -name passwd &>> file##追加所有输出到file
“> + file” ##清空file
查看文件中的内容
注意:输出重定向必须使用普通用户才能有效果
管道 [ | ]
何为管道,顾名思义,就是类似与现实中的管道,在linux中管道的作用是将一条命令的输出可以变成后一条命令的输入。
注意:
管道只允许正确的输出通过
通过管道的输入将会变成输入,而变成输入的这些输出是会被第二条命令处理的
如果需要保存输出内容,那么需要复制一份输出,用到的命令是“tee”
示例
find /etc/ -name passwd | wc -l ##会看到的结果为2,因为错误输出不能通过管道
find /etc -name passwd 2>&1|wc -l ##会看到19,因为编号为2的输出被“2>&1”转换为编号1
find /etc -name passwd 2>&1|tee file |wc -l ##保存一份输出到file再统计行数
find /etc -name passwd 1>/dev/null 2>&1 |tee file |wc -l 输出为0
因为在执行2>&1的时候,1>/dev/nul也在执行,所以所有的输出都被丢掉了,故wc -l统计的行数为0
(责任编辑:IT)
输入与输出重定向:
在linux操作系统中,输入和输出是两个相对的操作,用户将数据输入到系统的寄存器中,cpu调用处理,处理后的数据同样放入寄存器中,当然系统有很多的寄存器,输入输出的内容在不同的寄存器中,而后在屏幕上显示出来。
输入重定向:
cat > file <<EOF
文件中的内容
............
EOF
输出重定向:
> + 文件名 ##正确的输出重定向
2> + 文件名 ##错误的输出重定向
&> + 文件名 ##全部重定向
>> ##追加正确输出到文件最后
2>> ##追加错误输出到文件最后
&>> ##追加所有输出到文件最后
示例:
find /etc/ -name passwd > file ##定向正确输出到file
find /etc/ -name passwd 2> file ##定向错误输出到file
find /etc/ -name passwd &> file ##定向所有输出到file
find /etc/ -name passwd >> file ##追加正确输出到file
find /etc/ -name passwd 2>> file##追加错误输出到file
find /etc/ -name passwd &>> file##追加所有输出到file
“> + file” ##清空file
查看文件中的内容
注意:输出重定向必须使用普通用户才能有效果
管道 [ | ]
何为管道,顾名思义,就是类似与现实中的管道,在linux中管道的作用是将一条命令的输出可以变成后一条命令的输入。
注意:
管道只允许正确的输出通过
通过管道的输入将会变成输入,而变成输入的这些输出是会被第二条命令处理的
如果需要保存输出内容,那么需要复制一份输出,用到的命令是“tee”
示例
find /etc/ -name passwd | wc -l ##会看到的结果为2,因为错误输出不能通过管道
find /etc -name passwd 2>&1|wc -l ##会看到19,因为编号为2的输出被“2>&1”转换为编号1
find /etc -name passwd 2>&1|tee file |wc -l ##保存一份输出到file再统计行数
find /etc -name passwd 1>/dev/null 2>&1 |tee file |wc -l 输出为0
因为在执行2>&1的时候,1>/dev/nul也在执行,所以所有的输出都被丢掉了,故wc -l统计的行数为0
(责任编辑:IT) |