美文网首页
4-14 Linux中的输出重定向

4-14 Linux中的输出重定向

作者: 捌千里路雲和月 | 来源:发表于2021-11-29 23:38 被阅读0次

1、标准输出文件(stdout):stdout 的文件描述符为1,默认输出到屏幕。

2、标准错误文件(stderr):stderr的文件描述符为2,默认输出到屏幕。

3、输出重定向简单理解就是把输出的内容写入到文件,而不是输出到屏幕。

4、输出重定向的符号是 > (大于号)。

  • 1)、command > file:标准输出重定向到文件(覆盖)
  • 2)、command >> file:标准输出重定向到文件(追加)
  • 3)、command 2> file:标准错误输出重定向到文件(覆盖)
  • 4)、command 2>> file:标准错误输出重定向到文件(追加)
  • 5)、command 2> /dev/null :标准错误输出重定向到回收站
  • 6)、command &> file:标准输出和标准错误输出重定向到文件(覆盖)
  • 7)、command &>> file:标准输出和标准错误输出重定向到文件(追加,既正确输出和错误输出保存在同一个文件)
  • 8)、command > file 2>&1:标准输出和标准错误输出重定向到文件(覆盖),功能和第 6 点一样。
  • 9)、command >> file 2>&1:标准输出和标准错误输出重定向到文件(追加),功能和第 7 点一样。
  • 10)、command > file1 2> file2:将标准输出重定向到 file1,将标准错误输出重定向到file2。
  • 11)、command >> file1 2>> file2:将标准输出重定向追加到 file1,将标准错误输出重定向追加到file2。
  • 12)、command > file 2>&1:标准输出和标准错误输出重定向到一个文件(覆盖)
  • 13)、command >> file 2>&1:标准输出和标准错误输出重定向到一个文件(追加)

5、实操练习:

  • ①、> file:输出重定向到文件(覆盖)
[root@localhost ~]# 
[root@localhost ~]# date    ## 输入 date 命令,屏幕上输出日期
Wed Oct 20 10:25:53 CST 2021
[root@localhost ~]# 

## 把 date 的输出重定向到 date.txt 文件,
## 重定向后屏幕不会输出日期,而是把内容写入 date.txt 文件
[root@localhost ~]# date > date.txt    
[root@localhost ~]# 
[root@localhost ~]# ll
total 4
-rw-r--r--. 1 root root 29 Oct 20 10:26 date.txt    ## 重定向的文件
[root@localhost ~]# 
[root@localhost ~]# cat date.txt    ## date 的内容 
Wed Oct 20 10:26:07 CST 2021
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# date > date.txt    ## 再执行一次
[root@localhost ~]# 
[root@localhost ~]# cat date.txt    ## 覆盖旧的文件内容     
Wed Oct 20 10:33:02 CST 2021
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# echo "i am root" > date.txt    ## 输出一句话重定向到 date.txt
[root@localhost ~]# 
[root@localhost ~]# cat date.txt    ## 新内容覆盖旧内容 
i am root
[root@localhost ~]# 

  • ②、>> file:标准输出重定向到文件(追加)
[root@localhost ~]# cat date.txt     ##/ 原来已有的内容
i am root
[root@localhost ~]# date >> date.txt    ## 输出 dete (时间)重定向追加到 date.txt 文件 
[root@localhost ~]# 
[root@localhost ~]# cat date.txt    ## 已追加 date 内容到 date.txt 文件 
i am root
Wed Oct 20 10:48:41 CST 2021
[root@localhost ~]# 
[root@localhost ~]# cal >> date.txt    ## 输出 cal (日历)重定向追加到 date.txt 文件 
[root@localhost ~]# 
[root@localhost ~]# cat date.txt     ## 已追加 cal 内容到 date.txt 文件  
i am root
Wed Oct 20 10:48:41 CST 2021
    October 2021    
Su Mo Tu We Th Fr Sa
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
[root@localhost ~]# 

  • ③、2> file:标准错误输出重定向到文件(覆盖)
