输入输出重定向
既然我们已经在上一章学完了几乎所有基础且常用的 Linux 命令,那么接下来的任务就
是把多个 Linux 命令适当地组合到一起,使其协同工作,以便我们更加高效地处理数据。要
做到这一点,就必须搞明白命令的输入重定向和输出重定向的原理。
简而言之,输入重定向是指把文件导入到命令中,而输出重定向则是指把原本要输出到
屏幕的数据信息写入到指定文件中。在日常的学习和工作中,相较于输入重定向,我们使用
输出重定向的频率更高,所以又将输出重定向分为了标准输出重定向和错误输出重定向两种
不同的技术,以及清空写入与追加写入两种模式。听起来就很玄妙?刘遄老师接下来将慢慢
道来。
标准输入重定向(STDIN,文件描述符为 0):默认从键盘输入,也可从其他文件或命
令中输入。
标准输出重定向(STDOUT,文件描述符为 1):默认输出到屏幕。
输入输出重定向
错误输出重定向(STDERR,文件描述符为 2):默认输出到屏幕。
比如我们分别查看两个文件的属性信息,其中第二个文件是不存在的,虽然针对这两个
文件的操作都分别会在屏幕上输出一些数据信息,但这两个操作的差异其实很大:
[root@linuxprobe ~]# touch linuxprobe
[root@linuxprobe ~]# ls -l linuxprobe
-rw-r–r--. 1 root root 0 Aug 5 05:35 linuxprobe
[root@linuxprobe ~]# ls -l xxxxxx
ls: cannot access xxxxxx: No such file or directory
在上述命令中,名为 linuxprobe 的文件是存在的,输出信息是该文件的一些相关权限、
所有者、所属组、文件大小及修改时间等信息,这也是该命令的标准输出信息。而名为 xxxxxx的第二个文件是不存在的,因此在执行完 ls 命令之后显示的报错提示信息也是该命令的错误输出信息。那么,要想把原本输出到屏幕上的数据转而写入到文件当中,就要区别对待这两种输出信息。