Linux中数据流重定向的意思是将某个命令执行后应该要出现在屏幕上的数据传输到其他地方,例如文件或设备之类。

一、stadard output与standard error output

首先介绍一下命令执行过程的数据传输情况:

图中的standard output和standard error output分别代表“标准输出”和“标准错误输出”。这两个命令默认都是输出到屏幕中来。

标准输出:命令执行所回传的正确的信息。

标准错误输出:命令执行失败后,所回传的错误信息。

我们通过数据流重定向功能可以将这两条信息分开,分别传送到其他的文件或设备中去。

传送使用的特殊字符是:

标准输入(stdin):代码为0,使用<或<<;

标准输出(stdout):代码为1,使用>或>>;

标准错误输出(stderr):代码为2,使用2>或>>。

范例:

命令ll /:屏幕会显示文件名信息。

而ll / > /tmp/fileinfo:屏幕无任何信息。

ll /tmp/fileinfo:可以发现有一个新文件被创建(文件不存在时),里面的内容就是原本应该显示在屏幕上的信息。

要注意的是,如果我再次使用重定向功能>:ll /home > /tmp/fileinfo,将信息重定向到文件/tmp/info中,则原有的信息会被覆盖(文件已存在时)。如果要将数据叠加而不是覆盖,那使用符号>>就可以了。

stdout代码为1,当我们仅用>和>>默认就是1>,1>>。而当我们要重定向standard error output数据时,用2>和2>>即可。其意义和stdout一样。

下面再来看一个范例:

find /home –name .bashrc> list

可以发现list里面存储了正确的信息,但是错误的信息还是显示在了屏幕上面。那么如果要将正确信息和错误信息分别存入不同的文件呢,应该怎么办?

find /home –name.bsdhrc > list_right 2> list_error

这样就可以了。

二、/dev/null垃圾黑洞设备与特殊写法

此功能适用于我们知道有错误信息要发生,我们不想将其存储或者显示出来而将其忽略。

范例:

find /home –name.bashrc 2> /dev/null

这样屏幕上就只有正确的数据,错误信息被忽略了。

如果我们想将正确数据和错误数据写入同一个文件呢?这个时候就要适用特殊写法了。

范例:将命令的数据全部写入list文件中。

find /home –name.bashrc >list 2> list   //错误

find /home –name.bashrc >list 2> &1   //正确:推荐

find /home –name.bashrc &>list       //正确

第一行错误的原因是:两条数据同时写入一个文件,又没有使用特殊写法,此时两条数据会交叉写入该文件内,造成次序错乱。最终产生的文件里面数据排列会很混乱。

三、standard input:<和<<

可以将原本由键盘输入的数据由文件替代。

范例:

cat > catfile< ~/.bashrc

可以发现catfile里面的内容就是~/.bashrc里面的内容。

而<<代表的是结束输入的意思。

范例:我要用cat直接将输入的信息输出到catfile中,而且由键盘输入eof结束。可以这样做:

cat > catfile<< “eof”

> This is atest

> OK,I willstop.

> eof

这样就不必使用Ctrl+d来结束。

