linux中有三种标准输入输出,分别是STDIN,STDOUT,STDERR,对应的数字是0,1,2。STDIN就是标准输入,默认从键盘读取信息;STDOUT是标准输出,默认将输出结果输出至终端,也就是显示器之类的东西;STDERR是标准的错误信息,默认也会显示在终端上。由于STDOUT与STDERR都会默认显示在终端上,为了区分二者的信息,就有了编号的0,1,2的定义,用1表示STDOUT,2表示STDERR。
下面举个例子:以rhce中的例子为例。
1、在系统中创建一个普通用户test;
2、以普通用户登录,或者以root登录 su -test 切换至普通用户test;
3、执行 find /etc -name passwd 命令,默认会将命令的执行结果(STDOUT)与错误信息(STDERR)都输出至终端显示器。
4、体验一下编号1,2的作用,find /etc -name passwd >find.out 2>find.err,这里会将STDOUT与STDERR分别存放至find.out和find.err中,该命令也可以写成下面三种形式,大家可以体会一下编号的意义。
find /etc -name passwd 1>find.out 2>find.err
find /etc -name passwd 2>find.err >find.out
find /etc -name passwd 2>find.err 1>find.out
我个人理解就是find /etc -name passwd的命令的执行结果输出正确的输出(STDOUT)被1接收,错误的信息(STDERR)被2接收。
5、若要将所有的输出及错误信息都显示出来,可以用&表示全部1和2的信息,例如:
find /etc -name passwd &>find.all
6、有时候希望将错误的信息重新定向到输出,就是将2的结果重定向至1中就有了"2>1"这样的思路,如果按照上面的写法,系统会默认将错误的信息(STDERR)2重定向到一个名字为1的文件中,而非所想的(STDOUT)中。因此需要加&进行区分。就有了 2>&1 这样的用法,举例:
find /etc -name passwd 2>&1 |less
7、有时候还能看到这样的用法:
find /etc -name passwd &2>&1 |less
这里可以分解成
find /etc -name passwd & 表示前面的命令放到后台执行。
2>&1 |less 表示将错误信息重定向至标准输出,并用less进行分页显示。

原文:http://blog.csdn.net/zhoubl668/article/details/27657201

这篇文章解释的更清楚:http://www.runoob.com/linux/linux-shell-io-redirections.html

==========================补充==================================

文件描述符及重定向:
文件描述符是与文件输入、输出相关联的整数。它们用来跟踪已打开的文件。最常见的文件描述符是stdin、stdout和stderr。我们甚至可以将某个文件描述符的内容重定向到另一个文件描述符中。
在编写脚本的时候会频繁使用标准输入(stdin)、标准输出(stdout)和标准错误(stderr)。通过内容过滤将输出重定向到文件是我们平日里的基本任务之一。当命令输出文本 时,这些输出文本有可能是错误信息,也可能是正常的(非错误的)输出信息。单靠查看输出的文本本身,我们没法区分哪些是正常,哪些是错误。不过可以通过文件描述符来解决这个问题,将那些与特定描述符关联的文本提取出来。
文件描述符是与某个打开的文件或数据流相关联的整数。文件描述符0、1以及2是系统预留的。
 0 —— stdin(标准输入)。
 1 —— stdout(标准输出)。
 2 —— stderr(标准错误)。
(1) 用下面的方法可以将输出文本重定向或保存到一个文件中:
$ echo "This is a sample text 1" > temp.txt
这种方法通过截断文件的方式,将输出文本存储到文件temp.txt中,也就是说在把echo命令的输出写入文件之前,temp.txt中的内容首先会被清空。
(2) 将文本追加到目标文件中,看下面的例子:
$ echo "This is sample text 2" >> temp.txt
(3) 查看文件内容:
$ cat temp.txt
This is sample text 1
This is sample text 2
(4) 来看看什么是标准错误以及如何对它重定向。当命令输出错误信息时,stderr信息就会被打印出来。
$ ls +
ls: cannot access +: No such file or directory

这里,+是一个非法参数,因此将返回错误信息。
成功和不成功的命令:
当一个命令发生错误并退回时,它会返回一个非0的退出状态;而当命令成功完成后,它会返回数字0。退出状态可以从特殊变量$?中获得(在命令执行之后立刻运行echo $?,就可以打印出退出状态)。

下面的命令会将stderr文本打印到屏幕上,而不是文件中(而且因为并没有stdout的输出,所以out.txt没有内容):
$ ls + > out.txt
ls: cannot access +: No such file or directory

