我在 tty 上,有大量命令输入、大量详细的输出和一些错误消息。现在我必须将所有这些 stdin/stdout/stderr 文本(以控制台屏幕上显示的格式)转储到一个文件中。我如何使用内置工具(最好)完成此操作?
我不知道这个问题是否令人困惑!这真的很简单。假设我登录到 tty1 控制台终端,运行了一些命令(没有启用日志记录,因为我觉得没有必要),但突然出现了某些输出/消息,我想将它们转储到文件中(或者另一个选择是拿一支笔和一张纸)。
我之所以假设可以做到这一点,是因为您可以使用来shift + PgUp/PgDwn
移动屏幕输出,这意味着它们仍然在缓冲区中(即使处理是流水线式的)!...这就是应该恢复的。
答案1
TTY 使用“虚拟控制台内存”设备来缓冲其屏幕内容。您可以在man vcs
但这将让你获得当前屏幕上的内容。
实际上,这些只是/dev/
与 TTY 编号对齐的编号文件。这是我使用 TTY2 做的一个示例:
$ sudo fold -w$(stty -F /dev/tty2 size | awk '{print $2}') /dev/vcs2
Ubuntu 14.04 LTS bert tty2
bert login: oli
Password:
oli@bert:~$ cd test
oli@bert:~/test$ ls
Madonna - 10 - Bedtime Story.mp3 output_MP3WRAP.mp3
Madonna - 11 - Take A Bow.mp3
oli@bert:~/test$
这fold -w$(...)
是因为缓冲输出没有出现具有我期望的控制字符或换行符。这只是\n
在每行末尾添加。
正如 TuKsn 在评论中指出的那样,您不必为这一切烦恼,您可以通过以下方式实现完全相同的效果:
sudo screendump 2
您可以坚持> tty.log
在任一命令的末尾将输出写入tty.log
当前目录中名为的文件:
sudo screendump 2 > tty.log
再次,这只能让你获取屏幕上的内容。即使你增加了 TTY 中的回滚缓冲区,它不存储在可访问的内存中。 你可以改变但这涉及重新编译内核。
这将涉及重新启动并丢失当前的屏幕,所以如果你能做到这一点,那么记录的选项就会更加简单未来IO,像screen
或者tmux
或者只是script
。
答案2
也许您可以使用名为 的程序screen
。它将终端的所有输出保存到一个文件中。请查看此 Ubuntu 论坛帖子http://ubuntuforums.org/showthread.php?t=1379903。中國医学學術研究院。
答案3
由于我找不到“全选”的任何键盘快捷键,我发现这些可能会有帮助...... https://stackoverflow.com/questions/1536757/selecting-text-in-terminal-without-using-the-mouse 命令行剪贴板复制和粘贴实用程序?
第一个是屏幕,有人建议使用它,但它似乎有一个复制文本的实用程序,所以它可能有用。使用 ^A-Esc 进入复制模式。使用空格开始选择文本,使用空格结束选择文本。使用 ^A-] 插入文本
第二个是将剪贴板中的文本粘贴到文件中。我完全不确定这些方法是否可行...希望有一个可行。