linux程序输入、输出(I/O)——重定向

Linux给程序提供三种输入、输出(I/0)类型:
标准输入(STDIN) -0(数字表示)  默认接受来自键盘的输入
标准输出(STDOUT)-1(数字表示)  默认输出到终端窗口
标准错误输出(STDERR)-2(数字表示)  默认输出到终端窗口

重定向:即为改变默认输入和输出的默认位置

在Linux中,可以使用不同的操作符号将输入和输出进行重定向 :
1. 符号 > 把标准输出(STDOUT)重定向到文件,但会覆盖文件原来内容
2. 符号 >> 在原有标准输出(STDOUT)基础上,会在重定向文件尾追加内容
3. 符号 2> 把标准错误输出(STDERR)输出重定向到文件,但会覆盖文件原来内容
4. 符号 2>> 把标准错误输出(STDERR)输出重定向到文件,会在重定向文件尾追加内容
5. 符号 &> 把所有输出重定向到文件,但会覆盖重定向文件内容
6. 符号 &>> 将所有输出进行重定向,会在重定向文件尾进行追加

例:

 前提:在目录/root/test/下创建两个文件testa和testb
      [root@localhost ~]# cd /root/test/
      [root@localhost test]# ll
      total 0
      -rw-r--r--. 1 root root 0 Jul 27 01:13 testa
      -rw-r--r--. 1 root root 0 Jul 27 01:14 testb
      [root@localhost test]# cat testa
      a
      [root@localhost test]# cat testb
      b
      [root@localhost test]# 
     1.把文件testa标准输出重定向到testb上,并覆盖testb文件上的内容。
    [root@localhost test]# cat testa > testb
    [root@localhost test]# cat testb
    a
    [root@localhost test]# 
 2.把文件testa标准输出重定向到testb上,在testb文件的基础上追加内容输出内容。
     [root@localhost test]# cat testa >>  testb
     [root@localhost test]# cat testb
     b
     a
    [root@localhost test]# 
 3 .把文件testc(未创建)文件错误输出重定向到testb上,并覆盖之前testb文件上。
 [root@localhost test]# cat  testc  2>  testb
 [root@localhost test]# cat testb
 cat: testc: No such file or directory
 [root@localhost test]# 
 4.把文件testc(未创建)文件错误输出重定向到testb上,testb文件上进行追加内容。
 [root@localhost test]# cat  testc  2>>  testb
[root@localhost test]# cat testb
b
cat: testc: No such file or directory
[root@localhost test]# 
  5.把所有输出重定向到文件,但会覆盖重定向文件内容。
  [root@localhost test]# cat testb
b

[root@localhost test]# vim testb
[root@localhost test]# cat testb
b
[root@localhost test]# cat testc &> testb
[root@localhost test]# cat testb
cat: testc: No such file or directory
[root@localhost test]# 
  6.将所有输出进行重定向,在重定向文件尾进行追加
[root@localhost test]# cat testc &>> testb
[root@localhost test]# cat testb
b
cat: testc: No such file or directory
[root@localhost test]# 

备注:
输入 符号 < 表示输入重定向,下面只列出一个例子。将tr ‘a-z’ ‘A-Z’ 的输出作为/tmp/1/2文件的输入。

```
 [root@localhost /]# tr  'a-z'  'A-Z'  <  /tmp/1/2(只是临时对于/tmp/1/2有效)
AAA
BBB
CCC
DDDDDDD
$$$$#@!^^&&*&
123333333
[root@localhost /]#

猜你喜欢

转载自blog.csdn.net/qyk1995/article/details/81253375