`
mutongwu
  • 浏览: 449933 次
  • 性别: 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 中.
最后的& ,不用说,是放在后台运行.
分享到:
评论

相关推荐

    c#命令行输出重定向demo

    我们可以用它来启动一个外部程序(如cmd.exe),传递命令参数,并且可以设置输出重定向。 3. **命令行输出重定向**: 使用Process类的`StartInfo`属性,我们可以设置`RedirectStandardOutput`为`true`,这样就可以...

    Tcl输入输出重定向Demo

    首先,理解输入输出重定向是关键。在操作系统层面,程序的输入和输出通常通过标准输入(stdin)、标准输出(stdout)和标准错误(stderr)三个流来管理。重定向允许我们将这些流指向不同的位置,比如文件、网络连接...

    例程:将CMD的输入输出重定向到自己的进程

    标题中的“例程:将CMD的输入输出重定向到自己的进程”是指在Windows操作系统中,通过命令行(CMD)实现程序的输入输出流与CMD进程交互的一种技术。这个过程通常涉及到了I/O重定向和管道的概念,它们是操作系统提供...

    Linux 命令 shell 重定向 >

    - **方式二**:通过`> filename`,可以直接将命令的输出重定向到文件,如果文件存在,其内容会被覆盖,即清空。 2. **将显示结果重定向到文件** - `echo “this is a test” > filename` 这个命令会将字符串 ...

    Linux操作之输入输出重定向和管道

    - **输出重定向**:例如,使用`>`操作符可以将命令的输出重定向到文件中,覆盖原有文件内容。 ```bash $ ls > ls.out ``` - **追加重定向**:使用`>>`操作符可以在不删除原有文件内容的情况下追加输出。 ```bash...

    LINUX Shell 输入-输出重定向.pdf

    在Linux系统中,输入输出重定向是一项非常重要的功能,它允许用户改变程序或命令的输入来源或输出目标,从而实现更灵活的数据处理方式。本文将深入探讨Linux Shell中的输入-输出重定向的基本概念、常用符号以及实际...

    控制台程序输出重定向

    文件`testGUI`可能包含了一个演示如何实现上述功能的MFC GUI程序代码,通过分析和运行这个示例,你可以更深入地理解和掌握控制台输出重定向的技术。在实践中,根据具体需求,你可能还需要处理线程同步、文本滚动、...

    Linux标准输入、输出和重定向

    **输出重定向** 允许我们将命令的标准输出指向一个指定的文件。这有助于更好地管理和利用输出数据。 - **基本语法**:`command > filename` - **示例**:使用`ls`命令列出目录内容并将结果保存到文件`list.txt`中:...

    易语言重定向输入输出源码

    在易语言中实现输入输出重定向,主要涉及以下函数或命令: 1. **打开文件**:使用“打开文件”命令创建一个文件句柄,这是与文件交互的基础。你需要指定文件路径和操作模式(如读、写、追加等)。 2. **读取文件**...

    如何使用输入、输出重定向.zip

    通过理解并熟练使用输入、输出重定向,你可以更高效地管理和自动化日常的系统任务,提升工作效率。同时,这也是编写shell脚本的基础,能够让你创建出功能强大、自动化程度高的工具。请参考提供的文档《如何使用输入...

    Shell 输入输出重定向命令解析.doc

    Shell 输入/输出重定向是Unix和Linux系统中的一项核心功能,允许用户改变命令的默认行为,即从终端接收输入和返回输出。理解这一概念对于高效地管理操作系统和编写脚本至关重要。 首先,我们讨论文件描述符。在...

    cmd命令的重定向输出 2>&1详解

    这条命令将停止`myservices`服务,但不会在屏幕上显示任何输出,而是将所有输出重定向到`nul`设备,相当于丢弃输出。 #### 六、总结 重定向输出是CMD中非常强大的功能之一,尤其是`2>&1`这种用法,它能够帮助用户...

    vim编辑器中掌握输入输出重定向与管道命令的应用

    在Linux世界中,掌握输入输出重定向和管道命令是提高命令行操作效率的关键。vim编辑器虽然不直接涉及这些操作,但在使用vim之外的shell环境中,它们是非常实用的工具。 输入输出重定向允许我们将命令的输入和输出从...

    [Ubuntu.Linux.基础视频教程].4.4.Shell.输入输出重定向

    在Linux系统中,Shell是用户与操作系统交互的重要工具,它是一个命令行解释器,能够接收...通过学习这个Ubuntu Linux基础视频教程的4.4章节,你将能更好地理解和应用Shell的输入输出重定向,从而更好地驾驭Linux环境。

    example管道输入输出重定向

    在计算机操作系统中,管道(Pipeline)输入输出重定向是一种强大的工具,它允许用户将命令的输出作为另一个命令的输入,从而实现数据的流式处理。这个概念在Linux和Unix-like系统中尤为常见,并且在一些支持命令行...

    cmd中的重定向输出,管道

    这条命令的意思是将`mycommand`命令的标准输出重定向到`mylog.txt`文件中,并且同时将标准错误输出也重定向到这个文件中。 #### 二、管道操作符(`|`) 管道操作符(`|`)是CMD中一个非常强大的功能,它允许将一个...

    redir_demo.zip_Console 重定向_DEMO_dos重定向_输出重定向_重定向

    例如,可以使用`>`符号将输出重定向到文件,使用`将文件内容作为输入,使用`2>`或`2>&1`来处理错误输出。 `www.pudn.com.txt`可能是一个示例文件,用于演示如何从文件读取数据或者向文件写入数据。在批处理文件中,...

    Linux shell编程实战:输入输出重定向与变量操作

    内容概要:本文详细介绍了Linux shell脚本编程中的几个核心知识点,包括输入输出重定向、Shell变量操作、基本的Shell编程技巧以及简单的算术运算方法。每个知识点都有详细的命令演示和具体的应用实例,帮助读者更好...

    例程:将command的输入输出重定向到自己的进程

    标题中的“例程:将command的输入输出重定向到自己的进程”是指在编程环境中,如何通过编程手段控制命令行(通常指cmd.exe在Windows系统中)的输入和输出流,使其能够与当前运行的进程进行交互。这个过程涉及到操作...

    对于管道划分,环境变量,输入输出重定向

    重定向分为输入重定向(Redirect Input)和输出重定向(Redirect Output)。输入重定向将文件作为程序的输入,比如`会把`file.txt`的内容作为`command`的输入。输出重定向则将程序的输出写入文件,如`command > ...

Global site tag (gtag.js) - Google Analytics