文件描述符我们常见的就是系统预留的0,1和2这三个,他们的意义分别有如下对应关系:

  • 0 —— stdin(标准输入)
  • 1 —— stdout (标准输出)
  • 2 —— stderr (标准错误)

其中,shell编程里经常用到的就是描述符1,和描述符2。

如:ls命令执行的时候,在标准输出 输出了结果,我们可以通过重定向符号,把标准输出的结果重定向到文件。

ghostwu@dev:~/linux/std_err_out$ ls
ghostwu@dev:~/linux/std_err_out$ touch ghostwu.txt
ghostwu@dev:~/linux/std_err_out$ ls
ghostwu.txt
ghostwu@dev:~/linux/std_err_out$ ls
ghostwu.txt
ghostwu@dev:~/linux/std_err_out$ ls > std_out.txt
ghostwu@dev:~/linux/std_err_out$ cat std_out.txt
ghostwu.txt
std_out.txt
ghostwu@dev:~/linux/std_err_out$ ls > std_out1.txt
ghostwu@dev:~/linux/std_err_out$ cat std_out1.txt
ghostwu.txt
std_out1.txt
std_out.txt

> 和 1>是等价的,都表示标准输出重定向。

错误重定向:

什么时候会产生错误重定向?比如,最简单,不存在某文件

ghostwu@dev:~/linux/std_err_out$ ls
ghostwu.txt std_out1.txt std_out.txt
ghostwu@dev:~/linux/std_err_out$ ls std_err.txt
ls: cannot access 'std_err.txt': No such file or directory

我们可以把错误信息,通过错误重定向写入文件。

ghostwu@dev:~/linux/std_err_out$ ls std_error.txt
ls: cannot access 'std_error.txt': No such file or directory
ghostwu@dev:~/linux/std_err_out$ ls
ghostwu.txt std_out1.txt std_out.txt
ghostwu@dev:~/linux/std_err_out$ ls std_error.txt > output_error.txt
ghostwu@dev:~/linux/std_err_out$ cat output_error.txt
ls: cannot access 'std_error.txt': No such file or directory
ghostwu@dev:~/linux/std_err_out$

2>&1,&1的含义就可以理解为用标准输出的引用

2>表示错误输出,&等价于标准输出

ghostwu@dev:~/linux/std_err_out$ ls a.txt >&
ls: cannot access 'a.txt': No such file or directory
ghostwu@dev:~/linux/std_err_out$ ls
ghostwu.txt output_error.txt std_out1.txt std_out.txt

2>/dev/null意思就是把错误输出到“黑洞”

ghostwu@dev:~/linux/shell/pipe$ ls ghostwu.txt
ls: cannot access 'ghostwu.txt': No such file or directory
ghostwu@dev:~/linux/shell/pipe$ ls ghostwu.txt >/dev/null
ghostwu@dev:~/linux/shell/pipe$ ls ghostwu.txt >/dev/null
ghostwu@dev:~/linux/shell/pipe$

>/dev/null 2>&1默认情况是1,也就是等同于1>/dev/null 2>&1。意思就是把标准输出重定向到“黑洞”,还把错误输出2重定向到标准输出1,也就是标准输出和错误输出都进了“黑洞”

ghostwu@dev:~/linux/shell/pipe$ ls ghostwu.txt
ghostwu.txt
ghostwu@dev:~/linux/shell/pipe$ ls ghostwu.txt >/dev/null
ghostwu@dev:~/linux/shell/pipe$ ls ghostwu2.txt >/dev/null
ls: cannot access 'ghostwu2.txt': No such file or directory
ghostwu@dev:~/linux/shell/pipe$ ls ghostwu2.txt >/dev/null >&
ghostwu@dev:~/linux/shell/pipe$ ls ghostwu.txt >/dev/null >&
ghostwu@dev:~/linux/shell/pipe$ ls ghostwu2.txt >/dev/null >&

2>&1 >/dev/null意思就是把错误输出2重定向到标准输出1,也就是屏幕,标准输出进了“黑洞”,也就是标准输出进了黑洞,错误输出打印到屏幕

ghostwu@dev:~/linux/shell/pipe$ ls ghostwu.txt >&>/dev/null
ghostwu@dev:~/linux/shell/pipe$ ls ghostwu2.txt >&>/dev/null
ls: cannot access 'ghostwu2.txt': No such file or directory
ghostwu@dev:~/linux/shell/pipe$

