command>file >& &

命令的最后一个&表示把该命令以后台的job的形式运行

一个命令的执行伴随着三种输入输出

标准输入(stdin):默认指向键盘的输入,可以通过标准输入重定向<,让标准输入指向文件输入

标准输出(stdout) :指命令产生的正常的输出,如echo aaa,标准输出默认指向终端显示器,可以通过输出重定向>,让标准输出重定向到文件

标准错误输出(stderr):指命令产生的错误信息的输出,如执行了不存在的命令t,标准错误输出也默认指向终端显示器,同样可以通过输出重定向>,让标准错误输出重定向到文件

所谓的输出重定向到文件,是指把默认输出到终端显示器的信息写入到指定文件

标准输入,标准输出,标准错误输出的文件描述符分别时0,1,2。

上面命令中

command 为要执行的命令

> 表示输出重定向

file 表示要重定向的文件名

2和1 分别指标准错误输出和标准输出,

而&1表示标准输出的引用,所以2>&1是指把标准错误输出重定向到标准输出的引用,即也重定向到file

例子

脚本

#!/bin/sh

t       //t命令不存在,会产生标准错误输出
date //会产生标准输出

执行脚本:未重定向的情况下标准错误输出和标准输出都显示在终端显示器

[vagrant@vmp2-local-dva01 ~]$ sh /var/www/pyxis2/system/fortest/test1.sh
/var/www/pyxis2/system/fortest/test1.sh: line : t: コマンドが見つかりません //标准错误输出显示到显示器
2019年 1月 18日 金曜日 :: JST //标准输出显示到显示器
[vagrant@vmp2-local-dva01 ~]$

标准输出重定向到testlog文件,标准错误输出不重定向

[vagrant@vmp2-local-dva01 ~]$ sh /var/www/pyxis2/system/fortest/test1.sh > testlog
/var/www/pyxis2/system/fortest/test1.sh: line : t: コマンドが見つかりません //标准错误输出未重定向,错误信息默认显示到显示器
[vagrant@vmp2-local-dva01 ~]$ cat testlog //标准输出重定向到testlog文件,所以标准输出写入到testlog文件,而没有显示到显示器
2019年 1月 18日 金曜日 :: JST
[vagrant@vmp2-local-dva01 ~]$

command >file   就相当于  command 1>file

标准输出不重定向,标准错误输出重定向到testlog

[vagrant@vmp2-local-dva01 ~]$ sh /var/www/pyxis2/system/fortest/test1.sh > testlog
2019年 1月 18日 金曜日 :: JST //标准输出未重定向,标准输出默认输出到显示器
[vagrant@vmp2-local-dva01 ~]$ cat testlog //标准错误输出重定向到testlog文件,所以错误信息写入到testlog文件,而没有在显示器显示
/var/www/pyxis2/system/fortest/test1.sh: line : t: コマンドが見つかりません
[vagrant@vmp2-local-dva01 ~]$

标准输出重定向到testlog1,标准错误输出重定向到testlog2

[vagrant@vmp2-local-dva01 ~]$ sh /var/www/pyxis2/system/fortest/test1.sh >testlog1 >testlog2
[vagrant@vmp2-local-dva01 ~]$ cat testlog1
2019年 1月 18日 金曜日 :: JST
[vagrant@vmp2-local-dva01 ~]$ cat testlog2
/var/www/pyxis2/system/fortest/test1.sh: line : t: コマンドが見つかりません
[vagrant@vmp2-local-dva01 ~]$

标准输出重定向到文件testlog,标准错误输出重定向到标准输出的引用

[vagrant@vmp2-local-dva01 ~]$ sh /var/www/pyxis2/system/fortest/test1.sh >testlog >&
[vagrant@vmp2-local-dva01 ~]$ cat testlog
/var/www/pyxis2/system/fortest/test1.sh: line : t: コマンドが見つかりません
2019年 1月 18日 金曜日 :: JST
[vagrant@vmp2-local-dva01 ~]$

标准错误输出重定向到文件testlog,标准输出和重定向到标准错误输出的引用

[vagrant@vmp2-local-dva01 ~]$ sh /var/www/pyxis2/system/fortest/test1.sh >testlog >&
[vagrant@vmp2-local-dva01 ~]$ cat testlog
/var/www/pyxis2/system/fortest/test1.sh: line : t: コマンドが見つかりません
2019年 1月 18日 金曜日 :: JST
[vagrant@vmp2-local-dva01 ~]$

标准输出重定向到testlog文件,标准错误输出也重定向到testlog文件

[vagrant@vmp2-local-dva01 ~]$ sh /var/www/pyxis2/system/fortest/test1.sh >testlog >testlog
[vagrant@vmp2-local-dva01 ~]$ cat testlog
2019年 1月 18日 金曜日 :: JST
ne : t: コマンドが見つかりません //输出不完全
[vagrant@vmp2-local-dva01 ~]$

command>a 2>a 与 command>a 2>&1的区别

