- 定义
一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件:
标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。
标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。【出自菜鸟定义】
综上所述,本章讨论到问题,就是对这个输入输出流的重定向,即我想把错误结果输出到指定文件中要怎么做i?把正确结果输出到指定文件怎么做?命令的输入内容默认是控制台,但我要从文件中获取输入内容怎么办?
-
输出流重定向
定义
输出重定向:改变程序运行的输入来源和输出地点。
如上命令,会将对应执行后的命令结果输入到指定到文件中。
注意:2 表示错误输出,1表示正确输出,0表示标准输入流
>/dev/null 将输出重定向到空,表示抛弃结果
>/dev/null 2>&1 标准和错误输出到将抛弃
>2 >&1 >/dev/null 标准输出将会抛弃,错误输出将展示
例如
echo 'hello' > /dev/null 2>&1
- 输入流重定向
定义
- 命令 < 文件名 #把文件作为命令的输入
- 命令 << 标识符 #标识符把标识符之间的内容作为命令的输入
例如
可以看到大部分的例子,都是以wc命令为主
wc [选项][文件名]
选项:
-c #统计字节数
-w #统计单词书数
-l #统计行数
[root@localhost temp]# wc -l <t.sh
2
我以文件t.sh来作为输入内容,统计行数。
还有第二种,<<模式,定义标志符,然后通过输入的方式,作为的命令的输入内容
#显然我们先定义了标志符为ET(一般常用EOF做为标准符),下一个ET出现时命令将结束
[root@localhost temp]# cat <<ET
> dd
> sdsd
> sdsd
> ET
dd
sdsd
sdsd
网友评论