/dev/null 1 & 2的用法

2023-10-26

应用背景

如下例所示,aa是不识别的命令。
在执行./test.sh时,输出两行,第一行表示错误输出;第二行表示标准输出。
如果把脚本test.sh执行的所有信息,写入脚本日志test.log,那么就出现了人为偏差,脚本日志不包含错误输出的内容;这样不方便脚本执行的debug日志需求。

[qilei@localhost ~]$ cat ./test.sh 
#!/bin/bash
aa
date
[qilei@localhost ~]$ ./test.sh 
./test.sh: line 2: aa: command not found
Mon Mar  6 05:54:00 PST 2017
[qilei@localhost ~]$ ./test.sh > test.log
./test.sh: line 2: aa: command not found
[qilei@localhost ~]$ cat test.log 
Mon Mar  6 05:54:10 PST 2017

/dev/null 1 & 2的介绍

/dev/null :代表空设备文件

>  :代表重定向到哪里,例如:echo "123" > /home/123.txt
1  :表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"
2  :表示stderr标准错误
&  :表示等同于的意思,2>&1,表示2的输出重定向等同于1

把错误输出和标准输出,都导入日志test.log里

  1. 把错误输出和标准输出,都导入日志test.log里;利用的是2>&1
  2. 2>&1,意思是错误输出等同于标准输出。所以使得./test.sh > test.log,可以把标准输出和错误输出全部导入日志test.log里。
  3. 注意:2>&1,中间不能有空格。
  4. 注意:2>&1,必须写在最后,否则会失去原有意义。
  5. tee命令,不能替代>重定向命令
[qilei@localhost ~]$ ./test.sh > test.log 2>&1
[qilei@localhost ~]$ cat test.log 
./test.sh: line 2: aa: command not found
Mon Mar  6 06:00:29 PST 2017
[qilei@localhost ~]$ ./test.sh | tee test.log 2>&1
./test.sh: line 2: aa: command not found
Mon Mar  6 06:00:41 PST 2017
[qilei@localhost ~]$ cat test.log 
Mon Mar  6 06:00:41 PST 2017

屏蔽标准输出和错误输出信息

如下例所示,
1. /dev/null是空文件,就是为了屏蔽输出而已。
2. > /dev/null,默认是把标准输出屏蔽,但不能屏蔽错误输出。等同于 1 > /dev/null
3. 2 > /dev/null,默认是把错误输出屏蔽,但不能屏蔽标准输出。
4. 2 > /dev/null,2和>之间可以有空格。与2&>1有些不同。具体原因先不管了。

[qilei@localhost ~]$ ./test.sh > /dev/null 
./test.sh: line 2: aa: command not found
[qilei@localhost ~]$ ./test.sh > /dev/null 2>&1
[qilei@localhost ~]$ ./test.sh 2> /dev/null
Mon Mar  6 06:04:56 PST 2017
[qilei@localhost ~]$ ./test.sh 1> /dev/null
./test.sh: line 2: aa: command not found
[qilei@localhost ~]$ ./test.sh 1 > /dev/null
./test.sh: line 2: aa: command not found
[qilei@localhost ~]$ ./test.sh 2 > /dev/null
./test.sh: line 2: aa: command not found
[qilei@localhost ~]$ 

tee命令,如何把标准输出和错误输出都导入test.log里

tee命令,如何把标准输出和错误输出都导入test.log里?下例解决。
1. 注意,2>&1 要放在tee命令之前。

[qilei@localhost ~]$ ./test.sh | tee test.log 2>&1
./test.sh: line 2: aa: command not found
Mon Mar  6 06:17:27 PST 2017
[qilei@localhost ~]$ cat test.log
Mon Mar  6 06:17:27 PST 2017
[qilei@localhost ~]$ ./test.sh 2>&1 | tee test.log
./test.sh: line 2: aa: command not found
Mon Mar  6 06:17:48 PST 2017
[qilei@localhost ~]$ cat test.log
./test.sh: line 2: aa: command not found
Mon Mar  6 06:17:48 PST 2017
[qilei@localhost ~]$ 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

/dev/null 1 & 2的用法 的相关文章

