![在跟随模式下将剪贴板转储到标准输出(用于管道)?](https://linux22.com/image/120248/%E5%9C%A8%E8%B7%9F%E9%9A%8F%E6%A8%A1%E5%BC%8F%E4%B8%8B%E5%B0%86%E5%89%AA%E8%B4%B4%E6%9D%BF%E8%BD%AC%E5%82%A8%E5%88%B0%E6%A0%87%E5%87%86%E8%BE%93%E5%87%BA%EF%BC%88%E7%94%A8%E4%BA%8E%E7%AE%A1%E9%81%93%EF%BC%89%EF%BC%9F.png)
我知道xsel
和xclip
,(也在以下内容中讨论过:https://stackoverflow.com/questions/749544/pipe-to-from-the-clipboard),并经常使用它们。
但是,现在我想将主剪贴板转储到标准输出,但处于“跟随模式”。目前,如果我尝试这样做:
$ xclip -o
Currently, if I try this:
$ xsel -o
Currently, if I try this:
$
...命令立即退出。
相反,我想要的是一种类似于tail -f /var/log/syslog
- 即“跟随模式”的行为:tail
阻止终端,每当文件中显示新行时,它会将其转储到标准输出。
我想要类似的东西,但是每当我制作新副本时(即,在终端中按 Ctrl-C 或 Ctrl-Shift-C),即每当我更改主剪贴板内容时。
有没有命令可以帮助我做到这一点bash
?
答案1
好的,这是一个 python 解决方案。我认为它不需要评论,它完全符合要求,但如果我的假设是错误的,请告诉我。
#!/usr/bin/env python
import sys
import signal
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, Gdk
def pcallBack(*args):
print pclip.wait_for_text()
if __name__ == '__main__':
import signal
signal.signal(signal.SIGINT, signal.SIG_DFL)
pclip = Gtk.Clipboard.get(Gdk.SELECTION_PRIMARY)
pclip.connect('owner-change',pcallBack)
Gtk.main()