重定向,/dev/null, 1>, 2>什么意思?的更多相关文章

  1. >/dev/null 2>&1

    >/dev/null 2>&1 大部分在 crontab 计划任务中都会年到未尾带 >/dev/null 2>&1,是什么意思呢? > 是重定向 /dev ...

  2. Shell中的>/dev/null 2>&1 与 2>&1 >/dev/null 与&>/dev/null 的区别

    默认情况下,总是有三个文件处于打开状态,标准输入(键盘输入).标准输出(输出到屏幕).标准错误(也是输出到屏幕),它们分别对应的文件描述符是0,1,2 .那么我们来看看下面的几种重定向方法的区别: & ...

  3. '>/dev/null 2>&1' 是什么意思?

    '>' 用于重定向 '/dev/null' 是一个黑洞,任何发送的数据都将被丢弃 '2' 是标准错误的文件描述符 '>' 用于重定向 '&' 是文件描述符的符号(没有它,以下1将被 ...

  4. crontab 常见 /dev/null 2>&1 详解

    大部分在 crontab 计划任务中都会年到未尾带 >/dev/null 2>&1,是什么意思呢? > 是重定向 /dev/null 代表空设备文件 1 表示stdout标准 ...

  5. 添加crontab为什么要重定向输出到/dev/null

    如果crontab不重定向输出,并且crontab所执行的命令有输出内容的话,是一件非常危险的事情.因为该输出内容会以邮件的形式发送给用户,内容存储在邮件文件 /var/spool/mail/$use ...

  6. Linux Shell脚本入门--(linux空设备文件和重定向)>/dev/null 2>&1

    linux空设备文件和重定向 输出/输入重导向 >      >>   <   <<   :>   &>   2&>   2< ...

  7. /dev/null 2>&1的意思(可以直接参考shell重定向那篇,/dev/null是空设备)

    路还长 别太狂 以后指不定谁辉煌 2>&1 和 &> 的解释 Linux的IO输入输出有三类 Standard Input 代码 0 Standard Output 代码 ...

  8. shell 重定向 2>&1 2>/dev/null 理解笔记

    // 函数 输入输出重定向 1.函数 function hello(){ echo '1111' } ------- hello hello(){ // function 可以省略 echo '222 ...

  9. linux 重定向命令详解(如1>/dev/null 2>&1)

    基础 0:表示标准输入stdin 1:表示标准输出stdout,系统默认为1,可省略(即1>/dev/null等价于>/dev/null) 2:表示标准错误stderr >:表示重定 ...

随机推荐

  1. 27、通过visual s'tudio 验证 SOCKET编程:搭建一个TCP服务器

    本文就是在windows下进行socket编程,搭建一个TCP客户端. 在visual studio下编程,首先在windows下进行初始化(这点在linux下是不需要的): /* 初始化 Winso ...

  2. 2.DI依赖注入

    一:DI Dependency Injection ,依赖注入 is a :是一个,继承. has a:有一个,成员变量,依赖. class B { private A a;   //B类依赖A类 } ...

  3. Java并发控制机制

    在一般性开发中,笔者经常看到很多同学在对待java并发开发模型中只会使用一些基础的方法.比如volatile,synchronized.像Lock和atomic这类高级并发包很多人并不经常使用.我想大 ...

  4. 转---深入浅出妙用 Javascript 中 apply、call、bind

    作者:伯乐在线专栏作者 - chokcoco 如有好文章投稿,请点击 → 这里了解详情 如需转载,发送「转载」二字查看说明 这篇文章实在是很难下笔,因为网上相关文章不胜枚举. 巧合的是前些天看到阮老师 ...

  5. 【xsy1300】 原题的旅行 最短路+倍增

    题目大意:有一个$n$个点,$m$条边的无向图,玩家走过第$i$条边,血槽中的血会下降$v_i$点,如果不足$v_i$点,这人会当场去世. 这$n$个点中,有若干个是关键点,在这些关键点可以将血槽补满 ...

  6. 【xsy1596】旅行 期望+状压DP

    题目大意:有$m$个人要从城市$1$开始,依次游览城市$1$到$n$. 每一天,每一个游客有$p_i$的概率去下一个城市,和$1-p_i$的概率结束游览. 当游客到达城市$j$,他会得到$(1+\fr ...

  7. 【sping揭秘】20、spring的orm

    面向对象的操作方式,spring统一定义在org.springframework.jdbc.object以RdbmsOperation作为顶层抽象定义 Spring对各种ORM的集成 Spring的集 ...

  8. Jenkins系列之一——初识

    Jenkins Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. 功能 Jenkins功能包括 ...

  9. Mongoose基础

    为了保存网站的用户数据和业务数据,通常需要一个**数据库**.**MongoDB**和**Node.js**特别般配,因为MongoDB是基于文档的非关系型数据库,文档是按BSON(JSON的轻量化二 ...

  10. 从零开始学 Web 之 CSS3(四)边框图片,过渡

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...