Linux向けのOSXのpbcopyのようなもの


141

OSXのターミナルでは、出力をpbcopyにパイプしてから、Webブラウザーに移動して貼り付けることができます。Linuxでxcopyを使用してこれを試しましたが、ブラウザに切り替えると、ブラウザが最後に使用されたときにクリップボードに上書きされます。Linuxでpbcopyのように機能するものは何ですか?


2
...そして、pbcopyが何なのかわからない人のために、developer.apple.com / library / mac /#documentation / Darwin / Reference /のmanページがあり
Rob Cowell

これに役立つツールは、ClipIt(および同様のクリップボードマネージャー)です。ターミナルでうまく再生されるだけでなく、クリップボードの履歴も保存されます。とても便利です。
ブランディッツィ16

回答:


162

Xがインストールされている場合は、次の方法でxselを試すことができます。

alias pbcopy='xsel --clipboard --input'
alias pbpaste='xsel --clipboard --output'

またはxclipを使用:

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

今、あなたはそれらを使用することができます:

echo 'go to my clipboard' | pbcopy

XIを使用していない場合、GNU Screen機能を使用して、キーボードを使用するセッションで開いているシェル間でコピーします。

コピーする : Ctrl-a -> Esc -> go to wanted position * -> Space (to begin selecting) -> press k to go forward mark text -> Enter

貼り付けるには: Ctrl-a + ]

*移動は、キーバインディング(j、k、l、およびm)のようなvimで行われます。


1
ありがとう、これはまさに私が欲しかった情報です。私は画面が私はEmacsは私が...コピーする領域を選択するためにコマンドを使用してみましょう作ることができる方法があるかどうカントー今、私は疑問に思う
ノアサスマン

8
xsel:ディスプレイを開けません:(null):デバイスの不適切なioctl
itsazzad

私は、インストールすることで、Windows上で「できません開いて表示」問題を解決しXmingのを =し、DISPLAYを設定:0
scottgwald

1
tmuxのユーザーの場合、それはより多くのようなものだCtrl-b, [ -> go to position -> Space -> select texts -> Enterとによって貼り付けるCtrl-b, ]
queのm'estエル

もちろん、これが永続的なものであれば、名前空間をプロファイルのエイリアスと複雑にするのではなく、可能な限り、でこのための基本的なスクリプトを作成する方が良いでしょう/bin/特に、macOSとLinuxマシン間でプロファイルを共有する場合。
ベンジャミンR

9

このようなpbcopyというスクリプトをbinフォルダーに配置します。

#!/bin/bash
xclip -i -sel c -f |xclip -i -sel p

これにより、STDINが選択バッファーとクリップボードの両方に配置されます。

echo Hello world |pbcopy

なぜcat必要なのでしょうか?この場合、stdinをstdoutにリダイレクトするだけで、役に立たない猫の虐待や何かが足りないでしょうか?
ハルトナー

2
あなたは正しいです、それは役に立たない猫の虐待のように見えます:
エリック

2
あなたが(私のように)神秘的な「役に立たない猫」がどこにあるのか疑問に思っているなら、それは編集によって削除されました。NTS:コメントが
わかり

これを使用した後、どのように内容を貼り付けますか?使用するだけxclip -oですか?または、より良い方法がありますか?
n1k31t4

@ n1k31t4私がやったのはxclip -sel c -o、のスクリプトに相当するスクリプトを作成することでした/bin/pbpaste
ベンジャミンR

5

@Erikおよび@xpixelzのソリューションを拡張するため。これら2つのスクリプトは、両方のプラットフォームで動作するはずです。

pbcopy:

#!/bin/bash
__IS_MAC=${__IS_MAC:-$(test $(uname -s) == "Darwin" && echo 'true')}
if [ -n "${__IS_MAC}" ]; then
  cat | /usr/bin/pbcopy
else
  # copy to selection buffer AND clipboard
  cat | xclip -i -sel c -f | xclip -i -sel p
fi

pbpaste:

#!/bin/bash
__IS_MAC=${__IS_MAC:-$(test $(uname -s) == "Darwin" && echo 'true')}
if [ -n "${__IS_MAC}" ]; then
  /usr/bin/pbpaste
else
  xclip -selection clipboard -o
fi

しかし、なぜこのスクリプトがネイティブユーザーランドの一部であるOS Xにあるのでしょうか?
ハルトナー

*同様の機能のリファレンスとして*クロスプラットフォームドットファイル:github.com/westurner/dotfiles/blob/develop/scripts/pbcopy
ウェスターナー

それでも猫の虐待があり、代わりにxclipが存在するかどうかを確認し、存在する場合はエイリアスを割り当ててみませんか?または、pbpasteバイナリが存在するかどうかも確認してください。unameを確認することは、問題に対する奇妙なアプローチのようです。
ハルトナー

2
@Hultner「unameを確認することは、問題に対する奇妙なアプローチのように思えます」また、a ${a:-${b:-${c:+${d}}}}および一部の type -P/ has変数の割り当てと/ bin / test execsを使用して、例外によって、順番にバイナリを確認することもできます。
ウェスターナー

2

この回答は、Windows用のLinuxサブシステムに関するものです。

簡単な答え:Windowsクリップボードに何かを置くために使用clip.exepbcopyます。魔法です。たとえばecho "Hello Windows" | clip.exe、あなたのbashやUbuntuのbashのターミナルでは、およびWindowsプログラムで、次に`CTRL-V」。

より多くのコンテキスト:

では上記のコメント私は、この機能を有効にするには、Windows上でXmingのを使用している場合、DISPLAY変数を(設定する必要がある、と述べたexport DISPLAY=:0の前に、多くの場合)xselおよびxclipソリューションの仕事。腹立たしいことに、このソリューションは信頼性が低く、確率論的な方法で機能します.LinuxからWindowsに貼り付けるときにctrl-v1回から10回押すと、クリップボードが(1回)貼り付けられます(これはWindows 10 Surface Book 2にあります)。時間を無駄にしないでくださいclip.exe

注:を忘れないでください.exe。そうでない場合、Ubuntu bashはLinuxパッケージをインストールすることを提案しますがgeomview、これは望みのものではありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.