web-dev-qa-db-ja.com

コマンドの出力をクリップボードに直接コピーする方法を教えてください。

ターミナルを使用しているときに、コマンドの出力をクリップボードにパイプで貼り付けて戻す方法を教えてください。例えば:

cat file | clipboard
416
Legend

私はいつもこれをやりたかったし、それをするための素晴らしいそして簡単な方法を見つけました。他の誰かがそれを必要とする場合に備えて、私は完全な手順を書き留めました。

最初にxclipという16kBのプログラムをインストールします。

Sudo apt-get install xclip

その後、クリップボードにコピーするために出力をxclipにパイプ処理できます。

cat file | xclip

コピーしたテキストを貼り付けるには、次のようにします。

xclip -o

人生を簡単にするために、私のようにあなたの.bashrcファイルにエイリアスを設定することができます。

alias "c=xclip"
alias "v=xclip -o"

これがどれほど有用であるかを見るために、私の現在のパスを新しいターミナルウィンドウで開きたいと想像してください(それをする他の方法があるかもしれません) Ctrl+T いくつかのシステムでは、これは単に説明の目的のためです。

Terminal 1:
pwd | c

Terminal 2:
cd `v`

vの周囲の` `に注目してください。これは、最初にvをコマンドとして実行し、次にcdを代わりに使用するようにその場で置き換えます。

コンテンツをXクリップボードにコピーするだけです

cat file | xclip

Xアプリケーション以外の場所に貼り付ける場合は、次の方法を試してください。

cat file | xclip -selection clipboard
504
Legend

OS Xでは、pbcopyを使用してください。 pbpasteは反対方向に進みます。

143

私はLinux/OSX/Cygwin用のツールを作成しました。これらのツールは、他のものと似ていますが、わずかにユニークです。私はそれをcbと呼び、 このgithub Gistにあります

その要旨の中で、私はLinux、macOS、そしてCygwinを使ってコマンドラインでコピー&ペーストする方法を説明します。

Linux

_copy(){
    cat | xclip -selection clipboard
}

_paste(){
    xclip -selection clipboard -o
}

マックOS

_copy(){
    cat | pbcopy
}

_paste(){
    pbpaste
}

サイグウィン

_copy(){
    cat > /dev/clipboard
}

_paste(){
    cat /dev/clipboard
}

注:私はもともと Bob Enohpの答え への私のコメントでこれを言及するつもりでした。しかし、それから私はGistにREADMEを追加する必要があることに気付きました。 GistエディタはMarkdownプレビューを提供していないので、ここで答えボックスを使用し、それをコピーしてGistに貼り付けた後、「答えを送信してもよい」と考えました。

cb

クリップボードへの漏れ防止ティー

このスクリプトはteeをモデルにしています( man tee を参照)。

これは通常のコピー&ペーストコマンドに似ていますが、統一されていていつチェーン可能にしたいのかを感知することができます

コピーする

$ date | cb
# clipboard contains: Tue Jan 24 23:00:00 EST 2017

ペースト

# clipboard retained from the previous block
$ cb
Tue Jan 24 23:00:00 EST 2017
$ cb | cat
Tue Jan 24 23:00:00 EST 2017
$ cb > foo
$ cat foo
Tue Jan 24 23:00:00 EST 2017

連鎖

$ date | cb | tee updates.log
Tue Jan 24 23:11:11 EST 2017
$ cat updates.log
Tue Jan 24 23:11:11 EST 2017
# clipboard contains: Tue Jan 24 23:11:11 EST 2017

ファイルリダイレクトによるコピー

(年代順にこれを最後にデモするのは意味がありました)

# clipboard retained from the previous block
$ cb < foo
$ cb
Tue Jan 24 23:00:00 EST 2017
# note the minutes and seconds changed from 11 back to 00
44
Bruno Bronosky

この小さなスクリプトを書いて、コピー/貼り付けコマンドから推測作業を取り除きます。

Linux版のスクリプトは、システムにすでにインストールされているxclipに依存しています。このスクリプトはクリップボードと呼ばれています。

#!/bin/bash
# Linux version
# Use this script to pipe in/out of the clipboard
#
# Usage: someapp | clipboard     # Pipe someapp's output into clipboard
#        clipboard | someapp     # Pipe clipboard's content into someapp
#

if command -v xclip 1>/dev/null; then
    if [[ -p /dev/stdin ]] ; then
        # stdin is a pipe
        # stdin -> clipboard
        xclip -i -selection clipboard
    else
        # stdin is not a pipe
        # clipboard -> stdout
        xclip -o -selection clipboard
    fi
else
    echo "Remember to install xclip"
fi

OS X版のスクリプトは、すべてのMacにプレインストールされているpbcopyとpbpasteに依存しています。

#!/bin/bash
# OS X version
# Use this script to pipe in/out of the clipboard
#
# Usage: someapp | clipboard     # Pipe someapp's output into clipboard
#        clipboard | someapp     # Pipe clipboard's content into someapp
#

if [[ -p /dev/stdin ]] ; then
    # stdin is a pipe
    # stdin -> clipboard
    pbcopy
else
    # stdin is not a pipe
    # clipboard -> stdout
    pbpaste
fi

この2つの例に示すように、スクリプトを使用するのは非常に簡単です。clipboardからパイプインまたはパイプラインアウトするだけなので。

$ cat file | clipboard

$ clipboard | less
42
Bob Enohp

これをあなたの~/.bashrcに追加してください:

