ターミナルを使用しているときに、コマンドの出力をクリップボードにパイプして貼り付けるにはどうすればよいですか?例えば:
cat file | clipboard
apt install xclip
およびcat file | xclip -sel clip
ターミナルを使用しているときに、コマンドの出力をクリップボードにパイプして貼り付けるにはどうすればよいですか?例えば:
cat file | clipboard
apt install xclip
およびcat file | xclip -sel clip
回答:
私はいつもこれをやりたかったし、それを行うための素晴らしい簡単な方法を見つけました。他の誰かがそれを必要とする場合に備えて、私は完全な手順を書き留めました。
まず、次の名前の16 kBプログラムをインストールしxclip
ます。
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
alias "cs=xclip -selection clipboard"
、alias "vs=xclip -o -selection clipboard"
簡単にする
OS Xでは、を使用しpbcopy
ます。pbpaste
反対方向に行きます。
pbcopy < .ssh/id_rsa.pub
pbcopy < .ssh/id_rsa.pub
pbcopy < git merge-base master some-branch
git merge-base master some-branch | pbcopy
Linux / OSX / Cygwin用のツールを作成しましたが、これらは他のツールと似ていますが、わずかに独特です。私はそれを呼び出しcb
、それはこのgithub gistにあります。
その要点で、Linux、macOS、およびCygwinを使用してコマンドラインからコピーアンドペーストする方法を示します。
_copy(){
cat | xclip -selection clipboard
}
_paste(){
xclip -selection clipboard -o
}
_copy(){
cat | pbcopy
}
_paste(){
pbpaste
}
_copy(){
cat > /dev/clipboard
}
_paste(){
cat /dev/clipboard
}
注:私は当初、ボブ・イーノップの回答への私のコメントでこれを言及することを意図していました。しかし、私は自分の要点にREADMEを追加する必要があることに気付きました。gistエディターはMarkdownプレビューを提供していないため、ここで回答ボックスを使用し、それを私の要旨にコピー/貼り付けた後、「私は回答を送信することもできます」と述べました。
このスクリプトはモデル化されています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
コピー/貼り付けコマンドから推測作業を取り除くこの小さなスクリプトを書きました。
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
clipboard
これらの2つの例に示すように、パイプを使用してパイプを使用するだけなので、スクリプトの使用は非常に簡単です。
$ cat file | clipboard
$ clipboard | less
pbcopy
し、pbpaste
それがLinuxとOS Xの両方のために働くように、Linux上で
~/.scripts/clipboard
で実行可能にしますchmod +x ~/.scripts/clipboard
。* for fish export PATH=$PATH:~/.scripts
の末尾に~/.bashrc
追加set PATH ~/.scripts $PATH
し~/.config/fish/fish.config
ます。
clipboard(){ ... }
し、.bashrcに貼り付けることもできます
date | cb | tee -a updates.log
。これは、date
コマンド出力をクリップボードに送信し、tee -a
それをファイルに追加するコマンドに渡し、それをに渡しますstdout
。しかし、それは「クリップボードへの漏れのないティー」のようなものdate | cb
です。そして最後に、cb > file.txt
gist.github.com / RichardBronosky /…
xclip -i -selection clipboard
を次のように変更しますxargs echo -n | xclip -i -selection clipboard
これをあなたに追加してください~/.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
私はParcelliteを使用していて、xsel
最後のコミットメッセージをgit
クリップボードマネージャーにコピーします(何らかの理由でxclip
機能しません)。
$ git log -1 --pretty=%B | xsel -i -b
外部ツールを使用せずにサーバービューSSHに接続している場合、これは比較的簡単なコマンドです。
Windows 7以降のコマンドプロンプトから:
ssh user@server cat /etc/passwd | clip
これにより、リモートファイルのコンテンツがローカルクリップボードに配置されます。
(このコマンドでは、キーに対してPageantを実行する必要があります。そうしないと、パスワードの入力を求められます。)
xclipやxselを使用せずに、同様の機能を提供する小さなツールを作成しました。stdout
クリップボードにコピーされ、ターミナルに再度貼り付けることができます。見る:
https://sourceforge.net/projects/commandlinecopypaste/
このツールはXセッションを必要としないことに注意してください。クリップボードはターミナル内でのみ使用でき、Ctrl+V他のXウィンドウに貼り付けたり、マウスを中クリックする必要はありません。
以前の投稿に基づいて、私は以下に追加できる軽量のエイリアスソリューションになりました.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
私は、KDEのバックグラウンドを取り除いた出身でxclip
、xsel
やその他の凝ったものにアクセスできません。問題を悪化させるTCSH Konsoleを持っています。
必要条件: qdbus
klipper
xargs
bash
bash実行可能ファイルを作成しますfoo.sh
。
#!/bin/bash
qdbus org.kde.klipper /klipper setClipboardContents "$1" > /dev/null
注: TCSHは複数行の引数をサポートしていないため、これはbashである必要があります。
の後にTCSHエイリアスが続き.cshrc
ます。
alias clipboard xargs -0 /path/to/foo
説明:
xargs -0
stdinを単一の引数にパイプします。この引数は、bash実行可能ファイルに渡されます。実行可能ファイルは、「copy to clipboard」リクエストをに送信klipper
しqdbus
ます。パイプ/dev/null
はqdbus
、コンソールに返された改行文字を出力しません。
使用例:
ls | clipboard
これにより、現在のフォルダーの内容がクリップボードにコピーされます。
注:パイプとしてのみ機能します。引数をコピーする必要がある場合は、bash実行可能ファイルを直接使用してください。
Waylandではxcopyが機能しないようです。代わりにwl-clipboardを使用してください。例:フェドーラ
sudo dnf install wl-clipboard
tree | wl-copy
wl-paste > file
Windowsシステム(LinuxのWindowsサブシステム(WSL)として知られている)にインストールされているbashを使用している場合、xclipを実行するとエラーが発生します。
Error: Can't open display: (null)
代わりに、LinuxサブシステムがWindows実行可能ファイルにアクセスできることを思い出してください。のようなclip.exeを使用することが可能です
echo hello | clip.exe
貼り付けコマンド(ctrl-v)を使用できます。
エッジケースをカバーするためだけです:)そして質問タイトルはコマンドの出力を直接クリップボードにコピーする方法を(少なくとも今は)尋ねるからです。
コマンドの実行後にコマンドの出力をコピーすると便利なことがよくあります。コマンドを再度実行したくない、または実行できません。
このシナリオでは、gdmまたは同様のマウスユーティリティを使用して、マウスを使用して選択できます。apt-get install gdm
右クリックするか、Cntrl + Shift + cとCntrl + Shift + vの組み合わせでターミナルにコピーして貼り付けます
または、これは私にとって推奨される方法です(複数のペインが並んでいて、複数の行を選択する必要がある場合、マウスは1つのペイン内で適切に選択できないため)tmuxを使用して、標準を使用してtmuxバッファーにコピーできます[、スペース、移動して選択、入力、またはコードブロックを選択できます。また、これは、tmuxのようなcliマルチプレクサーのレーンの1つにあり、行番号ではなくテキストの束を選択する必要がある場合に特に役立ちます(私のvimセットアップは行番号をレンダリングします)。
この後、次のコマンドを使用できます。
tmux保存バッファー-| xclip -i
もちろん、エイリアスを好きなものにエイリアスしたり、tmux設定ファイルに直接バインドしたりできます
これは、コマンドを再度実行できない場合に、このエッジケースをカバーするための概念的な回答を提供するためです。より具体的なコード例が必要な場合は、お知らせください
乾杯