从零开始学习Linux(三十三):Shell基础之输入输出重定向

1、标准输入输出

设备 文件名 类型 文件描述
键盘 /dev/stdin 0 标准输入
显示器 /dev/stdout 1 标准输出
显示器 /dev/stderr 2 标准错误输出

查看/dev目录下面所有的文件信息,如下图所示:

2、输出重定向

输出重定向,简单的理解就是改变输出方向。比如将命令执行结果由输出到屏幕改变成输出到文件。

2.1、标准正确输出重定向
符号 作用
命令 > 文件 以覆盖的方式,把命令的正确输出,输出到指定的文件或设备当中。
命令 >> 文件 以追加的方式,把命令的正确输出,输出到指定的文 件或设备当中。

将date命令结果输出到文件output.txt中,然后查看文件内容:

2.2、标准错误输出重定向
符号 作用
错误命令 2> 文件 以覆盖的方式,把命令的错误输出,输出到指定的文件或设备当中。
错误命令 2>> 文件 以追加的方式,把命令的错误输出,输出到指定的文件或设备当中。

此种方式很少会用到,因为这要求使用之前我们必须要清楚的知道这是一个错误的命令。

(1)date命令是正确输出时间的,而datel命令会报错。
(2)直接执行错误命令 datel >> output.txt ,将结果输出到文件,命令同样报错;
(3)执行命令 datel 2 >> output.txt,命令同样报错,2和>>之间不能有空格;
(4)必须使用命令 datel 2>> output.txt,将错误结果输出到文件;

整个命令执行过程,如下图所示:

2.3、正确输出和错误输出同时保存
符号 作用
命令 > 文件 2>&1 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中。
命令 >> 文件 2>&1 以追加的方式,把正确输出和错误输出都保存到同一个文件当中。
命令 &> 文件 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中。
命令 &>> 文件 以追加的方式,把正确输出和错误输出都保存到同一个文件当中。
命令 >> 文件1 2>>文件2 把正确的输出追加到文件1中,把错误的输出追加到文件2中。

命令 >> 文件 2>&1 和 命令 &>> 文件,这两种保存结果都一样,只不过方式不一样。

(1)执行命令,将date正确输出结果输出到output.txt;
(2)执行命令,将datel错误输出结果输出到output.txt;
(3)查看output.txt文件内容;

整个执行过程,如下图所示:

测试 &>> 方式结果一样。

特殊用法:&>> /dev/null 不管命令是否正确,直接丢弃,不做任何数据保存。

3、输入重定向

不通过键盘输入,通过文件输入,在实际场景中应用不多。

把文件作为命令的输入:命令 < 文件。

wc命令统计输入的信息,将文件hello.sh作为wc命令的输入,然后进行统计:

显示结果从左到右依次是:行数、单词数、字节数。

3.1、wc命令

命令格式:wc [选项] [文件名];
选项说明:

  • -l 统计行数;
  • -w 统计单词数;
  • -c 统计字节数;

你可能感兴趣的:(从零开始学习Linux(三十三):Shell基础之输入输出重定向)