クリップボード履歴を参照する

mac
時に、クリップボード履歴を数字で参照し、繰り返し処理などをコマンドラインで行いたい時があります。そんな時のために、クリップボード履歴を参照する簡単な方法を書いてみました。

photo credit: cmdm


必要なもの



percol



sudo easy_install pip

sudo pip install percol

mkdir ~/.percol.d

vim ~/.percol.d/rc.py



設定ファイルは、 こちらの記事を参考にしてください。


クリップボード履歴を選択する



あくまで改良しないと実用性はないですが、以下の様な方法でクリップボード履歴を数字で参照できます。


# クリップボード履歴を参照する
touch i.txt && rm i.txt && while true; do pbpaste ; sleep 1; done > i.txt &

touch i2.txt && rm i2.txt && sort -i i.txt | uniq | nl -b t -n ln > i2.txt && cat i2.txt | percol | cut -c 8- | pbcopy && pbpaste



2番目のコマンドを使うことで、クリップボード履歴を選択出来ます。





1つずつ処理を見ていくと、以下の様な感じになっています。

# クリップボードの内容を出力(ループ)
while true; do pbpaste ; sleep 1; done

# 重複行の削除と行番号の追加
uniq i.txt | nl -b t -n ln

# クリップボード履歴を選択
cat i2.txt | percol | cut -c 8- | pbcopy

# 不要なファイルを削除
## 不要なファイルを作成するため、以下のコマンドで削除できます。ただし、必要なファイルを削除してしまわないか一応、確認してください。
ls | find *.txt && rm -i *.txt



注意として、改行などには対応していません。あくまで改行なしの文章を参照する場面を想定しています。


その他



出力は、 watchを使おうとしたのですが、書式がめんどくさそうだったので、やめました。

watch -t pbpaste | more






Rubyを使ってもクリップボード履歴は簡単に流せます。


#! /usr/bin/env ruby
# https://gist.github.com/hitode909/1239124
last = nil

loop {
current = `pbpaste`
if last != current
puts current
last = current
end
sleep 1
}