Linux命令中的管道和重定向

Linux命令中的管道和重定向

在Linux中有很多标准的命令例如findsortdu等,可以满足我们完成文档管理、系统管理等诸多需求,但是大多时候一些复杂的需求都需要多个命令搭配起来使用,对于Linux来说一个命令对应于一个进程,因此多个命令协同工作,就涉及到多个进程的通信,Linux提供一种管道的方式来完成进程间通信。

Linux很多命令都需要输入、输出以及错误信息,默认的输入输出以及错误信息都是标准输入(键盘)和标准输出(屏幕),但有时候我们希望输入、输出、错误信息是从其他地方输入、输出到其他(例如文件),这里就会涉及到输入、输出、错误信息的重定向。

管道符

管道在Linux中对应管道符号 |

CommandA | CommandB
CommandA | xargs CommandB

CommandA执行的输出作为CommandB的输入。

例如:

ls -l|xargs head -10 # 列出前十个文件

输入输出重定向

输入重定向

输入重定向符号: <

CommandA < file

输入重定向到file

特殊的输入重定向符号 <<

CommandA <<EOF
abc
def
EOF

EOF之间的内容作为输入。

输出重定向

输出重定向符号: >(覆盖), >> (追加)

Command > file
Command >> file

文件描述符

系统中默认的文件描述符号:

  • 0 标准输入
  • 1 标准输出
  • 2 标准错误输出

例如:

ls -l > file 2 > /dev/null # 将输出重定向到file,且将错误输出重定向到/dev/null中

这里/dev/null只有个特殊的文件,重定向这里的输出都会被其丢弃,因此有时候为了抑制错误输出,则只需要将其重定向到黑洞/dev/null即可。

总结

命令 说明
command > file 将输出重定向到 file。
command < file 将输入重定向到 file。
command >> file 将输出以追加的方式重定向到file。
n > file 将文件描述符为 n 的文件重定向到 file。
n >> file 将文件描述符为 n 的文件以追加的方式重定向到 file。
n >& m 将输出文件 m 和 n 合并。
n <& m 将输入文件 m 和 n 合并。
<< tag 将开始标记 tag 和结束标记 tag 之间的内容作为输入。
原文地址:https://www.cnblogs.com/Spground/p/9567890.html