• 欢迎访问显哥博客,本网站纯属学习技术,绝无商业用途,欢迎小伙伴们共同学习!研究技术!QQ:52249909 加我QQ
  • 世界75亿人,这么小的概率,能认识你,是我一生的幸运,不妨加个QQ接触一下:52249909 加我QQ

【一看就懂,一听就会】Linux重定向详解——输出重定向

技术栈 lixian 5年前 (2019-12-01) 16202次浏览 43个评论 扫描二维码
文章目录[隐藏]

一、啥是重定向??

Linux重定向定向分为两种,一种输入重定向,一种是输出重定向;
从字面上理解,输入输出重定向 (重新定义方向) 就是「改变输入与输出的方向」的意思。

总结:
输入方向就是我们人类从键盘输入指令流向电脑程序,如果我们改变它流向的方向,就叫输入重定向。
输出方向就是我们给电脑程序指令,电脑程序接受然后输出给电脑屏幕或者终端上让我们看到结果,如果我们改变他流出的方向,不让我们在终端上看到,输出到文件中,就叫流出重定向。

二、文件描述符

标准输入文件的描述符 代表为 0
标准输出文件的描述符 代表为 1
标准错误输出文件的描述符为 2

三、Linux shell 输出重定向

command表示输出的结果
file代表一个目标文件
输出结果和描述符之间要有空格
符号和目标文件之间有没有空格都可以 最好不要带空格

1、标准输出重定向

符号:command >file 作用:以覆盖的方式,把 command 的正确输出结果输出到 file 文件中。
符号:command >>file 作用:以追加的方式,把 command 的正确输出结果输出到 file 文件中。

2、标准错误输出重定向

符号:command 2>file 作用:以覆盖的方式,把 command 的错误信息输出到 file 文件中。
符号:command 2>>file 作用:以追加的方式,把 command 的错误信息输出到 file 文件中。

3、正确输出和错误信息同时保存

符号:command >file 2>&1 作用:以覆盖的方式,把正确输出和错误信息同时保存到同一个文件(file)中。
符号:command >>file 2>&1 作用:以追加的方式,把正确输出和错误信息同时保存到同一个文件(file)中。

4、正确输出和错误信息分别保存

符号:command >file1 2>file2 作用:以覆盖的方式,把正确的输出结果输出到 file1 文件中,把错误信息输出到 file2 文件中。
符号:command >>file1 2>>file2 作用:以追加的方式,把正确的输出结果输出到 file1 文件中,把错误信息输出到 file2 文件中。

表格形式展示:

【一看就懂,一听就会】Linux重定向详解——输出重定向
注意!!!强调!!!

1、在输出重定向中,>代表的是覆盖,>>代表的是追加。
2、输出重定向的完整写法是   描述符>file 或者 描述符>>file 
当描述符为1时,可以省略,当描述符为2时 不能省略!!!而且描述符和符合之间不能有空格
案例:
[root@lixian ~]# touch 1 2                        #有两个文件
[root@lixian ~]# echo "123445" 1 >1       #有空格输出到1
[root@lixian ~]# echo "123445" 1>2        #无空格输出到2
[root@lixian ~]# cat 1 2                            #查看
123445 1                                                  #系统默认把空格前面的1 当做内容
123445

实例操作(一看就懂,一听就会)干货:

标准输出重定向 案例

[root@lixian ~]# ls -l                                  #预览输出结果
total 8
-rw-r--r--. 1 root root 9 Nov 30 22:04 1
-rw-r--r--. 1 root root 7 Nov 30 22:04 2
-rw-r--r--. 1 root root 0 Nov 30 22:12 demo.txt
[root@lixian ~]# cat demo.txt                     #查看demo.txt有没有内容
[root@lixian ~]# ls -l >demo.txt                  #执行重定向
[root@lixian ~]# cat demo.txt                     #查看结果
total 8
-rw-r--r--. 1 root root 9 Nov 30 22:04 1
-rw-r--r--. 1 root root 7 Nov 30 22:04 2
-rw-r--r--. 1 root root 0 Nov 30 22:13 demo.txt

错误输出重定向 案例

