在 bash 中重定向 stdout 和 stderr 的正确方法是什么? [复制]

2024-04-08

这是我想要完成的具体任务。 zsh 的行为方式是我喜欢的

$ zsh
$ which clang > /dev/null 2&>1 && echo clang || echo gcc
clang
$ which doesntexist > /dev/null 2&>1 && echo doesntexist || echo gcc
gcc

但是,在 bash 中:

$ bash
$ which clang > /dev/null 2&>1 && echo clang || echo gcc
gcc

这是一般情况:

$ which clang > /dev/null 2&>1; echo $?
1
$ which clang; echo $?
/usr/bin/clang
0

我重定向输出的方式有问题。正确的方法是什么?


我认为您重定向的方式错误:

which clang > /dev/null 2&>1; echo $?

应该

which clang > /dev/null 2>&1; echo $?

这可能是任一 shell 允许前一种方法的方式。在 bash 中这不是正确的方法。 Bash 会将其解释为:

which clang >/dev/null 2 &>1; echo $?

其中2作为参数添加。

您可以通过创建类似的函数来验证这一点

e() { echo "$@" >e.log; }

并将其称为:

e 1 >/dev/null 2&>/dev/null

你会得到1 2在电子日志中。

在 bash 中,如果您像这样调用命令,也会更简单:

which clang &>/dev/null; echo $?

也不是调用外部二进制文件,例如which, use type -P反而。也不需要重定向 stderr 输出。

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

在 bash 中重定向 stdout 和 stderr 的正确方法是什么? [复制] 的相关文章

随机推荐

  • 如何通过 Grails 使用 imgscalr

    我最近几天才开始使用 Groovy 和 Grails 我之前没有任何 Java 经验 所以您必须原谅这个 可能 非常基本的问题 我搜索了 Google 和 Stack Overflow 但没有找到任何可以帮助我实际安装的内容 我已经可以上传
  • Elasticsearch 通过另一个文档查找文档

    我想在elasticsearch中搜索与id docId给定文档具有完全相同字段的文档 例如用户使用 docId 调用 api 我想过滤文档 以便返回的所有文档都满足 docId 中的某些参数 例如 我可以像这样查询 Elasticsear
  • TypeScript“保存时编译”功能在 Visual Studio 2015 中不起作用

    升级到 Visual Studio 2015 后 保存时编译 功能对我不起作用 当我对 ts将文件添加到我的项目中并保存 IDE 底部的状态栏显示Output s generated successfully 但是生成的 js文件没有改变
  • Linux/C下判断两个文件路径是否指向同一个文件?

    在Linux下 我有两个文件路径A和B const char A const char B 我现在想确定 我是否应该open 2 他们俩 int fda open A int fdb open B 我会在文件系统中打开同一个文件的两个文件句
  • Asp.Net Mvc 3 客户端验证、属性生成

    Asp net Mvc3 在输入元素上添加了一些自定义属性 例如 data val required 以执行验证 我知道这背后的所有理论 以及它是如何运作的 我想知道的是 当我在 using Html BeginForm 中创建表单时 它会
  • 如何使用seaborn为我的DataFrame创建堆积条形图[重复]

    这个问题在这里已经有答案了 我有一个数据框df df pd DataFrame columns App Feature1 Feature2 Feature3 Feature4 Feature5 Feature6 Feature7 Featu
  • 如何解析非结构化表状数据?

    我有一个text file保存操作的一些结果 数据显示在human readable format 就像一张桌子 我如何解析这些数据 以便形成一个数据结构 例如dictionaries有了这个数据 的一个例子unstructured dat
  • 获取所有不到一个月的物品

    有没有办法在 Django 中获取日期小于一个月前的所有对象 就像是 items Item objects filter less than a month old order by 你对 月 的定义是什么 30天 31天 除此之外 这应该
  • 如何将参数值传递给 a4j:jsFunction

    在我的页面上有一个按钮 可以在弹出窗口中打开项目列表 当我在列表中选择一个项目时 我想将该项目的 id 传递给我的第一页的 backingbean 是否可以 它尝试这样做a4j jsFunction and a4j param但它不起作用
  • 如何在 php 中创建可编辑的 Pdf 表单

    我有一个简单的表单 我想使用 php 使其可以在 pdf 中编辑 但是 pdf 正在创建表单 但我无法编辑和提交它 有什么原因或者我无法使用 php 编辑 pdf 我的代码是
  • 从 Firebase 数据库检索特定数据

    我正在使用 Firebase 数据库和 Java 在 Android 上创建一个聊天应用程序 每当用户首次注册时 它会将其用户名存储到节点下的数据库中user UserID profile username 用户名使用 User 类存储 这
  • 包含 iframe 中的 iframe 的目标父 div

    所以基本上我有这样的东西 div class iframe holder span span div gt div class iframe holder span span div gt div class iframe holder s
  • 为加权图生成邻接矩阵

    我正在尝试实施弗洛伊德 沃歇尔算法 http en wikipedia org wiki Floyd E2 80 93Warshall algorithm 为此 我需要设置一个adjacency matrix的加权图 我该怎么做呢 我知道这
  • 如何在没有 DOTALL 的情况下匹配任何内容 (DOTALL)?

    我的正则表达式需要默认的非换行符匹配点和re DOTALL dot 匹配换行符 我需要前几个 只是one后者在单个正则表达式中 尽管如此 因为我需要一个点来匹配换行符 所以我必须使用DOTALL 并使用 n 多次以获得默认的 除换行符之外的
  • 以编程方式隐藏和显示 WKInterfaceGroup

    我正在使用 xCode 6 2 beta 2 并尝试以编程方式隐藏和显示组 但没有显示我可以编写的方法group hidden YES or group hidden NO还有其他方法可以做到同样的事情吗 是的 WKInterfaceGro
  • 如何减慢从BVH文件读取opengl动画的速度?

    使用 GLFW3 我目前制作了一个 bvh 文件解析器 它读取文件并将其转换为我在 opengl 中制作的人体模型 然而 每当我启动它时 移动速度太快 以至于眼睛看不到动画 所以我想把动画速度调低一点 这是我的渲染循环 while glfw
  • efcore 3.1 不支持字符串连接查询?

    有没有办法通过使用 String Format 或 将多个字段连接在一起或只是传统的 来使用 EFCore 3 1 进行查询 我有这个代码 await this Db ACoolDbSet Where y gt y Plums y Pear
  • 如何使用 JSON 从 Java 服务器将图像发送到 Javascript 客户端

    我正在研究 Google Contacts API 我收到了所有数据并以字符串形式发送到 JSON javascript 但是当我从联系人获取图像时 我可以接收图像 我怎样才能将它发送到 JSON 如何将图像文件发送到 URL 可以使用路标
  • 是否可以通过内置应用程序将文件保存在沙箱之外?

    如果我有一个UIWebView其中包含文件链接 那么是否可以将这些文件保存到应用程序沙箱之外的磁盘上 是的 我知道应用程序无法访问其沙箱之外的文件系统 但是保存过程可以由任何可以处理文件类型的应用程序来完成吗 例如 如果它是音频文件 我的应
  • 在 bash 中重定向 stdout 和 stderr 的正确方法是什么? [复制]

    这个问题在这里已经有答案了 这是我想要完成的具体任务 zsh 的行为方式是我喜欢的 zsh which clang gt dev null 2 gt 1 echo clang echo gcc clang which doesntexist