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 中.
最后的& ,不用说,是放在后台运行.
分享到:
相关推荐
我们可以用它来启动一个外部程序(如cmd.exe),传递命令参数,并且可以设置输出重定向。 3. **命令行输出重定向**: 使用Process类的`StartInfo`属性,我们可以设置`RedirectStandardOutput`为`true`,这样就可以...
首先,理解输入输出重定向是关键。在操作系统层面,程序的输入和输出通常通过标准输入(stdin)、标准输出(stdout)和标准错误(stderr)三个流来管理。重定向允许我们将这些流指向不同的位置,比如文件、网络连接...
标题中的“例程:将CMD的输入输出重定向到自己的进程”是指在Windows操作系统中,通过命令行(CMD)实现程序的输入输出流与CMD进程交互的一种技术。这个过程通常涉及到了I/O重定向和管道的概念,它们是操作系统提供...
- **方式二**:通过`> filename`,可以直接将命令的输出重定向到文件,如果文件存在,其内容会被覆盖,即清空。 2. **将显示结果重定向到文件** - `echo “this is a test” > filename` 这个命令会将字符串 ...
- **输出重定向**:例如,使用`>`操作符可以将命令的输出重定向到文件中,覆盖原有文件内容。 ```bash $ ls > ls.out ``` - **追加重定向**:使用`>>`操作符可以在不删除原有文件内容的情况下追加输出。 ```bash...
在Linux系统中,输入输出重定向是一项非常重要的功能,它允许用户改变程序或命令的输入来源或输出目标,从而实现更灵活的数据处理方式。本文将深入探讨Linux Shell中的输入-输出重定向的基本概念、常用符号以及实际...
文件`testGUI`可能包含了一个演示如何实现上述功能的MFC GUI程序代码,通过分析和运行这个示例,你可以更深入地理解和掌握控制台输出重定向的技术。在实践中,根据具体需求,你可能还需要处理线程同步、文本滚动、...
**输出重定向** 允许我们将命令的标准输出指向一个指定的文件。这有助于更好地管理和利用输出数据。 - **基本语法**:`command > filename` - **示例**:使用`ls`命令列出目录内容并将结果保存到文件`list.txt`中:...
在易语言中实现输入输出重定向,主要涉及以下函数或命令: 1. **打开文件**:使用“打开文件”命令创建一个文件句柄,这是与文件交互的基础。你需要指定文件路径和操作模式(如读、写、追加等)。 2. **读取文件**...
通过理解并熟练使用输入、输出重定向,你可以更高效地管理和自动化日常的系统任务,提升工作效率。同时,这也是编写shell脚本的基础,能够让你创建出功能强大、自动化程度高的工具。请参考提供的文档《如何使用输入...
Shell 输入/输出重定向是Unix和Linux系统中的一项核心功能,允许用户改变命令的默认行为,即从终端接收输入和返回输出。理解这一概念对于高效地管理操作系统和编写脚本至关重要。 首先,我们讨论文件描述符。在...
这条命令将停止`myservices`服务,但不会在屏幕上显示任何输出,而是将所有输出重定向到`nul`设备,相当于丢弃输出。 #### 六、总结 重定向输出是CMD中非常强大的功能之一,尤其是`2>&1`这种用法,它能够帮助用户...
在Linux世界中,掌握输入输出重定向和管道命令是提高命令行操作效率的关键。vim编辑器虽然不直接涉及这些操作,但在使用vim之外的shell环境中,它们是非常实用的工具。 输入输出重定向允许我们将命令的输入和输出从...
在Linux系统中,Shell是用户与操作系统交互的重要工具,它是一个命令行解释器,能够接收...通过学习这个Ubuntu Linux基础视频教程的4.4章节,你将能更好地理解和应用Shell的输入输出重定向,从而更好地驾驭Linux环境。
在计算机操作系统中,管道(Pipeline)输入输出重定向是一种强大的工具,它允许用户将命令的输出作为另一个命令的输入,从而实现数据的流式处理。这个概念在Linux和Unix-like系统中尤为常见,并且在一些支持命令行...
这条命令的意思是将`mycommand`命令的标准输出重定向到`mylog.txt`文件中,并且同时将标准错误输出也重定向到这个文件中。 #### 二、管道操作符(`|`) 管道操作符(`|`)是CMD中一个非常强大的功能,它允许将一个...
例如,可以使用`>`符号将输出重定向到文件,使用`将文件内容作为输入,使用`2>`或`2>&1`来处理错误输出。 `www.pudn.com.txt`可能是一个示例文件,用于演示如何从文件读取数据或者向文件写入数据。在批处理文件中,...
内容概要:本文详细介绍了Linux shell脚本编程中的几个核心知识点,包括输入输出重定向、Shell变量操作、基本的Shell编程技巧以及简单的算术运算方法。每个知识点都有详细的命令演示和具体的应用实例,帮助读者更好...
标题中的“例程:将command的输入输出重定向到自己的进程”是指在编程环境中,如何通过编程手段控制命令行(通常指cmd.exe在Windows系统中)的输入和输出流,使其能够与当前运行的进程进行交互。这个过程涉及到操作...
重定向分为输入重定向(Redirect Input)和输出重定向(Redirect Output)。输入重定向将文件作为程序的输入,比如`会把`file.txt`的内容作为`command`的输入。输出重定向则将程序的输出写入文件,如`command > ...