一、什么是输入重定向
在Linux系统中,输入重定向是一种执行命令时将标准输入流修改为从特定文件、命令、字符串或其它命令的输出流中获取数据的技术。这个过程可以通过使用特定的符号将输入重定向到需要的数据源进行处理。
有些时候,在执行命令时需要从一个文件或另一个命令的输出中获得输入数据,而输入重定向可以让我们轻松地完成这个任务。输入重定向通过将特定的文件或命令的输出内容重定向为标准输入流,实现了在执行命令的时候从指定输入源获取数据的目的。
二、为什么要用输入重定向
输入重定向在实际的系统管理中非常有用,因为可以通过它轻松地从多个来源获取输入数据,包括从文件和其它命令的输出中读取数据。这给Linux运维工作带来了许多便利。以下列举了几种情况下,我们可以使用输入重定向来处理命令的输出:
1. 将一个文件的内容读入到脚本中,以便对它进行处理。
cat file.txt | script.sh
2. 使用一些命令的输出作为其它命令的输入。
grep 'string' file.txt | sort | uniq
3. 从脚本中向标准输入流中写入数据。
echo "input data" | script.sh
三、常用的输入重定向符号
在Linux系统中,有三种输入重定向符号可用于重定向标准输入文件:
1. 使用小于符号('<')表示输入重定向。要将一个文本文件中的内容读入到脚本或命令中,请执行以下操作:
command < input_file
2. 使用双小于号符号('<<')表示输入重定向。可以将任意数量的命令行输入数据传递给一个命令:
command << END input data 1 input data 2 END
3. 使用一个命令(如cat)来标识标准输入的来源:
cat < input_file
四、示例代码
以下示例代码演示了如何使用输入重定向处理文件中的数据,并在文件中写入命令输出的结果。
#!/bin/bash # 从文件中读取文本内容 input_file="input_file.txt" output_file="output_file.txt" # 读取文件中的数据 while read line do # 处理每行数据 result=$(echo "$line" | awk '{print $1}') # 将处理结果写入另一个文件中 echo "$result" >> "$output_file" done < "$input_file"
在以上代码中,使用了“<”符号,将文件“input_file.txt”的内容重定向到while循环的标准输入流中。then循环处理每一行文本,并使用“>>”符号将处理结果追加到“output_file.txt”文件中。