ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

9.Shell 输入输出重定向

9.Shell 输入输出重定向

在Shell脚本中,输入/输出重定向是非常强大的功能,它允许你控制命令的输入来源和输出目标。这可以通过一系列符号来实现,包括 >, <, >>, 2>, &>, | 等。

文件描述符 0 通常是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)

1.标准输出重定向 (>>>)

  • >:将命令的标准输出(stdout)重定向到一个文件。如果文件已存在,则覆盖该文件。
  • >>:将命令的标准输出追加到一个文件中。如果文件不存在,则会创建新文件。
echo "Hello, World!" > output.txt  # 创建或覆盖output.txt,并写入"Hello, World!"
echo "Another line." >> output.txt  # 追加一行到output.txt

2.标准错误重定向 (2>, 2>>)

  • 2>:将命令的标准错误(stderr)重定向到一个文件。如果文件已存在,则覆盖该文件。
  • 2>>:将命令的标准错误追加到一个文件中。如果文件不存在,则会创建新文件。
ls /nonexistent_directory 2> error.log  # 将错误信息写入error.log
ls /nonexistent_directory 2>> error.log  # 追加错误信息到error.log

3.同时重定向标准输出和标准错误

  • &>>&:将命令的标准输出和标准错误同时重定向到同一个文件。使用 &> 时,如果文件已存在则覆盖;使用 >& 通常用于追加模式。
  • &>>:将命令的标准输出和标准错误同时追加到同一个文件中。
ls /nonexistent_directory &> all_output.log  # 覆盖all_output.log
ls /nonexistent_directory &>> all_output.log  # 追加到all_output.log

4.输入重定向 (<)

  • <:从文件中读取内容作为命令的输入。
sort < input.txt  # 对input.txt中的行进行排序

5.管道 (|)

  • |:管道操作符用来连接两个命令,前一个命令的输出作为后一个命令的输入。
cat file.txt | grep "pattern"  # 在file.txt中搜索包含"pattern"的行

6.其他高级重定向

  • n>&m:将文件描述符 n 重定向到文件描述符 m。例如,2>&1 表示将标准错误重定向到与标准输出相同的位置。
  • n<&m:类似于上面的操作,但方向相反,即将文件描述符 m 的内容复制给文件描述符 n
command 2>&1  # 将标准错误重定向到标准输出
command 2>&1 | tee logfile  # 将标准输出和标准错误同时显示在终端并记录到logfile
返回列表