读入数据: input
输出数据: output
标准输入 标准输出 标准错误
- 0 ? ? ? 1 ? ? ? 2
- STDIN STDOUT STDERR
- ?
- --------------------------
<? 标准输入
输出和错误可以被重定向到文件
命令 操作符号 文件名
?
支持的操作符号包括:
\> 把输出重定向到文件, 文件内容会被覆盖
2> 把错误重定向到文件
&> 把所有输出重定向到文件
?
set -C 禁止将内容覆盖已有文件, 但可追加
\>| file 强制覆盖
set +C 允许覆盖
\>> 原有内容基础上, 追加内容
- ?
- --------------------------
多行重定向
使用 "<<终止词" 命令从键盘把多行重导向给 STDIN
直到 终止词 位置的所有文本都发送给 STDIN
有时被称为就地文本(heretext)
例: mail -s "Please Call" [email protected] <<END
- ?> Hi Wang
- \> Please give me a call when you get in. We may need
\> to do some maintenance on server1.
- \> Details when you're on-site
- \> END
- ?
当在脚本中需要多行重定向缩进时, 可在终止词前添加 -
例: if xxx
- cat <<-end
- xxx
- aaa
end 只要是单独一行的终止词就会结束
- ?
- ----------------------------
转换和删除字符 tr
语法: tr [选项][源字符][替换字符]
选项:-t 将第一个字符集对应字符转化为第二字符集对应的字符
?? -c -C --complement: 取字符集的补集
?? -d 删除所有属于第一字符集的字符
?? -s 把连续重复的字符以单独一个字符表示
?? -d '\r 可以把 windos 文本换行删掉成 Linux 格式
支持:
[:alnum:]字母和数字 [:alpha:]字母 [:digit:] 数字
[:lower:]小写字母 [:space:] 空白字符 [:upper:]大写字母
?
例:[[email protected] ~]#tr -t 'abc' 'AB'
??abc ??? 只将 ab 对应的字符转换, c 不做转换
??ABc
?
例:[[email protected] ~]#tr -d 'abc' ?? 删除字段中的 abc 字符
- ??a1b2c3
- ??123
- ??
例:[[email protected] ~]#tr -s 'abc' ?? 压缩连续重复字符
- ??aaaabbbbcccc
- ??abc
- ?
例:[[email protected] ~]#tr '[:lower:]' '[:upper:]'
??aaaa ?? 大写替换小写
??AAAA
?
使用<来重定向标准输入
tr 'a-z' 'A-Z'</etc/issue
该命令会把 / etc/issue 中的小写字符都转换成大写字符
- ?
- tr -d abc < /etc/fstab
删除 fstab 文件中的所有 abc 中任意字符
------------------------------
管道命令 [ | ]
语法: 命令 1 | 命令 2 | ....
命令 1 为标准输出, 命令 2 为标准输入, 命令 2 引用命令 1 为标准输入
?
标准错误默认不能通过管道转发, 可利用 2>&1 或 |& 实现
?
例: 计算 1+2+3+..+99+100 的总和
- [[email protected] ~]#seq -s + 100 |bc
- 5050
- ?
- [[email protected] ~]#echo {
- 1..100
- } |tr '''+'|bc
- 5050
IO 和管道
来源: http://www.bubuko.com/infodetail-3035710.html