运维开发网

IO重定向 & 管道符

运维开发网 https://www.qedev.com 2020-10-20 12:28 出处:51CTO 作者:abyssce
linux重定向

程序:指令+数据

读入数据:input

输出数据:output

打开的文件都有一个fd:file descriptor 文件描述符

Linux给程序提供三种I/O设备

  • 标准输入(STDIN) -0 默认接受来自终端窗口的输入
  • 标准输出(STDOUT)-1 默认输出到终端窗口
  • 标准错误(STDERR)-2 默认输出到终端窗口
[[email protected] proc]# echo $$
2199
[[email protected] proc]# ll /proc/$$/fd
总用量 0
lrwx------. 1 root root 64 10月 19 20:09 0 -> /dev/pts/0
lrwx------. 1 root root 64 10月 19 20:09 1 -> /dev/pts/0
lrwx------. 1 root root 64 10月 19 20:09 2 -> /dev/pts/0
lrwx------. 1 root root 64 10月 19 20:22 255 -> /dev/pts/0
[[email protected] proc]# 
[[email protected] proc]# ll /proc/self/fd
总用量 0
lrwx------. 1 root root 64 10月 19 20:25 0 -> /dev/pts/0
lrwx------. 1 root root 64 10月 19 20:25 1 -> /dev/pts/0
lrwx------. 1 root root 64 10月 19 20:25 2 -> /dev/pts/0
lr-x------. 1 root root 64 10月 19 20:25 3 -> /proc/2222/fd

I/O重定向redirect

格式:命令 操作符号 文件名

支持的操作符号

1> or >:重定向标准输出

2>:重定向标准错误

[[email protected] ~]# xxx 2> /data/f1.log
[[email protected] ~]# cat /data/f1.log
-bash: xxx: 未找到命令
[[email protected] ~]# rm /data/f1.log 2> /data/all.log
y
[[email protected] ~]# cat /data/all.log 
rm:是否删除普通文件 "/data/f1.log"?[[email protected] ~]# 

&>:同时重定向标准输出和错误

[[email protected] ~]# ls /data/ /rr &> /data/all.log 
[[email protected] ~]# cat /data/all.log
ls: 无法访问/rr: 没有那个文件或目录
/data/:
all.log

以上如果文件已经存在,文件内容会被覆盖

set -c 禁止将内容覆盖已有文件,但可追加;强制覆盖 &|

set +c允许覆盖

追加

  • ’>> 1‘
  • ’2>>‘
  • ’&>>‘

标准输入重定向

<

[[email protected] ~]# cat bc.log 
2+3
[[email protected] ~]# bc < bc.log 
5
[[email protected] ~]# seq -s+ 1 10 > bc.log
[[email protected] ~]# bc < bc.log 
55

管道符

[[email protected]os7 ~]# seq  -s+1 100 | bc
15130

格式

管道符前命令有标准输出;管道符后命令有标准输入功能

单行重定向

多行重定向

tr命令

扫码领视频副本.gif

0

上一篇:

:下一篇

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号