Linux里的21究竟是什么

原文连接:http://blog.csdn.net/ggxiaobai/article/details/53507530

---------------------------------------------------------


我们在Linux下经常会碰到nohup command>/dev/null 2>&1 &这样形式的命令。首先我们把这条命令大概分解下首先就是一个nohup表示当前用户和系统的回话下的进城忽略响应HUP消息。&是把该命令以后台的job的形式运行。那么就剩下command>/dev/null 2>&1,command>/dev/null较好理解,/dev/null表示一个空设备,就是说吧command的执行结果重定向到空设备中,说白了就是不显示任何信息。那么2>&1又是什么含义?

2>&1

几个基本符号及其含义

  • /dev/null 表示空设备文件
  • 0 表示stdin标准输入
  • 1 表示stdout标准输出
  • 2 表示stderr标准错误

从command>/dev/null说起

其实这条命令是一个缩写版,对于一个重定向命令,肯定是a > b这种形式,那么command > /dev/null难道是command充当a的角色,/dev/null充当b的角色。这样看起来比较合理,其实一条命令肯定是充当不了a,肯定是command执行产生的输出来充当a,其实就是标准输出stdout。所以command > /dev/null相当于执行了command 1 > /dev/null。执行command产生了标准输出stdout(用1表示),重定向到/dev/null的设备文件中。

说说2>&1

通过上面command > /dev/null等价于command 1 > /dev/null,那么对于2>&1也就好理解了,2就是标准错误,1是标准输出,那么这条命令不就是相当于把标准错误重定向到标准输出么。等等是&1而不是1,这里&是什么?这里&相当于等效于标准输出。这里有点不好理解,先看下面。

command>a 2>a 与 command>a 2>&1的区别

通过上面的分析,对于command>a 2>&1这条命令,等价于command 1>a 2>&1可以理解为执行command产生的标准输入重定向到文件a中,标准错误也重定向到文件a中。那么是否就说command 1>a 2>&1等价于command 1>a 2>a呢。其实不是,command 1>a 2>&1command 1>a 2>a还是有区别的,区别就在于前者只打开一次文件a,后者会打开文件两次,并导致stdout被stderr覆盖。&1的含义就可以理解为用标准输出的引用,引用的就是重定向标准输出产生打开的a。从IO效率上来讲,command 1>a 2>&1command 1>a 2>a的效率更高。

举个栗子

来个shell

//test.sh
#!/bin/sh
t
date

chmod +x test.sh为test.sh增加执行权限。这里我们弄了两条命令,其中t指令并不存在,执行会报错,会输出到stderr。date能正常执行,执行会输出当前时间,会输出到stdout。

执行./test.sh > res1.log结果为

我们发现stderr并没有被重定向到res1.log中,stderr被打印到了屏幕上。这也进一步证明了上面说的./test.sh > res1.log等价于./test.sh 1>res1.log

执行./test.sh>res2.log 2>&1结果为

这次我们发现stdout和stderr都被重定向到了res2.log中了。上面我们未对stderr也就是2说明如何输出,stderr就输出到了屏 幕上,这里我们不仅对stdout进行说明,重定向到res2.log中,对标准错误也进行了说明,让其重定向到res2.log的引用即 res2.log的文件描述符中。

再思考一下

为何2>&1要写在command>1的后面,直接用2可以么。比如ls 2>a。其实这种用法也是可以的,ls命令列出当前的目录,用stdout(1)表示,由于这个时候没有stderr(2),这个时候执行ls 2>a也会正常产生一个a的文件,但是a的文件中是空的,因为这时候执行ls并没有产生stderr(2)。



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/538118.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安阳师范学院计算机与信息工程学院吴琴霞,基于甲骨文字形动态描述库的甲骨文输入方法...

【摘要】该文分析了目前常用的甲骨文字在编码和输入方面的问题和不足,给出了一种甲骨文字形动态描述的方法.该方法在现代汉字的编码和书写规范基础上,使用有向笔段和笔元对甲骨文进行描述,用扩展的编码区域和外部描述字形库相结合的方式,解决了甲骨文字特别是异体字和没有识别的…

【leetcode】590. N-ary Tree Postorder Traversal

题目如下: 解题思路:凑数题2,做完先序做后序。凑数博2。 代码如下: class Solution(object):def postorder(self, root):""":type root: Node:rtype: List[int]"""if root None:return []res []s…

dubbo控制台安装

为什么要安装这个控制台? 当我们的服务很多的时候,需要监管,查看,当项目变大的时候,会深深感谢它! 管理原理 对注册中心Zookeeper中注册的服务进行管理 安装步骤 1、下载dubbo源码,要与使用的…

Js中的基本概念

前言:刚毕业的应届生,学习前端时间并不长,昨天参加面试,一轮笔试,两轮技术面试。尤其在技术面试的时候感觉到自己基础知识还是搞的有些乱,也突然明白到了一个扎实的Js基础对于之后的路是有多重要。准备把Js…

oracle 查询时间点数据_oracle统计时间段内每一天的数据(推荐)

下面给大家介绍oracle统计时间段内每一天的数据&#xff0c;具体sql语句如下所示&#xff1a;1. 生成1000个随机数SELECT ROWNUM RN,DBMS_RANDOM.VALUE(0, 1000) RANDOMFROM DUALCONNECT BY ROWNUM < 1000;注&#xff1a;DBMS_RANDOM.VALUE(A, B)是随机数产生函数, A是区间的…

dubbo服务的运行方式

