Linux Ubuntu でも「コマンドラインでクリップボードにコピー」を実現する
Windows の場合は clip.exe
、MacOS の場合は pbcopy
という OS 標準搭載のコマンドを使うことで、文字列をコマンドラインからクリップボードにコピーできる。
コレと同様のことを Ubuntu 18.04 デスクトップ環境でも実現してみる。
目次
xclip をインストールする
Linux デスクトップでクリップボードへのコピーを行うには、xclip
というツールを使う。
Ubuntu 18.04 環境で試した限り、標準ではインストールされていなかったので、apt
でインストールしておく。
$ sudo apt install -y xclip
使ってみる
xclip
コマンドをインストールしたら、以下のように使える。
$ echo 'TEST!' | xclip -selection c
コレでクリップボードにコピーできる。
クリップボードの内容を出力、すなわち「ペースト」するには、次のようにコマンドを打つ。
$ xclip -selection c -o
コレが、MacOS における pbpaste
コマンドと同等の動きとなる。
なお、Windows は clip.exe
によるコピー機能はあるが、ペースト用コマンドが標準では存在しない。以下の pasteboard
というツールをインストールすれば、pbpaste.exe
が使えるようになる。
# Chocolatey でもインストール可能
PS1> choco install pasteboard
- 参考 : cygwin, linux で pbcopy/pbpaste - Qiita …
/dev/clipboard
を見る方法もある
余談まで。
エイリアスを作る
xclip
コマンドはクリップボードにコピーする際にどうしてもオプションの記述が必要になるので、多用する時は少々面倒臭い。そこで、MacOS のコマンド名に合わせて、エイリアスを作ってやろう。
Windows の場合も含めて、.bashrc
に次のように記述しておけば、全ての OS で pbcopy
・pbpaste
コマンドが使える寸法だ。
if [ "$(uname)" == 'Darwin' ]; then
# MacOS の場合 : 標準の pbcopy・pbpaste を使用するので何もしない
:
elif [ "$(uname)" == 'Linux' ]; then
# Linux の場合 : xclip がインストールされていればそれを使用してエイリアスを用意する
if type xclip > /dev/null 2>&1; then
alias pbcopy='xclip -selection c'
alias pbpaste='xclip -selection c -o'
fi
else
# Windows の場合 : pbcopy.exe や pbpaste.exe が存在しなければエイリアスを用意する
if ! type pbcopy.exe > /dev/null 2>&1; then
alias pbcopy='cat > /dev/clipboard'
fi
if ! type pbpaste.exe > /dev/null 2>&1; then
alias pbpaste='cat /dev/clipboard'
fi
fi
コレで、どの OS でも pbcopy
・pbpaste
コマンドが動くようになった。
Windows の場合で、以下のように nkf
を使って Shift-JIS に変換したら clip.exe
が使えるかな、と思ったのだが、貼り付け時にも文字コード変換が必要になるので、あまり意味がないなと思って捨てた。
$ echo '文字列' | nkf -s | clip.exe