- 命令结果 - 程序设计产生的数据,和
- 程序状态和通知用户程序执行细节的错误消息。
- stdin或0 - 它连接到键盘,大多数程序从此文件读取输入。
- stdout或1 - 它附加到屏幕,并且所有程序将其结果发送到此文件和
- stderr或2 - 程序将状态/错误消息发送到也附加到屏幕的文件。
“<”
和
“>”
重定向运算符成为可能。
如何在Linux中将标准输出重定向到文件
您可以重定向标准输出,如下面的示例所示,这里,我们要存储 top命令的输出用于以后检查:$ top -bn 5 >top.log其中标志:
-b
- 使顶部以批处理方式运行,以便您可以将其输出重定向到文件或其他命令。-n
- 指定命令终止之前的迭代次数。
top.log
文件的内容,如下所示:
$ cat top.log要附加命令的输出,请使用
“>>”
运算符。 例如,将
top命令的输出附加到
top.log文件中,特别是在脚本(或命令行)中,请输入以下行:
$ top -bn 5 >>top.log注意 :使用文件描述符编号,上述输出redirect命令与以下命令相同:
$ 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
如何将标准输出/错误重定向到一个文件
还可以将命令的所有输出(标准输出和标准错误)捕获到单个文件中。这可以通过指定文件描述符号以两种可能的方式来完成: 第一种是相对较旧的方法,其工作方式如下:$ ls -l /root/ >ls-error.log 2>&1上面的命令意味着shell首先将 ls命令的输出发送到文件 ls-error.log (使用
>ls-error.log
),然后将所有错误消息写入文件描述符
2 (标准输出)被重定向到文件
ls-error.log (使用
2>&1
)。表示标准误差也被发送到与标准输出相同的文件。 第二种直接方法是:
$ ls -l /root/ &>ls-error.log您也可以将标准输出和标准错误附加到单个文件,如:
$ ls -l /root/ &>>ls-error.log
如何将标准输入重定向到文件
大多数(如果不是全部)命令从标准输入获得其输入,并且默认标准输入附加到键盘。 要从键盘以外的文件重定向标准输入,请使用“<”
运算符,如下所示:
$ cat <domains.list
将标准输入重定向到文件
如何重定向标准输入/输出到文件
您可以使用 排序命令同时执行标准输入,标准输出重定向,如下所示:$ sort <domains.list >sort.output
如何使用管道进行I / O重定向
要将一个命令的输出重定向为另一个命令的输入,您可以使用管道,这是构建用于复杂操作的有用命令行的强大手段。 例如,以下命令将 列出前5个最近修改的文件 。$ ls -lt | head -n 5这里,选项:
-l
- 启用长列表格式-t
- 按照修改时间排序,使用最新的文件-n
- 指定要显示的标题行数
构建管道的重要命令
在这里,我们将简要回顾一下构建命令管道的两个重要命令,它们是: xargs用于从标准输入构建和执行命令行。 下面是使用 xargs的管道示例,此命令用于 将文件复制到Linux中的多个目录中 :$ echo /home/aaronkilik/test/ /home/aaronkilik/tmp | xargs -n 1 cp -v /home/aaronkilik/bin/sys_info.sh
将文件复制到多个目录
$ man xargstee命令从标准输入读取,并写入标准输出和文件。 我们可以演示如何 tee工作如下:
$ echo "Testing how tee command works" | tee file1
tee命令示例