Linux I\O重定向与管道

发布时间 2023-12-07 20:31:38作者: Lissy314

一:I\O重定向

 linu系统中的三种I/O设备所代表的编号分别是:
标准输入(STDIN),文件描述符为0,默认从键盘获取输入;
标准输出(STDOUT),文件描述符为1,默认输出到显示屏;
标准错误(STDERR),文件描述符为2,默认输出到显示屏。

 

I/O重定向就是为了改变默认输入、输出的位置:

>:表示标准输出覆盖重定向;

>>:表示标准输出追加重定向;
2>:表示错误输出覆盖重定向;

<:输入重定向;

<<:多行输入;

 tr 命令

tr 转换和删除字符

[root@zjxdd]# tr 123 abc
1111
aaaa
^C
[root@zjxdd]# tr 'a-z' 'A-Z'
asdfgh
ASDFGH
^C
[root@zjxdd]# tr -d 'ace'
ace111ace222ace444ace
111222444
^C

二:进程管道

管道(使用符号“|”表示)用来连接多个命令

格式:

命令1 | 命令2 | 命令3|...

 

管道中的 - 符号

管道中有时会使用 - 符号

示例:

将 /home 里面的文件打包,但打包的数据不是记录到文件,而是传送到 stdout,经过管道后,将 tar -cvf - /home 传送给后面的 tar -xvf - , 后面的这个 - 则是取前一个命令的 stdout, 因此,就不需要使用临时fifile了

tar -cvf - /home | tar -xvf -

 

 tee 命令

利用tee命令可以重定向到多个目标

格式:

命令1 | tee [-a ] 文件名 | 命令2

 

以上可以把命令1的STDOUT保存在文件中,做为命令2的输入

选项:

-a 追加

功能:

保存不同阶段的输出

复杂管道的故障排除

同时查看和记录输出

范例:

[root@zjxdd]#cat <<EOF | tee /etc/motd
> welcome to magedu
> happy new year
> EOF
welcome to magedu
happy new year