随机推荐

  • 爬虫的工作原理、挑战和应用

    什么是网络爬虫 网络爬虫 Web Crawler 是一种自动化程序 它能够在互联网上浏览网页 收集信息并将其存储在本地或其他地方供进一步处理和分析 爬虫通常用于搜索引擎 数据挖掘 内容聚合 价格比较等应用中 爬虫的工作原理 发送请求 爬虫从
  • Node.js 全网最详细教程(第三章:Node.js 文件系统模块)

    fs 文件系统模块 fs 模块是Node js 官方提供的 用来操作文件的模块 它提供了一系列的方法和属性 用来满足用户对文件的操作需求 一 fs readFile 异步读取文件 源码解析 参数1 path 读取的路径 参数2 option
  • ProGuard 进阶系列(二)配置解析

    书接上文 从开源库中把代码下载到本地后 就可以在 IDE 中进行运行了 从 main 方法入手 可以看到 ProGuard 执行的第一步就是去解析参数 本文的内容主要分析源码中我们配置的规则解析的实现 在上一篇文章末尾 在 IDE 中 添加
  • WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connec

    WARNING Retrying Retry total 0 connect None read None redirect None status None after connection broken by SSLError SSLE
  • C语言函数不定参数实现方式

    函数如何实现不定参数 由于在C语言中没有函数重载 解决不定数目函数参数问题变得比较麻烦 即使采用C 如果参数个数不能确定 也很难采用函数重载 对这种情况 提出了指针参数来解决问题 1 va list 定义了一个指针arg ptr 用于指示可
  • 数据库设计规范(详细)

    数据规范化设计 一 数据规范化 仅有好的RDBMS并不足以避免数据冗余 必须在数据库的设计中创建好的表结构 Dr E F codd 最初定义了规范化的三个级别 范式是具有最小冗余的表结构 这些范式是 1 第一范式 1st NF First
  • linux配置浮动IP

    在高可用集群环境中 一般都需要使用浮动IP来实现web高可用 High Availability 浮动IP的概念以及为什么需要浮动IP请参考 浮动IP FLOAT IP 本篇文章主要讲实际操作步骤 可以是双机 也可以是多机 主服务器为172
  • VLOOKUP函数匹配结果不正确?错误结果是怎么得出来的?[已解决]

    匹配结果不正确主要是以下2个方面入手 是否是精确匹配 range lookup 参数为 FALSE或0 检查所有的数据是否带空格等 官方帮助文档 Microsoft Excel 中 VLOOKUP 函数的语法和用法 语法 VLOOKUP l
  • [yotroy.cool]WSL安装CUDA独显 PyTorch 深度学习环境配置,测速为什么要用WSL?

    个人博客https www yotroy cool 欢迎关注我哦 前言 为了预习大三课程 想提前学习下PyTorch 于是我遇到了神仙学习教程 动手学深度学习 同时以此为参考完成了环境配置 感谢大佬们无私奉献Thanks 本教程展示了独显w
  • 等精度测频的原理和基于FPGA的实现

    我们通过FPGA测量信号频率 一般来说有两种方案 传统测频法和等精度测频法 方案一 传统测频是在一段闸门时间内直接对输入信号的周期进行计数 也被叫做直接测频法 设闸门信号为gate 检测待测信号上升沿 然后判断gate是否为高电平 若为高电
  • 转置矩阵,逆矩阵和倒转置矩阵

    单位矩阵 转置矩阵 transpose matrix 在线性代数中 矩阵A的转置是另一个矩阵AT 也写做Atr tA或A 由下列等价动作建立 把A的横行写为AT的纵列 把A的纵列写为AT的横行 形式上说 m n矩阵A的转置是n m矩阵 fo
  • 【ctfshow】PHP特性2

    目录 web100 web101 web102 web103 web104 web105 web106 web107 web108 web109 web110 web100 include ctfshow php flag in class
  • ascii码图片

    铁臂阿童木 be be Nc R o uQ bo Jod e dd e d
  • lora模块学习一

    LoRa TM 调制解调器采用扩频调制和前向纠错技术 与传统的FSK或OOK调制技术相比 这种技术不仅扩大了无线通讯链路的覆盖范围 而且还提高了链路的鲁棒性 在设计中 可以通过调整扩频因子 SF 调制带宽 BW 和编码率 CR 三个关键设计
  • cuda-gdb 调试方法:cuda gdb中的可调参数

    cuda gdb 中存在一些可调的参数 可以通过 set cuda lt tunable name gt
  • php实现ETH原生签名交易sendRowTransaction

    文章目录 1 安装GMP 之前需要先安装m4 不然会出错 2 然后ubuntu安装gmp 3 然后安装PHP gmp扩展 4 安装scrypt 扩展 4 撤销sudoers文件写权限 命令 参考文章链接 1 安装GMP 之前需要先安装m4
  • window.location.href跳转带有token的新链接时显示空白页

    问题 从A平台跳到B平台并自动登录B平台 后端生成包含token的完整链接传给前端 前端window location href打开时页面显示空白页 手动刷新才会跳到新链接 原因 用window location href跳转新链接可能会带
  • JIO学习(一)输入流综述

    一 字节输入流 java io InputStream java lang Object java io InputStream 所有已实现的接口 Closeable 直接已知子类 AudioInputStream ByteArrayInp
  • Pinia从入门到精通

    一 为什么使用 Pinia Pinia 是 Vue 的专属状态管理库 它允许你跨组件或页面共享状态 如果你熟悉组合式 API 的话 你可能会认为可以通过一行简单的 export const state reactive 来共享一个全局状态
  • /dev/null 1 & 2的用法

    应用背景 devnull 1 2的介绍 把错误输出和标准输出都导入日志testlog里 屏蔽标准输出和错误输出信息 tee命令如何把标准输出和错误输出都导入testlog里 应用背景 如下例所示 aa是不识别的命令 在执行 test sh时