[通俗易懂:Linux标准输入/输出和重定向]Shell脚本之 > /dev/null 2>1命令详解

news2024/9/24 19:19:47

目录标题

      • 一、> /dev/null 2>&1 命令解析
      • 二、/dev/null 文件浅显理解
      • 三、标准输入、标准输出、标准错误输出
      • 四、输入重定向、输出重定向
      • 五、命令作用与应用场景

如果想看命令意义,可以直接跳到第五部分

一、> /dev/null 2>&1 命令解析

我们在别人的脚本里面常常可以看见这样的代码:

2>/dev/null

输出重定向
或者是这样:

0 */3 * * * /usr/local/apache2/apachectl restart >/dev/null 2>&1

那么,它们到底是什么意思呢?


解析 > /dev/null 2>&1
要了解这句代码的意思,我们要把它拆分开来一一理解,再融会贯通,才能体会Linux的精密与奥妙。

看起来这是一行代码,实际上,这是两条命令组合而成:
命令组合
如果你知道 >的意思,那么你就会明白,这是两条输出重定向命令。

从符号来解析的话,它可以解析成三种不同元素:
命令解析

  1. >:即我们刚才提到的输出重定向符号
  2. /dev/null:一个特殊文件
  3. 2 、&1:1和2是标准输出和标准错误输出的数值表示,它们还有一个兄弟0:标准输入

接下来,我们一一解析这三个元素,探索命令背后的顶层含义。


二、/dev/null 文件浅显理解

/dev/null是Linux中的特殊文件之一,或称空设备,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个EOF,又被称为位桶(bit bucket)或者黑洞(black hole)。
在这里插入图片描述
大部分人比较喜欢理解为Windows的垃圾桶,不过我更喜欢理解为是一根下水管道。划重点:无论我们向其输入任何数据,都会被它丢弃,且操作成功。

echo hello world > ./null

在这里插入图片描述
它还有两个离得很近的兄弟,zreorandom
/dev/zero : 在类UNIX 操作系统中, /dev/zero 是一个特殊的文件,当你读它的时候,它会提供无限的空字符(NULL, ASCII NUL, 0x00)。
在这里插入图片描述
简简单单的一行命令,瞬间产生3.5G数据,直呼内行。

cat ./zero >> ./test.txt

在这里插入图片描述/dev/random :一个特殊的设备文件,可以用作随机数发生器或伪随机数发生器。它允许程序访问来自设备驱动程序或其它来源的背景噪声。
在这里插入图片描述
总结:null是丢弃东西的,zero是产生空白字符的,random是生成随机数的,重点记住null就可以了,后面两个绝大部分场景用不上。


三、标准输入、标准输出、标准错误输出

我们执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr)。Linux终端用2表示标准错误,1表示标准输出,0表示标准输入。

标准输出文件和标准错误输出文件都对应终端的屏幕。进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。

总结:这一块不用过于抠字眼和理解内涵,我们只需要了解:执行一个shell命令会有输出:标准输出或者错误输出,对应的数值为1,2。如果我们看见1,就要明白指代标准输出信息,看见2明白指代输出错误信息。


四、输入重定向、输出重定向

除了输入重定向、输出重定向(重点),还有标准输入。
符号表示:

  • >重定向标准输出,> filename就是把标准输出存储到文件filename里面。
    在这里插入图片描述

  • - (短横线):表示标准输入,一般用于1个程序需要多个输入的时候。
    在这里插入图片描述

  • <标准输入,后面可以跟可以产生输出的命令,输入重定向主要用于改变一个命令的输入源,特别是改变那些需要大量输入的输入源。应用场景:使用一个不接受文件名作为输入参数的命令,而需要的输入内容又存在一个文件里时。
    在这里插入图片描述

注意:>重定向便准输出,这个命令只针对标准输出,也就是说,如果有错误的信息,还是会打印在屏幕上。

理解了重定向之后,再结合标准输出和标准错误输出,就比较好理解。我们可以结合二者做一个demo。

写一个简单的脚本,包含一条正确的命令和错误的命令,然后使用重定向功能定向到文件。
在这里插入图片描述

执行
在这里插入图片描述
可以看到第一条echo命令成功执行,并被重定向到echo.txt文件中,而cat命令因为当前目录没有这个文件,执行失败,而>符号只能重定向标准输出,因为cat是错误输出,所以未被输出重定向到文件夹,而是输出到屏幕。

总结:输出重定向是重点,我们可以把它理解为,把前一个命令的输出,作为后一个命令的输入。


五、命令作用与应用场景