[root@localhost ~]# 123    ## 错误的输入会产生报错。没有123 这个命令
-bash: 123: command not found
[root@localhost ~]# 
[root@localhost ~]# 123 2> err.txt    ## 把错误输出重定向到 err.txt 文件
[root@localhost ~]# 
[root@localhost ~]# ll
total 8
-rw-r--r--. 1 root root 189 Oct 20 10:49 date.txt
-rw-r--r--. 1 root root  30 Oct 20 11:02 err.txt    ## 存储错误信息的 err.txt 文件
[root@localhost ~]# 
[root@localhost ~]# cat err.txt    ## err.txt 文件内容就是 123 错误输出的信息 
-bash: 123: command not found
[root@localhost ~]# 
[root@localhost ~]# abc    ## 再执行一个错误输出 abc 
-bash: abc: command not found
[root@localhost ~]# 
[root@localhost ~]# abc 2> err.txt    ## 把 abc 报错的内容重定向到 err.txt 文件 
[root@localhost ~]# 
[root@localhost ~]# cat err.txt    ## abc 的错误信息覆盖了 err.txt 的旧内容 
-bash: abc: command not found
[root@localhost ~]# 

  • ④、2>> file:标准错误输出重定向到文件(追加)
[root@localhost ~]# 
[root@localhost ~]# efg 2>> err.txt    ## 追加一条错误命令 efg 输出到 err.txt
[root@localhost ~]# 
[root@localhost ~]# cat err.txt 
-bash: abc: command not found    ## 原来的错误输出信息
-bash: efg: command not found    ## 追加的错误输出信息
[root@localhost ~]# 
[root@localhost ~]# hijk 2>> err.txt     ## 再追加一条错误命令 hijk 输出到 err.txt 
[root@localhost ~]# 
[root@localhost ~]# cat err.txt 
-bash: abc: command not found     ## 原来的错误输出信息
-bash: efg: command not found     ## 原来的错误输出信息
-bash: hijk: command not found     ## 追加的错误输出信息
[root@localhost ~]# 

  • 如果正确的输出用 2> 进行重定向,它会首先打印正确输出的结果到屏幕,然后清空存储错误信息的文件。如果正确输出用 2>> 进行重定向,它会打印正确输出的结果到屏幕,不会追加到存储错误信息的文件,保留原有的内容。
[root@localhost ~]# cat err.txt    ## err.txt 原有保存的错误信息 
-bash: abc: command not found
-bash: efg: command not found
-bash: hijk: command not found
[root@localhost ~]# 
[root@localhost ~]# date 2> err.txt     ## 输入正确指令用错误信息重定向 2>
Wed Oct 20 11:49:40 CST 2021    ## 输出正确的信息到屏幕
[root@localhost ~]# 
[root@localhost ~]# cat err.txt    ## 清空了 err.txt 文件原有的内容 
[root@localhost ~]# 

------------------ 分割线 ------------------ 

[root@localhost ~]# 
[root@localhost ~]# abc 2> err.txt    ## 错误信息输出到 err.txt 文件
[root@localhost ~]# efg 2>> err.txt
[root@localhost ~]# hijk 2>> err.txt 
[root@localhost ~]# cat err.txt        ## err.txt 已有错误的信息  
-bash: abc: command not found
-bash: efg: command not found
-bash: hijk: command not found
[root@localhost ~]# date 2>> err.txt    ## 正确的指令用 2>> 追加错误信息重定向 err.txt 
Wed Oct 20 13:22:36 CST 2021    ## 输出正确的命令信息
[root@localhost ~]# cat err.txt    ## 原有的错误信息仍保留 
-bash: abc: command not found
-bash: efg: command not found
-bash: hijk: command not found
[root@localhost ~]# 

  • ⑤、2> /dev/null :标准错误输出重定向到回收站,重定向到 /dev/null 后就再也看不到信息。
[root@localhost ~]# 
[root@localhost ~]# abc 2> /dev/null
[root@localhost ~]# 

  • ⑥、&> file:标准输出和标准错误输出重定向到文件(覆盖)
[root@localhost ~]# 
[root@localhost ~]# date &> backups.txt    ## 正确输出的信息保存到 backups.txt 文件
[root@localhost ~]# 
[root@localhost ~]# ll
total 4
-rw-r--r--. 1 root root 29 Oct 20 14:31 backups.txt    
[root@localhost ~]# 
[root@localhost ~]# cat backups.txt    ## 正确输出的内容 
Wed Oct 20 14:31:19 CST 2021
[root@localhost ~]# 
[root@localhost ~]# abc &> backups.txt    ## 错误输出的信息也保存到 backups.txt 文件
[root@localhost ~]# 
[root@localhost ~]# cat backups.txt    ## 错误输出的内容,覆盖了以前的内容  
-bash: abc: command not found
[root@localhost ~]# 
[root@localhost ~]# 

  • ⑦、&>> file:标准输出和标准错误输出重定向到文件(追加,既正确输出和错误输出保存在同一个文件)