下面的命令中,我们将stderr重定向到out.txt:
$ ls + 2> out.txt #正常运行
你可以将stderr单独重定向到一个文件,将stdout重定向到另一个文件:
$ cmd 2>stderr.txt 1>stdout.txt
还可以利用下面这个更好的方法将stderr转换成stdout,使得stderr和stdout都被重定向到同一个文件中:
$ cmd 2>&1 output.txt
或者这样:
$ cmd &> output.txt    ---这三种方式用得多一些

linux 2>&1的用法的更多相关文章

  1. Linux中find常见用法

    Linux中find常见用法示例 ·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \; find命令的参数 ...

  2. Linux关于watch的用法

    Linux关于watch的用法 2011-07-20      0个评论       收藏    我要投稿 watch 是一个非常实用的命令,基本所有的 Linux 发行版都带有这个小工具,如同名字一 ...

  3. [转]Linux中find常见用法示例

    Linux中find常见用法示例[转]·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;find命令的参 ...

  4. Linux下find命令用法详解

    Linux下find命令用法详解   学神VIP烟火 学神IT教育:XueGod-IT   最负责任的线上直播教育平台   本文作者为VIP学员 烟火   第一部分:根据文件名查找   1.在当前目录 ...

  5. linux中make的用法

    一.linux中make的用法 目的:       基本掌握了make 的用法,能在Linux系统上编程.环境:       Linux系统准备:       准备三个文件:file1.c, file ...

  6. Linux中“!"的神奇用法

    前言 实际上,不起眼的“!”在linux中有着很多让你惊叹的妙用.本文就来细数那些“!”的神奇用法. 执行上一条命令 例如,在执行完上面一条命令后,可以使用下面的方式再次执行上一条命令: $ wher ...

  7. Linux中sed的用法实践

    Linux中sed的用法实践 参考资料:https://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html http://www.fn139 ...

  8. Linux中Sed的用法

    Linux中Sed的用法 sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为: ...

  9. Linux tar命令高级用法——备份数据

    Linux tar命令高级用法——备份数据 2015-12-31 Linux学习 Linux上有功能强大的tar命令,tar最初是为了制作磁带备份(tape archive)而设计的,它的作用是把文件 ...

  10. (12)Linux shell之read 用法

    Linux shell之read 用法 #!/bin/bash#read 用来读取屏幕输入或是读取文件内容.read -p  "please input you  name: " ...

随机推荐

  1. andriod 错误:Only the original thread that created a view hierarchy can touch its views——Handler的使用

    package com.example.yanlei.myapplication; import android.media.MediaMetadataRetriever; import androi ...

  2. ActiveX控件开发

    VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程 开篇语:最近在弄ocx控件发布到asp.net网站上使用,就是用户在使用过程中,自动下载安装ocx控件.(此文章也是 ...

  3. glassfish3 读不到web程序的jar包

    现在项目中用到glassfish3,部署了一个web程序.可以访问到首页,但是在登陆的时候提示找不到数据库的驱动包.这个jar包我是放在web-inf/lib下的.但是glassfish就是报找不到j ...

  4. Android之使用XMLPull解析xml(二)

    转自:http://www.blogjava.net/sxyx2008/archive/2010/08/04/327885.html 介绍下在Android中极力推荐的xmlpull方式解析xml.x ...

  5. Asp.Net中自以为是的Encode

    Asp.Net 引擎可能是不错,但是它把程序员想的太笨,会自以为是做很多自动的 Encode 和 Decode,以下文举例: 如果客户端我们 post 了如下的数据, 但是你实际得到的是: 也就是说, ...

  6. UEFI+GPT引导基础篇 :什么是GPT,什么是UEFI?

    GUID Partition Table (GPT) is a standard for the layout of the partition table on a physical storage ...

  7. python2 和 python3兼容写法

    一:使用ImportError,Python3中将一些Python2的模块名称做了修改,需要我们做一些处理来保证代码在不同Python版本中能够正常运行 # -*- coding: utf- -*- ...

  8. JavaBean示例

    例1.通过非可视化的JavaBean,封装邮箱地址对象,通过JSP页面调用该对象来验证邮箱地址是否合法. (1)创建名称为Email的JavaBean对象,用于封装邮箱地址,关键代码如下: packa ...

  9. freetds简介、安装、配置及使用介绍

    什么是FreeTDS 简单的说FreeTDS是一个程序库,可以实现在Linux系统下访问微软的SQL数据库! FreeTDS 是一个开源(如果你喜欢可以称为自由)的程序库,是TDS(表列数据流 )协议 ...

  10. 附1 rabbitmq常用命令

    1.rabbitmq的启动和停止 rabbitmq-server (前台启动) rabbitmq-server -detached(后台启动) rabbitmqctl stop(停止) 2.查看rab ...