终端 - 从 CLI 复制而不使用鼠标

pra*_*upd 24 terminal copy-paste gnome-terminal

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

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

不使用鼠标从 CLI 复制

daw*_*wud 12

您可以screen(1) 在您选择的终端模拟器中使用( xterm, gnome-terminal, ...)。

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

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

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

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


jas*_*yan 7

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

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

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

您只需安装该软件包,然后在您的~/.Xresources.


ter*_*don 6

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

NAME
   xclip - command line interface to X selections (clip?
   board)
Run Code Online (Sandbox Code Playgroud)

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

$ This is a long command line
Run Code Online (Sandbox Code Playgroud)

键入CtrlA以转到该行的开头,将命令括在引号中,然后回显它:

$ echo -e "This is a long command line" |xclip 
Run Code Online (Sandbox Code Playgroud)

您现在在单击鼠标中键的剪贴板中有“这是一个长命令行”。

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

$ xclip -o
Run Code Online (Sandbox Code Playgroud)

您可以粘贴到同一个终端中,只需CtrlK使用CtrlY.

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

PROMPT_COMMAND='history -a; history -r'
Run Code Online (Sandbox Code Playgroud)

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

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