首页 > 代码库 > 八、I/O重定向与管道
八、I/O重定向与管道
系统设定:
标准输入 standard input(stdin):代码为0 ,使用< 或<<
标准输出 standard output(stdout):代码为1,使用>或>>
标准错误输出 standard error output(stderr):代码为2,使用 2>或2>>
标准输入< <<:
< :就是将原本需要由键盘输入的数据,改由文本内容来取代,输入重定向
<< :结束的输入字符
标准输出 > >> :
[root@www ~]# ls -l >rootfile
[root@www ~]# cat rootfile
总用量 68
-rw-------. 1 root root 1454 8月 7 00:09 anaconda-ks.cfg
-rw-r--r--. 1 root root 45182 8月 7 00:09 install.log
-rw-r--r--. 1 root root 9922 8月 7 00:07 install.log.syslog
-rw-r--r--. 1 root root 0 10月 31 21:26 rootfile
-rw-r--r--. 1 root root 0 10月 11 20:08 text.txt
在输出重定向时,如果重定向的文本部存在(如 rootfile)那么系统会自动创建,但如果这个文本存在且有数据,那么系统会自动将这个文本清空,然后再将数据写入。
使用[>]会将文本原来的数据覆盖,使用[>>]不会覆盖数据,只是累加。
set -C: if set ,disallow existing regular files to be overwritten by redirection of output.(禁止对已存在的文件使用覆盖重定向)
此时要强制覆盖输出的话,则使用 >|
set +C:关闭上述功能
标准错误输出 2> 2>> :
2> :以覆盖的方法将[错误的数据]输出到指定的文本上
2>> :以累加的方法将[错误的数据]输出到指定的文本上
[root@www ~]# cat text.txt text1 >stdout 2>stderr
[root@www ~]# cat stdout
hello,
kkkkkkk
[root@www ~]# cat stderr
cat: text1: 没有那个文件或目录
可以将stdout与stderr重定向到不同的文本上
[root@www ~]# cat text.txt text &>std
[root@www ~]# cat std
hello,
kkkkkkk
cat: text: 没有那个文件或目录
可以使用&> 将标准输出与标准错误输出重定向到同一个文本上
tee:read from standard input and write to standard output and files(可以将输出数据显示到屏幕和文本中)
tee[option]...[file]...
-a,append:append to given FILEs,do not overwrite(以累加的方式将数据加入file中)
[root@www ~]# ls |tee 1
anaconda-ks.cfg
install.log
install.log.syslog
[root@www ~]# cat 1
anaconda-ks.cfg
install.log
install.log.syslog
管道:前一个命令的输出,作为后一个命令的输入
命令1|命令2|命令3|。。。。。
地址总线:内存寻址
数据总线:传输数据
控制总线:控制指令
八、I/O重定向与管道