文章目录
- 输出重定向 >
- 追加输出重定向 >>
- 输入重定向 <
- 管道符 |(重要)
 
 
在Linux中,标准输入(stdin)、标准输出(stdout)和标准错误输出(stderr)是与终端和程序之间进行交互的标准通道。
- 标准输入(stdin): - 标准输入是程序从终端或另一个程序中读取输入数据的默认位置。
- 在终端中,当你键入字符并按下回车键时,这些字符会被发送到正在运行的程序的标准输入。
- 在Linux中,通常用键盘作为标准输入设备。
- 标准输入通常通过文件描述符0表示。
 
- 标准输出(stdout): - 标准输出是程序将结果或输出发送到终端的默认位置。
- 当程序执行输出操作时,输出的内容会显示在终端上。
- 在Linux中,通常用屏幕作为标准输出设备。
- 标准输出通常通过文件描述符1表示。
 
- 标准错误输出(stderr): - 标准错误输出是用于向终端或日志文件输出错误消息的默认位置,它是一种专门用于错误信息的输出通道。
- 与标准输出不同,标准错误通常用于输出程序的错误消息和诊断信息,以便区分普通输出和错误输出。
- 在Linux中,通常用屏幕作为标准错误输出设备,但你也可以将错误消息重定向到日志文件中。
- 标准错误输出通常通过文件描述符2表示。
 
输出重定向 >
-  功能描述: >用于将命令的标准输出重定向到指定的文件中
-  使用方法: - 命令 > 文件路径:将命令的标准输出重定向到指定的文件中。
- >只能重定向标准输出,不能重定向标准错误输出(使用- 2>可以重定向标准错误输出)。
 
-  代码示例: # 将命令 ls 的输出结果写入文件 list.txt ls > list.txt# 将命令 ps 的输出结果写入文件 processes.txt ps aux > processes.txt# 将标准输出和标准错误输出一同重定向到文件, 选择一种适合的即可 find /home/user/ -name "*.log" &> test.txt find /home/user/ -name "*.log" > test.txt 2>&1 find /home/user/ -name "*.log" > test.txt 2> test.txt
-  注意事项: - 使用 >时会覆盖目标文件的内容,如果不想覆盖文件内容,可以使用>>将输出追加到文件末尾。
- 如果目标文件不存在,>会创建一个新文件;如果目标文件已存在,>会清空文件内容再写入新的内容。注意存在的目标文件必须有写权限w。
 
- 使用 
追加输出重定向 >>
>> 是用于追加重定向输出的特殊字符,常用于将命令的输出结果追加到文件的末尾。
-  功能描述: >>用于将命令的标准输出追加到指定的文件末尾,如果文件不存在则会创建文件,如果文件已存在则会将输出追加到文件末尾。
-  使用方法: - 命令 >> 文件路径:将命令的标准输出追加到指定的文件末尾。
 
-  代码示例: # 将命令 ls 的输出结果追加到文件 list.txt ls >> list.txt# 将命令 ps 的输出结果追加到文件 processes.txt ps aux >> processes.txt# 将标准输出和标准错误输出一同重定向到文件, 选择一种适合的即可 find /home/user/ -name "*.log" &>> test.txt find /home/user/ -name "*.log" >> test.txt 2>&1 find /home/user/ -name "*.log" >> test.txt 2>>text.txt
-  注意事项: - >>只能追加重定向标准输出,不能追加重定向标准错误输出(使用- 2>>可以追加重定向标准错误输出)。
- 如果目标文件不存在,>>会创建一个新文件,之后将结果写入;如果目标文件存在,使用>>时不会覆盖目标文件的内容,而是将输出追加到文件的末尾。注意存在的目标文件必须有写权限w。
 
输入重定向 <
-  功能描述: <用于将文件的内容作为命令的标准输入,从而将文件内容提供给命令使用。
-  使用方法: - 命令 < 文件路径:将文件的内容作为命令的标准输入。
 
-  代码示例: # 将文件 file.txt 的内容作为命令 cat 的标准输入,显示文件内容 cat < file.txt# 将文件 input.txt 的内容作为命令 grep 的标准输入,搜索匹配的行 grep "pattern" < input.txt# 将文件 numbers.txt 的内容作为命令 sort 的标准输入,排序后输出 sort < numbers.txt
-  注意事项: - 使用 <时,命令将会从文件中读取内容作为标准输入。当然,这就要求文件一定要有读权限r。
- <只能将文件内容作为命令的标准输入,不能将命令的输出结果作为输入。
 
- 使用 
管道符 |(重要)
-  功能描述: |用于 将管道左侧命令的标准输出 传递给管道右侧命令 作为标准输入,实现两个或多个命令之间的协作。
-  使用方法: - 命令1 | 命令2:将命令1的标准输出作为命令2的标准输入。
 
-  代码示例: # 查找家目录下的所有shell脚本 ls -R ~ | grep "\.sh"# 使用管道将 ps 命令的输出传递给 grep 命令进行进一步过滤 ps aux | grep "process_name"# 使用管道将 cat 命令的输出传递给 wc 命令进行行数统计 cat file.txt | wc -l
-  注意事项: - 使用管道时,命令1 的输出会成为命令2 的输入,依此类推。因此,命令必须能够通过标准输入和标准输出进行通信。
- 管道符号可以用于连接任意数量的命令,形成一个管道链,每个命令处理前一个命令的输出。
- 某些命令不支持通配符或者正则表达式,可以借助支持正则表达式和通配符的命令来实现。