linux输入输出重定向以及管道(精)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
输入/输出重定向,管道
1、标准输入:/dev/stdin(键盘),描述符号是0
2、标准输出:/dev/stdout(屏幕),描述符号是1
3、错误输出:/dev/stderr(错误消息输出到屏幕上),描述符号是2
COMMAND_OUTPUT > OUTPUT_FILENAME
#重定向stdout到一个文件
#如果没有这个文件就创建一个,否则就覆盖原文件里面的内容
:> OUTPUTFILENAME
#如果文件没有,就创建一个0长度的文件(==touch)
#:是一个占位符,不产生任何输出
#>会把文件“FILENAME”截断为0长度
> FILENAME
#>会把文件“FILENAME”截断为0长度
#如果文件没有,就创建一个0长度的文件(==touch)
#(与上面的“:>”效果相同,但是在某些shell下可能不能工作)如图所示
COMMAND [options] > file.list
#创建一个包含目录树列表的文件
如图所示:
COMMAND_OUTPUT >> OUTPUT_FILENAME
#重定向stdout到一个文件
#如果没有这个文件就创建一个,否则就追加到文件后边如图所示:
1>filename
#重定向stdout到文件filename中
1>>filename
#重定向并且追加stadout到文件filename中如图所示
2>filaname
#重定向stderr到文件filename中
2>>filename
#重定向并且追加staderr到文件filename中如图所示
&>filename
#把stdout和stderr都重定向到文件filename中
如图所示
2>&1
#重定向stderr到stdout
#得到的错误的消息与stdout一样,发送到一个地方如图所示:
i>&j
#重定向文件描述符i到j中
#指向i文件的所有的输出都发送到j中去
>&j
#默认的重定向文件描述符1
#所有传递到stdout的传输都送到j中去
>filename
# 从文件中接受输入
# 与“>” 是成对命令
#eg: grep "mota" < filename
[j]<>filename
# 为了读写 filename ,把文件 filename 打开,并分配文件描述符“j” 给他 # 如果文件 filename 不存在,就创建他
# 如果文件描述符“j” 没指定,默认是 fd 0 , stdin 。
# 这种应用通常是为了写到一个文件指定的地方
下面看一个脚本:
这个实验
就是在指定的字符串的指定位置添加一个指定的符号,实验结果如下图所示
关闭文件描述符
n<&- 关闭输入文件描述符n
0<&-或<&—关闭stdin
n>&- 关闭输出文件描述符n
1>&- 或>&- 关闭stdout
自定义输出重定向:
自定义重定向符号:>&
ex ec 3~9 filename #定义n为自定义的重定向文件
COMMAND >&3 #输出到自定义重定向文件中
exec 3>&- #撤销自定义
管道:用于连接多个命令,把前一个命令的输出结果当作第二个命令的输入结果 COMMAND1 | COMMAND2 | COMMAND3
eg: echo "123456" | passwd --stdin user