# Now `cclip' copies and `clipp' pastes'
alias cclip='xclip -selection clipboard'
alias clipp='xclip -selection clipboard -o'

これで、クリップpペーストおよびcクリップコピー - しかし、もっと面白いこともできます。

clipp | sed 's/^/    /' | cclip

↑クリップボードをインデントします。スタックオーバーフローのないサイトに適しています { } ボタン

これを実行して追加できます。

printf "\nalias clipp=\'xclip -selection c -o\'\n" >> ~/.bashrc
printf "\nalias cclip=\'xclip -selection c -i\'\n" >> ~/.bashrc
20
user3276552

私はParcelliteとxselを使用して、最後のコミットメッセージをgitから私のクリップボードマネージャにコピーしています(何らかの理由でxclipが機能しません)。

$ git log -1 --pretty=%B | xsel -i -b
7

SSHをサーバービューに接続している場合は、外部ツールを使用せずに比較的簡単なコマンドです。

Windows 7以降のコマンドプロンプトから:

ssh user@server cat /etc/passwd | clip

これにより、リモートファイルの内容がローカルのクリップボードに保存されます。

(このコマンドでは、キーにPageantを実行する必要があります。そうしないと、パスワードの入力が求められます。)

5
d.raev

XclipがインストールされているLinuxの場合:

xclip -selectionクリップボード<ファイル

3
tristobal

Xclipやxselを使わずに、似たような機能を提供する小さなツールを作りました。 stdoutはクリップボードにコピーされ、端末に再度貼り付けることができます。見る:

https://sourceforge.net/projects/commandlinecopypaste/

このツールはXセッションを必要としないことに注意してください。クリップボードは端末内で使用することができるだけで、貼り付ける必要はありません。 Ctrl+V または他のXウィンドウを中マウスクリックします。

3
Dirk Duschinger

Windowsシステムにインストールされたbash(Linux用のWindowsサブシステム(WSL)と呼ばれる)を使用している場合、xclipを実行しようとするとエラーが発生します。

Error: Can't open display: (null)

代わりに、linuxサブシステムがWindows実行可能ファイルにアクセスできることを思い出してください。それはのようなclip.exeを使用することは可能です

echo hello | clip.exe

これにより、貼り付けコマンド(ctrl-v)を使用できます。

0
DFeng

私はKDEのバックグラウンドを落としてきたので、xclipxsel、その他の派手なものにアクセスできません。さらに悪いことに私はTCSH Konsoleを持っています。

必要条件:qdbusklipperxargsbash

Bash実行可能ファイルfoo.shを作成します。

#!/bin/bash
qdbus org.kde.klipper /klipper setClipboardContents "$1" > /dev/null

注: TCSHは複数行の引数をサポートしていないため、これはbashである必要があります。

.cshrcの中にTCSHの別名が続きます。

alias clipboard xargs -0 /path/to/foo

説明:

xargs -0は標準入力を単一の引数に渡します。この引数は、klipperを使用して「クリップボードにコピー」要求をqdbusに送信するbash実行可能ファイルに渡されます。 /dev/nullへのパイプは、qdbusから返された改行文字をコンソールに表示しないことです。

使用例

ls | clipboard

これにより、現在のフォルダの内容がクリップボードにコピーされます。

注: パイプとしてのみ機能します。引数をコピーする必要がある場合は、bash実行可能ファイル 直接 を使用してください。

0
Ryan Dsouza

以前の投稿に基づいて、私は.bashrcに追加することができる以下の軽量のエイリアスソリューションを得ました。

if [ -n "$(type -P xclip)" ]
then
  alias xclip='xclip -selection clipboard'
  alias clipboard='if [ -p /dev/stdin ]; then xclip -in; fi; xclip -out'
fi

例:

# Copy
$ date | clipboard
Sat Dec 29 14:12:57 PST 2018

# Paste
$ date
Sat Dec 29 14:12:57 PST 2018

# Chain
$ date | clipboard | wc
   1       6      29
0
kornieff

Edgeの場合をカバーするためだけに:)そして質問の題名は(少なくとも今は)コマンドの出力をクリップボードに直接コピーする方法を尋ねるからです。

多くの場合、コマンドの実行後にそのコマンドの出力をコピーしたほうが便利であり、そのコマンドを再度実行したくない、または実行できないことがあります。

このシナリオでは、gdmまたは同様のマウスユーティリティを使用して、マウスを使用して選択することができます。コピーして端末に貼り付けるには、apt-get install gdm、次に右クリックまたはCntrl + Shift + cとCntrl + Shift + vの組み合わせ

または、これは私にとっては好ましい方法です(複数のペインを並べて表示しているときにマウスが1つのペイン内で正しく選択できず、複数行を選択する必要がある場合)、tmuxを使用し[、スペース、移動して選択、入力、またはコードブロックを選択できます。また、これはあなたがtmuxのようなcliマルチプレクサのレーンの1つの内側にいて、あなたがテキストの束を選択する必要があるが行番号ではない場合に特に有用です(私のvim設定は行番号をレンダリングします)

その後、以下のコマンドを使うことができます。

tmux save-buffer - | xclip -i

もちろん、あなたが好きなものにエイリアスすることも、tmux設定ファイルで直接バインドすることもできます。

これは、コマンドを再度実行できない場合に、このEdgeのケースをカバーするための概念的な回答を提供するためのものです。より具体的なコード例が必要な場合は、お知らせください

乾杯

0