Linux中IO重定向与管道

发布时间 2023-11-27 20:56:20作者: 七友zzz

1. 输入输出重定向

1.1 标准输出重定向

使用 > 符号将命令的标准输出重定向到文件:

date > date.txt

这将把 date 命令的输出保存到名为 date.txt 的文件中。

大多数进程中都有0,1,2,这三个文件描述符,0表示标准输入,可以理解为键盘输入;1表示标准输出,输出到终端;2表示标准错误,输出到终端;3以上表示为常规文件的描述符。其中,">"表示覆盖,  ">>"表示追加。

1.2 标准错误输出重定向

使用 2> 符号将命令的标准错误输出重定向到文件:

cat nonexistent_file 2> error_log.txt

这将把尝试读取不存在文件的错误信息保存到名为 error_log.txt 的文件中。

1.3 标准输入重定向

使用 < 符号将文件内容作为命令的标准输入:

wc -w < input_text.txt

这将统计 input_text.txt 文件中的单词数量。

2. 管道

管道实际上也是一种重定向,重定向字符控制输出到文件,管道控制输出到其他程序。管道的作用是把上一个进程的输出作为下一个进程的输入,利用管道可以把若干个命令连接在一起。如下图所示:

 

使用 | 符号将一个命令的输出作为另一个命令的输入:

ps aux | grep "bash"

这将列出所有包含 "bash" 关键字的进程。

将/etc/passwd中的用户按UID数值大小排序并显示前3行。

sort -t " : " -k3 -n /etc/passwd | head -3

其中,-t指定字段分隔符,-k指定字段,-n表示按数值大小排序。