命令作用:
分别理解了各自的命令意义,串联起来:
在这里插入图片描述
第一个重定向的意思是不输出信息,但输出错误信息,第二个重定向的意思是将标准错误输出重定向到标准输出,连起来的即为:不输出信息,不管是标准输出还是错误输出。

怎么求证呢?来个demo

写个一键启动Hadoop的小脚本

demo2
运行:demo2run
可以看到除了两个echo,还有很多运行的标准输出

重定向操作,可以加在脚本执行的后面,也可以选择执行脚本的时候手动加重定向,此次选择第一种操作。
改写demo
再次运行
demo2run

作用:

  • 用于定时任务的消息邮件清理:定时任务执行时,会发送一封邮件给执行的用户,如果是比较基础的定时任务,日积月累下来,会影响系统的开销,占用存储。
  • 清理不必要的提示:Shell脚本执行的时候,如果输出大量的标准输出,影响用户交互体验。

可能大部分人看完,会有两个疑问:

第一:为什么 2 > &1 有个&符号
答:如果不加&表示重定向到“1”这个文件,&1表示标准输出

第二:为什么是先重定向到null文件,而不是先 2> & 1?会影响到错误输出的重定向吗?
答:优先级问题。错误输出重定向优先于命令重定向,故重定向到null文件时,是标准输出和标准错误输出一起null

demo:
demo3
执行
在这里插入图片描述


天道酬勤,自强不息

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

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

相关文章

7 个 Python 问题,来扫扫盲

这 7 个问题&#xff0c;我是有收获的&#xff0c;整理如下&#xff1a; 1、反射算术运算符 你可能知道 Python 里面的魔法函数&#xff0c;比如 __add__ 和 __sub__ 代表 - 运算符&#xff0c;表示 obj /- something&#xff0c;但你可能不知道还有一个 __radd__&#xff0…

JMeter入门教程 —— 事务!

简介&#xff1a; JMeter中事务的基本介绍 1.任务背景 JMeter中的事务是通过事务控制器实现的。&#xff0c;为了衡量服务器对某一个或一系列操作处理的响应时间&#xff0c;需要定义事务。下面我们详细介绍在JMeter中如何使用事务 2.任务目标 掌握基于JMeter性能测试脚本开…

标准版uni-app移动端页面添加/开发操作流程

页面简介 uni-app项目中&#xff0c;一个页面就是一个符合Vue SFC规范的.vue文件或.nvue文件。 .vue页面和.nvue页面&#xff0c;均全平台支持&#xff0c;差异在于当uni-app发行到App平台时&#xff0c;.vue文件会使用webview进行渲染&#xff0c;.nvue会使用原生进行渲染。…

若依框架针对漏洞升级的记录

背景&#xff1a;项目部署在生产环境上以后&#xff0c;漏洞扫描的时候&#xff0c;发现各种漏洞需要修复&#xff0c;很多漏洞的升级后面都记不住了&#xff0c;所以现在都简单记录一下处理的步骤 20240415 解决方案&#xff1a;直接修改配置文件中的Spring security的版本…

bugku-web-需要管理员

页面源码 <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"> <title>404 Not Found</title> </head> <body> <div idmain><i> <h2>Something error:</h2…

Linux:调试器 - gdb

Linux&#xff1a;调试器 - gdb gbd基本概念gbd调试浏览断点运行变量 gbd基本概念 GDB (GNU Debugger) 是一个强大的命令行调试工具,用于调试各种编程语言(如C、C、Java、Python等)编写的程序。使用 gdb可以帮助开发人员更快地定位和修复程序中的缺陷,提高代码质量和开发效率。…

大众日报教育版的 投稿方式-最快一周内见报

大众日报教育版的 投稿方式-最快一周内见报 大众日报是中共山东省委机关报&#xff0c;创刊于1939年1月1日&#xff0c;由中国共产党领导下的八路军budui所创建&#xff0c;是中共在山东省发行的报纸。 大众日报的“大众教育”版块是该报的一个重要组成部分&#xff0c;主要关…

React-项目构建

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;React篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来React篇专栏内容:React-项目构建 目录 1、初始化项目 2、目录结构 组件 1、组件的创建方式 1.1、函数创建组…

【报错解决】RuntimeError: Distributed package doesn‘t have NCCL built in

报错信息&#xff1a; raise RuntimeError("Distributed package doesnt have NCCL " "built in") RuntimeError: Distributed package doesnt have NCCL built in报错原因&#xff1a; windows系统不支持nccl&#xff0c;采用gloo&#xff1b; 报错解决&…

浅谈程序员如何搞副业?