对于command>a 2>&1这条命令,等价于command 1>a 2>&1

可以理解为执行command产生的标准输入重定向到文件a中,标准错误也重定向到文件a中。

那么是否就说command 1>a 2>&1等价于command 1>a 2>a呢。

其实不是,command 1>a 2>&1与command 1>a 2>a还是有区别的,区别就在于前者只打开一次文件a,后者会打开文件两次,并导致stdout被stderr覆盖,可能导致某些输出错误。

&1的含义就可以理解为用标准输出的引用,引用的就是重定向标准输出产生打开的a。从IO效率上来讲,command 1>a 2>&1比command 1>a 2>a的效率更高。

linux command>file 2>&1 & 命令详解的更多相关文章

  1. 云计算:Linux运维核心管理命令详解

    云计算:Linux运维核心管理命令详解 想做好运维工作,人先要学会勤快: 居安而思危,勤记而补拙,方可不断提高: 别人资料不论你用着再如何爽那也是别人的: 自己总结东西是你自身特有的一种思想与理念的展 ...

  2. LINUX的磁盘管理du命令详解

    LINUX的磁盘管理du命令详解 du(disk usage)命令可以计算文件或目录所占的磁盘空间.没有指定任何选项时, 它会测量当前工作目录与其所有子目录,分别显示各个目录所占的快数,最后才显示工作 ...

  3. linux sort,uniq,cut,wc命令详解

    linux sort,uniq,cut,wc命令详解 sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些 ...

  4. Linux的chattr与lsattr命令详解

    Linux的chattr与lsattr命令详解 这两个命令是用来查看和改变文件.目录属性的,与chmod这个命令相比,chmod只是改变文件的读写.执行权限,更底层的属性控制是由chattr来改变的. ...

  5. (转)linux sort,uniq,cut,wc命令详解

    linux sort,uniq,cut,wc命令详解 sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些 ...

  6. (转)Linux内核参数设置sysctl命令详解

    Linux内核参数设置sysctl命令详解 原文:https://www.zhukun.net/archives/8064 sysctl是一个允许您改变正在运行中的Linux系统的接口. 它包含一些 ...

  7. Linux就业技术指导(五):Linux运维核心管理命令详解

    一,Linux核心进程管理命令 1.1 ps:查看进程 1.1.1 命令解释 功能说明 ps命令用于列出执行ps命令的那个时刻的进程快照,就像用手机给进程照了一张照片.如果想要动态地显示进程,就需要使 ...

  8. Linux下的压缩解压缩命令详解

    linux zip命令zip -r myfile.zip ./*将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件. 2.unzipunzip -o - ...

  9. 【Linux基础】crontab定时命令详解

    周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间.cron的配置文件称为“crontab”,是 ...

随机推荐

  1. [UE4]制作按钮小技巧

    Normal和Pressed一样的图片和大小,Hovered也是一样的图片但是大小比Normal稍微大一点,这样点击按钮的时候就会产生按钮被按下去的感觉.

  2. Java基础:IO流之字节流和字符流

    1. 流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等. 一个流,必有源端和目的端 ...

  3. Codeforces-Educational Codeforces Round 53题解

    写之前,先发表下感慨:好久没写题解了,也许是因为自己越来越急利了,也可以说是因为越来越懒了. A. Diverse Substring 直接找一找有没有相邻的两个不同的字符即可. B. Vasya a ...

  4. HBase核心知识点总结

    一.HBase介绍 1.基本概念 HBase是一种Hadoop数据库,经常被描述为一种稀疏的,分布式的,持久化的,多维有序映射,它基于行键.列键和时间戳建立索引,是一个可以随机访问的存储和检索数据的平 ...

  5. Kaptcha

    Kaptcha:google自动生成验证码组件 kaptcha的使用比较方便,只需添加jar包依赖之后简单地配置就可以使用了 kaptcha所有配置都可以通过web.xml来完成,如果你的项目中使用了 ...

  6. iOS @property语句

    @property声明的形式是: @property ( attributes ) type name; type和name的含义一目了然,attributes描述了如何编写访问器. 一.assign ...

  7. hook mono实现Assembly.Load从指定路径读取文件

    mono-unity github: https://github.com/Unity-Technologies/mono/blob/unity-staging/mono/metadata/assem ...

  8. 封装MemoryCache

    一.定义一个缓存接口IChace using System; using System.Collections.Generic; using System.Linq; using System.Tex ...

  9. WordPress版微信小程序2.0版本发布

    利用业余时间对WordPress版微信小程序进行的升级,增加了一些功能,程序性能上做了一些优化.经过此次的版本升级,WordPress版微信小程序所需的基本功能已经具备. 开放源码地址:https:/ ...

  10. Windows Server 2016 启用完整版任务管理器

    众所周知 Windows Server 2012以上的任务管理器是被阉割过的 那么如何启用呢?首先把你的任务管理器复制一份出来位置:系统盘\Windows\System32\Taskmgr.exe和系 ...