shell重定向(大于号,小于号,左右,2>&1,&)
本文的例子部分是引用网络上的一篇文章。
Linux的IO输入输出有三类
Standard Input 代码 0
Standard Output 代码 1
Standard Error 代码 2
举个例子:ls test.sh test1.sh >success.txt 2>&1
将前面执行结果的标准输出流写入success.txt文件,省略了1,全句为:ls
test.sh test1.sh 1>success.txt
2>&1。
错误输出用2,如2>error.txt。用&1表示类似1,和1绑定到一起,输出到一个文件,用&表示绑定在一起。而“&-”表示关闭。
但注意,
command > file 2>file 与command
> file 2>&1 是不同的:
1. 标准输入,标准输出与标准错误输出
标准输入:从键盘输入,即从键盘读入数据。
标准输出:把数据输出到终端上。
标准错误输出:把标准错误输出到终端上。
默认的标准输入指的是键盘,默认的标准输出与标准错误输出是屏幕或者是终端。
系统为这三个文件分配了文件标识符fd(file descripter).分别为0,1,2.
在Linux系统下,一切皆是文件,对文件的操作,一般要用到文件标识符。
2. 重定向
重定向分为输入重定向与输出重定向。
"<"表示输入重定向
">"表示输出重定向
所谓的输入重定向即输入不从键盘读入,而是从文件输入或其它。
所谓的输出重定向即不输出到终端上,而是输出到文件中去或其它。
"<<"代表当前标准输入来自命令行的一对分隔号的中间内容。
用">"输出时,如果文件不存在会自动建立一个文件,如果第二次输入时,会覆盖前一次的输入内容,
而">>"输出,表示追加到文件中,不覆盖。当前输出内容会追加到指定文件的尾部。
如:
python historical_report.py 2014 06 age | >log_sex_age.txt 2>&1
python historical_report.py 2014 06 age | >>log_sex_age.txt 2>&1
这里注意“|”两边的空格可有可无。>会覆盖原文件,>>只追加到文件尾。
3. 下面看一下几个例子
(1)输入重定向
[root@localhost ~]# wc</etc/inittab
53 229 1666
wc统计行数,单词数, 字符数
其中wc的输入来自 /etc/inittab
[root@localhost ~]# wc <<aa
> 1
> 11
> 111
> aa
3 3 9
wc统计分隔符aa之间的内容。
(2)输出重定向
[root@localhost ~]# ps -ef >a.txt //把进程的信息输出重定向到a.txt文件中去
[root@localhost ~]# ps -ef> >a.txt //进程信息追加到a.txt的文件中去
其实,所谓的输入输出重定向就是不从键盘输入和屏输出。
4. Linux下输出重定向的典型分析
(1) a.out > outfile 2>&1
(2) a.out 2> &1 >outfile
分析:
0代表标准输入,1代表标准输出,2代表标准错误输出。其中1(即>=1>)可省略,默认为标准输出。所以输出一般省略1,如cat "test" 1>log 2>eorr ,简写成,cat "test" >log 2>eorr。
(1)首先把a.out重定向到outfile中。然后 2>&1把标准错误输出重定向和1一样的文件中去。相当于把标准输出与标准错误输出都一起重定向到outfile中去。 &1代表的是标准输出的文件描述符。1一般放在左边表示标准输出重定向到什么位置,而1放在右边是重定向到标准输出中,所以用&区分一下,表示标准输出的文件描述符。2>1表示把标准错误重定向到文件1中去,2>&1则表示标准错误重定向到标准输出中去。
(2)首先把标准错误输出重定向到标准输出中,此时标准输出还在终端。因此标准错误也在终端。然后标准输出到outfile中去了。而标准错误还是在终端。
因此,(1)表示标准输出与标准错误都到outfile中去了。
(2)表示标准输出到outfile,但标准错误输出仍然在终端。
ls 1>/dev/null 2>/dev/null
ls >/dev/null 2>&1
/dev/null是一个垃圾箱,是一个无底洞,表示的含义为不显示。
即标准输出与标准错误输出不显示。
以上两个命令表示的含义是相同的。
另外,&>表示全部重定向:ls thereisno &> out.txt 所有IO重定向(&>中的&可以代表任意,0,1,2,3……)
一篇写的非常好的
http://blog.chinaunix.net/uid-9525959-id-3267166.html
shell重定向(大于号,小于号,左右,2>&1,&)的更多相关文章
- ibatis mybatis sql语句配置 符号不兼容 大于号 小于号<!CDATA[ ]>
ibatis mybatis sql语句配置 符号不兼容 大于号 小于号<!CDATA[ ]> 因为这个是xml格式的,所以不允许出现类似">"这样的字符,但是都 ...
- 【Mybatis】【2】处理大于号小于号及其他特殊字符
正文: 问题:用<的时候会报错.因为是xml文件,会被识别成标签 解决方法: 原sql:SELECT * FROM TABLE T WHERE T.AGE < 10; 1,转义字符.用转义 ...
- mybatis使用时遇到的一些问题------模糊查询、处理大于号小于号、相关函数替换空值
在mybatis中可能会用到的方法 1.模糊查询 <select id="showByIdName" parameterType="User" resul ...
- 转!!mybatis在xml文件中处理大于号小于号的方法
第一种方法: 用了转义字符把>和<替换掉,然后就没有问题了. SELECT * FROM test WHERE 1 = 1 AND start_date <= CURRENT_DA ...
- Mybatis在xml文件中处理大于号小于号的方法
第一种方法:用了转义字符把">"和"<"替换掉,然后就没有问题了. AND start_date <= CURRENT_DATE AND en ...
- java mybatis XML文件中大于号小于号转义
因为这个是xml文件不允许出现类似“>”这样的字符 用了转义字符把>和<替换掉,然后就没有问题了. <= 相当于 <= >= 相当于 >= XML转义字 ...
- 【转】mybatis在xml文件中处理大于号小于号的方法
http://blog.csdn.net/zheng0518/article/details/10449549 第一种方法: 用了转义字符把>和<替换掉,然后就没有问题了. SELECT ...
- MyBatis SQL处理大于、小于号
MyBatis mapper文件是xml文件,需要特殊字符如大于号.小于号后需要转义. 原字符 转义后字符 < < <= <= > > > >=
- java mybatis XML文件中大于号小于号转义(转载)
因为这个是xml文件不允许出现类似“>”这样的字符 用了转义字符把>和<替换掉,然后就没有问题了. XML转义字符 字段 符号 说明 < ; < 小于号 & ...
- 【Mybatis】 Mybatis在xml文件中处理大于号小于号的方法【问题】
处理大于小于号的方法: https://www.cnblogs.com/winner-0715/p/6132755.html 第一种方法:用转义字符把">"和"&l ...
随机推荐
- Cloudera: Start Impala service by cloudera manager in docker quickstart image
How to start Impala service in docker quickstart image docker run --hostname=quickstart.cloudera --p ...
- Bootstrap3 排版-改变大小写
通过这几个类可以改变文本的大小写. <p class="text-lowercase">Lowercased text.</p> <p class=& ...
- Docker学习笔记4: Docker-Compose—简化复杂容器应用的利器
本文转载自http://www.tuicool.com/articles/AnIVJn. 因Python语言,个人也没学过,不是太熟悉,这篇文章的代码格式排版不准确爆了很多错,让我走了好多坑,不过还是 ...
- 剑指Offer——知识点储备-数据库基础
剑指Offer--知识点储备-数据库基础 数据库 事务 事务的四个特性(ACID): 原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Dura ...
- github pages + Hexo + 域名绑定搭建个人博客增强版
概述 前面我们用github pages + Hexo 搭建了一个简单版的个人博客系统,但是里面的内容单调,很多功能不够完善,所以我们需要对yelle 的主题进行优化和完善.基本搭建请访问:http: ...
- norflash启动和nandflash启动
S3C2440的启动时读取的第一条指令是在0x00上,分为成nand flash和nor flash上启动. 1)nand flash:适合大容量数据存储,类似硬盘: 2)nor flash:适合小容 ...
- static修饰符详解
static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...
- Servlet - 基础
Servlet 标签 : Java与Web HTTP协议 HTTP(hypertext transport protocol),即超文本传输协议.这个协议详细规定了浏览器(Browser)和万维网服务 ...
- iOS开发之自己封装的提示框(警告框)样式BHAlertView
最近需要使用到提示框(警告框)进行信息的展示和提醒,所以进行了一个类的封装,想用Swift调用此OC文件,但是发现有些困难,所以暂时先把OC代码进行展示,随后再好好研究一下在Swift中的使用. 对于 ...
- FFmpeg源代码结构图 - 解码
===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...