使用xclip

使用xclip

我在 Ubuntu 14.04 中工作并使用 Gedit。

现在我有以下代码(从 Gedit 中的“外部工具”菜单运行)来获取 Gedit 当前打开的文档的路径到剪贴板。

echo -n $GEDIT_CURRENT_DOCUMENT_URI | xclip -sel clip;

现在我还想将结果显示echo -n $GEDIT_CURRENT_DOCUMENT_URI到输出窗口(使用相同的“echo”语句),同时复制到剪贴板。

我怎样才能实现这个目标?

答案1

要将输出复制到剪贴板并输出到当前终端,您可以简单地使用tee,它会将其输出stdin到作为参数传递给它的任何文件并输出到stdout;您可以使用运行的进程替换xclip来“伪造”常规文件并输出到它而不是常规文件:

echo -n $GEDIT_CURRENT_DOCUMENT_URI | tee >(xclip -selection clipboard)

另一个选项是输出到其中一个免费的“默认”伪终端 (tty1 到 tty6),它们在“/dev”中有一个对应的设备文件 (“/dev/tty1”到“/dev/tty6”):

echo -n $GEDIT_CURRENT_DOCUMENT_URI | tee >(xclip -selection clipboard) >/dev/tty1

另一个选择是使用命名管道输出到另一个“监听”伪终端;这需要设置“监听”终端:

首先打开“监听”终端并运行此脚本(为了举例说明,我假设该脚本正在运行~/tmp):

#!/bin/bash
mkfifo fifo # creates a named pipe named "fifo" in the current working directory
trap 'rm fifo; exit 0' 1 2 3 13 15 # traps SIGHUP, SIGINT, SIGQUIT, SIGPIPE and SIGTERM; removes "fifo" and exits upon the reception of each of them
while [ 1 ]; do
    cat fifo # outputs the content of "fifo"
done

这将在当前工作目录中创建一个名为“fifo”的命名管道,并将不断输出其内容,直到脚本执行停止;

然后使用 Gedit 的外部工具运行第二个命令的修改版本,它不是将输出重定向到“/dev/tty1”,而是将其重定向到命名管道:

echo -n $GEDIT_CURRENT_DOCUMENT_URI | tee >(xclip -selection clipboard) >>~/tmp/fifo

使用两个实例的示例输出gnome-terminal

在正确的终端上运行脚本

截图1

echo -n $GEDIT_CURRENT_DOCUMENT_URI | tee >(xclip -selection clipboard) >>~/tmp/fifo在左侧终端运行

截图2

击球CTRL+ SHIFT+V

截图3

有关命名管道的更多信息

答案2

我有一个类似的自答问题,由于与此问题重复而被关闭。但是,它与此处接受的答案完全不同,因此我认为值得在此处发布。


使用xclip

xclip允许您将输出保存到剪贴板。要安装它,请使用:

sudo apt update && sudo apt install xclip

然后像这样使用它:

$ ls -l | tee >(xclip -selection clipboard)

total 9788
-rw-rw-r-- 1 rick rick 9950180 Dec 12 09:13 QueryResults.csv
-rw-rw-r-- 1 rick rick    6491 Oct 31 12:18 StackQuery
-rwxrwxr-x 1 rick rick   55970 Dec 12 18:47 stack-to-blog.py

屏幕上显示命令后的输出ls也将位于剪贴板中,可以通过Ctrl+VRight-Click菜单以及选项插入到大多数应用程序中Paste

xclip为命令创建别名

如果你打算多次使用它,你需要创建一个alias。编辑你的~/.bashrc文件并输入以下行:

alias clip="tee >(xclip -selection clipboard)"

然后不要输入:

ls -l | tee >(xclip -selection clipboard)

您需要输入的是:

ls -l | clip

笔记:保存~/.bashrc文件后,直到下次重新启动终端或使用命令获取资源后,该文件才可使用. ~/.bashrc

相关内容