Shell 重定向错误输出

2023-10-30

Shell 重定向错误输出

笔者准备写一个 Shell 脚本,需要获取一行命令的错误输出,存于一个变量中,供后续使用。

首先是获取输出内容到变量:

IN=`echo hello`

或者:

IN=$(echo hello)

这样将会把标准输出 hello 存在变量 IN 中。

但是上述方法只能获取标准输出(stdin),不能获取标准错误(stderr)。于是需要重定向输出:

IN=`ls /aaa 2>&1`

如果路径 /aaa 不存在,那么上述命令会产生一个标准错误输出,而用 2>&1 则可以把标准错误重定向到标准输出,于是就能存于变量 IN 中。

在 Shell 中,在一条命令末尾加上 > 即可重定向输出。可以重定向到文件(echo hello > /tmp/in)、设备(echo hello > /dev/null)以及输出类别(echo hello >&2)等。

直接用 > 默认重定向标准输出。若要声明被重定向的输出类别,可以用 1> 重定向标准输出,用 2> 重定向标准错误。于是上述代码中 2>&1 就是把标准错误重定向到标准输出,以便被变量获取。

当然,笔者只想保留标准错误,需要筛去标准输出,此时需要同时把原标准输出重定向到 /dev/null/dev/null 相当于一个黑洞,或者说垃圾桶,可以把不需要的东西都重定向到这里去。重定向标准输出到 /dev/null 写作 1>/dev/null

所以最终代码是

IN=`ls /aaa 2>&1 1>/dev/null`

注意,这个重定向的顺序是有影响的。依经验看,上述重定向顺序是正确的。

