`
mutongwu
  • 浏览: 441158 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

理解命令输出重定向

阅读更多
shell中可能经常能看到:>/dev/null 2>&1 
命令的结果可以通过%>的形式来定义输出
分解这个组合:">/dev/null 2>&1" 为五部分。
1:> 代表重定向到哪里,例如:echo "123" > /home/123.txt
2:/dev/null 代表空设备文件
3:2> 表示stderr标准错误
4:& 表示等同于的意思,2>&1,表示2的输出重定向等同于1
5:1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于 "1>/dev/null"
因此,>/dev/null 2>&1也可以写成"1> /dev/null 2> &1"
那么本文标题的语句执行过程为:
1>/dev/null :首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。
2>&1 :接着,标准错误输出重定向 到 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
最常用的方式有:
command > file 2>file 与command > file 2>&1
它们 有什么不同的地方吗?
    首先command > file 2>file 的意思是将命令所产生的标准输出信息,和错误的输出信息送到file 中.command > file 2>file 这样的写法,stdout和stderr都直接送到file中, file会被打开两次,这样stdout和stderr会互相覆盖,这样写相当使用了FD1和FD2两个同时去抢占file 的管道。
      而command >file 2>&1 这条命令就将stdout直接送向file, stderr 继承了FD1管道后,再被送往file,此时,file 只被打开了一次,也只使用了一个管道FD1,它包括了stdout和stderr的内容。
      从IO效率上,前一条命令的效率要比后面一条的命令效率要低,所以在编写shell脚本的时候,较多的时候我们会command > file 2>&1 这样的写法。

ls -l > out.file 2>&1 &
解释:
ls -l > out.file //将ls的输出重定向到文件out.file
2>&1 //在shell中,文件描述符通常是:STDIN,STDOUT,STDERR,即:0,1,2,由此可以看出,它将ls -l > out.file在输出过程中产生的错误信息也放在了STDOUT,即:1中,你可以作实验,如果命令产生了错误,那么错误信息也就在out.file 中.
最后的& ,不用说,是放在后台运行.
分享到:
评论

相关推荐

    Linux中crontab输出重定向不生效问题的解决方法

    问题 在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron]。cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。...以上命令非常好理解,每天9:01执行test.sh

    详解linux系统输入输出管理和vim的常用功能

    1.理解系统的输入输出重定向 输入重定向是指把文件导入到命令中,而输出重定向则是把原本要输出到屏幕的数据信息写入到指定文件中。 2.管理输入输出的符号 ##输出重定向 > ##重定向正确输  2> ##重定向错误输出 ...

    Linux 命令入门文档.zip

    - 学习 Bash 的基础知识。具体地,在命令行中输入 `man bash` 并至少全文浏览一遍; 它理解起来很简单并且不冗长。其他的 shell 可能很好用,但 ...- 学会使用 `>` 和 `来重定向输出和输入,学会使用 `|` 来重定向管道。

    C语言实现Linux内核Shell程序

    编写一个C语言程序作为Linux内核的shell命令行解释程序,所执行的结果需和系统命令行方式保持一致,理解系统使怎样进行命令的解析和执行。 基本运行方式:[COMMAND命令 OPTIONS选项 ARGUMENTS参数] 表1 命令格式 ...

    Linux快速入门以及shell编程基础知识

    编写第一个shell脚本hello world非常简单,利用echo命令输出 Hello World即可。Shell支持多种循环结构,并可进行条件判断、分支和函数等代码结构。Shell是一个功能强大的编程语言。 通过本文的快速概览,你已经对Linux...

    运行jar脚本.doc

    `> /opt/testRun/java/catlina.out 2>&1` 命令用于将标准输出和错误输出重定向到文件中,`&` 符号用于将命令放入后台运行。 正则表达式 在这个脚本中,我们使用了多个正则表达式: * `.*`:表示任意字符(包括换...

    Dos命令大全

    在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。 2.@ 命令 表示不显示@后面的命令,在入侵过程中(例如使用...

    使用C语言编写一个Linux的外壳Shell(操作系统课程)【100012094】

    (课设要求上是这么写的,我理解为mv命令的使用) 增加命令补全功能。即按下tab键可以补全命令。 增加查阅历史记录的功能。可以查看历史命令。 支持目录检索功能。即文件不存在,继续打印提示符。 支持一定的错误...

    Windows 批处理大全(附各种实例)

    1. Echo 命令的使用: Echo 命令用于打开或关闭回显功能、显示消息或将命令输出到文件中。语法为 echo [{on|off}] [message]。示例中结合重定向符号使用 Echo 命令实现输入命令到特定格式的文件中。 2. @ 命令的...

    shell程序实验详解

     使用管道和输入输出重定向。  支持前后台作业,提供作业控制功能,包括打印作业的清单,改变当前运行作业的前台/后台状态,以及控制作业的挂起、中止和继续运行。 除此之外,在这个实验中还须做到:  使用...

    redhat linux教材20课程学习文档

    5.4.3 输入/输出重定向 5.4.4 读取输入 5.4.5 使用“-”文件 5.4.6 使用设备文件 5.4.7 使用exec 5.4.8 使用eval 5.4.9 使用后台进程 5.5 Shell 程序调试 5.6 Shell 脚本的举例 第六章 高级脚本编程 6.1 awk 的...

    linux操作系统命令大全

     Shell是Linux系统下的命令解释器,也是使用Linux系统的主要环境,Shell的功能很多,本章主要从Shell的基本概念、Shell的种类、Shell中的特殊字符、重定向以及Shell程序几个方面来讲解,重点内容是Shell的特殊字符...

    走进Linux世界(第五讲)——Linux文件管理.pdf

    "走进Linux世界(第五讲)——Linux文件管理.pdf" 本讲座主要介绍了Linux系统中的文件管理 koncepts,包括常用命令...本讲座为读者提供了Linux文件管理的基本概念和命令格式,帮助读者更好地理解和掌握Linux文件管理。

    如何编写批处理文件批处理文件批处理文件

    在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。 2.@ 命令 表示不显示@后面的命令,在入侵过程中(例如使用...

    第一章linux网络操作

    1.掌握至少5050个以上的常用命令。 2.熟悉Gnome/KDEGnome/KDE等XX--windowswindows桌面环境操作。 3. 掌握 rpmrpm等软件包的...9.理解 .shellshell别名、管道、I/OI/O重定向、输入和输出以及shellshell脚本编程。

    RHCSA-notitie:准备 RHCSA 的个人笔记

    使用输入-输出重定向(>、>>、|、2> 等) 使用 grep 和正则表达式分析文本 [在多用户目标中登录和切换用户](1-了解和使用必备工具/5-在多用户目标.md中登录和切换用户) 使用 tar、star、gzip 和 bzip2 归档、压缩...

Global site tag (gtag.js) - Google Analytics