1、使用Servlet容器运行&#xff08;Tomcat、Jetty等&#xff09;----不可取 缺点&#xff1a;增加复杂性&#xff08;端口、管理&#xff09; 浪费资源&#xff08;内存&#xff09; 假设1个服务模块时&#xff0c;需要1台tomcat&#xff0c;消耗3个端口&#xff0c;和200M…

Java读取HTML传人文件,java读取html文件并获取body中所有的标签及内容的案例.pdf

java读读取取html文文件件,并并获获取取body中中所所有有的的标标签签及及内内容容的的案案例例这里的获取的是html文件中body 中的所有标签以及内容package com.lmt.service.file;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import j…

插件translator_Zotero Jasminum 插件的更新记录

Jasminum 插件发布后 林知&#xff1a;简单的Zotero CNKI 中文插件​zhuanlan.zhihu.com受到一些同学的关注&#xff0c;同时也收到许多反馈。我写这个插件的初衷就是想让大家在Zotero上能更方便的使用知网&#xff0c;尤其是人文社科相关专业的同学&#xff0c;他们尤其依赖中…

Tomcat的三个端口

8005 <Server port"8005" shutdown"SHUTDOWN"> 关闭tomcat通信接口 8009 <Connector port"8009" protocol"AJP/1.3" redirectPort"8443"/> 与其他http服务器通信接口&#xff0c;用于http服务器集合 8080…

计算机一级考试word题主要,2017年计算机一级考试word题及答案

1 / 7 2017 年计算机一级考试 及答案 计算机还是人们的学习工具和生活工具。借助家用计算机、个人计算机、计算机网、数据库系统和各种终端设备&#xff0c;那么 2017 年计算机一级考试 及答案有哪一些 ?下面是 才小编收集整理的 2017 年计算机一级考试 及答案&#xff0c;欢迎…

ubuntu18.04 用xhell连接失败

ifconfig命令有用之后&#xff0c;又发现xhell连接不上ubuntu18.04版本的虚拟机&#xff0c;原因是ubuntu18.04默认没有安装ssh服务。 使用以下命令安装 sudo apt-get install openssh-server 安装完成后,启动ssh服务 sudo /etc/init.d/ssh start 查看ssh进程&#xff0c;若出现…

extjs中元数据_json – 如何配置ExtJS 4 Store(代理和阅读器)来读取元数据

我的问题是除了totalRecords之外如何获取元数据,在我的例子中它是版本,代码,searchquery(请查看json).{"result": {"version":"1","code":"200","searchquery": "false","totalRecords": &qu…

伍德里奇计量经济学第五版第四章计算机操作,伍德里奇计量经济学第四章

伍德里奇计量经济学第四章2016年10⽉25⽇ 星期⼆ 下午10:21 Page 1User: ⺩建英name: log: /Users/wangjianying/Desktop/Chapter 4 Computer exercise.smcllog type: smclopened on: 25 Oct 2016, 22:20:411. do "/var/folders/qt/0wzmrhfd3rb93j2h5hhtcwqr0000gn/T//SD1…

2018百度之星程序设计大赛 - 资格赛 1002 子串查询

子串查询 Accepts: 1262 Submissions: 5335 Time Limit: 3500/3000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Problem Description 度度熊的字符串课堂开始了&#xff01;要以像度度熊一样的天才为目标&#xff0c;努力奋斗哦&#xff01; 为了检验你是否…

mysql sleep详解_MySQL中sleep函数的特殊现象示例详解

前言MySQL中的系统函数sleep&#xff0c;实际应用的场景不多&#xff0c;一般用来做实验测试&#xff0c;昨天在测试的时候&#xff0c;意外发现sleep函数的一个特殊现象。如果在查询语句中使用sleep函数&#xff0c;那么休眠的时间跟返回的记录有关。如下测试所示&#xff1a;…

使用maven构建dubbo服务的可执行jar包

maven 项目结构 <build><!-- 使用dubbo推荐的方法&#xff0c;打包成jar&#xff0c;调用main方法启动 --><finalName>admin-service-user</finalName><resources><resource><targetPath>${project.build.directory}/classes</ta…

计算机网络安全应具备的功能,2016计算机专业知识:网络系统安全体系具备功能攻击方法...

【导读】为了帮助广大考生更好的备考&#xff0c;中公事业单位考试网提供2016年计算机专业知识《网络系统安全体系具备功能攻击方法》学习&#xff0c;为考生定制计算机基础知识复习计划。一、网络系统安全体系具备功能1.访问控制;2.检查安全漏洞;3.攻击监控;4.加密通讯;5.认证…

Linux的标准I/O和管道

标准输入输出与管道 1、标准输入和输出程序&#xff1a;指令数据指令&#xff1a;计算、加减乘除数据&#xff1a;输入数据、输出数据2、在Linux中每一个打开的文件都会分配一个当前进程中唯一的文件描述符&#xff0c;用来标识文件的状态fd:file descripor3、Linux提供给程序…

页面url带参数_微信小程序云开发教程微信小程序的JS高级页面间数据传递

同学们大家好&#xff0c;我是小伊同学&#xff0c;上一节课我们讲解了全局数据的读写方法&#xff0c;那么在页面间同样需要数据交互&#xff0c;今天我们就来学习这部分内容。在微信小程序中&#xff0c;我们常常需要将数据在页面之间进行传递&#xff0c;比如用户的身份信息…

软件测试员对英语,软件测试工程师英语面试题

以下是软件测试工程师部分英语面试中的参考回答&#xff0c;仅提参考&#xff1a;Interview English&#xff1a;一&#xff0c;Why are you interested in working for our company?1。Because your company has a good sales record.2。Because your operations are global,…