我有一个 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,如何将 stderr 和 stdout 复制到日志文件并将它们显示在控制台上?
我想使用 exec 在脚本本身中执行此操作。
我试过
exec &>> log.out
echo "This is stdout"
echo "This is stderr" >&2
Run Code Online (Sandbox Code Playgroud)
但是上面的内容在控制台上没有打印任何内容。我怎样才能在 bash 中实现这一点?
我有一个 Bash 脚本,我试图帮助我运行一个相当复杂的命令,它有一些小的更改,它会通过 echo 和 read 询问我。
我找到了强制它运行终端来执行命令的解决方案,但我对此不感兴趣。我希望它做的是,如果我腾出空间并在 Nautilus 中按 Enter 键(使其与 Run Software 一起运行),它会轻轻弹出一个通知,说“请从终端运行它”。
我可以让弹出窗口发生——就像我知道命令一样——但我无法让 Bash 脚本判断它是否在终端内运行,它似乎总是这么认为。甚至有可能吗?