shell编程(4)之重定向及管道
重定向可以用于输入及输出
输出重定向
可以将文件重定向到命令输入
- 文件1 > 文件2 #作用:将 文件1 的输出写入到 文件2 中
- 文件1 >> 文件2 #作用:在不覆盖 文件2 的前提下,将 文件1 追加到 文件2 中
[local@localhost~]$cat hello
echo "hello"
echo "error: this is a mistake" >&2
[local@localhost~]$./hello 2> errorfile
[local@localhost~]$hello
[local@localhost~]$cat errorfile
[local@localhost~]$error: this is a mistake
ps:显示错误消息时,建议将它们定向到 STDERR 以便更容易区分错误消息和正常状态消息
使用重定向时,如果文件不存在,则会创建出新的文件用来保存输出,如果文件已存在,则会将输出覆盖或追加到此文件中。需要注意的是,如果将 stdout 或 stderr 定向到/dev/null 文件中,则会以静默的方式丢弃掉相应的输出
输入重定向
输入重定向将文件的内容重定向到命令,而非将命令的输出重定向到文件,输入重定向符号是小于号 <
- 使用文件进行输入重定向
[local@localhost~]$wc < hello #wc命令是对文本内容进行统计,输出的三个值分别为文本的行数,文本的词数,以及文本的字节数
2 9 49
- 在命令行中指定的输入重定向(内联输入重定向)
符号:两个小于号 <<。除了这个符号,你必须指定一个文本标记来划分输入数据的开始和结尾。任何字符串都可作为文本标记,但在数据的开始和结尾文本标记必须一致。
[local@localhost~]$wc << EOF #这里文本标记就是EOF
> from t1
> from t2
> EOF
2 4 16
管道
管道使用字符 | 分隔,管道将第一个命令的标准输出连接到下一个命令的标准输入,也就是前一个的输出作为后一个的输入。当重定向与管道组合时,Shell 会首先设置整个管道,然后重定向输入和输出,这也就意味着如果在管道的中间使用了重定向,则输出将保存在文件中,而不是随着管道流向下一个命令。
哪有什么胜利可言,坚持意味着一切。如想使用请备注转载链接~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY