我有一些相当长的命令和文件路径,我已将它们复制到剪贴板并需要在 TTY 中执行,但是文件路径太长而无法重新输入,因此我只想将它们粘贴在后面$
(然后我可以重新输入它们之前的命令),有办法吗?
所以我想执行一个命令并将其放在下一行,首先$
将文本复制到剪贴板,如下所示:
$ specialCommandToPasteText
$ pastedText
我正在运行带有 GNOME 3.20 的 Ubuntu GNOME 16.04。
答案1
它很简单,但是您需要一个额外的工具。
xsel
安装提供访问剪贴板的简单命令的软件包:sudo apt-get install xsel
找出
$DISPLAY
您的桌面正在使用哪个。通常应该是:0
,但您可以通过在 GUI 桌面上的终端仿真器中运行以下命令来检查它:echo $DISPLAY
我将假设输出是
:0
,如果不同,请在以下命令中将其替换为您的实际输出。复制您想要在 TTY 中执行的命令,例如使用Ctrl+ C。
切换到您想要使用的 TTY,例如使用Ctrl+ Alt+切换到 TTY1 F1。
输入您的用户名和密码登录。输入您想要运行的完整命令,但将您想要从剪贴板插入的部分替换为
$(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
就我个人而言,我只使用文本文件:
在您的桌面环境中,打开一个终端并
echo "whatever long text you have copied" > file
放到 tty 并
$(cat file)
答案3
上面未列出的另一种可能的解决方法涉及使用vim
、粘贴并:!unix_command
在命令模式下运行:
- 将命令和路径复制到剪贴板
- 打开
vim
,进入命令模式Esc,输入提示符: - 键入感叹号! ,然后粘贴++Ctrl你之前在提示符中复制的命令并执行ShiftV
答案4
另一个无需配置的 tmux 解决方法:
tmux
在虚拟“TTY”( Ubuntu 为Ctrl+ Alt+ )窗口中启动 tmux(打开终端并输入)F2并执行常规工作。
每当您需要将某些内容粘贴到该终端会话中时,只需打开常规桌面终端 ( Ctrl+ Alt+ T) 并输入tmux
,然后使用按键Ctrl+ b,然后w列出活动会话并找到您想要将内容粘贴到的会话。完成后,只需关闭桌面上的终端,您就可以继续使用“TTY”终端,就像您从未离开过它一样!