什么是输出重定向

什么是输出重定向

简单说,就是把本来输出到屏幕上的信息保存到指定的文件中,这个过程就叫重定向

重定向使用场景

1.希望将输出的信息保存下来

2.希望将运行程序的执行结果保存下来

3.希望忽略某些命令的警告或者错误信息

4.希望将错误信息和正确信息保存在不同的文件中

5.程序运行报错了我们希望把报错信息保存下来

重定向分类

运行一个程序通常会有三种情况,标准输入,标准输出,错误输出

名称 文件描述 作用
标准输入 0 接受输入,默认为键盘,也可以是其他文件或命令输入
标准输出 1 正确的输出,默认输出到屏幕
错误输出 2 错误的输出,默认输出到屏幕

什么是输出重定向

简单来说,就是改变输出内容的位置,比如将输出信息保存到文件中

输出重定向分类

名称 操作符 作用
标准覆盖输出重定向 > 将程序输出的正确答案输出到指定的文件中,但是会覆盖原文件的内容
标准追加输出重定向 >> 将程序输出的正确结果追加输出到指定文件中,不会覆盖原文件,而是在后面追加内容
错误覆盖输出重定向 2> 将程序的错误结果输出到指定的文件中,但是会覆盖原文件的内容
错误追加输出重定向 2>> 将程序的错误结果以追加的形式输出到指定的文件中,不会覆盖原文件,而是在后面追加内容
清空文件命令命令实例  >linux.txt 

输出重定向案例

案例1:标准覆盖输出重定向

echo Linux7 > linux.txt

echo linux > linux.txt

cat linux.tx

案例2: 标准追加输出重定向

echo Linux7 >> linux.txt
echo linux7.1>> linux.txt
cat linux.txt

案例3:标准错误覆盖输出重定向

echooo 123 2> linux.txt
cat linux.txt

案例4:标准错误追加输出重定向

112344  333 2>> linux.txt

案例5:正确和错误输出到不同一个文件
#1.useradd zhaocheng
创建普通用户
#2.su -zhaocheng
切换用户
#3.find /etc/ -name "*.conf" 
因为zhaocheng 是普通用户,权限有限,所以有错误跟正确信息都会输出到屏幕
#4.find /etc/ -name "*.conf" > 0k.txt
将正确的消息输出到0k.txt中
#5.find /etc/ -name "*.conf" 2> on.txt 
将错误的信息输出到no.txt 中
#6.find /etc/ -name "*.conf" > 0k.txt && find /etc/ -name "*.conf" 2>no.txt
一条命令将错误正确的信息输出到不同的文件中
cat ok.txt 
cat no.txt
发现执行失败,&& 必须都要成功,所以该方式不行
#7.find /etc/ -name "*.conf" >0k.txt find /etc/ -name "*.conf" 2>no.txt
ok.txt no.txt 都创建成功了,但是里面没有内容。这种合并方法,只能用于创建文件,目录。比如touch ,mkdir。
#8.find /etc/ -name "*.conf" > ok.txt 2>no.txt
一条命令将正确和错误信息输出到不同的文件中
案例6:正确和错误都输出到同一个文件
find /etc/ -name "*.conf" >> all.txt 2>&1 
find /etc/ -name "*.conf" > all.txt 2>&1
两个命令执行的效果是一样的
一条命令将正确错误信息输出到同一个文件中,并且还按照默认时间排序。
案例7:将正确错误结果信息输出到null
 echooo 44545 > /dev/null 2>&1
案例8:将正确的信息输出到null
echo  123> /dev/null

 





输入重定向

案例:写入多行文本

cat > 123.txt << EOF
a
b
c
d
EOF

管道符号-每天都在用

什么是管道

1.管道符号为"|"
2.简单来说,管道就是将多个命令连接起来,将左侧命令的标准输出做为右侧命令的标准输入。
3.前面一个命令处理成功的输出信息,交给后面的命令做为输入继续处理。
4.只要命令不出错,可以接多个管道命令
5.错误命令不会传递给管道后面的命令

管道应用场景

1.处理日志,比如找出日志中访问排名前10的ip地址,url等
2.过滤输出,比如一个命令输出了10行信息,但是我们只需要其中关键信息

管道使用案例

案例1:取出网卡ip

ip ad | grep 10.0.0
查看网卡ip 地址信息后过滤含有10.0.0的关键字的行
cat /etc/sysconfig/network-scripts/ifcfg-eth0|grep -i "ipaddr" | awk -F"="'{print $2}'
查看ifcfg-eth0信息,部分大小写过滤ipaddr行,在过滤查看IP地址
ip ad | grep -i "inet" |grep eth0 | awk '/inet /{print $2}'
简单写

案例2:将/etc/passwd中的用户按照uid大小排序


posted @ 2021-09-26 11:51  zhaocheng690  阅读(2015)  评论(0编辑  收藏  举报