標準入力の結果をシームレスに選択してクリップボードにコピーする「yank」

ターミナルからの標準入力の結果をシームレスに選択してクリップボードにコピーしてくれる yank というコマンドを知りました．

mptre/yank: Yank terminal output to clipboard

yankは各種環境のパッケージが用意されています．
Debian sid amd64 / Ubuntu 21,04 amd64 / Raspberry Pi OS buster armhf では yank というパッケージで提供されているのでこれを導入します．

$ sudo apt install yank (1)
$ yank (2)
bash: yank: command not found
$ dpkg -L yank | grep bin/ (3)
/usr/bin/yank-cli

yank パッケージを導入

yankコマンドが見つからない

Debian系では名前空間の衝突のためにコマンド名が yank-cli になっている．

とりあえず導入できましたが，Debian環境だと yank コマンドが見つかりません．他のパッケージと名前が競合してしまっているので yank-cli として提供されているようです．

The binary is installed at /usr/bin/yank-cli due to a naming conflict.

— ‘https://github.com/mptre/yank

$ apt-file search /bin/yank
emboss: /usr/bin/yank
yank: /usr/bin/yank-cli

競合しているのはなんds楼と検索してみると emboss というパッケージのようです．

ヨーロッパ分子生物学オープンソフトウェアスイート
EMBOSS は、分子生物学のユーザコミュニティ (例: EMBnet) のために開発された オープンソースな解析用ソフトウェアパッケージです。このソフトウェアを 使うことで、様々なフォーマットで書かれたデータを自動的に処理したり、 ウェブから配列データを透過的に取得したりもできます。また、このパッケージには 拡張ライブラリが含まれているので、真のオープンソース精神に則って ソフトウェアを開発しリリースできるプラットフォームです。 さらに、EMBOSS は様々な配列解析用パッケージやツールとシームレスに 統合されています。EMBOSS は、長く続いた商用パッケージソフトウェアへの流れを 断ち切ったのです。

— Debian — sid の emboss パッケージに関する詳細

なかなか熱そうなプロジェクトのようです．

使わないならalias等でyankに向けてもいいかもしれません．

とりあえず導入出来たので試してみます．

$ apt-cache search yank | yank-cli
elpa-csv-mode - Emacs major mode for editing comma/char separated values
python3-readlike - GNU Readline-like line editing module
yank - interactively select and yank terminal output to stdout or xsel

apt-cache search の結果を yank で受けてカーソルなどで単語単位で移動してEnterで選択した部分をクリップボードにコピーします．
クリップボード貼付けをするとたしかにコピーされていました．
例えばパッケージ名をコピーして， $ sudo apt install \`xsel\` のようにして使うと便利そうです．

その他便利そうなオプションとして， -d があります．cutコマンドの-dと同じようにデリミタが指定できます．

$ nkf -w mntemsadext00_rct.csv | yank-cli -d,

こんな感じでcsvファイルに , を指定してあげると，各項目がコピーできます．

しかし，yankはページ跨ぎが出来ないようです．１ページ目のものしかコピーできません．こういう場合はyankに渡す前にフィルタしてあげるといいようです．grepや，昨日このblogで紹介したyankと同じ作者の「pick」もこういうときに便利です．

$ nkf -w mntemsadext00_rct.csv | grep 田代 | yank-cli -d,`
$ nkf -w mntemsadext00_rct.csv | pick | yank-cli -d,`

yank only sees the first page · Issue #41 · mptre/yank

コマンドライン標準入力からあいまい検索が出来る「pick」 – matoken’s meme

なにかの結果の一部が欲しいときに便利そうです．

環境1

$ dpkg-query -W yank pick
pick 2.0.2-1
yank 1.1.0-2
$ lsb_release -dr
Description: Raspbian GNU/Linux 10 (buster)
Release: 10
$ uname -m
armv7l
$ cat /proc/device-tree/model ;echo
Raspberry Pi 3 Model B Rev 1.2

環境2

$ dpkg-query -W yank pick
pick 2.0.2-1.1
yank 1.2.0-1
$ lsb_release -dr
Description: Debian GNU/Linux bullseye/sid
Release: unstable
$ uname -m
x86_64