クリップボードの全履歴をテキストファイルにコピーするにはどうすればよいですか?


10

読書セッション中にコピーされた単語(Ctrl + C /選択によって)で構成されるクリップボード履歴全体を貼り付けたいのですが。GlippyやClipItなどのプログラムをインストールしましたが、すべての単語を貼り付ける方法がわかりませんでした。これらのプログラムにこのようなオプションが存在する場合は、一度に1つの単語ではなく単純なテキストファイルにコピーします。誰かが私を助けてくれますか?

ありがとうございました!


clipitはその履歴を〜/ .local / share / clipit / historyに保存します。形式にはいくつかの制御文字が含まれています。おそらくでそれらを解析できますがsed、それは少し複雑です
bartekbrak

回答:


5

次のコマンドを使用して、Clipit履歴ファイルにいくつかの文字列を表示できます。

strings ~/.local/share/clipit/history

しかし、それは最善の方法ではありません。出力が文字化けする場合があります。


3

ClipItのpythonスクリプトは次のように実行します 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

試していないが、見た目は正しく、質問に回答している(Clipitに関する)
user7610

2

Parcelliteの最新バージョンには、アイコンをクリックしたときに[名前を付けて保存]メニュー項目があります。これにより、すべての履歴エントリがファイルに保存されます。また、履歴リストを右クリックするとすべて貼り付けが行われ、履歴リスト全体がクリップボードに配置されます。プリファレンスには、各エントリの最後に配置する「すべて貼り付け」区切り文字があります。

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


1

KDEのKlipper Clipboard Manager 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、アイコンを左クリックして「クリア」、必要な回数を選択し、その後「クリップボードを編集」してすべてコピーします。設定を覚えておいてください。テキストを簡単にコピーできるように、1次選択を使用してください。


こんにちはアクエリアス!返信ありがとうございます。ただし、[クリップボードの編集]をクリックすると、リスト全体ではなく、コピーした最後の単語のみが表示されます。多分あなたと一緒にそれは別の方法で機能しますか?多分私は設定で何かを設定する必要があります。
pandisvezia 2012

このファイル〜/ .local / share / parcellite / historyがあります。問題は、改行などの印刷不可能な文字が含まれていることです。autoReplacing/ erasingを試すこともできますが、乱雑になり始めます...
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.