0:表示键盘输入(stdin)
1:表示标准输出(stdout),系统默认是1
2:表示错误输出(stderr)

"command >/dev/null 2>&1 &"  与 "command 1>/dev/null 2>&1 &"  的意思一样

1) command:    表示shell命令或者为一个可执行程序
2) >:       表示重定向到哪里
3) /dev/null:  表示Linux的空设备文件
4) 2:      表示标准错误输出
5) &1:     &表示等同于的意思,  2>&1表示2的输出重定向于1
6) &:    表示后台执行,即这条指令执行在后台运行

1 >/dev/null:表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,不显示任何信息。
2>&1:表示标准错误输出重定向等同于标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设
件。


这条命令的意思就是在后台执行这个程序,并将错误输出2重定向到标准输出1,然后将标准输出1全部放到/dev/null文件,也就是清空.
所以可以看出" > /dev/null 2>&1 "常用来避免shell命令或者程序等运行中有内容输出。

重定向,例如 echo "Hello" > /root/1.txt

  • command > file 2>file
  • command > file 2>&1

相同点:上面两个命令都可是实现将执行command后的,标准及错误输出重定向到file文件中。

不同点: I/O效率上的差异
command 1>file 2>file 这样的写法,stdout和stderr都直接送到file中, file会被打开两次,这样stdout和stderr会互相覆盖,这样写相当使用了FD1和FD2两个同时去抢占file的管道。
command
1>file 2>&1 这条命令就将stdout直接送向file, stderr
继承了FD1管道后,再被送往file,此时,file只被打开了一次,也只使用了一个管道FD1,它包括了stdout和stderr的内容。从I/O
效率上,前一条命令的效率要比后面一条的命令效率要低,所以在编写shell脚本的时候,最多的时候我们会command 1>file
2>&1 这样的写法, 或 "command >file 2&1"

注意:

你要是写成这样:command >/dev/null 2>&1 &, 则第一个 > 的前面可以带有空格;但是如果你写成这样: command 1>/dev/null 2>&1 &, 则第一个 > 的前面最好不带有空格,不然1会被当成command的运行参数。 但第一个 > 的后面可带也可不带空格。   第二个 > 的左右均不能带有任何空格。因此比较保险的方法是所有 > 的前后都不带有空格,准没错。

详细理解 > /dev/null 2>&1的更多相关文章

  1. 具体的了解“>/dev/null 2>&1”

    Linux系统中不管是crontab里面.还是平时使用的命令.常常会碰到">/dev/null 2>&1".比方说:在Crontab Job里面,假设不想发送邮 ...

  2. Linux 下的两个特殊的文件 -- /dev/null 和 /dev/zero 简介及对比

    1.概论 -- 来自维基的解释 /dev/null  : 在类Unix系统中,/dev/null,或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一 ...

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

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

  4. shell中>/dev/null 2>&1

    本文转自http://www.kissyu.org/ 背景 我们经常能在shell脚本中发现>/dev/null 2>&1这样的语句.以前的我并没有去深入地理解这段命令的作用,照搬 ...

  5. linux下详解shell中>/dev/null 2>&1

    前言 相信大家经常能在shell脚本中发现>/dev/null 2>&1这样的语句.以前的我并没有去深入地理解这段命令的作用,照搬照用,直到上周我将这段命令不小心写成了2>& ...

  6. [转帖]shell 中的>/dev/null 2>&1 是什么鬼?

    shell 中的>/dev/null 2>&1 是什么鬼? http://blog.jobbole.com/109355/ 背景 我们经常能在shell脚本中发现>/dev/ ...

  7. (转)详解shell中>/dev/null 2>&1到底是什么

    转 原文地址:https://blog.csdn.net/zouli415/article/details/80651526 前言 相信大家经常能在shell脚本中发现>/dev/null 2& ...

  8. shell中 >/dev/null 2>&1是什么意思

    原文地址:http://juke.outofmemory.cn/entry/295292 我们经常能在 shell 脚本中发现 >/dev/null 2>&1 这样的语句.以前的我 ...

  9. linux中>/dev/null 2>&1和2>&1 > /dev/null

    转载:https://www.cnblogs.com/520playboy/p/6275022.html 背景 我们经常能在shell脚本中发现>/dev/null 2>&1这样的 ...

随机推荐

  1. Spring配置概述

    1.Spring容器 1)要使应用程序中的Spring容器成功启动,需要以下三方面的条件都具备: · Spring架构的类包都已经放在应用程序的类路径下: · 应用程序为Spring提供完备的Bean ...

  2. [转]useradd 与adduser的区别

    转自:Deit_Aaron的专栏 添加用户:useradd -m 用户名  然后设置密码  passwd 用户名 删除用户:userdel  -r  用户名 1. 在root权限下,useradd只是 ...

  3. PHP程序员的40点陋习,我几乎全部中枪

    1.不写注释 2.不使用可以提高生产效率的IDE工具 3.不使用版本控制 4.不按照编程规范写代码 5.不使用统一的方法 6.编码前不去思考和计划 7.在执行sql前不执行编码和安全检测 8.不使用测 ...

  4. Linux下拆分大文件

    linux split 命令 功能说明:切割文件. 语 法:split [--help][--version][-<行数>][-b <字节>][-C <字节>][- ...

  5. C/c++输入输出函数

    最全输入函数 c/c++一:c=getchar();功能:读入一个字符说明:调用此函数时要求在程序的第一行有预编译命令:#include<stdio>,不过在做c++时 有#include ...

  6. uva12230Crossing Rivers

    数学期望. 过每条河的时间的可能在[L/v,3*L/v]间均匀分布,数学期望为2*L/v. 然后在加上在陆上走的时间. #include<cstdio> #include<algor ...

  7. usaco /the first wave

    bzoj1572:贪心.先按时间顺序排序,然后用优先队列,如果时间不矛盾直接插入,否则判断队列中w最小的元素是否替换掉.(没用llWA了一次 #include<cstdio> #inclu ...

  8. ASIFormDataRequest实现post的代码示例

    用jquery实现的Post方法可能如下 var param = $.param({ data: JSON.stringify({"from":"234",&q ...

  9. (2)Spring集成Quartz定时任务框架介绍和Cron表达式详解

    在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等.我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作,但 ...

  10. 【转】iOS自动布局进阶用法

    原文网址:http://www.cnblogs.com/dsxniubility/p/4266581.html 本文主要介绍几个我遇到并总结的相对高级的用法(当然啦牛人会觉得这也不算什么). 简单的s ...