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:连 ...
随机推荐
- [微信开发] 微信JSAPI - 获取用户地理位置信息
参考博客 http://blog.csdn.net/u013142781/article/details/50503299 主要JS 方法 wx.getLocation 获取地理位置信息传递参数 成功 ...
- 设置gem源,解决下载慢的问题
问题解决的最好方法方法 使用google的DNS 8.8.8.8 / 8.8.4.4 另一种解决方式 修改rubygems的source源 $ gem source -r http://rubygem ...
- HTTP Status 500 - Could not open Hibernate Session for transaction;
错误原因: mysql数据库没有连接上 我们来启动mysql 方法1: 管理员身份运行 cmd 输入: net start mysql 方法2: Windows + R 运行 services.ms ...
- windows下特殊字符无法用来命名
原则上可以利用键盘输入的英文字母.符号.空格.中文等均可以作为合法字符,但由于以下字符由系统保留它用,因此不能用在文件命名中: : / \ ? * “ < > | 注: ...
- SpringBoot自定义错误页面,SpringBoot 404、500错误提示页面
SpringBoot自定义错误页面,SpringBoot 404.500错误提示页面 SpringBoot 4xx.html.5xx.html错误提示页面 ====================== ...
- Sysfs文件系统接口调试
首先需要初始化操作: s32 gtp_sysfs_init(void) { s32 ret ; debug_kobj = kobject_create_and_add("gtp", ...
- linux erase
map的erase windows和linux不同,而迭代器弄不好就失效 1 #include <iostream> 2 #include <map> 3 #include & ...
- 【zheng环境准备】安装zookeeper
1.zookeeper下载 wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar ...
- linux zendOptimizer安装
ZendChina官方:下面介绍一下关于在linux环境下Zend Optimizer 3.3的安装方法.本篇文章是基于RHEL5架构的linux系统. (1)ZendOptimizer 3.3.3版 ...
- J - Intersection
来源poj 1410 You are to write a program that has to decide whether a given line segment intersects a g ...