AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 45450
Accepted
kolypto
kolypto
Asked: 2009-07-25 18:01:36 +0800 CST2009-07-25 18:01:36 +0800 CST 2009-07-25 18:01:36 +0800 CST

Unix:延迟标准错误显示

  • 772

有没有办法stderr在应用程序完成后显示错误摘要(来自)?

例如rsync,使用“--progress”显示大量数据,包括错误。但是当它完成时 - 它只是说“有错误”。在这种情况下,我想显示写入 stderr 的所有内容,因此我不必滚动并搜索究竟出了什么问题:)

PS 我知道在 C 中编写这样的实用程序是多么简单,但我想还有更多我不知道的方便的东西:)

unix reporting stderr
  • 3 3 个回答
  • 347 Views

3 个回答

  • Voted
  1. David Pashley
    2009-07-25T20:08:24+08:002009-07-25T20:08:24+08:00

    类似于 womble 的答案,您可以编写一个 bash 脚本,例如:

    #!/bin/sh
    
    set -e
    
    TMPFILE=$(mktemp)
    
    exec 2>$TMPFILE
    trap 'cat "$TMPFILE"; rm -f "$TMPFILE" exit $?' INT TERM EXIT
    
    command1
    command2
    command3
    

    这应该为整个脚本保存发送到 stderr 的所有内容并在最后输出。与 womble 的回答一样,我没有对此进行测试。

    • 5
  2. Best Answer
    womble
    2009-07-25T18:51:13+08:002009-07-25T18:51:13+08:00

    处理此问题的包装脚本:

    #!/bin/sh
    
    TMPFILE=$(mktemp)
    
    "$@" 2>$TMPFILE
    
    if [ "$?" != "0" ]; then
      cat $TMPFILE
    fi
    

    如果你把它保存到/usr/local/bin/delaystderrandchmod +x /usr/local/bin/delaystderr中,你应该能够以delaystderr rsync --progress. 如果进程退出时没有发出错误信号(返回非零),则不会打印 stderr;如果您愿意,您可以删除以开头的行if并fi禁用该行为。

    我不知道你怎么会比这更容易。

    (注意:我还没有实际测试过这个脚本,所以买家要小心)

    • 4
  3. Gary Chambers
    2009-07-25T18:03:55+08:002009-07-25T18:03:55+08:00

    如果您使用 bash 将 stderr 重定向到 stdout,则可以选择将其重定向到文件:

    rsync --progress 2>&1
    rsync --progress 2>&1 > file.out
    
    • 1

相关问题

  • Windows 有符号链接吗?

  • 控制 UNIX 目录内容用户组所有权

  • 在命令行上从 csv 文件中过滤带有空格字符的字段

  • 如何将 VAR 从子 shell 导出到父 shell?

  • 查找文件大小(以 MB 为单位)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve