Linux Shell编程(25)——I/O 重定向
每个打开的文件都会被分配一个文件描述符. stdin, stdout, 和stderr的文件描述符分别是0, 1, 和 2. 对于正在打开的额外文件, 保留了描述符3到9. 在某些时候将这些格外的文件描述符分配给stdin, stdout, 或者是stderr作为临时的副本链接是非常有用的. 在经过复杂的重定向和刷新之后需要把它们恢复成正常的样子
关闭文件描述符
n<&-关闭输入文件描述符n.
0<&-, <&-关闭stdin.
n>&-关闭输出文件描述符n.
1>&-, >&-关闭stdout.
子进程继承了打开的文件描述符. 这就是为什么管道可以工作. 如果想阻止fd被继承, 那么可以关掉它.
COMMAND_OUTPUT ># 重定向stdout到一个文件.# 如果没有这个文件就创建, 否则就覆盖.ls -lR > dir-tree.list# 创建一个包含目录树列表的文件.: > filename# > 会把文件"filename"截断为0长度.# 如果文件不存在, 那么就创建一个0长度的文件(与'touch'的效果相同).# : 是一个占位符, 不产生任何输出.> filename # > 会把文件"filename"截断为0长度.# 如果文件不存在, 那么就创建一个0长度的文件(与'touch'的效果相同).# (与上边的": >"效果相同, 但是在某些shell下可能不能工作.)COMMAND_OUTPUT >># 重定向stdout到一个文件.# 如果文件不存在, 那么就创建它, 如果存在, 那么就追加到文件后边.# 单行重定向命令(只会影响它们所在的行):1>filename# 重定向stdout到文件"filename".
1>>filename# 重定向并追加stdout到文件"filename".
2>filename# 重定向stderr到文件"filename".
2>>filename# 重定向并追加stderr到文件"filename".
&>filename# 将stdout和stderr都重定向到文件"filename".# 重定向stdout, 一次一行.LOGFILE=script.logecho "This statement is sent to the log file, \"$LOGFILE\"." 1>$LOGFILEecho "This statement is appended to \"$LOGFILE\"." 1>>$LOGFILEecho "This statement is also appended to \"$LOGFILE\"." 1>>$LOGFILEecho "This statement is echoed to stdout, and will not appear in \"$LOGFILE\"."# 每行过后, 这些重定向命令会自动"reset".# 重定向stderr, 一次一行.ERRORFILE=script.errorsbad_command1 2>$ERRORFILE # 错误消息发到$ERRORFILE中.bad_command2 2>>$ERRORFILE # 错误消息添加到$ERRORFILE中.bad_command3 # 错误消息echo到stderr,#+ 并且不出现在$ERRORFILE中.# 每行过后, 这些重定向命令也会自动"reset".#==============================================================================2>&1# 重定向stderr到stdout.# 得到的错误消息与stdout一样, 发送到一个地方.i>&j# 重定向文件描述符i 到 j.# 指向i文件的所有输出都发送到j中去.>&j# 默认的, 重定向文件描述符1(stdout)到 j.# 所有传递到stdout的输出都送到j中去.0< FILENAME< FILENAME# 从文件中接受输入.# 与">"是成对命令, 并且通常都是结合使用.## grep search-word <filename[j]<>filename# 为了读写"filename", 把文件"filename"打开, 并且分配文件描述符"j"给它.# 如果文件"filename"不存在, 那么就创建它.# 如果文件描述符"j"没指定, 那默认是fd 0, stdin.## 这种应用通常是为了写到一个文件中指定的地方.echo 1234567890 > File # 写字符串到"File".exec 3<> File # 打开"File"并且给它分配fd 3.read -n 4 <&3 # 只读4个字符.echo -n . >&3 # 写一个小数点.exec 3>&- # 关闭fd 3.cat File # ==> 1234.67890# 随机存储.|# 管道.# 通用目的的处理和命令链工具.# 与">"很相似, 但是实际上更通用.# 对于想将命令, 脚本, 文件和程序串连起来的时候很有用.cat *.txt | sort | uniq > result-file# 对所有的.txt文件的输出进行排序, 并且删除重复行,# 最后将结果保存到"result-file"中.
转载于:https://www.cnblogs.com/new0801/p/6176855.html
Linux Shell编程(25)——I/O 重定向相关推荐
- linux简单重定向代码,Linux Shell编程(26)——代码块重定向
像 while, until, 和 for 循环代码块, 甚至 if/then 测试结构的代码块都能做到标准输入的重定向. 即使函数也可以使用这种重定向的格式 .所有的这些依靠代码块结尾的 < ...
- Linux Shell 编程学习总结
Shell 教程 Shell简介:什么是Shell,Shell命令的两种执行方式 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成 ...
- 《Linux Shell编程从初学到精通(第2版)》pdf
下载地址:网盘下载 内容简介 编辑 shell是用户与内核进行交互操作的一种接口,是linux最重要的软件之一.目前最流行的shell称为bash shell,bash shell脚本编程以其简洁.高 ...
- Linux shell编程学习
Linux shell编程学习 shell是一个作为用户与Linux系统间接口的程序,它允许用户向操作系统输入需要执行的命令.这点与Windows的命令提示符类似,但Linux shell的功能更加强 ...
- Linux Shell编程学习笔记(4)
Linux Shell编程学习笔记(2015-7-20) 分类:linux shell 今天学习了Linux Shell中的控制结构.其实大多数语言的控制结构这一块都是基本类似的,有了C语言的基础 ...
- linux实验三shell程序设计,实验三 LINUX SHELL编程
精选文库 -实验三LINUX SHELL 编程 四.实验内容 本实验包含两个具体的SHELL程序编写任务,较为全面地涉及了SHELL 程序的设计方法和技术.内容如下: 1.创建以下菜单程序: USER ...
- linux —— shell 编程(文本处理)
导读 本文为博文 linux -- shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 基本文本处理 流编辑器sed a ...
- 【“计算机科学与技术”专业小白成长系列】Linux Shell 编程 极简教程
Linux Shell 编程 极简教程 内容摘要 本文是 Linux Shell 编程简单入门.主要内容: Linux 简介 Shell 编程入门 Kotlin 脚本与 Shell 脚本 Linux ...
- Linux Shell编程语句case
Linux Shell编程case语句 case语句 case语句适用于需要进行多重分支的应用情况. case分支语句的格式如下:case $变量名 in模式1)命令序列1;;模式2)命令序列2;; ...
- linux shell 处理日语,linux —— shell 编程(文本处理)
导读 本文为博文linux -- shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 1.基本文本处理 sort:用于排序,常 ...
最新文章
- phpadmin试用
- vi 整行 多行 复制与粘贴
- Haproxy配置文件详解
- vue路由跳转权限_如何在vue中实现路由跳转判断用户权限功能?
- 牛客多校8 - Interesting Computer Game(并查集)
- python实现弹幕_python实现b站直播自动发送弹幕功能
- python假设有三个列表_python基础三(列表和元组)
- NOIP2018 游记
- 小学数学思维导图集合 小学数学思维导图怎么画
- Android 系统(44)---多语言
- 个人晋升演讲ppt_如何写好公司级别晋升 PPT?
- Error排错:container runtime network not ready
- Linux WiFi使用
- 成绩不好的穷孩子,该做出选择了
- 十种能毁掉你一生职场生涯的心态
- 韩松手机摄影笔记第八课--手机人物摄影
- 记一次windows 10 无法升级问题的处理(系统盘MBR转GPT)
- [dp][前缀和][并查集] 洛谷 P3575 DOO-Around the world
- antlr (updating)
- 【java】java多线程及线程池详解
热门文章
- 0x7c97cd12 指令引用的 0x00000014内存。该内存不能为written
- C++11 std::ref()
- 归并排序(链表结构)
- mysql 添加实例_如何在多实例基础上再添加一个mysql的实例
- 计算机应用基础doc,计算机应用基础.doc
- sql怎么把小数变百分比_Excel怎么自动算出百分比?
- Java编程:哈希表
- Java编程:排序算法——希尔排序
- Node.js:package.json中的dependencies和devDependencies区别
- SQL:postgresql中在查询结果中将字符串转换为整形或浮点型