相关疑难解决方法(0)

使用 exec 重定向所有后续命令的 stderr

我有一个 bash 文件,我需要将所有输出重定向到一个文件、调试日志以及终端。我需要将 stdout 和 stderr 都重定向到调试并记录脚本中的所有命令。

我不想为2>&1 | tee -a $DEBUG文件中的每个命令添加。我可以忍受| tee -a $DEBUG

我记得有一种方法可以用类似exec 2>&1.

目前我正在使用以下内容:

#!/bin/bash
DEBUGLOG=/tmp/debug
exec 2>&1
somecommand | tee -a $DEBUGLOG
somecommand2 | tee -a $DEBUGLOG
somecommand3 | tee -a $DEBUGLOG
Run Code Online (Sandbox Code Playgroud)

但它不起作用。有没有人有解决方案/可以解释原因?

bash io-redirection

53
推荐指数
2
解决办法
4万
查看次数

将 stdout 和 stderr 复制到日志文件并将它们留在脚本本身的控制台上

使用 bash,如何将 stderr 和 stdout 复制到日志文件并将它们显示在控制台上?

我想使用 exec 在脚本本身中执行此操作。

我试过

exec &>> log.out

echo "This is stdout"
echo "This is stderr" >&2
Run Code Online (Sandbox Code Playgroud)

但是上面的内容在控制台上没有打印任何内容。我怎样才能在 bash 中实现这一点?

bash stderr exec

16
推荐指数
4
解决办法
3万
查看次数

Bash 脚本如何知道它是如何运行的?

我有一个 Bash 脚本,我试图帮助我运行一个相当复杂的命令,它有一些小的更改,它会通过 echo 和 read 询问我。

我找到了强制它运行终端来执行命令的解决方案,但我对此不感兴趣。我希望它做的是,如果我腾出空间并在 Nautilus 中按 Enter 键(使其与 Run Software 一起运行),它会轻轻弹出一个通知,说“请从终端运行它”。

我可以让弹出窗口发生——就像我知道命令一样——但我无法让 Bash 脚本判断它是否在终端内运行,它似乎总是这么认为。甚至有可能吗?

scripting bash terminal nautilus

12
推荐指数
1
解决办法
3550
查看次数

标签 统计

bash ×3

exec ×1

io-redirection ×1

nautilus ×1

scripting ×1

stderr ×1

terminal ×1