Linux命令系列之 - 文本操作 - 重定向和管道

1.标准输入输出

基本概念:

  • 程序:指令+数据
  • 输入数据:input
  • 输出数据:output
  • 文件描述符fd:打开的文件都有一个描述符 file descriptor

Linux给程序提供三种IO设备

  • 标准输入 STDIN - 0 默认接受来自终端窗口的输入
  • 标准输出 STDOUT - 1 默认输出到终端窗口
  • 标准错误 STDERR - 2 默认输出到终端窗口

2.I/O重定向redirect

IO重定向:将默认的输入,输出或错误对应的设备改变,指向到新的目标

标准输出和错误重新定向

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

#支持的操作符号如下:
1>  或 >  把STDOUT重定向到文件
2>        把STDERR重定向到文件
&>        把标准输出和错误都重定向
>&        同上
>>        追加标准输出重定向至文件
2>>       追加标准错误重定向至文件
cmd > file.out 2> error.out  标准输出和错误输出各自定向至不同位置

标准输入重定向

tr命令:转换和删除字符

标准输入重定向:如cat < file.txt

多行重定向:

cat file.txt <<EOF
context
EOF

3.管道

3.1 管道

管道符:|

用法:

cmd1 | cmd2 | cmd3
#功能说明
1. 将cmd1的STDOUT发送给cmd2的STDIN,cmd2的STDOUT发送到cmd3的STDIN
2. 所有命令会在当前shell进程的子shell进程中执行
3. 可以组合多种工具的功能
4. STDERR不能通过管道转发,可以利用2>&1或|&实现

3.2 tee命令

tree命令 - 可以重定向到多个目标,经常配合管道符一起使用
用法:

cmd1 | tee [-a] filename | cmd2
#功能说明
1. 可以把cmd1的STDOUT保存在文件filename中,作为cmd2的输入
2. -a选项为追加
#用途:
1. 保存不同阶段的输出
2. 复杂管道的故障排除
3. 同时查看和记录输出

4.重定向特殊符号 -

用法举例:

tar -cvf - /etc | tar -xvf -

#用法说明:
1. 将/etc文件夹内容打包,把打包的数据不是记录到文件,而是传送给STDOUT;
2. 经过管道后,将第一个tar的结果传送给后面的tar,第二个tar的'-'则是取前一个tar的STDOUT;
3. 省去了临时文件file;
4. 整个过程替代了cp命令功能(打包一个地方文件,解压到另一个指定地方);

posted on 2021-07-22 08:49  hony625  阅读(121)  评论(0编辑  收藏  举报

导航