如何将命令粘贴到 TTY 中?

21 command-line tty clipboard paste

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

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

$ specialCommandToPasteText
$ pastedText
Run Code Online (Sandbox Code Playgroud)

我正在使用 GNOME 3.20 运行 Ubuntu GNOME 16.04。

Byt*_*der 29

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

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

    sudo apt-get install xsel
    
    Run Code Online (Sandbox Code Playgroud)
  2. 找出$DISPLAY您的桌面正在使用哪个。通常应该是:0,但您可以通过在 GUI 桌面上的终端模拟器中运行此命令来检查它:

    echo $DISPLAY
    
    Run Code Online (Sandbox Code Playgroud)

    我将假设输出为: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)
    
    Run Code Online (Sandbox Code Playgroud)

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


为了进一步简化事情,让我们将这个仍然有点复杂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
Run Code Online (Sandbox Code Playgroud)

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

  • 谢谢!这将帮助我处理比我最初询问的更多的事情!:) (2认同)

ter*_*don 22

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

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

    echo "whatever long text you have copied" > file
    
    Run Code Online (Sandbox Code Playgroud)
  2. 放到 tty 和

    $(cat file)
    
    Run Code Online (Sandbox Code Playgroud)

  • 很高兴知道这一点。我实际上并不认为像这样一个简单的命令会这么好用。有时,头脑只是想得太复杂了。谢谢!=) (2认同)

Mar*_*nov 5

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

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