[root@lixian ~]# ls a.txt                                          #预览错误信息
ls: cannot access a.txt: No such file or directory
[root@lixian ~]# cat err.txt                                     #查看err.txt有没有内容
[root@lixian ~]# ls a.txt 2>err.txt                            #执行重定向
[root@lixian ~]# cat err.txt                                      #查看结果
ls: cannot access a.txt: No such file or directory

把正确和错误信息都保存一个文件里 案例

[root@lixian ~]# ls -l >he.txt 2>&1              #重定向对错覆盖方式一起保存
[root@lixian ~]# ls abc >>he.txt 2>&1        #重定向对错追加方式一起保存
[root@lixian ~]# cat he.txt                           #查看结果
total 20
-rw-r--r--. 1 root root   9 Nov 30 22:04 1
-rw-r--r--. 1 root root   7 Nov 30 22:04 2
-rw-r--r--. 1 root root 283 Nov 30 22:26 a.txt
-rw-r--r--. 1 root root   1 Nov 30 22:13 demo.txt
-rw-r--r--. 1 root root 104 Nov 30 22:26 err.txt
-rw-r--r--. 1 root root   0 Nov 30 22:27 he.txt
ls: cannot access abc: No such file or directory

上面的操作太乱的,啥东西都往一个文件内存,乱七八糟的,太不利于我们以后的查找了,难以分辨!!
所以重点来了,我们会写成这样的形式

把正确的结果和报错的结果分开保存 案例

[root@lixian ~]# ls -l >>out.txt 2>>err.txt        #执行结果的不同 分别输出到不同的文件
[root@lixian ~]# cat out.txt 
total 0
-rw-r--r--. 1 root root 0 Nov 30 22:37 err.txt
-rw-r--r--. 1 root root 0 Nov 30 22:37 out.txt
[root@lixian ~]# cat err.txt 
[root@lixian ~]# 
解释:>>out.txt 是正确输出重定向的文件  2>>err.txt是错误输出重定向的文件
如果ls -l 这个命令执行成功,成功结果就会输出到out.txt文件里面
如果ls -l 这个命令执行错误,错误结果就会输出到err.txt文件里面 

这样一来,正确的输出结果会写入到 out.txt,而错误的信息则会写入到 err.txt。

垃圾回收站:

如果你既不想把命令的输出结果保存到文件,也不想把命令的输出结果显示到屏幕上,干扰命令的执行,那么可以把命令的所有结果重定向到 /dev/null 文件中。

[root@lixian ~]# ls -l &>/dev/null
[root@lixian ~]# 

本站博主 , 版权所有丨如未注明 , 均为原创
转载请注明原文链接:【一看就懂,一听就会】Linux重定向详解——输出重定向
喜欢 (48)

您必须 登录 才能发表评论!

(43)个小伙伴在吐槽
  1. 1
    匿名2022-10-18 01:15
  2. 1'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'
    匿名2022-10-18 01:15
  3. @@6fQ7p
    匿名2022-10-18 01:15
  4. 1qEocVcC' OR 824=(SELECT 824 FROM PG_SLEEP(15))--
    匿名2022-10-18 01:14
  5. H4CIGk9w'; waitfor delay '0:0:15' --
    匿名2022-10-18 01:14
  6. 1QsFDN0eO
    匿名2022-10-18 01:13
  7. 555'"()&%gPaA(9680)
    匿名2022-10-18 01:10
  8. -1; waitfor delay '0:0:15' --
    匿名2022-10-18 01:09
  9. 1*555
    匿名2022-10-18 01:09
  10. ;assert(base64_decode('cHJpbnQobWQ1KDMxMzM3KSk7'));
    匿名2022-10-18 01:09
  11. 555
    匿名2022-10-18 01:09
  12. 555
    匿名2022-10-18 01:09
  13. 1234
    匿名2019-12-19 14:33
  14. 哇,不错不错
    匿名2019-12-09 11:57
  15. 有自己的理解 ,不错
    匿名2019-12-08 00:12
  16. 显哥哥牛逼
    匿名2019-12-02 18:01
  17. 博主能不能再提供点输入重定向的内容呢
    匿名2019-12-01 14:15
  18. 大家都来看真良心,希望以后多多分享
    匿名2019-12-01 12:46
12