声明:未经作者允许禁止转载

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Shell 重定向错误输出 的相关文章

  • 如何使用 GCP 负载均衡器将 HTTP 重定向到 HTTPS

    我正在 GCP 中使用 2 个节点 Apache httpd 设置负载均衡器 域为 lblb tonegroup net 目前我的负载均衡器工作正常 流量正在两个节点之间切换 但我如何配置重定向http lblb tonegroup net
  • Linux Bash - 日期格式

    我的日期格式是 yyyy mm dd hh mm ss 如何检查我的输入 它应该是这样的 bin bash read p Date format yy mm dd HH MM SS input check date Y m d H M S
  • Linux 内核中的 64 位 time_t

    我已经编译了内核 3 19 1 但仍然有问题time t 只是一个简单的程序cout lt lt sizeof time t 给出 4 个字节的大小 而不是我的意图的 8 个字节 我应该在 make menuconfig 期间打开特定选项吗
  • Linux - 查找特定文件之后和之前的文件

    我试图在我的计算机上查找特定文件创建前 1 小时和创建后 1 小时创建的文件 这是我尝试过的方法 find root newermt 2012 10 04 1800 and newermt 2012 10 04 2000 exec ls l
  • 在 Linux 上使用命令行 PHP 检查互联网连接

    我在 Linux 上使用命令行 PHP 来打开蓝牙拨号连接 并且我需要一种快速的方法来检查互联网连接是否处于活动状态 嗯 不一定要脏 但要快 使用exec运行外部命令不是问题 我正在考虑 ping 一些稳定的服务器 例如谷歌 但我想知道是否
  • Windows 上的 DLL Main 与 Windows 上的 DLL Main Linux 上的 __attribute__((constructor)) 入口点

    考虑代码 EXE int main printf Executable Main loading library n ifdef HAVE WINDOWS HMODULE lib LoadLibraryA testdll dll elif
  • 如何在Linux下生成系统范围的唯一ID

    我正在使用多进程 Linux 系统 需要生成唯一的 ID 安全性不是考虑因素 因此 ID 生成器从零开始递增就可以了 而且它只是在本地计算机内 不涉及网络 显然 实现这一点并不难 但我只是想知道是否已经提供了任何东西 最好是轻量级的 这听起
  • 如何从存储在 char* 指针中的 name 调用 c 函数?

    我想通过函数的名称动态调用函数 例如 假设有以下函数和字符串 void do fork printf Fork called n char pFunc do fork 现在我需要打电话do fork 就在 pFunc 那么这可能吗 欢迎 C
  • platform.linux_distribution() 已弃用 - 有哪些替代方案?

    从 Python 3 5 开始platform linux distribution https docs python org 3 5 library platform html platform linux distribution已弃
  • 如何判断输入来自哪个键盘

    设想 我有一个 USB RFID 读取器 将其连接到笔记本电脑后 它可以用作新连接的 USB 键盘 例如无需安装任何驱动程序 当接触带有 RFID 标签的阅读器时 它进入我当前的窗口 例如终端 外壳 RFID 号码 例如0009339384
  • WSL gprof 报告零次

    我正在尝试在 Windows 10 上的 WSL 中使用 gprof 我没有预料到会遇到任何困难 因为上次我在 Windows 7 上的 Ubuntu 虚拟盒中使用它时它工作得很好 与以前一样遵循来自https www thegeekstu
  • 尽管 EXPORT_SYMBOL 模块插入时出现“模块中的未知符号”

    我正在尝试编译并插入 r8169 realtek 以太网驱动程序 我的内核版本是 ebin sony uname r 4 2 0 rc3 custom 我的本地磁盘中有相同的完整源代码 用于安装当前的内核 当我运行时该模块编译成功make
  • 如何使用Python distutils?

    我用 python 编写了一个快速程序 将 gtk GUI 添加到 cli 程序中 我想知道如何使用 distutils 创建安装程序 因为它只是命令行应用程序的 GUI 前端 所以它只能在 nix 中工作 所以我不担心它是跨平台的 我的主
  • Linux 上共享内存的生命周期是多长

    我正在使用 ftok shmget shmat shmdt 函数在 Linux 上创建 写入和读取共享段 如果我写入一个程序中的段 然后退出 然后稍后从另一个程序中读取该段 我会惊讶地发现数据仍然存在 我预计当共享一个段的最后一个进程执行
  • 我应该如何从非 root Debian Linux 守护进程登录?

    我正在编写一个新的守护进程 它将托管在 Debian Linux 上 我发现 var log 具有仅 root 写入权限 因此我的守护进程无法在那里写入日志文件 但是 如果它写入那里 它似乎将获得自动日志轮转 并且也按照用户期望的方式工作
  • Motif 库的水平绘制的 RowColumn 类 (C)?

    我正在使用 Motif Library 来完成我的工作 如果有人不熟悉这个库 您可以在这里找到文件列表https packages ubuntu com xenial amd64 libmotif dev filelist https pa
  • 如何在多行而不是单行输出上打印 Linux 组名称

    我尝试过 getent group 命令 id Gn user 和一些 sed 组合 但我认为我无法实现 因此向其他程序员伸出援手 我希望能够打印此 groups abc123输出 abc123 devops 构建测试设计 预期输出 gro
  • 如何在不需要设置 LD_LIBRARY_PATH shell 变量的情况下输入“cargo run”?

    我构建了一个 Rust 程序 通过 C 接口调用 C 函数 为了执行该程序 我必须运行 export LD LIBRARY PATH
  • 如何检查QProcess是否正确执行?

    QProcess process sdcompare QString command sdcompare QStringList args sdcompare command sdcompare diff args sdcompare lt
  • 为什么在setsid()之前fork()

    Why fork before setsid 守护进程 基本上 如果我想将一个进程与其控制终端分离并使其成为进程组领导者 我使用setsid 之前没有分叉就这样做是行不通的 Why 首先 setsid 将使您的进程成为进程组的领导者 但它也

