ฉันจะคัดลอกประวัติทั้งหมดของคลิปบอร์ดไปยังไฟล์ข้อความได้อย่างไร


10

ฉันต้องการวางประวัติคลิปบอร์ดทั้งหมดของฉันซึ่งประกอบด้วยคำที่คัดลอก (Ctrl + C / โดยการเลือก) ระหว่างการอ่านของฉัน ฉันติดตั้งโปรแกรมเช่น Glippy และ ClipIt แต่ฉันไม่สามารถหาวิธีวางคำทั้งหมดถ้ามีตัวเลือกดังกล่าวในโปรแกรมเหล่านี้ฉันจะคัดลอกไปยังไฟล์ข้อความง่ายๆในคราวเดียวไม่ใช่หนึ่งคำในแต่ละครั้ง มีคนช่วยฉันได้ไหม

ขอบคุณ!


clipit จัดเก็บประวัติใน ~ / .local / share / clipit / history รูปแบบมีอักขระควบคุมคุณอาจแยกวิเคราะห์ออกด้วยsedแต่มันค่อนข้างซับซ้อน
bartekbrak

คำตอบ:


5

คุณสามารถเห็นสตริงในไฟล์ประวัติของ clipit ด้วยคำสั่งนี้:

strings ~/.local/share/clipit/history

แต่มันไม่ใช่วิธีที่ดีที่สุด ผลลัพธ์อาจบิดเบือน


4

มีสคริปต์ python สำหรับ ClipIt เรียกใช้เช่นนี้ 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

ยังไม่ได้ลอง แต่
ดูถูก

2

Parcellite รุ่นล่าสุดมีรายการเมนูบันทึกเป็นเมื่อคลิกที่ไอคอน นี่จะบันทึกรายการประวัติทั้งหมดลงในไฟล์ นอกจากนี้ยังมีการวางทั้งหมดเมื่อคลิกขวาที่รายการประวัติซึ่งจะวางรายการประวัติทั้งหมดบนคลิปบอร์ด การกำหนดค่าตามความชอบมีตัวคั่นวางทั้งหมดที่จะใส่ไว้ที่ท้ายของแต่ละรายการ

https://sourceforge.net/projects/parcellite/files/parcellite/parcellite-1.1.1/ ppa ที่นี่: https://launchpad.net/~rickyrockrat/+archive/ppa


1

ติดตั้งKlipper Clipboard Manager ของ KDE ติดตั้ง klipperและใช้สคริปต์ง่าย ๆ ดังต่อไปนี้:

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

หมายเหตุ: สิ่งนี้ทำงานได้ไม่ดีใน Unity ดังนั้นจึงดูเหมือนว่า ดังนั้นในสภาพแวดล้อมเดสก์ทอปอื่นที่ไม่ใช่ของ KDE: ระยะของคุณอาจแตกต่างกัน


FWIW ใครบางคนที่มีปัญหากับ Klipper และ Unity: askubuntu.com/questions/439303/ …
Sparhawk

0

ผู้ใช้ Parcellite คลิกซ้ายที่ไอคอน "ล้าง" เลือกจำนวนครั้งที่คุณต้องการหลังจากนั้น "แก้ไขคลิปบอร์ด" และคัดลอกทั้งหมด! จำการตั้งค่าที่ต้องการเช่นนั้น: ใช้การเลือกหลักเพื่อให้ง่ายต่อการคัดลอกข้อความ!


สวัสดี Acquarius! ขอบคุณมากสำหรับคำตอบ อย่างไรก็ตามเมื่อฉันคลิกแก้ไขคลิปบอร์ดฉันเห็นเฉพาะคำสุดท้ายที่ฉันคัดลอกไม่ใช่รายการทั้งหมด อาจเป็นไปได้กับคุณมันทำงานอีกวิธีหนึ่ง? บางทีฉันต้องกำหนดค่าบางอย่างในการตั้งค่า
pandisvezia

มีไฟล์นี้ ~ / .local / share / parcellite / history ปัญหาคือมีตัวอักษรที่พิมพ์ไม่ได้ในการขึ้นบรรทัดใหม่และเช่น .. คุณอาจลองเปลี่ยนอัตโนมัติ / ลบพวกเขา แต่ตอนนี้เริ่มจะยุ่ง ...
Aquarius Power

0

แก้ไขรหัสจาก @ stepan-shamaiev สำหรับPython 3และไม่มีการตั้งค่าตัวคั่น:

#!/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('------------------')
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.