bash的I/O重定向及管道

数据的来源和输出

读入数据:Input

  bash中默认的标准输入为:Keyborad,文件描述符:0

输出数据:Output

  bash中默认的标准输出为:monitor,文件描述符:1

  标准错误输出:monitor,文件描述符:2

I/O重定向

改变输入输出的标准位置

输出重定向:

 COMMAND > NEW_POSITION 或者 COMMAND >> NEW_POSITION

   >:覆盖重定向,目标文件中的原有内容会被清除

    set -C:禁止将内容覆盖输出至已经存在的文件中  (只对当前shell进程有效),如果要强制覆盖可用  |  比如:ls /etc/fstab >| /tmp/fs.txt

    2>:覆盖重定向错误输出数据流,比如:

//这里的issueew文件在etc目录中不存在,正常使用>重定向会报错,但是不会输出到/tmp下的文件中,使用2>即可将错误结果输出到指定位置
[root@Centos6-1 ~]# cat /etc/issueew 2> /tmp/isu.txt [root@Centos6-1 ~]# cat /tmp/isu.txt cat: /etc/issueew: No such file or directory

   >>:追加重定向,新内容会被追加至目标文件

   2>>:追加重定向错误的数据流,类似2>不同的是2>>是追加

 标准输出和错误输出各自定向至不同位置

  语法:COMMAND > /path/to/file.out 2> /path/to/error.out  表示当命令执行成功了输出至file.out文件中,当出错了输出至error.out中

[root@Centos6-1 ~]# tail -100 /etc/rc.d/rc.sysinit > /tmp/sysinit.out 2> /tmp/sysinit.error
[root@Centos6-1 ~]# ls /tmp/sysini*
/tmp/sysinit.error  /tmp/sysinit.out
[root@Centos6-1 ~]# cat /tmp/sysinit.error  //此时该文件是空的,因为命令执行是成功的
[root@Centos6-1 ~]# 

 合并覆盖标准输出和错误输出为同一个数据流进行重定向

[root@Centos6-1 ~]# echo "$PATH" &> /tmp/path.out

   合并追加标准输出和错误输出为同一个数据流进行重定向

[root@Centos6-1 ~]# echo "$PATH" &>> /tmp/path2.out

输入重定向

猜你喜欢

转载自www.cnblogs.com/sun292393989/p/8999971.html