如何在 xterm 中保存过去命令的输出?

如何在 xterm 中保存过去命令的输出?

我在 xterm 中运行了几个命令。我可以向上滚动并查看输出,但现在我想保存该输出。但我没有对这些过去的命令使用屏幕、脚本或输出重定向。现在可以保存输出吗?(我正在使用终结器,因此如果有“全选”命令就足以满足我的目的。)

我无法再次运行相同的命令。当然,我可以用鼠标选择文本,然后将其粘贴到文件中,但它有几千行,所以我想知道是否有更简单的方法。

答案1

如果您想要终端历史记录的全部内容:

在 gnome-terminal 菜单中,编辑 > 全选,然后编辑 > 复制。(或者使用您最喜欢的键盘快捷键进行复制。)

然后粘贴到任何地方。

答案2

这并不完美,而且有点繁琐和危险,但是:

首先,将任何其他终端移开/最小化/脱离当前桌面,以尽量减少可能意外粘贴数千行代码的位置数量。

然后,在您想要复制的终端中执行以下操作:

cat > /dev/null

这样,如果在尝试选择所有文本时您不小心单击鼠标中键粘贴,您的 shell 将不会尝试将数千行文本作为 shell 命令运行(这可能会非常糟糕)。

设置您想要粘贴文本的位置,并使其准备好接受粘贴的文本 - 这可以是 GUI 文本编辑器、另一个要执行的终端设置cat > savedfile.txt等。

然后:

  1. 在 xterm 中显示滚动条(如果已经有滚动条请跳过):

首先,如果可能的话,将终端的大小调整得比原来稍微宽一点(如果您不能做到这一点,长行末尾的 2 或 3 个字符可能会丢失 —— 如果这是个问题,请在无害的 xterm 中试验一下)。

按住 ctrl 并在终端中的某处单击鼠标中键(并按住鼠标按钮)以调出菜单

从菜单中选择“启用滚动条”

注意:xterm 会冻结,很长时间内似乎什么也不做。这是正常的;它只是必须将数千行文本稍微推开一点,为滚动条腾出空间。一会儿之后,终端侧面就会出现一个滚动条。

  1. 一直滚动到顶部(或要保存的部分的顶部)。请注意,xterm 的滚动条是旧式 X11 类型的滚动条,对于没有在它发明时出现的人来说,这有点违反直觉:

有一个空白区域和一小块灰色区域(如果有很多文本,灰色部分可能只有一个像素厚)。

灰色的东西是……无论你怎么称呼现代滚动条上的“你在这里”抓取的东西。

与现代滚动条不同,所有三个鼠标按钮在这里都具有特定功能:

  • 左键单击滚动条上的任意位置(甚至是抓取部分!)都会向下滚动一点。左键单击拖动没有任何效果。
  • 右键单击滚动条上的任意位置(即使是抓取内容)都会向上滚动一点。右键单击拖动没有任何效果。
  • 在滚动条的任意位置单击鼠标中键即可立即跳转到该位置。单击鼠标中键拖动可将抓取对象移动到您拖动的位置。

因此,要一直移动到顶部,请在顶部附近单击鼠标中键并向上拖动以确保抓取内容尽可能向上移动。您可以按 shift+pageup 来确认您已到达顶部 - 如果您没有再向上移动,则这是回滚缓冲区所能到达的最远位置(并且早于该点的任何内容可能永远丢失)。

  1. 选择一些文本,任意文本:在要保存的区域的开头单击鼠标左键。您不需要选择太多内容;即使几个字符也可以。

  2. 一直滚动到底部:再次使用鼠标中键单击滚动条,或者您也可以只键入一些文本,xterm 就会自动跳转到底部。

  3. (危险部分开始)在要保存的文本后的任何位置单击鼠标右键。这会将标记的选择从顶部标记的文本一直扩展到底部。现在您已经选择了大量的文本,因此在单击时要非常小心,因为这个巨大的文本块将立即粘贴到您单击鼠标中键的任何位置。请注意,除非您的 xterm 设置为“选择到剪贴板”,否则此文本不在剪贴板上,并且不会使用 ctrl+v 粘贴!它位于主选择缓冲区中,这是不同的(并且也很旧,就像 xterm 滚动条的设计一样)。

  4. 转到要粘贴文本的位置,中间不要单击鼠标中键。如果粘贴目标是 vim 或任何其他编辑器,其中有大量键盘输入可以执行特殊操作,请确保它已准备好接受粘贴,因为如果它不在插入模式中并且您单击鼠标中键,则会发生不好的事情(最好不要使用 vim 进行此操作)。

  5. 当您非常确定鼠标指针指向的内容可以轻松接受数千行文本时,请单击鼠标中键一次,然后等待粘贴完成。

  6. 立即用鼠标选择其他内容,例如另一个终端中的单个字符。一旦选择了其他内容,鼠标中键单击就不再危险。

注意:在源和(如果适用)目标 xterm 中设置“选择到剪贴板”可能更安全,因为这样鼠标中键单击就不会那么危险,但有时似乎会出现剪贴板大小限制问题(即似乎不会影响主选择缓冲区的限制)。请随意测试。

相关内容