コマンドの出力を「コピペ」したいなら「 xclip 」を使おう!【pbcopy・pbpaste】 | Linux Fan

コマンドの出力を「コピペ」したいなら「 xclip 」を使おう!【pbcopy・pbpaste】

2018年7月19日

コマンドの出力をマウスで選択してコピーし、テキストファイルやオフィス文書に貼り付けること、ありますよね。

しかしコマンドの出力が長いと、マウスで選択するのは大変です。

そんな時は「xclip」コマンドを使いましょう。コマンドの出力やファイルの内容を、簡単に「Xセレクション」や「クリップボード」に入れることができます。

また、逆にクリップボードの内容を出力することも可能です。

xclipのインストール

多くのディストリビューション「xclip」パッケージが利用可能です。

Ubuntuの場合、以下のボタンをクリックしてインストールできます。

次のコマンドでインストールすることもできます。

Ubuntu/Debian系の場合

sudo apt install -y xclip

Fedoraの場合

sudo dnf -y install xclip

RedHat/CentOSの場合

sudo yum -y install xclip

xclipの基本的な使い方

標準入力、もしくはファイルの内容を読み込んで「Xセレクション」に入れるには次のように実行します。

# 他のコマンドの出力をXセレクションに入れる
他のコマンド | xclip 

# ファイルを読み込んでXセレクションに入れる
xclip ファイル

なお、このコマンドで文字列が「コピー」されるのは「Xセレクション」です。マウスの中ボタン(ホイール)をクリックして貼り付けることができます。

Ctrl+Vで貼り付けたい場合は、次のように実行して「クリップボード」に文字列を入れます。

# 他のコマンドの出力をクリップボードに入れる
他のコマンド | xclip -selection c

# ファイルを読み込んでクリップボードに入れる
xclip -selection c ファイル 

なお、「-o」オプションを指定すると、Xセレクションやクリップボードの内容が出力されます。

# Xセレクションの内容を出力
xclip -o

# クリップボードの内容を出力
xclip -selection c -o

xclipの主なオプション

-selection [p|s|c|primary|secondary|clipboard]
入出力する対象を「Xプライマリセレクション」「Xセカンダリセレクション」「クリップボード」から指定します。指定しなければ「Xプライマリセレクション」が使われます。「p」「s」「c」のように頭文字だけでも指定できます。
-o
Xセレクションやクリップボードの内容を出力します。

xclipの実行例

# 「cal」コマンドの出力をXセレクションに入れる
cal | xclip

# クリップボードの内容を「clip.txt」に書き込む
xclip -selection c -o > clip.txt

# forループで実行したコマンドの出力を全部クリップボードに入れる
for i in 203.0.113.{1..254}; do echo $i; done | xclip -selection c

macOSの「pbcopy」や「pbpaste」を「xclip」で実現する

macOSには、クリップボードにコピーする「pbcopy」、クリップボードからペーストする「pbpaste」というコマンドがあります。
これを「xclip」で実現するには、「~/.bash_aliases」に以下のコマンドを追記します。

alias pbcopy='xclip -selection c'
alias pbpaste='xclip -selection c -o'

そして、sourceコマンドで読み直します。

source ~/.bash_aliases

これで、例えば次のように実行できるようになります。

# 「systemctl list-dependencies」の出力をクリップボードにコピー
systemctl list-dependencies | pbcopy

# クリップボードの内容をファイル「clip.txt」に出力
pbpaste > clip.txt

xclipコマンドのヘルプ

