终端 - 从 CLI 复制,无需使用鼠标

终端 - 从 CLI 复制,无需使用鼠标

在 CLI 中触发命令时,我想复制我刚刚触发的命令或我在终端中写的任何内容将其粘贴到其他地方无需使用鼠标。

就像下图一样,我想在不使用鼠标的情况下复制更新命令(完全或部分)并将其粘贴到某处。

不使用鼠标从 CLI 复制

答案1

您可以使用screen(1) 在您选择的终端仿真器中(xtermgnome-terminal、 ...)。

您需要的功能内置在screen.您需要熟悉它的工作方式:

  • 默认情况下,“命令”键绑定是Ctrl+ A,您可以通过发出“命令”序列加上特定操作来编写命令。
  • “复制”命令是: AltGr+[
  • “粘贴”命令是AltGr+]

您可以“复制”该命令并“粘贴”到另一个终端中。

screen很有趣,一旦你开始使用它,你就会想知道你怎么可能根本没有使用过它。

答案2

除了已经提供的答案之外,您还可以考虑转向更灵活的终端模拟器。

如果您准备将终端更改为rxvt-unicode,你可以使用类似的工具urxvt-perls:在该终端模拟器中提供以下键盘功能的脚本集合:

  • 选择、复制和粘贴文本
  • 正向和反向搜索
  • 在您喜欢的浏览器中突出显示并打开 URL

您只需安装该软件包,然后在您的 中添加几行~/.Xresources,然后就可以永久拔掉啮齿动物的电源。

答案3

您可以使用如下程序来执行此操作xclip

NAME
   xclip - command line interface to X selections (clip‐
   board)

安装后,您可以使用它连接到 X 剪贴板。不幸的是,这在您的环境中不起作用mysql(它有自己的用于复制行的缓冲区),但如果您想运行“正常”命令,它就会起作用。例如 :

$ This is a long command line

键入CtrlA以转到行的开头,将命令用引号括起来,然后回显它:

$ echo -e "This is a long command line" |xclip 

现在,您在中键单击剪贴板中看到了“这是一个很长的命令行”。

如果您想不使用鼠标进行粘贴,则取决于您粘贴的位置。您可以通过运行以下命令粘贴到另一个终端:

$ xclip -o

您可以粘贴到同一个终端,只需使用 终止(剪切)命令CtrlK,然后使用 粘贴即可CtrlY

您还可以使用 bash 的历史记录跨终端保存命令。将此行添加到您的~/.bashrc

PROMPT_COMMAND='history -a; history -r'

PROMPT_COMMAND是一个特殊的 bash 变量。如果设置了该值,则在发出新提示之前将作为命令执行。history -a会将当前会话的历史记录写入历史文件并history -r重新加载该文件。这意味着您运行的每个命令都会立即写入历史文件。

现在,当您运行长命令行时,您可以切换到另一个终端并按回车键(只是为了运行$PROMT_COMMAND,或者打开一个新的终端窗口),并且可以访问该终端的历史记录。如果您现在点击,Up则可以在新终端上运行它。

答案4

该命令使用 bash 的历史扩展(因此!!扩展为您在终端中输入的最后一行)。您可能需要安装xclipxsel

echo "!!" | xclip -selection clipboard

echo "!!" | xsel -i --clipboard

这会将您的最后一个命令放入Ctrl+v剪贴板中,因此您将能够粘贴到任何 GUI 程序中(或在大多数终端仿真器中使用Ctrl+ Shift+ ,或在 vim 中使用)。v"+p

对于某些包含双引号的行,这将中断,例如:

$ echo "foo;bar"
foo;bar
$ echo "!!"
echo "echo "foo;bar""
echo foo
The program 'bar' is currently not installed. You can install it by typing:
sudo apt-get install bar

不过,它适用于您作为示例给出的命令;只有当双引号转义; & && | ||等情况下才会出现问题。

相关内容