复制挂钩以写入文件
我经常阅读文本,需要将一些文本块复制到单独的文件中。 通常,我使用复制/粘贴到某些文件,如a.txt。
是否有可能只复制(CTRL + C)以获得写入文件a.txt的相同效果?
这是一个Python 3脚本,可以捕获剪贴板更改并将其打印到终端:
#!/usr/bin/env python3 import gi gi.require_version('Gtk', '3.0') from gi.repository import Gtk, Gdk import signal signal.signal(signal.SIGINT, signal.SIG_DFL) def callback(*args): print(clip.wait_for_text(), flush=True) clip = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD) clip.connect('owner-change', callback) Gtk.main()
你可以保存这个文件,例如……
-
~/bin/cliplog
(用户主目录中bin/
目录中的任何名称 – 如果只是为了你的用户,你可能必须创建该目录并首先运行source .profile
如果它还不存在) - 或者
/usr/local/bin/cliplog
(/usr/local/bin/cliplog
任何名称 – 你需要sudo
/ root权限来保存文件)如果你机器上的每个用户都有权访问它。
不要忘记使用chmod +x /path/to/wherever/you/saved/cliplog
。
现在,您只需在终端中键入命令cliplog
(或者您将其命名),上面的脚本将捕获剪贴板的所有更改并打印更改的内容。
请注意,此命令将一直运行,直到您通过在终端中按Ctrl + C来中断它。 (是的,在桌面上复制内容和在终端中发送SIGINT中断信号的快捷方式相同。)
要将此日志自动存储在文件中,只需使用Bash的重定向:
cliplog > mylogfile.txt
或者,如果您想要查看输出并将其保存在日志文件中,请使用tee
:
cliplog | tee mylogfile.txt
如果要附加到日志文件而不是覆盖它,请使用>>
或tee -a
代替。