Usage: xclip [OPTION] [FILE]...
Access an X server selection for reading or writing.

  -i, -in          read text into X selection from standard input or files
                   (default)
  -o, -out         prints the selection to standard out (generally for
                   piping to a file or program)
  -l, -loops       number of selection requests to wait for before exiting
  -d, -display     X display to connect to (eg localhost:0")
  -h, -help        usage information
      -selection   selection to access ("primary", "secondary", "clipboard" or "buffer-cut")
      -noutf8      don't treat text as utf-8, use old unicode
      -target      use the given target atom
      -version     version information
      -silent      errors only, run in background (default)
      -quiet       run in foreground, show what's happening
      -verbose     running commentary

xclipコマンドのマニュアル

XCLIP(1)		    General Commands Manual		      XCLIP(1)

NAME
       xclip - command line interface to X selections (clipboard)

SYNOPSIS
       xclip [OPTION] [FILE]...

DESCRIPTION
       Reads  from  standard in, or from one or more files, and makes the data
       available as an X selection for pasting	into  X  applications.	Prints
       current X selection to standard out.

       -i, -in
	      read  text  into	X  selection  from  standard  input  or  files
	      (default)

       -o, -out
	      print the selection to standard out (generally for piping  to  a
	      file or program)

       -f, -filter
	      when  xclip  is  invoked in the in mode with output level set to
	      silent (the defaults), the filter option	will  cause  xclip  to
	      print the text piped to standard in back to standard out unmodi‐
	      fied

       -l, -loops
	      number of X selection requests (pastes into X  applications)  to
	      wait  for  before  exiting,  with a value of 0 (default) causing
	      xclip to wait for an unlimited number of requests until  another
	      application  (possibly another invocation of xclip) takes owner‐
	      ship of the selection

       -t, -target
	      specify a particular data format using the  given  target  atom.
	      With  -o	the  special target atom name "TARGETS" can be used to
	      get a list of valid target atoms for this selection.   For  more
	      information about target atoms refer to ICCCM section 2.6.2

       -d, -display
	      X  display  to  use  (e.g. "localhost:0"), xclip defaults to the
	      value in $DISPLAY if this option is omitted

       -h, -help
	      show quick summary of options

       -selection
	      specify which X selection to use, options are "primary"  to  use
	      XA_PRIMARY  (default),  "secondary"  for	XA_SECONDARY or "clip‐
	      board" for XA_CLIPBOARD

       -version
	      show version information

       -silent
	      fork into the background to wait for requests, no  informational
	      output, errors only (default)

       -quiet show informational messages on the terminal and run in the fore‐
	      ground

       -verbose
	      provide a running commentary of what xclip is doing

       -noutf8
	      operate in legacy (i.e. non UTF-8) mode for  backwards  compati‐
	      bility  (Use  this option only when really necessary, as the old
	      behavior was broken)

       xclip reads text from standard in or files and makes  it  available  to
       other  X applications for pasting as an X selection (traditionally with
       the middle mouse button). It reads from all files  specified,  or  from
       standard  in  if  no files are specified. xclip can also print the con‐
       tents of a selection to standard out with the -o option.

       xclip was designed to allow tighter integration of X  applications  and
       command	line  programs.  The default action is to silently wait in the
       background for X selection requests (pastes) until another  X  applica‐
       tion places data in the clipboard, at which point xclip exits silently.
       You can use the -verbose option to  see	if  and  when  xclip  actually
       receives selection requests from other X applications.

       Options	can  be  abbreviated  as  long as they remain unambiguous. For
       example, it is possible to use -d or -disp instead  of  -display.  How‐
       ever,  -v  couldn't  be used because it is ambiguous (it could be short
       for -verbose or -version), so it would be interpreted as a filename.

       Note that only the first character of the selection specified with  the
       -selection  option  is important. This means that "p", "sec" and "clip"
       would have the same effect as using "primary",  "secondary"  or	"clip‐
       board" respectively.

EXAMPLES
       I hate man pages without examples!

       uptime | xclip

       Put  your uptime in the X selection. Then middle click in an X applica‐
       tion to paste.

       xclip -loops 10 -verbose /etc/motd

       Exit after /etc/motd (message of the day) has  been  pasted  10	times.
       Show how many selection requests (pastes) have been processed.

       xclip -o > helloworld.c

       Put the contents of the selection into a file.

       xclip -t text/html index.html

       Middle  click in an X application supporting HTML to paste the contents
       of the given file as HTML.

ENVIRONMENT
       DISPLAY
	      X display to use if none is specified with the -display option.

REPORTING BUGS
       Please report any bugs, problems, queries, experiences,	etc.  directly
       to the author.

AUTHORS
       Kim Saunders <[email protected]> Peter Åstrand <[email protected]>

								      XCLIP(1)