Bash重定向
1. 基础知识
文件描述符(File Descriptor),是进程对其所打开文件的索引,形式上是个非负整数。类 Unix 系统中,常用的特殊文件描述符如下:
| 文件描述符 | 名称 | 常用缩写 | 默认值 |
| 0 | 标准输入 | stdin | 键盘 |
| 1 | 标准输出 | stdout | 屏幕 |
| 2 | 标准错误输出 | stderr | 屏幕 |
我们在简单地用 < 或 > 时,相当于使用 0< 或 1> (下面会详细介绍)。
管道 (“|”, pipe line),把上一个命令的 stdout 接到下一个命令的 stdin;
tee 命令的作用是在不影响原本 I/O 的情况下,将 stdout 复制一份到档案去;
2. 简单重定向
- cmd > file
-
- 把cmd命令的输出重定向到文件file中。如果file已经存在,则清空原有文件,使用bash的noclobber选项可以防止覆盖原有文件。
- cmd >> file
-
- 把cmd命令的输出重定向到文件file中,如果file已经存在,则把信息加在原有文件后面。
- cmd < file
-
- 使cmd命令从file读入
- cmd << text
-
- 从命令行读取输入,直到一个与text相同的行结束。除非使用引号把输入括起来,此模式将对输入内容进行shell变量替换。如果使用 <<- ,则会忽略接下来输入行首的tab,结束行也可以是一堆tab再加上一个与text相同的内容,可以参考后面的例子。
- cmd <<< word
-
- 把word(而不是文件word)和后面的换行作为输入提供给cmd。
- cmd <> file
-
- 以读写模式把文件file重定向到输入,文件file不会被破坏。仅当应用程序利用了这一特性时,它才是有意义的。
- cmd >| file
-
- 功能同>,但即便在设置了noclobber时也会覆盖file文件,注意用的是|而非一些书中说的!,目前仅在csh中仍沿用>!实现这一功能。
3. 使用文件描述符的重定向
使用文件描述符的重定向都使用了&符号。
| cmd >&n | 把输出送到文件描述符n |
| cmd m>&n | 把输出 到文件符m的信息重定向到文件描述符n |
| cmd >&- | 关闭标准输出 |
| cmd <&n | 输入来自文件描述符n |
| cmd m<&n | m来自文件描述符n |
| cmd <&- | 关闭标准输入 |
| cmd <&n- | 移动输入文件描述符n而非复制它。(需要解释) |
| cmd >&n- | 移动输出文件描述符 n而非复制它。(需要解释) |
注意: >& 实际上复制了文件描述符,这使得ls > dirlist 2>&1与ls 2>&1 > dirlist的效果不一样。
4. 重定向的组合应用
| cmd 2>file | 把文件描述符2重定向到file,即把错误输出存到file中。 |
| cmd > file 2>&1 | 把标准错误重定向到标准输出,再重定向到file,即stderr和stdout都被输出到file中 |
| cmd &> file | 功能与上一个相同,更为简便的写法。 |
| cmd >& file | 功能仍与上一个相同。 |
| cmd > f1 2>f2 | 把stdout重定向到f1,而把stderr重定向到f2 |
| tee files | 把stdout原样输出的同时,复制一份到files中。 |
| tee files | 把stderr和stdout都输出到files中,同时输出到屏幕。 |
5. 重定向实例
Bash重定向的更多相关文章
- BASH重定向问题
APUE 3.5关于重定向有个容易迷惑人的问题: ./a.out > outfile 2>&1 ./a.out 2>&1 > outfile 问两者区别? in ...
- printf 遇到bash重定向
在printf之前添加:setvbuf(stdout,NULL,_IONBF,0);设置缓冲区为空. 在每句printf之后添加:fflush(stdout); 方法一: 1 2 3 4 5 6 7 ...
- linux bash的重定向
cnblogs原创 下面几种bash重定向各表示什么意思? find / -name passwd > /dev/null >& > /dev/null find / -na ...
- Linux 总结1
============================= 一般 ========================================= chown -R oracle:oinstall ...
- admin-5
Admin05 useradd 添加用户usermod 修改用户属性userdel -r 删除用户 groupadd 添加组gpasswd -a | -d | 管理组成员groupdel 删除组gro ...
- Linux下中断程序导致写文件失败的分析
案例: 一个普通linux C程序,执行期间会进行多次printf操作,利用bash脚本重定向功能,将stdout重定向到一个另一个文件中去.在运行途中用ctrl+C终止程序,发现定向文件始终为空,即 ...
- linux中文件描述符
:: # cat ping.txt PING baidu.com (() bytes of data. bytes from ttl= time=32.1 ms bytes from ttl= tim ...
- NCcat学习使用
一.使用手册 1.简介:nc/NetCat是一款端口监听工具,可以用来建立系统之间的连接.传输文件.TCP代理等. 2.命令参数 nc [-options] hostname port[s] ...
- shell 中cut
和awk差不多的功能 上面的例子中,把 root:x:0:0:root:/root:/bin/bash 重定向到cut命令里,-d表示分隔符,这里使用冒号: 作为分隔符,-f 表示字段,选择了第1,和 ...
随机推荐
- ssh 认证
ssh 秘钥认证流程 ssh配置认证 基于口令(密码)的安全验证 [root@m01 ~]# ssh 10.0.0.41 hostname root@10.0.0.41's password: bac ...
- 20155205 《Java程序设计》实验二(Java面向对象程序设计)实验报告
20155205 <Java程序设计>实验二(Java面向对象程序设计)实验报告 一.实验内容及步骤 (一)单元测试 (1)三种代码 举例:我们要在一个MyUtil类中解决一个百分制成绩转 ...
- WordPress-Word图片上传插件整合教程-Xproer.WordPaster
插件下载(PHP):wordpress 3.7.1, 说明:由于许多插件可能使用相同钩子,导致冲突,所以提供手支方式整合. 1.上传插件目录. 说明:WordPress 3.7.1 使用的是TinyM ...
- Django工程搭建
-----环境安装 1.创建虚拟环境 mkvirtualenv django_py3_1.11 -p python3 2.安装django pip install django==1.11.11 ...
- 使用 vs.php 调试PHP相关问题
1. 使用mysql_connect()方法时报错"Call to undefined function mysql_connect()" 这是由于在php.ini没有启用mysq ...
- spring boot jpa 多条件组合查询带分页的案例
spring data jpa 是一个封装了hebernate的dao框架,用于单表操作特别的方便,当然也支持多表,只不过要写sql.对于单表操作,jpake可以通过各种api进行搞定,下面是一个对一 ...
- Hdu3829 Cat VS Dog(最大独立点集)
Cat VS Dog Problem Description The zoo have N cats and M dogs, today there are P children visiting t ...
- POJ2739 Sum of Consecutive Prime Numbers 2017-05-31 09:33 47人阅读 评论(0) 收藏
Sum of Consecutive Prime Numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 25225 ...
- WP8整合Bing应用,生活有求Bing
在Windows 8中,Bing应用一直随系统而存在,提供多样化的资讯.它们是我的“御用”App,因为可以根据我的使用习惯对应用进行定制. 在Windows Phone 8系统第三次官方更新之后, B ...
- bootstrap2.2相关文档
本节课我们主要学习一下 Bootstrap表单和图片功能,通过内置的 CSS定义,显示各种丰富的效果. 一.表单 Bootstrap提供了一些丰富的表单样式供开发者使用. 1.基本格式 //实现基本的 ...