当程序员想要开展副业时&#xff0c;可以考虑以下具体的方法和策略&#xff1a; 确定自己的技术专长&#xff1a;了解自己在哪些技术领域有深入的专业知识和经验&#xff0c;根据这些领域找到适合的副业方向。 建立个人品牌和网络影响力&#xff1a;通过撰写博客、发表技术文章…

手拉手安装启动Kafka2.13

启动Kafka本地环境需Java 8以上 Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff0c;它可以处理消费者在网站中的所有动作流数据。 这种动作&#xff08;网页浏览&#xff0c;搜索和其他用户的行动&#xff09;是在现代网络上的许多社会功能的一个关键因素。 Kafka启动…

云原生:企业数字化转型的引擎与未来

一&#xff0c;引言 随着信息技术的飞速发展&#xff0c;企业数字化转型已成为时代的必然趋势。在这场深刻的变革中&#xff0c;云原生技术以其独特的优势&#xff0c;逐渐成为推动企业数字化转型的核心动力。本文将详细探讨云原生技术的内涵、发展历程&#xff0c;以及在企业数…

Flink入门学习 | 大数据技术

⭐简单说两句⭐ ✨ 正在努力的小新~ &#x1f496; 超级爱分享&#xff0c;分享各种有趣干货&#xff01; &#x1f469;‍&#x1f4bb; 提供&#xff1a;模拟面试 | 简历诊断 | 独家简历模板 &#x1f308; 感谢关注&#xff0c;关注了你就是我的超级粉丝啦&#xff01; &…

前端三剑客 —— JavaScript (第十一节)

内容回顾&#xff1a; jQuery 操作DOM jQuery 事件处理 Ajax jQuery 特效案例 全选效果 tab切换 下拉菜单 自定义动画 Bootstrap 入门 首先我们可以在bootstrap官网上进行下载。官网地址:https//www.bootcss.com/ 首先在我们的页面中导入bootstrap的样式&#xff0c;我们可…

自己操作逆向案例一——某竞赛网登录密码加密,超级简单,泪目了!

网址&#xff1a;aHR0cHM6Ly9leGFtem9uZS5zYWlrci5jb20vcXVlc3Rpb24vZXhwbG9yZQ 打开开发者工具&#xff0c;点击账号密码登录&#xff0c;进行抓包 先进行搜索&#xff0c;发现一下子就找到了&#xff0c;且看上去很像MD5加密&#xff0c;打上断点&#xff0c;再次点击登录。…

计算机网络 Cisco路由信息协议(RIP)实验

一、实验内容 1、命名 2、关闭域名解释 3、设置路由器接口IP地址 4、根据要求配置RIP以实现所有客户机都能相互通信 5、配置默认路由 二、实验数据处理 1、建立拓扑图 2、PC机地址配置 主机IP地址子网掩码网关PC110.23.1.2255.255.255.010.23.1.1PC210.23.1.3255.255.2…

数据结构—顺序表实现通讯录

在上一节我们基本了解了顺序表的基本知识&#xff0c;接下来我们就用顺序表来实现一下通讯录。 一、基于动态顺序表实现通讯录 1.1 功能介绍 1. 能够保存用户信息&#xff1a;姓名&#xff0c;性别&#xff0c;年龄&#xff0c;电话&#xff0c;地址等 2. 添加联系人信息 3. …

锂电池寿命预测 | Matlab基于BiLSTM双向长短期记忆神经网络的锂电池寿命预测

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 锂电池寿命预测 | Matlab基于BiLSTM双向长短期记忆神经网络的锂电池寿命预测 程序设计 完整程序和数据获取方式&#xff1a;私信博主回复Matlab基于BiLSTM双向长短期记忆神经网络的锂电池寿命预测。 参考资料 [1] h…

如何为不同内容主题选择最适合的移动滑轨屏方案?

在数字化信息时代背景下&#xff0c;多媒体互动装置作为当前内容展示的常用手段&#xff0c;颇受大众的喜爱&#xff0c;比如应用在展厅、商业推广、活动会议等领域的滑轨屏&#xff0c;便是其中一种新颖的互动展示装置&#xff0c;并且它还能根据不同的内容主题&#xff0c;来…

企业级OVSSL证书的五大优势

在数字化时代&#xff0c;企业级OVSSL&#xff08;Organization Validation Secure Sockets Layer&#xff09;证书已成为保护网站安全、提升用户信任度的重要工具。越来越多企业在自身网络安全方面更倾向于OVSSL证书&#xff0c;以下就带你了解企业级OVSSL证书的五大优势&…