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 然后将上面的示例命令用引号括起来也是一样的。然后去哪儿?
使用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)
来清理输出。