随机推荐

  • 特征筛选10——MIC最大信息系数(有监督筛选)

    理论部分可以参考 https blog csdn net qq 27586341 article details 90603140 互信息也是通过衡量x与y的线性关系 来判断特征的重要性 整个算法的思路是 x与y构成二维平面 对平面进行切分
  • 解决Linux -bash: rz(或者是sz): command not found

    rz 上传文件 sz 下载文件 在linux 系统中 使用rz 或 sz 命令是 提示 bash rz 或者是sz command not found 这个时候 说明没有安装 lrzsz 这时 输入命令 yum y install lrzs
  • 手机关机收不到微信消息_手机锁屏后收不到微信消息是怎么回事?

    展开全部 一 网络延迟 在没有接收到微信消息通知 网络延迟占了相当大的比例 使用手机时62616964757a686964616fe4b893e5b19e31333433623139 如果当时的网络信号不好 或者所在的地区信号不好 微信消息
  • 客观面试题--33.Springmvc的三大组件以及各自的作用?

    一 SpringMVC中的组件及各个组件的作用 1 DispatherServlet 前置控制器 负责接收并处理所有的web请求 根据handlerMapping找到具体的Controller 由controller完成具体的处理逻辑 2
  • 张召忠:第四次工业革命来了》课堂笔记

    张召忠 第四次工业革命来了 课堂笔记 讲师介绍 第四次工业革命是什么 第四次工业革命的形态 第四次工业革命有哪些内容 5G 无人驾驶 虚拟技术VR和AR 物联网 智能制造 面对第四次工业革命个人应该做哪些准备 面对第四次工业革命企业应该做哪
  • python使用Qt实现GUI编程

    python使用Qt实现GUI编程 文章目录 python使用Qt实现GUI编程 知识点 流程 过程 Qt 安装 pip安装 创建窗口 2 3 信号与槽 2 4 工具栏与菜单 2 5 窗口部件 2 6 布局 2 6 1 垂直布局 2 6 2
  • ruoyi启动前端报错‘vue-cli-service‘ 不是内部或外部命令

    解决方案 在新项目的pack json的文件目录 执行命令npm install 或者 cnpm install 如果报npm 不是内部命令 需要在系统配置全局的变量 在使用npm的时候 或者是通过npm下载了一些包 使用这些包的时候 有时
  • windows下安装suitesparse问题解决

    目的 在windows系统下 在slam后端中 为了加速计算 需要进行schur消元 边缘化 此时 需要安装一些依赖 方法 安装suitesparse metis for windows 1 5 0 细节问题 1 三 安装suitespar
  • 密码键盘常用(加解密,链接,MAC,PINBLOCK)算法介绍-资料整理

    常用算法介绍 一 DES TDES算法 1 DES Data Encryption Standard 标准加密算法 DES采用了64位的分组长度和56位的密钥长度 它将64位的输入经过一系列变换得到64位的输出 解密则使用了相同的步骤和相同
  • C++练习项目---TinySTL,简易的STL库

    概述 为了练习C 自己仿照标准的STL容器库实现一个简易的STL 目标 自己实现一个简易的容器库 TinySTL 实现标准库的Containers Library Algorithms Library Iterator Library St
  • 网络安全中的“瑞士军刀” nc

    在入侵中它是最经典的工具之一 NetCat被所有的网络安全爱好者和研究者称之为瑞士军刀 通过名字大家就能知道他的功能足够丰富 nc的全称为NetCat 它能够建立并接受传输控制协议 TCP 和用户数据报协议 UDP 的连接 Netcat可在
  • 进程间通信(五)—— 信号量

    Linux进程间通信 使用信号量 ljianhui的专栏 CSDN博客 进程间信号量
  • 利用HBuilder制作简易猜数字游戏

    table tr 猜数字游戏 请输入1 100的数字 tr tr td td tr table
  • 【C语言】malloc动态链表。N个人围成一圈,从第1个人开始顺序报号1、2、3。凡报到“3”都退出圈子,找出最后留在圈子中的人原来的序号。要求用链表实现。出圈顺序

    解题思路 定义一个结构体 它包含序号num和指向自己的结构体指针 编写一个返回值为结构体指针的的函数来返回链表的头指针 该函数中利用malloc函数来建立一个动态链表 建立链表的过程中同时也给节点num赋值 从1 13 编写另一个函数 该函
  • IntelliJ IDEA背景颜色和背景图片设置!

    前言 首先IDIEA是可以设置背景颜色和背景图片的 像有些有个性的同学就像设置自己的一个背景颜色和背景图片 现在将教你们如何设置 背景颜色 在IDEA里先打开File gt Settings gt Appearance Behavior g
  • Playwright快速上手指南

    Playwright是由微软公司2020年初发布的新一代自动化测试工具 相较于目前最常用的Selenium 它仅用一个API即可自动执行Chromium Firefox WebKit等主流浏览器自动化操作 作为针对 Python 语言纯自动
  • 结构体之引用结构体成员变量

    引用结构体成员变量 一个结构体包含一个或者多个成员变量 在实际使用中 就需要对其成员变量进行引用 对于一个已经定义了的结构体变量和一个指向该结构体的指针变量 可以用一下三种情况引用结构体 成员变量 1 由结构体变量名引用其成员 结构体变量名
  • 【C/C++】:C++总体回顾

    文章目录 摘要 一 封装 二 继承 三 多态 四 模板与标准模板库 五 其他 附录 总结 摘要 本篇文章主要用于C 一些专有名词的解释以及对C语言扩充功能的说明 如果想详细了解C 的用法以及代码的讲解建议参考其他专业书籍 一 封装 1 面向
  • C++ lambda

    lambda函数的完整形式 captures params gt return type body 变量捕获方式 参数列表 gt 返回值类型 代码块 lambda函数单独使用的时候必须赋值给auto类型的变量 举个例子 include
  • Shell 重定向错误输出

    Shell 重定向错误输出 笔者准备写一个 Shell 脚本 需要获取一行命令的错误输出 存于一个变量中 供后续使用 首先是获取输出内容到变量 IN echo hello 或者 IN echo hello 这样将会把标准输出 hello 存