Часто я читал текст и потребность скопировать некоторые текстовые блоки в отдельный файл. Обычно, я использую скопировать/вставить для некоторого файла как 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/
- Вам нужно 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
вместо этого.