复制挂钩以写入文件

复制挂钩以写入文件

我经常阅读文本,然后需要将一些文本块复制到单独的文件中。通常,我会使用复制/粘贴到某个文件(例如 a.txt)。

我是否只复制(CTRL+C)即可达到将文件 a.txt 写入的相同效果?

答案1

下面是一个小的 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/- 您需要sudo/root 权限才能在那里保存文件)如果您的机器上的每个用户都有权访问它。

不要忘记使用 使其可执行chmod +x /path/to/wherever/you/saved/cliplog


cliplog现在您只需在终端中输入命令(或无论您如何命名它),上面的脚本将捕获剪贴板的所有更改并打印更改的内容。

请注意,此命令将一直运行,直到您在终端中按Ctrl+中断它。(是的,这是在桌面上复制内容与在终端中发送 SIGINT 中断信号的相同快捷方式。)C


要自动将此日志存储在文件中,只需使用 Bash 的重定向:

cliplog > mylogfile.txt

或者如果您希望同时查看输出并将其保存在日志文件中,请使用tee

cliplog | tee mylogfile.txt

如果您希望将内容附加到日志文件而不是覆盖它,请使用>>tee -a

相关内容