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
这很简单,但您需要一个额外的工具。
安装xsel
提供访问剪贴板的简单命令的软件包:
sudo apt-get install xsel
Run Code Online (Sandbox Code Playgroud)找出$DISPLAY
您的桌面正在使用哪个。通常应该是:0
,但您可以通过在 GUI 桌面上的终端模拟器中运行此命令来检查它:
echo $DISPLAY
Run Code Online (Sandbox Code Playgroud)
我将假设输出为: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)
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 上,以从您的桌面插入剪贴板内容。
ter*_*don 22
就个人而言,我只使用文本文件:
在您的桌面环境中,打开一个终端并
echo "whatever long text you have copied" > file
Run Code Online (Sandbox Code Playgroud)放到 tty 和
$(cat file)
Run Code Online (Sandbox Code Playgroud)上面未列出的另一种可能的解决方法涉及在命令模式下使用vim
、粘贴和运行:!unix_command
:
vim
,进入命令模式Esc,进入提示符: