Bagaimana cara menyalin seluruh riwayat clipboard ke file teks?


10

Saya ingin menempelkan seluruh riwayat clipboard saya yang terdiri dari kata-kata yang disalin (Ctrl + C / dengan pilihan) selama sesi membaca saya. Saya menginstal program seperti Glippy dan ClipIt tetapi saya tidak tahu bagaimana cara menempelkan semua kata, jika pernah ada opsi seperti itu dalam program ini, saya salin ke file teks sederhana sekaligus, bukan satu kata pada suatu waktu. Adakah yang bisa membantu saya?

Terima kasih!


clipit menyimpan sejarahnya di ~ / .local / share / clipit / history, format ini memiliki beberapa karakter kontrol, Anda mungkin dapat menguraikannya sed, tapi itu agak rumit
bartekbrak

Jawaban:


5

Anda dapat melihat beberapa string dalam file history clipit dengan perintah ini:

strings ~/.local/share/clipit/history

Tapi itu bukan cara terbaik. Output mungkin kacau.


3

ada skrip python untuk ClipIt menjalankannya seperti ini python cliphist.py > clipit.history.txt

#!/usr/bin/env python
"""cliphist.py: utility to print clipit history file.
If an argument is passed on the command line, it will
be used as a separator, otherwise history items are
separated by a blank line. """

import struct, os, sys

homedir  = os.environ['HOME']
histfile = homedir + '/.local/share/clipit/history'
if len(sys.argv) > 1:
    sep = sys.argv[1]
else:
    sep = '---------------------------------------------------------------------'


with open(histfile,'rb') as f:
    f.read(68)
    size,_ = struct.unpack('2i',f.read(8))
    while (size > 0):
        item = f.read(size)
        print item
        _,_,_,size,_ = struct.unpack('5i',f.read(20))
        if size > 0: 
            print sep

belum mencoba ini, tetapi kelihatannya benar dan menjawab pertanyaan (mengenai Clipit)
user7610

2

Versi terbaru dari Parcellite memiliki item menu Save As ketika mengklik ikon. Ini akan menyimpan semua entri riwayat ke file. Ada juga rekatkan semua saat mengklik kanan daftar riwayat, yang akan menempatkan seluruh daftar riwayat di clipboard. Preferensi memiliki pembatas Tempel Semua yang akan diletakkan di akhir setiap entri.

https://sourceforge.net/projects/parcellite/files/parcellite/parcellite-1.1.1/ ppa di sini: https://launchpad.net/~rickyrockrat/+archive/ppa di sini


1

Instal Klipper Clipboard Manager KDE Instal klipper dan gunakan skrip sederhana berikut:

text="nothing yet"
cnt=0
while [ "$text" != "" ]; do
  text=`qdbus org.kde.klipper /klipper getClipboardHistoryItem $cnt`
  echo "==== Clipboard content line $cnt:"
  echo "$text"                      # to terminal output
  echo "$text" > /path/to/file      # to file (EDIT this)
  cnt=$((cnt + 1))
done

Catatan: Ini tidak berperilaku sangat baik di Unity jadi sepertinya. Jadi di lingkungan desktop lain selain KDE: jarak tempuh Anda mungkin beragam .


FWIW, seseorang yang mengalami masalah dengan Klipper dan Unity: askubuntu.com/questions/439303/…
Sparhawk

0

pengguna Parcellite, klik kiri pada ikonnya, "hapus", pilih berapa kali Anda inginkan, setelah itu, "edit papan klip" dan salin semuanya! Ingat jadi atur preferensi: gunakan pilihan utama, untuk membuatnya lebih mudah untuk menyalin teks!


Hai Acquarius! Terima kasih banyak atas jawabannya. Namun, ketika saya mengklik edit clipboard saya hanya melihat kata terakhir yang saya salin dan bukan seluruh daftar. Mungkin dengan Anda itu bekerja dengan cara lain? Mungkin saya harus mengkonfigurasi sesuatu di preferensi.
pandisvezia

ada file ini ~ / .local / share / parcellite / history, masalahnya adalah ia memiliki karakter yang tidak dapat dicetak ke baris baru dan semacamnya .. Anda dapat mencoba autoReplacing / menghapusnya tetapi sekarang ini mulai berantakan ...
Aquarius Power

0

Kode yang dimodifikasi dari @ stepan-shamaiev untuk Python 3dan tanpa pengaturan pemisah:

#!/usr/bin/env python3
"""cliphist.py: utility to print clipit history file."""

import struct, os

homedir  = os.environ['HOME']
histfile = homedir + '/.local/share/clipit/history'

with open(histfile,'rb') as f:
  f.read(68)
  size, _ = struct.unpack('2i', f.read(8))
  while size > 0:
    item = f.read(size)
    print(item.decode())
    _,_,_,size,_ = struct.unpack('5i',f.read(20))
    if size > 0: 
      print('------------------')
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.