管道及I/O重定向
管道符"|"
管道符"|":前一个命令的输出,作为后一个命令的输入
命令1 | 命令2 | 命令3 | ...
# 输出"hello,world."并将小写转换为大写
[root@localhost ~]# echo "hello,world." | tr 'a-z' 'A-Z'
HELLO,WORLD.
# 显示passwd文件中按:分割的每行第一个部分并排序并将小写转换为大写
[root@localhost ~]# cut -d: -f1 /etc/passwd | sort | tr 'a-z' 'A-Z'
ADM
APACHE
BIN
DAEMON
DBUS
FEDORA
I/O重定向
简单的解释就是捕捉一个文件, 命令, 程序, 脚本, 或者甚至是脚本中的代码块的输出, 然后将这些输出作为输入发送到另一个文件, 命令, 程序, 或脚本中。
标准输入输出
执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都对应终端的屏幕。
进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。
习惯上,标准输入(standard input)的文件描述符是 0,标准输出(standard output)是 1,标准错误(standard error)是 2。
I/O重定向符号
- cmd 1 | cmd 2 把 stdout 重定向到 cmd 2 的 shdin;
- cmd > file 把 stdout 或者 stderr 重定向到 file 文件中;
- cmd >> file 把 stdout 或者 stderr 重定向到 file 文件中(追加);
- cmd > file 2>&1 把 stdout 和 stderr 一起重定向到 file 文件中;
- cmd >> file 2>&1 把 stdout 和 stderr 一起重定向到 file 文件中(追加);
- cmd < file >file2 cmd 命令以 file 文件作为 stdin,以 file2 文件作为 stdout;
- cat <>file 以读写的方式打开 file;
- cmd < file cmd 命令以 file 文件作为 stdin;
- cmd << delimiter Here document,从 stdin 中读入,直至遇到 delimiter 分界符;
- cmd 1 | cmd 2 > file 把多个 stdout 重定向到 file 文件中。
其中2>&1中的数字代表重定向文件描述符,表示重定向 stderr 到 stdout 。
关闭文件描述符
n<&-
#关闭输入文件描述符n.
0<&-
<&-
#关闭stdin.
n>&-
#关闭输出文件描述符n.
1>&-
>&-
#关闭stdout.
set
set -C:禁止对已经存在文件使用覆盖重定向:
强制覆盖输出,则使用 >|
set +C:关闭上述功能
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
· 程序员转型AI:行业分析
· 重磅发布!DeepSeek 微调秘籍揭秘,一键解锁升级版全家桶,AI 玩家必备神器!