[root@localhost ~]# cat backups.txt    ##  backups.txt 文件原有的信息
-bash: abc: command not found
[root@localhost ~]# 
[root@localhost ~]# date &>> backups.txt    ##  正确输出的信息追加保存到 backups.txt 文件
[root@localhost ~]# 
[root@localhost ~]# cat backups.txt 
-bash: abc: command not found
Wed Oct 20 14:40:09 CST 2021    ## 追加正确的信息
[root@localhost ~]# 
[root@localhost ~]# ls abc &>> backups.txt    ## 错误输出的信息也追加保存到 backups.txt 文件 
[root@localhost ~]# 
[root@localhost ~]# cat backups.txt 
-bash: abc: command not found
Wed Oct 20 14:40:09 CST 2021
ls: cannot access abc: No such file or directory     ## 追加错误的信息
[root@localhost ~]# 

  • ⑧、> file 2>&1:标准输出和标准错误输出重定向到文件(覆盖),功能和第 6 点一样。
[root@localhost ~]# 
[root@localhost ~]# cat backups.txt    ## 原有 backups.txt 文件的内容
-bash: abc: command not found
Wed Oct 20 14:40:09 CST 2021
ls: cannot access abc: No such file or directory
[root@localhost ~]# 
[root@localhost ~]# date > backups.txt 2>&1    ##  正确输出的信息保存到 backups.txt 文件
[root@localhost ~]# 
[root@localhost ~]# cat backups.txt    ## 覆盖了 backups.txt 旧的内容
Wed Oct 20 15:24:03 CST 2021
[root@localhost ~]# 
[root@localhost ~]# abc > backups.txt 2>&1    ## 错误输出的信息也保存到 backups.txt 文件 
[root@localhost ~]# 
[root@localhost ~]# cat backups.txt     ## 覆盖了 backups.txt 旧的内容 
-bash: abc: command not found
[root@localhost ~]# 

  • ⑨、>> file 2>&1:标准输出和标准错误输出重定向到文件(追加),功能和第 7 点一样。
[root@localhost ~]# cat backups.txt    ## 原有 backups.txt 文件的内容
-bash: abc: command not found
[root@localhost ~]# 
[root@localhost ~]# date >> backups.txt 2>&1    ##  正确输出的信息追加保存到 backups.txt 文件
[root@localhost ~]# 
[root@localhost ~]# cat backups.txt 
-bash: abc: command not found
Wed Oct 20 16:37:12 CST 2021    # 追加正确的信息 
[root@localhost ~]# 
[root@localhost ~]# ls abc >> backups.txt 2>&1     ## 错误输出的信息也追加保存到 backups.txt 文件 
[root@localhost ~]# 
[root@localhost ~]# cat backups.txt 
-bash: abc: command not found
Wed Oct 20 16:37:12 CST 2021
ls: cannot access abc: No such file or directory    ## 追加错误的信息
[root@localhost ~]# 

  • ⑩、>file1 2>file2:将标准输出重定向到 file1,将标准错误输出重定向到file2。
[root@localhost ~]# ll    ##/ 现在目录下没有文件
total 0
[root@localhost ~]# date > backups.txt 2> err.txt    ##  正确输出的信息保存到 backups.txt 文件 
[root@localhost ~]# 
[root@localhost ~]# ll    ## 命令执行后会生成两个文件。
total 4
-rw-r--r--. 1 root root 29 Oct 20 16:52 backups.txt
-rw-r--r--. 1 root root  0 Oct 20 16:52 err.txt
[root@localhost ~]# 
[root@localhost ~]# cat backups.txt    ##  backups.txt 存储正确输出信息
Wed Oct 20 16:52:48 CST 2021
[root@localhost ~]# 
[root@localhost ~]# ls abc > backups.txt 2> err.txt    ##  错误输出的信息保存到 err.txt 文件  
[root@localhost ~]# 
[root@localhost ~]# cat err.txt    ##  err.txt 存储错误输出信息 
ls: cannot access abc: No such file or directory
[root@localhost ~]# 
[root@localhost ~]# 

  • ⑩-①、>>file1 2>>file2:将标准输出重定向追加到 file1,将标准错误输出重定向追加到file2。
