📜  Unix Linux-Shell输入输出重定向(1)

📅  最后修改于: 2023-12-03 14:48:13.302000             🧑  作者: Mango

Unix/Linux-Shell 输入输出重定向

在 Unix/Linux 系统中,输入输出重定向是一种非常常见的操作。它允许我们将命令的输入和输出从标准输入和标准输出中重定向到文件或其他命令中。

标准输入重定向

标准输入重定向可以将一个文件作为命令的输入,而不是通过终端输入。命令语法如下:

command < input_file

例如,如果你想要将 sort 命令排序一个文件名为 input.txt 的文件的内容,我们可以这么做:

sort < input.txt
标准输出重定向

标准输出重定向可以将命令的输出写入到文件,而不是在终端上显示。命令语法如下:

command > output_file

例如,如果你想要将 ls 命令列出的文件名输出到名为 file_list.txt 的文件中,我们可以使用以下命令:

ls > file_list.txt

如果文件名 file_list.txt 已经存在,那么将会被覆盖。

如果想要将输出追加到文件末尾,而不是覆盖原有文件内容,我们可以使用以下命令:

ls >> file_list.txt

这将会在文件末尾添加新的输出内容。

标准错误重定向

有时候我们需要将命令的错误输出重定向到文件中,而不是在终端上显示。命令语法如下:

command 2> error_file

例如,如果你想要将 grep 命令在处理文件时产生的错误输出写入到名为 grep_error.txt 的文件中,可以使用以下命令:

grep "^ERROR" file.txt 2>grep_error.txt
标准输入输出重定向

标准输入输出重定向可以将一个命令的输出重定向到文件中,然后再将重定向的文件作为另一个命令的输入。命令语法如下:

command1 < input_file | command2 > output_file

例如,如果你想要将文件名为 input.txt 的文件的内容排序,然后将排序的输出传递给 uniq 命令,并将 uniq 命令的输出写入到文件名为 output.txt 的文件中,可以使用以下命令:

sort < input.txt | uniq > output.txt
组合使用标准输入输出重定向

以上提到的三种重定向方式可以组合使用,以实现更加复杂的操作。例如,如果你想要将文件名为 input.txt 的文件的内容排序,将排序的输出传递给 uniq 命令,将 uniq 命令的正常输出写入到文件名为 output.txt 的文件中,将 uniq 命令的错误输出写入到名为 error.txt 的文件中,可以使用以下命令:

sort < input.txt | uniq > output.txt 2> error.txt

这将会在执行过程中产生两个文件:output.txterror.txt

以上就是 Unix/Linux-Shell 输入输出重定向的介绍。这是非常有用的操作,可以帮助我们快速地处理文件和数据。