Linux管理中最重要和最有趣的主题之一是I/O重定向。命令行上的此功能使您能够从文件获取命令的输入和输出,或者您可以使用管道将多个命令连接在一起以形成所谓的“命令管道”。我们运行的所有命令基本上都会产生两种输出:命令结果——程序产生的数据,以及程序状态和错误消息,告知用户程序执行的细节。在Linux和其他类Unix系统中,有三个默认文件(命名如下),它们也由shell使用文件描述符识别:stdin或0-这是连接键盘的地方,大多数程序从这个文件读取输入.stdout或1-它连接到屏幕,所有程序将其结果发送到此文件stderr或2-程序将状态/错误消息发送到此文件,该文件也连接到屏幕。因此,I/O重定向允许您更改命令的输入源并将输出和错误消息发送到别处。这可以通过<和>重定向运算符来实现。如何在Linux中将标准输出重定向到文件如下例所示,您可以重定向标准输出。在这里,我们要存储top命令的输出以供以后检查:$top-bn5>top.log其中flags含义:-b-使top以批处理模式运行,以便您可以将其输出重定向到文件或另一个命令.-n-指定命令终止前的迭代次数。您可以使用cat命令查看top.log文件的内容:$cattop.log要将命令输出附加到文件,请使用>>运算符。例如,要将top命令的输出附加到上面的top.log文件中,特别是在脚本(或命令行)中,输入以下行:$top-bn5>>top.log注意:您还可以使用文件描述符号,上面的重定向命令等价于:$top-bn51>top.log如何在Linux中将标准错误重定向到一个文件让shell知道你要做什么。例如,以下ls命令在由没有root权限的普通系统用户执行时会产生错误:$ls-l/root/您可以将标准错误重定向到文件:$ls-l/root/2>ls-error.日志$catls-error.log将标准错误重定向到文件要将标准错误附加到文件,请使用以下命令:$ls-l/root/2>>ls-error.log如何将标准输出和标准错误重定向到文件还将命令的所有输出(包括标准输出和标准错误)捕获到单个文件中。这可以通过指定文件描述符以两种可能的方式完成:1.第一种是相对较旧的方法,其工作方式如下:$ls-l/root/>ls-error.log2>&1上面的命令意味着shell首先将ls命令的输出发送到文件ls-error.log(使用>ls-error.log),然后将写入文件描述符2(标准错误)的所有错误消息重定向到文件ls-error.log(使用2>&1)。(LCTT译注:此处原文有误,已更正。)这意味着标准错误也被发送到与标准输出相同的文件中。2.第二种更直接的方法是:$ls-l/root/&>ls-error.log你也可以像这样将标准输出和标准错误追加到一个文件中:$ls-l/root/&How>>ls-error.log将标准输入重定向到文件大多数(如果不是全部)命令从标准输入获取输入,默认情况下标准输入连接到键盘。要从键盘以外的文件重定向标准输入,请使用<运算符,如下所示:$cat
