最重要且最重要的之一是I/O重定向。命令行的这一功能使您能够将命令的输入和/或输出重定向到文件和/或文件,或者使用管道将多个命令连接在一起以形成所谓的“命令管道”。
我们运行的所有命令基本上都会产生两种输出:
- 命令结果 - 程序设计产生的数据,以及
- 通知用户程序执行详细信息的程序状态和错误消息。
在 Linux 和其他类 Unix 系统中,存在以下三个默认文件,shell 也使用文件描述符编号来标识它们:
- 标准输入或 0– 它连接到键盘,大多数程序从该文件读取输入。
- 标准输出或 1– 它附加到屏幕上,所有程序都将其结果发送到此文件,并且
- 标准错误或2– 程序将状态/错误消息发送到该文件,该文件也附加到屏幕上。
因此,I/O 重定向允许您更改命令的输入源以及其输出和错误消息发送到的位置。这是通过“<”和“>”重定向运算符。
如何在 Linux 中将标准输出重定向到文件
您可以重定向标准输出,如下例所示,在这里,我们要存储供以后检查:
$ top -bn 5 >top.log
标志所在:
-b– 启用顶部以批处理模式运行,以便您可以将其输出重定向到文件或另一个命令。-n– 指定命令终止之前的迭代次数。
您可以查看以下内容top.log文件使用如下:
$ cat top.log
要附加命令的输出,请使用“>>”操作员。
例如附加输出上面在顶部日志文件,特别是在脚本内(或在命令行上),输入以下行:
$ top -bn 5 >>top.log
笔记:使用文件描述符号,上面的输出重定向命令与:
$ top -bn 5 1>top.log
如何在 Linux 中将标准错误重定向到文件
要重定向命令的标准错误,您需要显式指定文件描述符编号,2让 shell 理解你想要做什么。
例如当没有 root 权限的普通系统用户执行以下命令时,会产生错误:
$ ls -l /root/
您可以将标准错误重定向到文件,如下所示:
$ ls -l /root/ 2>ls-error.log $ cat ls-error.log

要附加标准错误,请使用以下命令:
$ ls -l /root/ 2>>ls-error.log
如何将标准输出/错误重定向到一个文件
还可以将命令的所有输出(标准输出和标准错误)捕获到单个文件中。这可以通过指定文件描述符编号以两种可能的方式完成:
1.第一种是相对较旧的方法,其工作原理如下:
$ ls -l /root/ >ls-error.log 2>&1
上面的命令意味着 shell 将首先发送到文件ls-错误日志(使用>ls-error.log),然后将所有错误消息写入文件描述符2(标准输出)已被重定向到文件ls-错误日志(使用2>&1)。这意味着标准错误也被发送到与标准输出相同的文件。
2.第二种也是直接的方法是:
$ ls -l /root/ &>ls-error.log
您也可以将标准输出和标准错误附加到单个文件,如下所示:
$ ls -l /root/ &>>ls-error.log
如何将标准输入重定向到文件
大多数(如果不是全部)命令从标准输入获取输入,并且默认情况下标准输入附加到键盘。
要从键盘以外的文件重定向标准输入,请使用“<”运算符如下:
$ cat <domains.list

如何将标准输入/输出重定向到文件
您可以使用以下命令同时执行标准输入、标准输出重定向如下:
$ sort <domains.list >sort.output
如何通过管道使用 I/O 重定向
要将一个命令的输出重定向为另一个命令的输入,您可以使用管道,这是为复杂操作构建有用命令行的强大方法。
例如,下面的命令将。
$ ls -lt | head -n 5
在这里,选项:
-l– 启用长列表格式-t–首先显示-n– 指定要显示的标题行数
构建管道的重要命令
在这里,我们将简要回顾一下构建命令管道的两个重要命令,它们是:
参数它用于从标准输入构建和执行命令行。下面是一个使用管道的示例参数,该命令用于:
$ echo /home/aaronkilik/test/ /home/aaronkilik/tmp | xargs -n 1 cp -v /home/aaronkilik/bin/sys_info.sh

以及选项:
-n 1– 指示 xargs 每个命令行最多使用一个参数并发送到cp– 复制文件-v–。
有关更多使用选项和信息,请阅读参数手册页:
$ man xargs
一个球座命令从标准输入读取并写入标准输出和文件。我们可以演示如何球座工作原理如下:
$ echo "Testing how tee command works" | tee file1

通常与管道一起使用,以强大的方式处理信息,例如重组命令的输出(这对于),修改文件中的文本以及其他几个。
要了解有关 Linux 过滤器和管道的更多信息,请阅读本文,显示了使用过滤器和管道的有用示例。
在本文中,我们解释了 Linux 中 I/O 重定向的基础知识。请记住通过下面的反馈部分分享您的想法。
