微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在bash中redirect所有stderr?

我正在寻找一种方法来redirect交互式bash中所有的stderrstream(理想情况下,它的调用父进程)。

我不想从每个单独的命令redirectstderrstream,我可以通过将2> a_file附加到每个命令来做到这一点。

认情况下,这些stderrstream被redirect到交互式bash的stdout。 我想让他们在这个交互式bash过程的stderr,以防止我的stdout被错误信息污染,并能够分开处理他们。

有任何想法吗?

Windows Bash和Visual Studio代码:如何将bash作为运行任务启动?

在不同用户的情况下在另一个shell脚本中运行一个shell脚本

核心转储的消息不会在STDERR中捕获

.bashrc代码在首次login时每天执行一次

我如何让自己创build的shell与.sh文件一起工作

我还没有find答案…但也许它实际上是一个tty参数。 有谁知道一些关于tty / interactive shell责任来处理stderr吗?

在bash脚本中错误的replace

重命名所有文件在Linux中的一次性

我可以使用Google翻译让我的RaspBerry Pi按需求以不同的语言发言吗?

在bash或python中是否有一种方法可以从一个脚本获取输出,并使用另一个脚本与其进行交互?

如何得到没有。 的行计数匹配来自文件夹中的所有文件的string

在bash中使用exec内建:

exec 2> /tmp/myfile

你可以启动一个新的bash进程重定向该进程的stderr:

$ bash -i 2> stderr.log $

用双引号试试你的命令,如下所示:

ssh remotehost "command" 2>~/stderr

在本地系统上使用远程主机上的远程文件进行测试。

$ ssh remotehost "tail x;head x" 2>~/stderr $ cat stderr tail: cannot open `x' for reading: No such file or directory head: cannot open `x' for reading: No such file or directory

我没有看到你的问题,按照设计工作:

$ ssh remotehost 'ls nosuchfile; ls /etc/passwd' >/tmp/stdout 2>/tmp/stderr $ cat /tmp/stdout /etc/passwd $ cat /tmp/stderr nosuchfile not found

两件事情:

在远程ssh命令中使用2>&1导致错误在本地tar文件中结束,从而导致“中断”备份。

如果你想在ssh的另一端应用重定向,请记住转义重定向命令。

我的建议是将远端的stderr重定向一个文件,稍后再提取,以防出错。

例:

ssh -t remotehost tar -cf - /mnt/backup 2>backup.err > localbackup.tar EXITSTATUS=$? if [ $EXITSTATUS != "0" ] then echo Error occurred! ssh remotehost cat backup.err >localbackup.errors cat localbackup.errors ssh remotehost rm backup.err else echo Backup completed successfully! ssh remotehost rm backup.err fi

我发现一个方法是用圆括号'()'(启动一个子shell)或大括号'{}'(无子shell;更快)包围命令:

{ cmd1 cmd2 ... cmdN } 2> error.log

当然,这可以在1行上完成:

{ cmd1; cmd2; ... cmdN; } 2> error.log

试过ssh -t在远端创建一个伪TTY?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