将 bash 输出记录到文件中

Rob*_*b F 5 command-line shell bash logs pipe

我正在尝试构建 vlc,这相当复杂,并且依赖于安装了正确的软件包,并且总是因错误而窒息。为了跟踪我的所有步骤,我希望在与 shell 交互时将我正在做的事情输出到日志文件中。

根据这个问题的有用答案

通过键入以下内容,我得到了一个提升的提示

(sudo bash) | tee -a vlc_attempt.log
Run Code Online (Sandbox Code Playgroud)

不幸的是,输出不包括路径提示,我希望看到它来区分输入和输出。

我尝试将 stderr 管道传输到 stdout,反之亦然,这两者都会产生错误的结果,但没有在文件中输入任何内容。与尝试通过管道将 lxterminal 连接到 tee 或使用 --command= 选项启动 lxterminal 然后将上面的示例命令用引号括起来也是一样的。然后去哪儿?

lcd*_*047 9

使用script(1)记录一切发送到终端:

$ script
Script started, file is typescript
$ # do your work
...
$ # then exit with ^D
$ exit
Script done, file is typescript
Run Code Online (Sandbox Code Playgroud)

您可以稍后查看输出less

$ less -r typescript
Run Code Online (Sandbox Code Playgroud)

请注意,日志将包含发送到终端的所有控制字符,例如 ANSI 颜色或您的 shell 提示发送的任何其他内容。如果您不想在日志中使用控制字符,那么要么PS1在运行之前简化您的操作script,要么使用类似的东西stripansi(1)来清理输出。

  • @RobF 它无法工作。`tee` 可用于记录命令的输出,而不是交互式会话。您看到提示的唯一原因是您没有重定向 `stderr`。一旦你重定向 `stderr`,你将根本没有 shell 提示。真的,使用正确的工具来完成这项工作。 (4认同)