如何从当前 shell 中提取文本?

如何从当前 shell 中提取文本?

在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 命令,然后使用hardcopyscreen 命令(键入 Ctrl-A,然后按“h”)获取当前终端的“硬拷贝”。输出通常保存在 、 等主目录~/hardcopy.1~/hardcopy.2

如果你需要的内容超出当前屏幕的内容,请使用screen的回滚缓冲区

  • 按 Ctrl-A,然后按 Esc 来访问它(进入“复制模式”)。
  • 使用 Ctrl-U/Ctrl-D 或箭头键或 vim 样式移动 (j/k/l/h) 向上/向下滚动。
  • 按 Esc 键退出“复制模式”。

使用“复制模式”,您可以选择一段文本并获得如下的硬拷贝:

  1. 进入“复制模式”(按 Ctrl-A,然后按 Esc)。
  2. 滚动到要复制的文本的开头。
  3. 按空格键。这标志着开始。
  4. 滚动到要复制的文本的末尾。
  5. 再次按下 SPACE 键。这将填充复制缓冲区并退出“复制模式”。
  6. 将复制缓冲区写入文件(按 Ctrl-A,然后>)。复制缓冲区将写入/tmp/screen-exchange
  7. 复制/tmp/screen-exchange到你喜欢的任何文件:

    cp /tmp/screen-exchange ~/my.terminal.printout.txt

您的终端的输出现在是~/my.terminal.printout.txt

相关内容