Linux Shell下”>/dev/null 2>&1“相关知识说明
0:表示键盘输入(stdin)
1:表示标准输出(stdout),系统默认是1
2:表示错误输出(stderr)
command >/dev/null 2>&1 & == command 1>/dev/null 2>&1 &
1)command:表示shell命令或者为一个可执行程序
2)>:表示重定向到哪里
3)/dev/null:表示Linux的空设备文件
4)2:表示标准错误输出
5)&1:&表示等同于的意思,2>&1,表示2的输出重定向等于于1
6)&:表示后台执行,即这条指令执行在后台运行
1>/dev/null:表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,不显示任何信息。
2>&1:表示标准错误输出重定向等同于标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
这条命令的意思就是在后台执行这个程序,并将错误输出2重定向到标准输出1,然后将标准输出1全部放到/dev/null文件,也就是清空.
所以可以看出" >/dev/null 2>&1 "常用来避免shell命令或者程序等运行中有内容输出。
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 这样的写法.
2>&1 >/dev/null
命令行的重定向什么的, 是在执行命令之前就准备好了的. 解释顺序从左至右依次进行, 2&>1 ,而1是屏幕, 所以标准错误重定向到屏幕, 再而 1>/dev/null , 即标准输出重定向到 /dev/null, 上述2>&1 >/dev/null 并不是什么同一时刻要么产生标准输出要么产生标准错误. 而是两个不同的东西.
以以下变量的方式做个解释,就很明显了,这两种方式是不同的,前者就像:
a=1
b=a
而后者就像:
b=a
a=1
&>/dev/null
// 这个就是,不管你是啥玩意儿文件描述符,通通重定向到/dev/null
http://blog.csdn.net/reyleon/article/details/11595985
http://blog.csdn.net/web256/article/details/8244286
http://blog.csdn.net/sunrier/article/details/7695839
Linux Shell下”>/dev/null 2>&1“相关知识说明的更多相关文章
- Linux下">/dev/null 2>&1 "相关知识说明
在学习Linux的过程中,常会看到一些终端命令或者程序中有">/dev/null 2>&1"出现,由于已经遇到了好几次了,为了理解清楚,不妨花点时间百度或者go ...
- [转]Linux Shell 1>/dev/null 2>&1 含义
shell中可能经常能看到:echo log > /dev/null 2>&1 命令的结果可以通过%>的形式来定义输出 /dev/null :代表空设备文件> :代表 ...
- Linux Shell 1>/dev/null 2>&1 含义
shell中可能经常能看到:echo log > /dev/null 2>&1 命令的结果可以通过%>的形式来定义输出 /dev/null :代表空设备文件> :代表 ...
- shell中>/dev/null 2>&1
本文转自http://www.kissyu.org/ 背景 我们经常能在shell脚本中发现>/dev/null 2>&1这样的语句.以前的我并没有去深入地理解这段命令的作用,照搬 ...
- shell中 >/dev/null 2>&1是什么意思
原文地址:http://juke.outofmemory.cn/entry/295292 我们经常能在 shell 脚本中发现 >/dev/null 2>&1 这样的语句.以前的我 ...
- shell之“>/dev/null 2>&1”
shell之“>/dev/null 2>&1” http://ixdba.blog.51cto.com/2895551/526442 今天在自己的一个技术群中又被问道了这么一个问题 ...
- 【转】Linux目录下/dev/shm的理解和使用
一般来说,现场部署 都要根据内存的大小来设定/dev/shm的大小,大部分使用的是默认的值! Linux目录下/dev/shm的理解和使用 [日期:2014-05-16] 来源:Linux社区 作 ...
- Linux shell 下简单的进度条实现
Linux shell 下简单的进度条实现 [root@db145 ~]# cat print_process.sh function Proceess(){ spa='' i= ] do print ...
- Shell脚本 /dev/null 2>&1详解
Shell脚本---- /dev/null 2>&1详解 1.可以将/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. ...
随机推荐
- yarn 在Vue框架中的常用命令
初始化项目 yarn add init 安装vue yarn add vue 安装webpack,webpack-dev-server(是一个小型的Node.js Express服务器) yarn a ...
- webpack基本用法
1. 压缩代码(production模式) optimization: { minimizer: [new UglifyJsPlugin({ cache: true, parallel: true, ...
- 【python 字符串】 字符串的相关方法(二)
查找元素所在的第一个的索引位置 text.find() 可有开始和结束位置查找 find('ex',3,6) # 查找元素的索引位置 text = 'alexalex' ret = text. ...
- ElasticSearch搜索(一)
首先从ES的支持的字段说起,ES文档中字段有多种类型 官方文档. 这几个比较常用: text,keyword,integer,float,boolean,object,geo_point(地理坐标), ...
- nodejs搭建web服务器
一.代码结构 //1.引入相关模块 var http=require("http") var url=require("url") var fs=require ...
- ionic3创建选项卡
html页面 <ion-content padding> <ion-segment [(ngModel)]="tabs"> <ion-segment- ...
- springdata 动态查询之排序
- codeforces932E Team Work
题目链接:CF932E 由第二类斯特林数知 \[ n^m=\sum_{i=0}^nS(m,i)*i!*\dbinom{n}{i} \] \[ \begin{aligned} \sum_{i=1}^n ...
- 【CSA49F】【XSY3317】card 博弈论 DP
题目大意 不会博弈论的 yww 在和博弈论大师 yxq 玩一个游戏. 有 \(n\) 种卡牌,第 \(i\) 种卡牌有 \(b_i\) 张. yww 会先把所有 \(B=\sum_{i=1}^nb_i ...
- mac 下 clang++ 找不到头文件 stdlib.h
因为要用 openmp库,用 clang++ 编译 c++程序,出现了如下报错: clang++ xx.cpp -o xx -fopenmp /usr/local/Cellar/llvm/7.0.0/ ...