乱读天书, 不求甚解
周祎骏的个人云笔记
Toggle navigation
乱读天书, 不求甚解
主页
Linux:系统配置
Linux:用户管理
Linux:优化排错
Linux:进程调度
Linux:文件系统
Linux:网络
Linux:系统服务
Linux:安全
Linux:内核
容器:Docker
容器:containerd
容器编排:Kubernetes
IAC:Terraform
大数据:Hadoop
大数据:Zookeeper
大数据:Hbase
消息队列:rsyslog
消息队列:kafka
数据库:MySQL
数据库:MongoDB
搜索引擎:Elasticsearch
时序数据库:OpenTSDB
网站服务:Nginx
编程:Bash
编程:Perl
编程:Python
编程:C
编程:JAVA
编程:Rust
版本控制:gitlab
知识管理:docusaurus
常用小工具
关于我
标签
bash 2.2 文件标识符,重定向
2016-04-19 00:27:00
79
0
0
admin
#最基本的: \> /tmp/a 重定向的文件a \>> /tmp/a 追加到文件a 2>&1 把错误输出重定向到标准输出 &> /tmp/a 把错误输出和标准输出全部重定向到文件a #文件描述符: 所谓的文件标识符就是/proc/pid/fd 下的软链接,而重定向指的就是改变这个软链接的指向。 标准输入 => 0 标准输出 => 1 错误输出 => 2 ```bash [root@test ~]# sleep 100 > /tmp/a 2> /tmp/b & [3] 6634 [root@test ~]# ls -l /proc/6634/fd total 0 lrwx------ 1 root root 64 Apr 17 11:24 0 -> /dev/pts/7 #当前使用的终端 l-wx------ 1 root root 64 Apr 17 11:24 1 -> /tmp/a l-wx------ 1 root root 64 Apr 17 11:24 2 -> /tmp/b ``` 复制文件描述符2给文件描述符9,复制1给8 exec 这么用可以改变当前bash 的文件描述符 ```bash [root@test ~]# (exec 8<&1;exec 9<&2;cat no_such_file;echo 123;sleep 100) >> /tmp/a 2>> /tmp/b & [1] 6801 [root@test ~]# ls -l /proc/6801/fd total 0 lrwx------ 1 root root 64 Apr 17 11:56 0 -> /dev/pts/7 l-wx------ 1 root root 64 Apr 17 11:56 1 -> /tmp/a l-wx------ 1 root root 64 Apr 17 11:56 2 -> /tmp/b lrwx------ 1 root root 64 Apr 17 11:56 255 -> /dev/pts/7 l-wx------ 1 root root 64 Apr 17 11:56 8 -> /tmp/a l-wx------ 1 root root 64 Apr 17 11:56 9 -> /tmp/b [root@test ~]# cat /tmp/a 123 [root@test ~]# cat /tmp/b cat: no_such_file: No such file or directory ``` #文件描述符使用总结: n>& 将标准输出复制给文件描述符n n>&m 将输出描述符m复制给文件描述符n \>&- 关闭标准输出 n>&- 关闭输出描述符n n>&m- 将输出描述符m复制给文件描述符n,删除m n<& 将标准输入复制给文件描述符n n<&m 将输入描述符m复制给文件描述符n <&- 关闭标准输入 n<&- 关闭输入描述符n n<&m- 将输入描述符m复制给文件描述符n,删除m #一些其他的使用技巧: n >| file 强制重定向 如果bash 被set -C(noclobber)的话,会禁止重定向到已存在的文件(为了保护文件)
上一篇:
bash 1.6 交互
下一篇:
bash 2.3 set设置 以及shopt 配置
文档导航