ここから本文です
Max OS XのTerminal.appでpecoの結果をクリップボードに渡す
Mac OS X用です。MacのTerminal.appでは、pbcopyというコマンドがあり、標準出力をクリップボードに渡してくれます。
pecoは快適なんですが、たとえばhisotryをpecoにわたして、絞り込んでも、
512 git pull
みたいなんが標準出力に帰ってくるだけ*1なので、ちょっとカユいなあと思っていたのです。
で、いろいろしらべてたどり着いた結論がこれ。
peco | ruby -0777 -ne 'print $_.chomp("")' | pbcopy
末端の改行があると、ペーストした瞬間に実行されちゃうので、「ちょっと文字列をいじりたい」みたいなことができない。で、この末端の改行を取り去るのに苦労をしたけど、先人の知恵をお借りして解決。
というわけで、alias化して.bash_profileに。
alias py='peco | ruby -0777 -ne '\''print $_.chomp("")'\'' | pbcopy'
これで
ls | py ps | py
みたいなんがし放題になりました。
ついでにhisotryがクリップボードに入るときに、あの余分な行番号が消えるように一工夫。これも、.bas_profileに。
alias pecoh='history | tr -s '\'' '\'' | cut -d'\'' '\'' -f3- | sort | uniq | py'
ほんとうは、専用のエイリアスなんか作らずに、
history|py
としたら、渡されたほうで、分岐するといいのだけど、それは将来の宿題。
参考
http://rcmdnk.github.io/blog/2015/08/27/gnu-bsd-linux-mac/
http://d.hatena.ne.jp/zariganitosh/20131216/end_of_file_lf_control
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1351789393
- *1 といっても、
!512
できるので、便利ですが
ジャンル: Mac