Linux I/O重定向
所谓I/O重定向简单来说就是一个过程,这个过程捕捉一个文件,或者命令,程序,脚本,甚至脚本中的代码块的输出,然后把捕捉到的输出,作为输入
发送给另外一个文件,命令,程序,或者脚本。谈到I/O重定向,就涉及到文件标识符(File Descriptor)的概念, 在Linux系统中,系统为每一个打开的文件
指定一个文件标识符以便系统对文件进行跟踪,文件标识符是一个数字,不同数字代表不同的含义,默认情况下,系统占用了3个,分别是
0标准输入(stdin)(键盘输入)
1标准输出(stdout) (屏幕输出)
2标准错误(stderr) (屏幕输出)
3-9是保留的标识符
请看以下例子,来描述一下他们的关系
ls /dev
#/dev 就是作为命令ls的标准输入,而打印在屏幕的结果就是标准输出
重定向就是把标准的输入或者输出更改成其他的方式,如:
ls /dev >filename
ls /dev >filename #同上等效 不指明文件标识符,系统默认的就是1
ls /dev >>filename #追加输出
ls /dev &>filename #"&"在这里代表标准输出和标准错误
i>&j命令,表示把文件标识符i重新定向到j,"&"理解为"取地址"
exec 2>&1
表示把标准错误重定向到标准输出
grep search-word
这个命令会让你从键盘输入的字符中查询
grep search-word <filename
等同于
grep search-word filename
文件标识符操作:
n<&- 关闭输入文件标识符n
<&-或<&- 关闭标准输入stdin
n>&- 关闭输出文件标识符n
>&-或>&- 关闭标准输出stdout n<>filename 表示把文件打开,并指明文件标识符为n >filename 清空文件
实例:
echo >filename #把字符串写到文件filename中
exec <>filename #把文件filename打开,并指定文件标识符为3
read -n <& #从文件中读4个字符
echo -n . >& #在第5个字符处写一个点,覆盖第5个字符,-n表示不换行
exec >&- #关闭文件标识符3
出处:
Linux I/O重定向的更多相关文章
- Linux I/O 重定向详解及应用实例
Linux I/O 重定向详解及应用实例 简解 > 输出 < 输入 >> 追加 & [> | < | >>]之前:输入输出; ls /dev & ...
- Linux下Shell重定向
1. 标准输入,标准输出与标准错误输出 Linux下系统打开3个文件,标准输入,标准输出,标准错误输出. 标准输入:从键盘输入数据,即从键盘读入数据. 标准输出:把数据输出到终端上. 标准错误输出:把 ...
- Linux入门-7 Linux管道、重定向以及文本处理
Linux管道.重定向以及文本处理 1 Linux多命令协作:管道及重定向 管道和重定向 2 Linux命令行文本处理工具 文件浏览 基于关键字搜索-grep 基于列处理文本-cut 文本统计-wc ...
- (转)linux exec与重定向
原文:http://xstarcd.github.io/wiki/shell/exec_redirect.html linux exec与重定向 exec和source都属于bash内部命令(buil ...
- Linux管道及重定向
Linux管道及重定向 对shell有一定了解的人都知道,管道和重定向是 Linux 中非常实用的 IPC 机制.在shell中,我们通常使用符合'|'来表示管道,符号'>'和'<'表示重 ...
- Linux标准输入、重定向与参数传递
Linux标准输入.重定向与参数传递 按惯例,每当运行一个新程序时,所有shell都为其打开3个文件描述符,即标准输入.标准输出以及标准错误.如果不做特殊处理,例如就像简单的命令ls,则这三个描述符都 ...
- [转]linux shell数据重定向(输入重定向与输出重定向)详细分析
在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件 ...
- linux c redirect 重定向
用execvp实现时,运行adb,如果adb 服务没有启动,会启动adb服务,启动adb服务时,pipe返回的管道在读的时候堵塞了. 查看了popen的源码,发现popen是用sh -c来执行的,避免 ...
- LINUX常用命令--重定向、管道篇(四)
一.Linux重定向 重定向能够实现Linux命令的输入输出与文件之间重定向,以及实现将多个命令组合起来实现更加强大的命令.这部分涉及到的比较多的命令主要有: 涉及到的比较多的命令主要有: cat:连 ...
随机推荐
- Spring源码学习:day2
前言: 我还是太懒了,连截图都懒得粘贴,故直接用书上说的话的截图吧. 代码的编写过程都是应该有一个入口的,所有的代码最终都是为了那个入口更加方便更加简单而产生的. 看代码的过程,就应该抓住主线,顺着主 ...
- Xcode6:模拟器消失了?
今天打开Xcode,选择模拟器时发现只剩下了“iPhone 5”和“iPhone 5s”,原来什么“iPad Air”,“iPhone 4s”的都哪里去了?丢了? 别着急,依次打开“Xcode-> ...
- [Object Tracking] Contour Detection through Tensorflow running on smartphone
From: 手机端运行卷积神经网络的一次实践 -- 基于 TensorFlow 和 OpenCV 实现文档检测功能 貌似不错的东西:移动端视觉识别模型:MobileNets Holistically- ...
- C#获取路径总结
一.获取当前文件的路径 1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName 获取模块的完整路径,包括文件名. ...
- mysql性能调整三板斧
大意是,用2/8原则,多快好省的解决大部分事情.所以三板斧,仅限整体调整,不牵扯具体细节. 1.innodb 使用innodb引擎 2.innodb_buffer_pool 调整和innodb有关的参 ...
- Qt编写GIF录屏工具(开源)
在平时的写作过程中,经常需要将一些操作动作和效果图截图成gif格式,使得涵盖的信息更全面更生动,有时候可以将整个操作过程和运行效果录制成MP4,但是文件体积比较大,而且很多网站不便于上传,基本上都支持 ...
- WCF中序列化(XML\JSON\Dt)
序列化 是将对象转换为容易传输的格式的过程.例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象.反之,反序列化根据流重新构造对象. 序列化描述了持久化 ...
- 理解PEP333-WSGI
声明:这篇文章只是为了整体理解WSGI,会忽略很多细节,要详细了解请参看文后的参考资料 WSGI概述 WSGI全称是Python Web Server Gateway Interface(Python ...
- Pro ASP.NET MVC –第三章 MVC模式
在第七章,我们将创建一个更复杂的ASP.NET MVC示例,但在那之前,我们会深入ASP.NET MVC框架的细节:我们希望你能熟悉MVC设计模式,并且考虑为什么这样设计.在本章,我们将讨论下列内容 ...
- php: Cannot send session cache limiter
修改php.ini中的session.auto_start = 0 为 session.auto_start = 1 MAC 的php.ini 在 /private/etc/ 目录下修改的时候发现su ...