前言I/O重定向可以让我们将命令的输入输出重定向到文件,将多个命令连接在一起成为管道。本文介绍重定向的相关知识。标准输入、输出和错误输出包括两种类型:程序的结果。称为标准输出或标准输出。状态和错误信息。称为标准错误或stderr。除其他事项外,一些程序从标准输入stdin获取输入。默认情况下,标准输入连接到键盘。默认情况下,stdout和stderr都链接到屏幕而不是保存到文件中。重定向允许我们改变输出的去向和输入的来源。重定向标准输出要重定向到屏幕以外的文件,我们使用>重定向运算符后跟文件名。例如,我们可以使用重定向运算符告诉shell将ls命令的输出发送到ls-output.txt文件而不是屏幕。ls-l/usr/bin>ls-output.txt我们可以看到ls命令的输出并没有发送到屏幕上,而是将ls-output.txt发送到了文件中。需要注意的是,使用>重定向操作符会覆盖目标文件。如果我们想附加内容,我们可以使用>>重定向操作符。重定向标准错误为了重定向标准错误,我们必须引用它的文件描述符。shell使用stdout、stdin和stderr分别作为文件描述符0、1和2的内部引用。我们可以用这个符号重定向stderr。ls-l/bin/usr2>ls-error.txtredirecttothesamefile将标准输出和标准错误重定向到同一个文件,有两种方法可以实现。首先让我们使用传统的方法,它适用于旧版本的shell:ls-l/bin/usr>ls-output.txt2>&1首先,我们将stdout重定向到ls-output.txt文件,然后使用2>&1符号将文件描述符2stderr重定向到文件描述符1stdout。注意重定向的顺序,重定向stderr必须总是在重定向stdout之后发生。最新版本的bash提供了第二种方法,可以更简化地执行这种组合重定向。ls-l/bin/usr&>ls-output.txt您仍然可以使用>>追加。处理不需要的输出系统提供了一种将输出重定向到名为/dev/null的特殊文件(通常称为位桶)的方法。它接受输入,但不执行任何操作。ls-l/bin/usr2>/dev/null重定向标准输入和<重定向运算符,我们可以将标准输入的来源从键盘更改为文件。cat
