IO重定向及管道
Posted donquixote-corazon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IO重定向及管道相关的知识,希望对你有一定的参考价值。
IO重定向:
程序=指令+数据,程序自身也存在IO
可用于IO的设备,参照一切皆文件的哲学思想
可用于输入的设备:文件(键盘设备、文件系统上的常规文件、网卡等)
可用于输出的设备:文件(显示器、文件系统上的常规文件、网卡等)
程序的数据流有以下几种:
输入数据流:<-- 标准输入(stdin),默认为键盘
输出数据流:-->标准输出(stdout),默认为显示器
错误输出流:-->错误输出(stderr),默认为显示器
文件描述符(file descriptor,fd):
标准输入:0
标准输出:1
错误输出:2
输出重定向:
>:覆盖输出(危险操作,不会进行询问)
>>:追加输出
set命令(仅对当前shell进程有效):
~]# set-C:表示禁止覆盖输出重定向至已存在的文件,若想强制覆盖输出可使用符号: >|
~]# set+C:关闭上述特性
错误输出流重定向:
2>:参照输出重定向
2>>
合并正常输出流与错误输出流:
1):&>,&>>
2):COMMAND > /PATH/TO/SOMEFILE 2>&1
COMMAND >> /PATH/TO/SOMEFILE 2>&1
输出重定向中的特殊设备:/dev/null ——数据黑洞
它丢弃一切写入其中的数据(但报告写入操作成功)
输入重定向:
<:用于某些无法携带参数的命令
tr命令:translate or delete characters
转换或删除字符,即把输入的数据当中的字符,凡是在SET1定义范围内出现的,通通对位(一一对应)换位SET2中出现的字符,该操作不会修改源文件,仅在输出显示中做出修改
使用格式:tr [OPTION]... SET1 [SET2]
用法1:tr SET1 SET2 < /PATH/TO/SOMEFILE
用法2:tr -s SET < /PATH/TO/SOMEFILE, 删除文件中存在SET范围内的字符
<<:Here Document,表示此处创建文件
用法:~]# cat << EOF EOF为自定义的结束字符,通常使用EOF
~]# cat > /PATH/TO/SOMEFILE << EOF
管道:
连接程序,实现将前一个命令的输出直接定向后一个程序当作输入数据流
使用格式:COMMAND1 | COMMAND2 | COMMAND3 | ...
tee命令:
read from standard input and write to standard output and files,从标准输入读数据,但是会输出至文件和标准输出,即两道输出,通常与管道一起使用实现将数据分方向发送
使用格式:COMMAND | tee /PATH/TO/SOMEFILE
以上是关于IO重定向及管道的主要内容,如果未能解决你的问题,请参考以下文章