一、I/O重定向
程序=指定+数据
读取数据:input
输出数据:output
打开的文件都有一个fd:文件描述符
linux给程序提供三种I/O设备:
标准输入(standard input) -0 默认接受来自键盘的输入
标注输出(standard output) -1 默认输出到终端窗口
标准错误(standard erroe) -2 默认输出到终端窗口
I/O重定向:改变默认位置
二、标准输出和标准错误可以被重定向到文件
command 操作符号 文件名
支持的操作符号:
>:把标准输出重定向到文件
[root@localhost ~]# ls > /wang/dir [root@localhost ~]# cat /wang/dir anaconda-ks.cfg mima.txt mulu1 mulu2 wenjian1 wenjian2 yonghu.txt
2>:把标准错误重定向到文件
[root@localhost ~]# xxx 2> /wang/dir [root@localhost ~]# cat /wang/dir -bash: xxx: command not found
&>:把所有输入重定向到文件
[root@localhost ~]# ls /wang /wang/x &> /wang/dir [root@localhost ~]# cat /wang/dir ls: cannot access /wang/x: No such file or directory /wang: 123 dir
>文件内容会被覆盖
set -C:禁止将内容覆盖已有文件,但可追加
强制覆盖>|
set +C:允许覆盖
>>:在原有的内容上,追加内容,不会被覆盖。
2>:覆盖重定向错误输出数据流
2>>:追加重定向错误输出数据流
标准输出和标准错误各自定向不同位置
command > 文件1 2> 文件2
[root@localhost ~]# ls /wang /wang/xx > /wang/yes 2> /wang/no [root@localhost ~]# cat /wang/yes /wang/no /wang: 123 dir no yes ls: cannot access /wang/xx: No such file or directory
合并标准输出和错误输出为同一个数据流进行重定向
&>:覆盖重定向
&>>:追加重定向
command > 文件 2>>&1 (固定顺序)
command >> 文件 2>>&1
():合并多个程序的标准输出
[root@localhost ~]# (ls;pwd) > /wang/321 [root@localhost ~]# cat /wang/321 anaconda-ks.cfg mima.txt mulu1 mulu2 wenjian1 wenjian2 yonghu.txt /root
三、tr命令
tr – 转换和删除字符
t2 选项 set1 set2
常用选项:
-c或–complerment:取字符集的补集
-d或–delete:删除所有属于第一字符集的字符
-s或-squeezu-repeats:把连续重复的字符以单独一个字符表示
-t或–truncate
set1:将第一个字符集对应字符转化为第二字符集对应的字符
四、从文件中导入标准输入
使用<来重定向标准输入
某些命令能接受从文件中导入的stdin
tr ‘a-z’ ‘A-Z’ < /etc/issue
这条命令会把/etc/issus中的小写字符都转换成大写字符
[root@localhost wang]# tr 'a-c' 'A-C' < /wang/qqq ABCdefg
tr -d abc < /etc/fstab
删除fstab文件中的所有adc中任意字符
[root@localhost wang]# tr -d abc < /wang/qqq defg
cat > filea
mage
wang
按ctry+d离开,可以使用文件来代替键盘的输入
[root@localhost wang]# cat > qqq 123 qwe asd 123[root@localhost wang]#
cat > filea < filed
[root@localhost wang]# cat > 123 < qqq [root@localhost wang]# cat 123 123 qwe asd 123
五、把多行发送给标准输入
使用“<<终止词”命令从键盘把多行重定向给stdin
直到 终止词 位置的所有文本都发送给stdin
有时被成为就地文本(heretext)
[root@localhost wang]# mail -s "Please Call" linux@wang <<end > Hi wang > please give me a cao when you get in , > we man need to do some maintenance on server > > end [root@localhost wang]#
六、管道
使用符号“|”表示,用来链接命令
命令1|命令2|命令3
将命令1的标准输出发送给命令2的标准输入,命令2的标准输出发送到命令3的标准输入
标准错误默认不能通过管道转发,可利用2>&1或|&实现
最后一个命令会在当前shell进程的字shell进程中执行,用来组合多种工具的功能
[root@localhost wang]# cat qqq | tr 'a-d' 'A-D' 123 qwe AsD 123
less:一页一页的查看输入
ls -l /wang | less
mail:通过电子邮件发送输入:
echo"test email" | mail -s "test" user@example.com
lpr:把输入发送给打印机
echo"test print" |lpr -P printer_name
七、重定向到多个目标(tee)
命令1 | tee 文件名 | 命令2
把命令1中的标准输出保存在文件名中,然后管道输出给命令2使用:
保存不同阶段的输出
复杂管道的故意排除
同时查看和记录输出
[root@localhost wang]# ls | tee /wang/wang 123 321 dir no qqq wang yes [root@localhost wang]# cat /wang/wang 123 321 dir no qqq wang yes
原创文章,作者:DYW,如若转载,请注明出处:http://www.178linux.com/27268