复制挂钩以写入文件

我经常阅读文本,需要将一些文本块复制到单独的文件中。 通常,我使用复制/粘贴到某些文件,如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代替。