【Linux入门学习之】数据流重定向相关推荐

  1. 【Linux】Linux入门学习之常用命令四

    介绍 这里是小编成长之路的历程,也是小编的学习之路.希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡. 一个人为什么要努力? ...

  2. 分享:嵌入式Linux入门学习指导

    很多嵌入式linux初学者对嵌入式linux学习十分迷茫,不知道该怎么一步步学习,嵌入式linux学习方法,学习的流程步骤以及学习过程中需要看哪些好的书籍.下面凌阳教育嵌入式培训网就为大家整理的嵌入式 ...

  3. linux vim配置c,Linux入门学习教程:GNU C及将Vim打造成C/C++的半自动化IDE

    C语言在Linux系统中的重要性自然是无与伦比.不可替代,所以我写Linux江湖系列不可能不提C语言.C语言是我的启蒙语言,感谢C语言带领我进入了程序世界.虽然现在不靠它吃饭,但是仍免不了经常和它打交 ...

  4. 适合小白的Linux入门学习教程,从安装到实操(涵盖各种常用指令,超详细!)

    Linux入门学习 Linux简介 Linux是什么 Linux的特点 Linux和Windows的区别 Linux入门 我们为什么要学习Linux 环境搭建 安装CentOS 购买云服务器 走进Li ...

  5. 【Linux入门学习之】Ubuntu常用软件

    [Linux入门学习之]Ubuntu常用软件 速配指南之软件参考 本文定位:作为速配指南的补充,列出国内用户比较常用的软件.请将论坛软件推荐版块的内容逐步转移至wiki,而非本文. 本文作用:为新手指 ...

  6. 【Linux入门学习之】Ubuntu常用软件 速配指南之软件参考

    [Linux入门学习之]Ubuntu常用软件 速配指南之软件参考 本文定位:作为速配指南的补充,列出国内用户比较常用的软件.请将论坛软件推荐版块的内容逐步转移至wiki,而非本文. 本文作用:为新手指 ...

  7. 嵌入式linux入门学习规划

    嵌入式linux入门学习规划 如何理解嵌入式系统 ◆嵌入式系统是面向用户.面向产品.面向应用的,它必须与具体应用相结合才会具有生命力.才更具有优势.因此可以这样理解上述三个面向的含义,即嵌入式系统是与 ...

  8. oracle安装搜狗输入法教程,Linux入门学习教程:在Ubuntu 14.04中安装使用搜狗拼音输入法...

    然后,访问搜狗输入法Linux版的官网,http://pinyin.sogou.com/linux,下载搜狗输入法Linux版.从官网可以看到,该输入法官方只支持Ubuntu(不过网上有人通过将deb ...

  9. 【Linux】Linux入门学习之常用命令二

    介绍 这里是小编成长之路的历程,也是小编的学习之路.希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡. 一个人为什么要努力? ...

  10. 【Linux】Linux入门学习之常用命令一

    介绍 这里是小编成长之路的历程,也是小编的学习之路.希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡. 一个人为什么要努力? ...

最新文章

  1. python快速自学方式-Python自学之路 ,自学Python快速入门方法
  2. python关于七巧板的代码_Css打造一个简单的静态七巧板
  3. java获取整点与凌晨的时间戳
  4. 方法重写(重点)-->多态
  5. Linux下的用户切换命令
  6. STM32工作笔记0092---CAN通信基础知识介绍-M3
  7. [转]Ubuntu terminator 无法打开解决方案
  8. python批量下载b站_python 批量下载bilibili视频的gui程序
  9. JUC本质解析+进程/线程
  10. 数学知识与计算机科学中的应用,浅谈计算机科学技术在数学思想中的应用
  11. 一个关于数组数据检查的问题,有没有更好的方法。
  12. 自考计算机00051笔记,自考00051 管理系统中计算机应用自考资料笔记自考小抄.doc...
  13. ECharts饼状图legend显示Value所占百分比
  14. 计算机专业研究生平均月薪,广东:计算机专业研究生月薪过万 本科生学针灸推拿工资最高...
  15. 基于nodejs的excel表格合并工具
  16. 【面向对象-09】子类、父类方法重写和覆盖
  17. App云测试平台免费功能汇总
  18. 全新动态视频壁纸微信小程序源码下载支持多种分类短视频另外也有静态壁纸
  19. vertical-align相关解析+图片居中
  20. (在WPS或者WORD中使用MathType编辑数学公式)写论文必备

热门文章

  1. 学习OpenVINO笔记之Inference Engine
  2. POI处理超过65536条记录
  3. [Unity] 战斗系统学习 3:FlowCanvas 中的 Input System
  4. Mybatis(10)properties标签的使用及细节,typeAliases和package标签
  5. CSS文字颜色渐变 - 案例篇
  6. vue+axios+qs序列化 “三步解析”【含demo实例】- 代码篇
  7. 8.0服务器维护时间,魔兽世界8.0服务器维护把玩家心态搞崩 网友:喜闻乐见
  8. git head指向老版本_Git最全总结
  9. redis热点key解决方案_缓存穿透,缓存雪崩,4种解决方案分析
  10. 简约黑板擦表白特效网源码