linux之输入,输出
标准输入和输出
读入数据: Input
输出数据: Output
打开的文件都有一个fd: file descriptor(文件描述符)
linux提供的三种I/O设备:
标准输入 (STDIN) - 描述符0 默认接受来自键盘的输入
标准输出 (STDOUT) - 描述符1 默认输出到终端窗口
标准错误输出 (STDERR) - 描述符2 默认输出到终端窗口
I/O重定向和管道符
-
I/O重定向: 改变输入输出默认方向
输入重定向:
< 输入重定向
<< EOF 将输入的文本作为标准输入,遇到EOF结束输入
输出重定向:
> 覆盖输出
set -C 禁止覆盖输出
set +C 启用覆盖输出
>| 强制覆盖输出
>> 附加输出
支持操作符:
1> 标准覆盖输出
2> 标准错误覆盖输出
&> 所有覆盖输出
1>> 标准附加输出
2>> 标准错误附加输出
&>> 所有附加输出
特殊用法:
1>&2 将标准输出转化为错误输出
2>&1 将标准错误输出转化为标准输出
输入优先于输出
# tr a-z A-Z > /tmp/test.txt < /etc/fstab
(): 合并对个命令的STDOUT
-
管道符’|’: 将前一命令的标准输出作为下一个命令的标准输入
|& : 可将前一命令的标准输出和标准错误输出一并作为下一个命令的标准输入
-
tr
从标准输入中翻译,挤压或删除字符,写入标准输出。
语法格式:
tr [options]... SET1 [SET2]
-c 将SET1以外的字符,替换为SET2
-d 删除SET1中的字符
-s 将SET1中连续字符压缩成一个
-t 将SET1中匹配的字符,替换为SET2 (默认)
替换时规则:
将SET1转换为SET2时,SET1的位数多于SET2时,SET1中多出的位数全部转换为SET2中最后一位字符.
如:
# echo aabbcc|tr abc de
-dc 仅保留SET1中字符
示例:
# echo abcd | tr -d a
# echo abcd | tr -c a 1
a1111
# echo abcd | tr -cd abc
abc
# echo aaaa::::bbbb|tr -s :
aaaa:bbbb
-
tee
读取标准输入并保存至指定文件内
-a 追加内容至文件
命令1 | tee [-a] file| 命令2
使用:
保存不同阶段的输出
复杂管道的故障排除
同时查看和记录输出
示例:
echo hello|tee /tmp/test.txt|tr a-z A-Z
-
mail
mail -s 'SUBJECT' USER
默认.结尾
或者 << EOF 自定义结尾符
本文转自 撒旦搞时间 51CTO博客,原文链接:http://blog.51cto.com/12074120/1963883,如需转载请自行联系原作者