[root@localhost ~]# cat backups.txt    ##/  backups.txt 现有的信息
Wed Oct 20 16:52:48 CST 2021
[root@localhost ~]# 
[root@localhost ~]# cat err.txt    ##  err.txt 现有的信息 
ls: cannot access abc: No such file or directory
[root@localhost ~]# 
[root@localhost ~]# date >> backups.txt 2>> err.txt     ##  正确输出的信息追加保存到 backups.txt 文件
[root@localhost ~]#  
[root@localhost ~]# abc >> backups.txt 2>> err.txt     ## 错误输出的信息也追加保存到 err.txt 文件  
[root@localhost ~]# 
[root@localhost ~]# date >> backups.txt 2>> err.txt    ##  正确输出的信息追加保存到 backups.txt 文件 
[root@localhost ~]# ls efg >> backups.txt 2>> err.txt    ## 错误输出的信息也追加保存到 err.txt 文件   
[root@localhost ~]# 
[root@localhost ~]# cat backups.txt    ##  backups.txt 存储正确输出信息 
Wed Oct 20 16:52:48 CST 2021
Wed Oct 20 16:55:06 CST 2021
Wed Oct 20 16:55:48 CST 2021
[root@localhost ~]# 
[root@localhost ~]# cat err.txt    ##  err.txt 存储错误输出信息 
ls: cannot access abc: No such file or directory
-bash: abc: command not found
ls: cannot access efg: No such file or directory
[root@localhost ~]# 

  • ⑩-②、> file 2>&1:标准输出和标准错误输出重定向到一个文件(覆盖)
## 同时执行正确输出和错误输出,并把反馈信息保存到 backups.txt 文件
[root@localhost ~]# (echo "test" ; abc) > backups.txt 2>&1    
[root@localhost ~]# 
[root@localhost ~]# ll    ## 生成  backups.txt
total 4
-rw-r--r--. 1 root root 35 Oct 21 09:11 backups.txt
[root@localhost ~]# cat backups.txt    ## backups.txt 文件的信息 
test
-bash: abc: command not found
[root@localhost ~]# 

## 再次执行正确信息和错误信息重定向到 backups.txt 文件
[root@localhost ~]# (echo "hello" ; abc ; ls 123) > backups.txt 2>&1
[root@localhost ~]# cat backups.txt    ## backups.txt 文件的信息  
hello
-bash: abc: command not found
ls: cannot access 123: No such file or directory
[root@localhost ~]# 

⑩-③、>> file 2>&1:标准输出和标准错误输出重定向到一个文件(追加)

[root@localhost ~]# 
[root@localhost ~]# cat backups.txt    ## backups.txt 现有的信息
hello
-bash: abc: command not found
ls: cannot access 123: No such file or directory

## 重新执行正确信息和错误信息重定向到 backups.txt 文件
[root@localhost ~]# (echo "hello world" ; efg ; ls 456) >> backups.txt 2>&1
[root@localhost ~]# 
[root@localhost ~]# cat backups.txt    ##  backups.txt 追加后的信息
hello
-bash: abc: command not found
ls: cannot access 123: No such file or directory
hello world                                            ## {...
-bash: efg: command not found                          ## 追加后的信息                          
ls: cannot access 456: No such file or directory       ## ...}      
[root@localhost ~]#                                   

相关文章

  • 4-14 Linux中的输出重定向

    1、标准输出文件(stdout):stdout 的文件描述符为1,默认输出到屏幕。 2、标准错误文件(stderr...

  • Linux / Unix示例中的输入输出重定向

    Linux / Unix示例中的输入输出重定向 什么是重定向? 重定向是Linux中的一项功能,因此在执行命令时,...

  • 2019-05-21

    Linux常用命令 重定向(redirection)------本文介绍的东西,输出重定向概念、输出重定向的符号、...

  • shell中的重定向

    linux shell下常用输入输出操作符是: 输出重定向 输入重定向

  • Shell | 标准输入输出重定向

    一、Linux 标准输入输出 二、标准输入输出重定向 1. 标准输入输出重定向是什么? 2. 标准输入输出重定向的...

  • linux重定向

    linux 重定向 的符号有 > >> < <<> >> 是输出重定向< << 是输入重定向0 用来表于标准输入1...

  • 标准流和错误处理

    linux中可使用重定向将信息输出到指定文件中,可以区分开标准输出与标准错误输出,参考http://c.bianc...

  • linux中的输出重定向

    输出重定向是指本来要在屏幕上的输出重新定向到文件中 以下的命令在实际工作中更为常用 命令 >文件 2>&1或命令 ...

  • linux输出输入重定向

    1.系统中输入输出的管理 管理输入输出的符号2>重定向错误输出&>重定向所有输出>重定向正确输出 注意:重定向会覆...

  • linux 常用命令整理 -- 特殊命令(五) -- 持续更新

    Linux的几个特殊命令 1. >重定向输出符号。 2. >>重定向输出符号,但有追加的功能。 3. 2>错误重定...

网友评论

      本文标题:4-14 Linux中的输出重定向

      本文链接:https://www.haomeiwen.com/subject/epyaoltx.html