stderr

zsh:stdout 和 stderr 同时输出到控制台和日志
stderr

zsh:stdout 和 stderr 同时输出到控制台和日志

我正在将一个脚本从 bash 转换为 zsh,几天来一直在为输出而苦恼。我希望 stdout 和 stderr 都转到控制台和日志文件。我尝试了所有能在网上找到的方法,但毫无效果。我读过 zsh 手册的重定向部分,但找不到任何有用的信息,尽管我必须承认我不清楚。 以下是我在脚本开头附近尝试过的内容及其结果: exec 2>&1 | tee -i test.log # everything in console, log created but empty exec 2>&1 | tee -i > test.log ...

Admin

批处理:如何仅显示控制台输出中的错误(即将 STDOUT 重定向到 NUL 并将 STDERR 重定向到 CON)?
stderr

批处理:如何仅显示控制台输出中的错误(即将 STDOUT 重定向到 NUL 并将 STDERR 重定向到 CON)?

我正在想办法仅有的控制台输出上的错误(并抑制所有其他输出)而无需重定向到文件或使用 TEE 等。除了调用函数之外,我还试图让它适用于单个命令(CALL :FunctionName arg1 arg2)。 我觉得自己像个白痴,无法弄清楚这一点,但我在网上找不到任何可以工作的例子,而且我使用过的重定向组合都没有起作用。 如何重定向STDOUT到>NUL并同时重定向STDERR到>CON? 只需使用 吗>NUL? 似乎有些错误消息会出现在 STDOUT 流中(例如SC query BadServiceName),具体取决于控制台应用程序的编写方式...

Admin

批处理脚本 - 如何有条件地重定向输出流
stderr

批处理脚本 - 如何有条件地重定向输出流

总而言之,目标有两个: 创建一个仅包含失败的命令以及这些命令生成的错误消息的日志文件。 防止控制台输出(成功或失败),除了我想要回显的消息。 我正在尝试弄清楚如何在批处理文件中执行如下操作: @CmdThatWillFail || Redirect original command + error message to a file 我正在尝试捕获原始命令及其伴随的错误消息——但前提是出现错误,同时抑制所有输出到控制台。我意识到我不能在每个命令前使用 @,也不能关闭 ECHO 来捕获原始命令,所以我甚至不确定这是否可行。 除了使用 Doskey 之外...

Admin

如何修复 /dev/stderr 指向 /dev/null 而不是当前终端?
stderr

如何修复 /dev/stderr 指向 /dev/null 而不是当前终端?

当 /dev/stderr 指向 /dev/null 时,该如何修复,因为所有错误消息都被重定向到 /dev/null,而无需使用该>操作。 ~  tty /dev/pts/0 ~  l /dev/stdout lrwxrwxrwx 1 root root 15 Jun 1 18:06 /dev/stdout -> /proc/self/fd/1 ~  l /dev/stdin lrwxrwxrwx 1 root root 15 Jun 1 18:06 /dev/stdin -> /proc/self/fd/0 ~  l ...

Admin

ffmpeg 更简洁,无需隐藏进度条
stderr

ffmpeg 更简洁,无需隐藏进度条

如果不编辑和重新编译ffmpeg源代码,如何才能隐藏它在执行时打印的许多行?开始编码,而不会隐藏每秒更新一次的进度条。尽管编码? 进度条: frame=14759 fps=3226 … bitrate=8509.2kbits/s speed= 108x 典型命令: ffmpeg -hide_banner in.mov out.mp4 典型噪音:十几行或更多行,例如 Duration: 00:59:19.45, start: 0.257200, bitrate: 9623 kb/s Stream #0:0[0x1bf]: Data: dvd_nav...

Admin

Moreutils 的 Chronic 会在 STDOUT 中报告所有内容,但仅限于在 cron 中运行时
stderr

Moreutils 的 Chronic 会在 STDOUT 中报告所有内容,但仅限于在 cron 中运行时

我准备了以下脚本来测试chronic和cron: echo "normal out" echo "error out" >&2 exit 0 当我在普通 shell 中使用 运行它时chronic -ev,输出符合预期: $ chronic -ev /path/to/test.sh STDOUT: normal out STDERR: error out RETVAL: 0 所以我将它添加到我的 crontab 中,如下所示 MAILTO="[email protected]" * * * * * chronic -ev /...

Admin

为什么当启用 TTY 时,putty 没有获取 SSH_MSG_CHANNEL_EXTENDED_DATA 数据包?
stderr

为什么当启用 TTY 时,putty 没有获取 SSH_MSG_CHANNEL_EXTENDED_DATA 数据包?

