如何从终端选择和复制内容(ATL + CTRL + F1)

如何从终端选择和复制内容(ATL + CTRL + F1)

当在“低级终端”(不确定如何调用)中时,通过按Ctrl+ Alt+打开的终端F1,我怎样才能复制在那里使用的命令的内容,因为没有鼠标并且我无法将光标移出命令行?

答案1

您可以将输出重定向到带有>&>...的文件。我被要求将其从评论移至答案,因此就在这里。

顺便提一下:

在命令和文件名之间插入>将会用标准输出覆盖文件的当前内容。

>>附加到文件。

在重定向器前面放置一个&也会捕获标准错误(在 Bash > 4 中)。

答案2

最后使用的命令历史记录通常存储在您的历史文件.bash_history)。您可以使用您选择的编辑器打开此文件并复制内容。

至于操作控制台窗口的命令行,您可以依赖 bash shell 的命令行编辑功能。它们在阅读线Bash 手册页 ( man bash) 的部分。但是他们不允许你将复制的部分粘贴到编辑器中。

解决这个问题的另一种方法是使用屏幕实用性。有几个介绍性的教程在网络上。Screen 具有复制和粘贴功能:

  1. CTRL+A然后ESC进入复印模式。
  2. 通过移动光标键,您可以定位到所选区域的第一个字符,然后按Space。现在您已设置了第一个标记。
  3. 将光标移动到您想要选择的文本的末尾并按Space。您现在已将选定的区域复制到缓冲区中。
  4. 要粘贴缓冲区,请按CTRL+ A,然后按]

答案3

要将命令的输出发送到文件,可以使用重定向。

例如,你可以将dmesg命令发送到以下文件:

dmesg > ~/Documents/output.txt

然后输出将写入该文件而不是屏幕。当您返回 GUI 时,您可以在 Documents 文件夹中找到该文件并访问其内容。

答案4

有几种方法可以解决这个问题。最简单的方法是使用xclip,我把它留到最后。

hbdgaf 的回答提出了一个解决方案 - 重定向。这里有两个主题的变体 - 使用命名管道和的重定向byobu。第一个不需要安装额外的软件,而byobu必须安装。

选项 1:命名管道

当你运行一个命令并使用管道|将其输出重定向到另一个命令时,这被称为匿名管道 - 它存在一段时间。另一方面,命名管道是一种特殊的文件,数据进入其中,然后输出。

以下是使其发挥作用的步骤:

  1. 使用以下方式创建命名管道mkfifo /tmp/myPipe

  2. 运行所需命令并将输出重定向到/tmp/myPipe。例如sudo apt-get install byobu > /tmp/myPipe。请注意,命令将等待,直到您从 释放输出myPipe。使用&使其在后台等待,并让您继续使用终端,如下所示sudo apt-get install byobu > /tmp/myPipe &。还请注意,stdout 将进入管道,但 stderr 将转到屏幕。如果您希望 stderr 和 stdout 都在管道中,请使用&>而不是>

    1. 返回 GUI,使用 从该管道释放输出cat /tmp/myPipe。现在,您可以使用鼠标和键盘复制输出。

选项 2:byobu 中的共享会话

至于byobu,基本思想是创建一个共享会话。您在 TTY 和 GUI 终端中启动 byobu,然后您会看到相同的输出。我建议先启动 TTY,因为这样更简洁。假设我在 TTY2 运行中启动 byobu df;free,转到 GUI,启动gnome-terminal然后调用byobu,瞧 - 我看到的输出与我在 TTY 中看到的相同!

选项 3:xclip,最简单的方法

假设我想复制df命令的输出。我所要做的xclip就是这样做:

$ export DISPLAY=:0 ; df | xclip -sel clip

它已经存在于您的 GUI 剪贴板中了!

不过有一个小问题——xclip它不是原生应用,必须通过以下方式安装sudo apt-get install xclip

当然,输入所有这些可能会很重复,因此您可以创建一个.bashrc函数来完成这项工作。只需将下面的函数复制并粘贴到您的.bashrc文件中,保存文件,现在每次登录时,您都有一个简单的命令将输出复制到剪贴板

function toClipboard
{
  export DISPLAY=:0
  "$@" | xclip -sel clip

}

并且您可以将其作为运行$ toClipboard df -h,因此请注意,您可以使用参数运行命令。

选项 4:脚本

有一个名为的命令script,其目的正是将您在命令行上看到的内容记录到文件中。您可以先运行它,然后在其 shell 中输入 output,然后退出;或者您可以使用--command标志调用 screen,如下所示script --command "df -h"

但是,有一个缺点——输出文件可能包含特殊字符。请参阅此处了解如何清理输出的信息

选项 5:/dev/vcsX

正如 Giles 所示从 U&L 站点,实际上可以将 tty 的内容转储到另一个终端的标准输出。假设我们想转储 tty2。该命令是

 cat /dev/vcs1

这种方法的缺点是,如果您的终端设置为一定级别的回滚行,您只能获得部分输出。

相关内容