IO 重定向及管道
程序 : 指令 + 数据 (程序不管怎么样 也是存在 IO )
程序的数据流有三种:
输入的数据流: <-- 标准输入(stdin),键盘 ;
输出的数据流: --> ( stdout ) , 显示器;
错误输出流 : --> 错误输出 (stderr) , 显示器; [解释器辅助产生的数据流]
fd : file descripteor ,文件描述符
标准输入 : 0
标准输出 : 1
错误输出: 2
IO重定向:
输出重定向 : > 特性-覆盖输出
输出重定向: >> 特性 - 追加输出
# set -C
禁止覆盖输出重定向至已存在的文件:
此时可以使用强制覆盖输出重定向: >|
# set +C 表示关闭上述特性 这个命令仅对当前shell终端有效
错误输出流重定向: 2> , 2>> 2>>=错误追加]
合并正常输出流和错误输出流:
(1):&> , &>> [&>> = 合并正确和错误追加]
(2): COMMON > /path/to/somefile 2>&1
COMMON >> /path/to/somefile 2>&1
特殊设备:/dev/null
输入重定向: <
tr命令 : tr [OPTION]... SET1 [SET2]
移除文件当中出现的字符
移除文件当中出现的所有小写
用法一:
tr set1 set2 < /path/from/somefile
用法二:
tr -d SET1 < /PATH/FROM/SOMEFILE
NOTICE:不修改原文件
Here Document: <<
cat << EOF
方法一:cat > /PATH/TO/SOMEFILE << EOF
方法二 :cat > /PATH/TO/SOMEFILE << END
管道 : 连接程序,实现将前一个命令的输出直接定向后一个程序当做输入数据流
COMMON1 | COMMON2 | COMMON3
tee 命令 可以定向的保存文件到其它路径 经常与管道配合使用
tee 命令:
COMMON | tee /PATH/TO/SOMEFILE
练习一: 把/etc/passwd 文件的前6行的信息转换为大写字符后输出