如何将命令粘贴到 TTY?

如何将命令粘贴到 TTY?

我有一些相当长的命令和文件路径,我已将它们复制到剪贴板并需要在 TTY 中执行,但是文件路径太长而无法重新输入,因此我只想将它们粘贴在后面$(然后我可以重新输入它们之前的命令),有办法吗?

所以我想执行一个命令并将其放在下一行,首先$将文本复制到剪贴板,如下所示:

$ specialCommandToPasteText
$ pastedText

我正在运行带有 GNOME 3.20 的 Ubuntu GNOME 16.04。

答案1

它很简单,但是您需要一个额外的工具。

  1. xsel安装提供访问剪贴板的简单命令的软件包:

    sudo apt-get install xsel
    
  2. 找出$DISPLAY您的桌面正在使用哪个。通常应该是:0,但您可以通过在 GUI 桌面上的终端仿真器中运行以下命令来检查它:

    echo $DISPLAY
    

    我将假设输出是:0,如果不同,请在以下命令中将其替换为您的实际输出。

  3. 复制您想要在 TTY 中执行的命令,例如使用Ctrl+ C

  4. 切换到您想要使用的 TTY,例如使用Ctrl+ Alt+切换到 TTY1 F1
    输入您的用户名和密码登录。

  5. 输入您想要运行的完整命令,但将您想要从剪贴板插入的部分替换为$(DISPLAY=:0 xsel -ob)

    例如,如果你复制了大量要安装的软件包,则可以在 TTY 中输入以下内容:

    sudo apt-get update && sudo apt-get install $(DISPLAY=:0 xsel -ob)
    

    剪贴板片段不一定必须位于命令的末尾,它可以出现在任何地方。


为了进一步简化问题,让我们将这个仍然有点复杂的问题移到DISPLAY=:0 xsel -ob脚本中。我会给它命名PASTE(因为paste已经被占用了),但你也可以用不同的名字来称呼它。

要在每个用户都可以运行的位置创建脚本文件而无需指定完整路径(我建议/usr/local/bin这样做)并使其可执行,只需运行以下两个命令:

( echo '#!/bin/bash' && echo 'DISPLAY=:0 xsel -ob' ) | sudo tee /usr/local/bin/PASTE
sudo chmod +x /usr/local/bin/PASTE

现在,您可以简单地嵌入$(PASTE)到 TTY 上的命令中,以便从桌面插入剪贴板内容。

答案2

就我个人而言,我只使用文本文件:

  1. 在您的桌面环境中,打开一个终端并

    echo "whatever long text you have copied" > file
    
  2. 放到 tty 并

    $(cat file)
    

答案3

上面未列出的另一种可能的解决方法涉及使用vim、粘贴并:!unix_command在命令模式下运行:

  1. 将命令和路径复制到剪贴板
  2. 打开vim,进入命令模式Esc,输入提示符:
  3. 键入感叹号! ,然后粘贴++Ctrl你之前在提示符中复制的命令并执行ShiftV

答案4

另一个无需配置的 tmux 解决方法:

tmux在虚拟“TTY”( Ubuntu 为Ctrl+ Alt+ )窗口中启动 tmux(打开终端并输入)F2并执行常规工作。

每当您需要将某些内容粘贴到该终端会话中时,只需打开常规桌面终端 ( Ctrl+ Alt+ T) 并输入tmux,然后使用按键Ctrl+ b,然后w列出活动会话并找到您想要将内容粘贴到的会话。完成后,只需关闭桌面上的终端,您就可以继续使用“TTY”终端,就像您从未离开过它一样!

相关内容