在Linux平台上提问的时候总是需要提供当前shell的截图,但是截屏,上传,链接的代价比较大,有没有什么命令可以直接从当前shell中提取文本呢?
答案1
你可以使用脚本命令。
摘自手册:
脚本实用程序会将终端上打印的所有内容打印成一份打字稿。
对于需要交互式会话的硬拷贝记录作为作业证明的学生来说,这很有用,因为打字稿文件可以稍后使用 lpr(1) 打印出来。如果给出了参数文件,脚本会将所有对话保存在文件中。如果没有给出文件名,则将 typescript 保存在文件 typescript 中。
如果给出了参数命令,脚本将使用可选参数向量而不是交互式 shell 运行指定的命令。
示例(typescript 文件中的信息):
Script started on Mon Nov 2 21:13:17 2009
bash-3.2$ pwd
/Users/ricbax
bash-3.2$ ps
PID TTY TIME CMD
395 ttys000 0:00.02 -bash
425 ttys000 0:00.00 script
426 ttys001 0:00.01 /bin/bash -i
bash-3.2$ exit
exit
Script done on Mon Nov 2 21:13:44 2009
答案2
screen
可以做到这一点。连接到screen
实例,运行 shell 命令,然后使用hardcopy
screen 命令(键入 Ctrl-A,然后按“h”)获取当前终端的“硬拷贝”。输出通常保存在 、 等主目录~/hardcopy.1
中~/hardcopy.2
。
如果你需要的内容超出当前屏幕的内容,请使用screen
的回滚缓冲区。
- 按 Ctrl-A,然后按 Esc 来访问它(进入“复制模式”)。
- 使用 Ctrl-U/Ctrl-D 或箭头键或 vim 样式移动 (j/k/l/h) 向上/向下滚动。
- 按 Esc 键退出“复制模式”。
使用“复制模式”,您可以选择一段文本并获得如下的硬拷贝:
- 进入“复制模式”(按 Ctrl-A,然后按 Esc)。
- 滚动到要复制的文本的开头。
- 按空格键。这标志着开始。
- 滚动到要复制的文本的末尾。
- 再次按下 SPACE 键。这将填充复制缓冲区并退出“复制模式”。
- 将复制缓冲区写入文件(按 Ctrl-A,然后
>
)。复制缓冲区将写入/tmp/screen-exchange
。 复制
/tmp/screen-exchange
到你喜欢的任何文件:cp /tmp/screen-exchange ~/my.terminal.printout.txt
您的终端的输出现在是~/my.terminal.printout.txt
。