首页 > 学院 > 操作系统 > 正文

管道IO重定向

2024-06-28 16:03:34
字体:
来源:转载
供稿:网友

IO重定向及管道

程序也有IO 来源很多标准输入:0键盘标准输出:1显示器错误标准输出:2显示器

输出重定向

> 特性:覆盖输出 [root@localhost test]# ls /tmp > /tmp/test/devdir 输出至的文件可以不存在自动创建,如果存在则覆盖 cat < file 用文件代替标准输入>> 特性:追加输出 [root@localhost test]# ls /dev >> /tmp/test/devdir 输出至的文件可以不存在自动创建#多条命的结果同时输出到一个文件。(comm9and1;command2) > /path/to/somecat file1 file2 file3 > ./somefile 多个文件合并到一个文件。

错误输出重定向

2> 特性:覆盖输出 [root@localhost test]# cd /tmp/bin 2> /tmp/test/erro /tmp/bin该目录不存在2>> [root@localhost test]# ls /tmp/bin 2>> /tmp/test/erro 追加输出错误 特性:追加输出

合并正常输出和错误输出

&> 覆盖[root@localhost test]# ls /tm/p &> /tmp/test/stand_err&>> 追加[root@localhost test]# ls /tm/p &>> /tmp/test/stand_err合并错误输出COMMAND > /PATH/TO/SOMEFILE 2>&1COMMAND >> /PATH/TO/SOMEFILE 2>&12>&1的含义是将错误信息输出重定向到标准输出上去。

慎用:使用set -C 设置(+C关闭设置)shell取消覆盖输出重定向至已存在的文件,一般在编写脚本时使用,防止覆盖掉文件,脚本结束后再关闭。

>|强行覆盖输出set仅对当前shell有效

特殊设备 /dev/null /dev/zero

输入重定向

< tr命令: tr [OPTION].....SET1 [SET2] 把输入的数据当中的字符,凡事在SET1中出现的字符对位替换为SET2字符 用法1 tr SET1 SET2 < /PATH/TO/SOMEFILE 用法2 tr -d SET1 /PATH/TO/SOMEFILE 注意tr只输出显示修改结果,不修改原文件。可以将修改结果输出重定向至其他位置<< here doucument 此处文档 cat << EOF EOF为结束符 输入什么输出什么。 cat > /PATH/TO/SOMEFILE << EOF 输入的内容保存到/PATH/TO/SOMEFILE一般编写脚本时使用此方法编写配置文件。[root@localhost ~]# cat > test2.txt <<EOF> YANGYOUWEI> YANGXINYI> TEST ONE TETXT> yangyouwei> EOF[root@localhost ~]# cat test2.txtYANGYOUWEIYANGXINYITEST ONE TETXTyangyouwei

管道

连接程序,实现将前一个命令的标准输出(正确的,错误输出不会输出到后一个程序)直接定想到后一个程序当输入 COMMAND1|COMMAND2|COMMAND3 [root@localhost test]# cat test.txt 2> /dev/null | tr yangyouwei YANGYOUWEI 错误输出到null,正确的输出到tr转换字符合并正确和错误的标准输出 COMMAND1 2>&1| COMMAND2 或 COMMAND1 |& COMMAND2输入输出重定向,左边必须是命令,右边是文件 管道,左右必须都是命令,且左边的命令支持标准输出,右边的命令支持标准输入。

tee命令

tee:支持标准输入,同时又支持标准输出和输出到文件 tee -a 支持追加,默认是覆盖输出

tr–转换和删除字符

tr[OPTION]... SET1 [SET2] -c或——complerment:取字符集的补集 -d或——delete:删除所有属于第一字符集的字符; -s或—squeeze-repeats:把连续重复的字符以单独一个字符表示 -t或--truncate-set1:先删除第一字符集较第二字符集多出的字符# cat file | tr [a-z] [A-Z] > new_file(大写 --> 小写)# cat file | tr [A-Z] [a-z] > new_file 把文件中的数字0-9替换为a-j # cat file | tr [0-9] [a-j] > new_file删除文件file中出现的"Snail"字符 # cat file | tr -d "Snail" > new_file# cat file | tr -s "/n" > new_file删除空行
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表