Pipe to/from the clipboard with shell script

Shell Environement Set-up 4/N

公開日: 2021-02-22
更新日: 2024-07-06

  Table of Contents

What I Want to Do

▶  環境

1
2
3
4
5
6
% lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 22.04.4 LTS
Release:	22.04
Codename:	jammy


▶  Describe Features

  • Linux(Ubuntu)環境において,clipboardの中身を標準出力する
  • 標準出力で受け取った内容をclipboardへ格納する


▶  挙動のイメージ

clipboardの内容を標準出力する場合,I am Hoshino Kirbyという文字列をctrl + cでクリップボードへコピーした場合

1
2
% fetchclip
I am Hoshino Kirby

I am Hoshino Kirbyというラインで構成されるtest.txtを開いた場合,パイプを用いいてその内容をclipboardへ格納する

1
2
3
4
5
6
% cat test.txt
I am Hoshino Kirby

% cat test.txt | setclip
% fetchclip
I am Hoshino Kirby

Soluition

▶  Dependency

Ubuntuを用いてる場合,X Windows primary clipboardを用いてクリップボード経由のコピーやペーストを実行するのが 一般的です.X Windows clipboard用のコマンドとして xclip コマンドがあるので以下のコマンドでインストールします.

1
% sudo apt install xclip

なお,MacOSを利用している場合はpbcopyなどのコマンドを利用することになります.

▶  Set-up

1
2
alias fetchclip='xclip -out -selection clipboard'
alias setclip='xclip -selection clipboard'

使用例

▶  クリップボードにコピーした内容をdrop-duplicateする

1
2
3
4
5
6
7
8
9
10
11
PRIMARY
PRIMARY
SECONDARY
PRIMARY

CLIPBOARD

SECONDARY
CLIPBOARD

PRIMARY

というテキストデータがあるとします.これをクリップボードにコピーして, 順番無視で重複を削除したい場合は以下のような処理をします

1
2
3
4
5
% fetchclip | sort | uniq       

CLIPBOARD
PRIMARY
SECONDARY

出現順番は変わってしまいますが,uniq sortは実施可能です. Empty lineを削除したい場合は

1
2
3
4
% fetchclip | sort | uniq | sed '/^$/d' 
CLIPBOARD
PRIMARY
SECONDARY

References



Share Buttons
Share on:

Feature Tags
Leave a Comment
(注意:GitHub Accountが必要となります)