​shell中经常能看到的:>/dev/null 2>&1

简介:

shell中可能经常能看到:>/dev/null 2>&1  

/dev/null 代表空设备文件 
> 代表重定向到哪里,例如:echo "1111" > /home/a.txt 
    1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null" 
    2 表示stderr标准错误 
    & 表示等同于的意思,2>&1,表示2的输出重定向等同于1 
来看看本文标题的语句: 
1>/dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端
2>&1 接着,标准错误输出重定向等同于 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。 

    我们经常会在UNIX系统下的一些脚本中看到类似”2>&1″这样的用法,例如“/path/to/prog 2>&1 > /dev/null &”,那么它的具体含义是什么呢? 
   UNIX有几种输入输出流,它们分别与几个数字有如下的对应关系:0-标准输入流(stdin),1-标准输出流(stdout),2-标准错误流 (stderr)。”2>&1″的意思就是将stderr重定向至stdout,并一起在屏幕上显示出来。如果不加数字,那么默认的重定向 动作是针对stdout(1)的,比如”ls -l > result”就等价于”ls -l 1 > result”。这样便于我们更普遍性的理解重定向过程。 
  下面举例说明: 
#cat std.sh 
#!/bin/sh 
echo “stdout” 
echo “stderr” >&2 

#/bin/sh std.sh 2>&1 > /dev/null 
stderr 

#/bin/sh std.sh > /dev/null 2>&1 

   第一条命令的输出结果是stderr,因为stdout和stderr合并后一同重定向到/dev/null,但stderr并未被清除,因此仍将在屏 幕中显示出来;第二条命令无输出,因为当stdout重定向至/dev/null后,stderr又重定向到了stdout,这样stderr也被输出到 了/dev/null。 



本文转自 wdy198622 51CTO博客,原文链接:http://blog.51cto.com/weimouren/1715973

相关文章
|
Linux Windows
Linux中/dev/null和/dev/zero的作用
Linux中/dev/null和/dev/zero的作用
462 2
|
Unix Linux Shell
linux中nohup和/dev/null,21
linux中nohup和/dev/null,21
435 0
|
Linux
百度搜索:蓝易云【Linux系统的 /dev/null 是什么?有什么隐藏的作用?】
综上所述,`/dev/null`在Linux系统中起到丢弃输入并模拟黑洞的作用。通过将输出重定向到 `/dev/null`,可以隐藏输出、屏蔽错误信息或作为空输出的占位符。它是一种非常有用的工具,特别是在自动化脚本和命令行操作中。
403 2
|
Unix Linux Shell
nohup 与 >/dev/null 与 2>&1 作用与区别
nohup 与 >/dev/null 与 2>&1 作用与区别
1470 0
|
安全 Unix Linux
探秘Linux特殊设备文件:(/dev/null,/dev/zero,/dev/random,/dev/urandom等)
探秘Linux特殊设备文件:(/dev/null,/dev/zero,/dev/random,/dev/urandom等)
1524 1
|
存储 Shell Linux
What is /dev/null and How to Use It
What is /dev/null and How to Use It
239 0
What is /dev/null and How to Use It
|
Shell Linux
Shell /dev/null 文件的含义
Shell /dev/null 文件的含义
289 0
Linux: 2>/dev/null 解决大量屏幕输出
Linux: 2>/dev/null 解决大量屏幕输出
Linux: 2>/dev/null 解决大量屏幕输出
|
存储 Linux
Linux 中的 /dev/null 是什么?有什么隐藏的作用?
Linux 中的 /dev/null 是什么?有什么隐藏的作用?
960 0
|
4月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
514 9

热门文章

最新文章