重定向
1.什么是重定向
将原本要输出到屏幕的数据信息,重新定向到某个指定的文件中。
2.为什么要使用重定向(重定向的使用场景)
- 当屏幕输出的信息很重要,我们希望能保存下来时;
- 后台执行中的程序,不希望他干扰屏幕正常输出结果时;
- 系统的例行命令,例如定时任务的执行结果,希望可以存下来时;
- 一些执行的命令,我们已经知道他可能出现错误信息,想将它直接丢弃时;
- 错误的日志和正确的日志分别输出至不同的文件保存时;
3.标准输入\ 标准输出 错误输出?
程序运行起来后,变为进程, 会同时打开三个文件 标准输入 标准输出 错误输出.
标准输入 0 标准输出 1 错误输出 2
4.标准输入输出、错误输出与重定向之间有什么关系?
重定向就是用来改变标准输出 或者标准错误输出的一个指向
-
1> 标准输出重定向 (覆盖)
[root@oldboyedu ~]# cat 1 echo "op" '原来文件内容' ls /etc [root@oldboyedu ~]# echo '标准输出重定向(覆盖)' >1 [root@oldboyedu ~]# cat 1 标准输出重定向(覆盖) '现在文本内容'
-
1>> 标准输出重定向 (追加)
[root@oldboyedu ~]# cat 1 原来文件内容 [root@oldboyedu ~]# echo "标准输出重定向 (追加)" >>1 [root@oldboyedu ~]# cat 1 原来文件内容 标准输出重定向 (追加) '追加进去的内容'
-
2> 标准错误输出重定向 (覆盖)
[root@oldboyedu ~]# cat 1 原来文件内容 标准输出重定向 (追加) '原文件内容' [root@oldboyedu ~]# dsa "gdpr" -bash: dsa: command not found '一个错误的命令' [root@oldboyedu ~]# dsa "gdpr" 2>1 [root@oldboyedu ~]# cat 1 -bash: dsa: command not found '现在的文件内容'
-
2>> 标准错误输出重定向 (追加)
[root@oldboyedu ~]# cat 1 原来文件内容 '原来文件内容' [root@oldboyedu ~]# fdsafds -bash: fdsafds: command not found '一条错误的命令' [root@oldboyedu ~]# fdsafds 2>>1 [root@oldboyedu ~]# cat 1 原来文件内容 '现在文件内容' -bash: fdsafds: command not found
-
&>/dev/null 混合输出(覆盖)
[laowang@oldboyedu ~]$ ll '普通用户查看文件权限' total 8 -rw-r--r--. 1 root root 5 Aug 11 12:35 1.txt '此用户可读' -rwxr-x---. 1 root root 8 Aug 11 12:35 2.txt '此用户不可读' [laowang@oldboyedu ~]$ cat 1.txt 2.txt &>sc '同时查看两个文件内容' [laowang@oldboyedu ~]$ cat sc gffd '成功输出1.txt的内容' cat: 2.txt: Permission denied '报错:没有权限'
-
&>>/tmp/t.log 混合输出 (追加)
[laowang@oldboyedu ~]$ cat sc 原来sc文件内容 '原来文件内容' [laowang@oldboyedu ~]$ cat 1.txt 2.txt &>>sc '同上例查看两个文件并混合输出' [laowang@oldboyedu ~]$ cat sc '查现在sc的内容' 原来sc文件内容 gffd cat: 2.txt: Permission denied
-
< 从文件中获取内容
[root@oldboyedu ~]# cat 3.txt '查看原来文件内容' 10 20 30 40 50 [root@oldboyedu ~]# tr '1-5' 'a-e' <3.txt '使用标准输入< 修改文件内容' a0 b0 c0 d0 e0
进程管道技术“|”
-
将左边命令的标准输出 ---传递---> 右边命令的标准输入 --->标准输出| 错误输出
[root@oldboyedu ~]# sort -n 1.txt | uniq -c | sort -nr
-
tee 将左边命令的标准输出保存至文件或打印至终端, 但不影响管道数据的一个传递
[root@oldboyedu ~]# sort -n 1.txt | tee kb.txt |uniq -c | sort -nr
- xargs 用于将不支持管道的命令 支持管道 左边命令的输出作为参数进行传递
[root@oldboyedu opt]# ls
1txt 2txt 3txt 4txt 5txt data
[root@oldboyedu opt]# ls | xargs rm -rf
[root@oldboyedu opt]# ls