文档章节

小蚂蚁学习Linux(10)——Linux输出重定向和输入重定向

嗜学如命的小蚂蚁
 嗜学如命的小蚂蚁
发布于 2015/11/05 18:02
字数 922
阅读 127
收藏 8

说起输出重定向,先了解一下什么是标准的输入输出设备:

    设备                                    文件名                        文件描述符                            类型

    键盘                                    /dev/stdin                        0                                    标准输入

    显示器                                /dev/sdout                        1                                    标准输出

    显示器                                /dev/sdterr                        2                                    标准错误输出

    虽然在现代输入设备还有什么鼠标,游戏手柄什么的,输出设备还有什么投影仪了打印机了,但是在最早期就是一个键盘一个显示器走天下。


输出重定向

    >    大于号,把本来应该输出到屏幕上的内容显示在文件中,相当于保留了日志(就是这么一个意思)

    例如:    ls    >    test.log    把当前目录下的内容保存在test.log之中。但是这种方式只能是覆盖,只能看到最后一次重定向的内容。

    >>    双大于号,同样是把本来应该输出到屏幕上的内容显示在文件中,但是,这种方式是以追加的方式写入,之前的日志内容还保留,很显然,这种方式要比覆盖好的多。

    但是,有个问题,在命令执行成功的时候,它确实能把内容重定向到test.log,但是当命令不存在或者命令出错的时候,重定向就失效了,怎么把命令出错的信息重定向下来呢?

    2>    可以将错误信息重定向到日志文件,同样的,一个大于号是覆盖的意思。

    例如:    sldfo(随便写的一个命令)    2>test.log    注意:错误信息重定向的时候大于号前后不要加空格。

    2>>    同上,但是两个大于号是追加的意思。

    例如:    sldjfs    2>>test.log    同样的,大于号前后不要加空格


    其实,这两种写法都有一个弊端,不带2的重定向只能执行成功的命令,而带着2的重定向只能执行失败的命令,这使用起来就显得很纠结了,很不爽    (‧‧)nnn     要想爽一下,推荐使用以下命令:

    &>    不管命令是否能够正确执行,都会把输出的信息重定向到同一个文件中,当然,老惯例,这是覆盖。

    例如:  ls    &>    test.log

    &>>    同样的,这是追加。这样使用起来就爽快多了,正确的有正确的信息,错误的有错误的信息,多省心    ╰( ̄▽ ̄)╭   

    以上两种方法是推荐的写法,其实还有两个方法跟上面两个方法是一样的效果,有点啰嗦,知道就行:

    命令    >    文件    2>&1    以覆盖的方式,把正确输出和错误输出都保存到同一个文件中去。功能上完全等于    &>。

    命令    >>    文件    2>&1   以追加的方式……    功能上完全等同于    &>>

    注意的一点:无论哪一个错误输出命令,大于号前后都必要加空格。

    对了,还有一个使用方法

    命令    >>    文件1    2>>文件2        把正确的输出追加到文件1中,把错误的输出追加到文件2中,这个感觉就更加清晰明了了。


输入重定向

    和 > 正好相反,输入重定向用的是小于号 <    。可以使用wc命令测试一下。

    wc    【选项】    【文件名】

    选项    -c    统计字节数    -w    统计单词数    -l    统计行数

    例如:    wc    <    test.log    就回显示出字节数、单词数、行数。

    输入重定向不常用,了解一下。

学PHP的小蚂蚁 原创博客 http://my.oschina.net/woshixiaomayi/blog



© 著作权归作者所有

共有 人打赏支持
嗜学如命的小蚂蚁
粉丝 142
博文 161
码字总数 100864
作品 0
郑州
程序员
私信 提问
加载中

评论(2)

嗜学如命的小蚂蚁
嗜学如命的小蚂蚁

引用来自“单行道”的评论

学习
一起加油
单行道
单行道
学习
介绍 Linux 中的管道和命名管道

要在命令间移动数据?使用管道可使此过程便捷。 在 Linux 中, 能让你将一个命令的输出发送给另一个命令。管道,如它的名称那样,能重定向一个进程的标准输出、输入和错误到另一个进程,以便...

作者: Archit Modi
09/08
0
0
Linux技术学习:Io重定向 Redirection 详解

文件描述符在bash中比较少用,从0开始用户表示进行的数据流,0表示标准输入,1表示标准输出,2表示标注错误输出,其他从3开始。最为常用的场景是将错误消息输出到某个文件,可以加上2>file到...

长沙千锋
05/03
0
0
Bash简介 & Bash是如何处理命令的

什么是shell 简单点理解,就是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具。实际上,在shell和计算机硬件之间还有一层东西那就是系统内核了。打个比方,如果把计算机硬件比...

OldChicken_
11/03
0
0
linux shell数据重定向(输入重定向与输出重定向)详细分析

导读小文:【http://www.ibm.com/developerworks/cn/linux/l-iotips/】 技巧:Linux I/O重定向的一些小技巧 简介: Linux I/O 重定向虽然很简单,但在脚本编写、系统管理时却要常常打交道,搞...

无明时空
2013/03/06
0
0
Linux通配符与特殊符号知识大全汇总

内容来源《跟老男孩学习Linux运维:核心基础实战》,预计于2018年7月出版,敬请期待,QQ群385168604交流。 Linux菜鸟及新手的福音,相当于是鸟哥私房菜(太老旧了)的2018最新企业级实战升级版...

老男孩oldboy
05/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

移动端Appium自动化测试框架的优势

众所周知,现在市面上的移动端操作系统已被Android和IOS占领,其中Android的份额更是在80%以上。那么面对市面上林林总总的自动化测试框架和工具,为什么说Appium在自动化测试框架的统治级优势...

程序猿拿Q
3分钟前
0
0
设计模式 之 观察者模式

设计模式 之 观察者模式 场景 场景比较简单,当一个对象的状态发生改变时,自动通知所有依赖(或观察)它的对象。 比如:发布/订阅 原理:发布者存储N个订阅者的对象信息,当发布者发布消息时...

GMarshal
7分钟前
0
0
linux 常用

netstat -tunlp |grep 8080 查看8080 占用 netstat -tunlp 用于查看所有的端口号的进程情况

west_coast
12分钟前
1
0
Bytom信息上链教程

比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 很多了解比原链的都知道,比原链是专注信息和数字资产在链上交互和流转的...

比原链Bytom
17分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部