4-14 Linux中的输出重定向

2021-11-29  本文已影响0人  捌千里路雲和月

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

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

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

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

5、实操练习:

[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 ~]# 

[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 ~]# 

[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 ~]# 

[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 ~]# 

[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 ~]# 

[root@localhost ~]# 
[root@localhost ~]# abc 2> /dev/null
[root@localhost ~]# 

[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 ~]# 

[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 ~]# 

[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 ~]# 

[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 ~]# 

[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 ~]# 

[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 ~]# 

## 同时执行正确输出和错误输出,并把反馈信息保存到 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 ~]#                                   

上一篇 下一篇

猜你喜欢

热点阅读