引用RFC4254 § 6.6. 会话数据传输, 会话的数据传输是使用 SSH_MSG_CHANNEL_DATA 和 SSH_MSG_CHANNEL_EXTENDED_DATA 数据包以及窗口机制完成的。已为 stderr 数据定义了扩展数据类型 SSH_EXTENDED_DATA_STDERR。 我的问题是...为什么当我ls -latr 1>&2 && pwd通过PuTTY中的交互式shell执行此操作时,我看不到任何SSH_MSG_CHANNEL_EXTENDED_DATA数据包? 这是我的PuTTY日志: https...

Admin

PowerShell Tee-Object 也详细记录
stderr

PowerShell Tee-Object 也详细记录

我使用 Tee-Object 将命令输出到控制台和文件。我使用以下命令: Command 2>&1 | Tee-Object 'myfile.log' 使用此命令,我只能在文件中获取标准和错误输出。发送详细输出时,我确实可以在控制台中看到它,但它不会出现在我的日志文件中。 如何将所有控制台信息输出到文件?还有详细消息。 我找到了这个 Pipeline (1) Error (2) Warning (3) Verbose (4) Debug (5) All (*) We still use...

Admin

调用最后一个命令在开头插入虚假字符(在 Zsh 中)
stderr

调用最后一个命令在开头插入虚假字符(在 Zsh 中)

交互非常复杂,我不知道我到底在寻找什么,但也许你仍然可以提供帮助。 有时,通常在发生错误后(返回代码 > 0),当调用最后一个命令时,我在命令行前面插入了一个虚假字符。 > dls WEB-INF ^ (d is inserted, but can be another letter) 我想知道是否是因为我的提示定义 autoload -Uz vcs_info precmd_vcs_info() { vcs_info } precmd_functions+=( precmd_vcs_info ) setopt PROMPT...

Admin

为什么附加到日志文件的是 2>&1 而不是 2>>&1
stderr

为什么附加到日志文件的是 2>&1 而不是 2>>&1

我将 STDOUT 和 STDERR 重定向到单个文件,并且文件一直在增长,因此我总是使用“附加”重定向;这是>> 我的命令是command >> logfile 2>&1 并且它有效。 但是 STDERR 重定向只有一个>,我用它来“创建”文件,删除前一个文件,如下所示command > outlog 2> errlog 为什么在这种情况下它不会删除日志文件? ...

Admin

即使退出代码为 0,Azure 管道步骤也会失败
stderr

即使退出代码为 0,Azure 管道步骤也会失败

我已经设置了一个 azure-pipeline yaml 配置,其中包含一个运行 5 个脚本的管道作业。每个脚本的配置都将标志failOnStderr设置为true。脚本成功运行,但阶段失败,输出如下: ##[error]Bash wrote one or more lines to the standard error stream. 我启用了system.debug详细功能并获得了进一步的详细信息: ##[debug]Exit code 0 received from tool '/bin/bash' ##[debug]STDIO streams...

Admin

将 stderr 传送到文件和屏幕,而不将 stderr 重定向到 stdout
stderr

将 stderr 传送到文件和屏幕,而不将 stderr 重定向到 stdout

在 bash 脚本中,我想在将 stderr 传输到文件和终端的同时执行命令。但是,我希望 stderr 保留在“2”文件描述符上,以便我可以从调用此 bash 脚本的外部进程解析它。 到目前为止,我见过的所有解决方案都涉及将 stdout 与 stderr 交换,然后发送到另一个文件,例如: find /var/log 3>&1 1>&2 2>&3 | foo.file 如果我从另一个脚本调用此脚本,stderr 将转到 stdout,stdout 将转到 stderr,这对我来说不好。我尝试再次交换它们,...

Admin

如何使用对话框重定向 bash 脚本中的 stdout 和 stderr?
stderr

如何使用对话框重定向 bash 脚本中的 stdout 和 stderr?

对于将 stdout 和 stderr 重定向到文件的单个脚本,如下所示: ./myscript.sh 2>&1 | tee -a out_file 运行正常。当我尝试以同样的方式运行包含使用对话命令(并调用其他脚本) ./main.sh 2>&1 | tee -a out_file 由于这些框,out_file 包含不需要的字符。例如: #!/bin/bash # myscript.sh dialog --title "Title" \ --msgbox "Message Box" \ 30 120 date ...

Admin

ssmtp [email protected] < file.log 不起作用。正文为空白
stderr

ssmtp [email protected] < file.log 不起作用。正文为空白

我正在运行一个简单的 rsync 脚本,其中我将 stdout 和 stderr 记录到两个不同的文件 rsync_stdout.log 和 rsync_stderr.log。 当我尝试使用以下命令通过电子邮件发送 rsync_stderr.log 的内容时: echo $(cat rsync_stderr.log) | ssmtp [email&nbsp;protected] 我收到一封空白的电子邮件正文,但是当我这样做时: echo $(cat rsync_stdout.log) | ssmtp [email&nbsp;protected] ...

Admin