画面内に pbcopy -clipboard を含めることができません
-
03-07-2019 - |
質問
1 つの回答が受け入れられましたが、問題は解決されませんでした: 私たちは Jonah のコードを動作させるために取り組んでいます。
問題: (1)のコードを(2)に変更するには
私は知っています 糸. 。Screen内で次のコードを実行できるようにしたい
コード(1)
cat ~/.vimrc | pbcopy (1)
コード(2)
cat ~/.vimrc > /tmp/pbcopy.pipe (2)
問題を解決しようとする私の試み:次のコードを .zshrc に置きます
function pbcopy() { "(cat \"$1\")" > /tmp/pbcopy.pipe }
分かりました
cat masi | pbcopy
pbcopy: command not found: (cat "")
cat: masi: No such file or directory
Screen 内で pbcopy を使用するにはどうすればよいですか?
解決
さて、これは厄介な答えですが、それはまた厄介な質問なので、少なくとも一致します。 mkfifo
を使用して名前付きパイプを作成できます。次に、名前付きパイプからファイルを読み取り、 pbcopy
(または xsel
、 xclip
など)にパイプする無限ループを設定します。
1。スクリーンセッションにない端末で(これを1回だけ実行します):
/usr/bin/mkfifo /tmp/pbcopy.pipe
while true; do /bin/cat /tmp/pbcopy.pipe | /usr/bin/pbcopy; done
次のようなシェルスクリプトに変換したい場合があります(おそらくこれはより堅牢なはずです)
#!/bin/bash
if [[ -e /tmp/pbcopy.pipe ]]; then
echo "it looks like I am already running"
echo "remove /tmp/pbcopy.pipe if you are certain I am not"
exit 1
fi
while true; do
/bin/cat /tmp/pbcopy.pipe | /usr/bin/pbcopy
done
pbcopy_server.sh
という名前を付け、実行可能ファイル( chmod a + x pbcopy_server.sh
)を作成し、パスのどこかに置くことができるので、 nohup pbcopy_server.sh&
を初めてマシンを起動したとき。
2。他の端末(スクリーンセッションの端末を含む)で、catファイル(またはプログラムの出力を/tmp/pbcopy.pipeにリダイレクト)すると、テキストがクリップボードに表示されます。
cat file > /tmp/pbcopy.pipe
df -h > /tmp/pbcopy.pipe
3。実際の pbcopy
を呼び出しているように見えるようにするには、 /tmp/pbcopy.pipeを処理するために何かを使用できます。
あなたのため。
3a。 zsh
関数を使用します:
function pbcopy() { cat > /tmp/pbcopy.pipe }
3b。または pbcopy
という名前のPerlスクリプトを作成し、 / usr /よりも
: PATH
の前のディレクトリに配置します。ビン
#!/usr/bin/perl
use strict;
use warnings;
open my $out, ">", "/tmp/pbcopy.pipe"
or die "could not open pipe to pbcopy: $!\n";
print $out さて、これは厄介な答えですが、それはまた厄介な質問なので、少なくとも一致します。 mkfifo
を使用して名前付きパイプを作成できます。次に、名前付きパイプからファイルを読み取り、 pbcopy
(または xsel
、 xclip
など)にパイプする無限ループを設定します。
1。スクリーンセッションにない端末で(これを1回だけ実行します):
/usr/bin/mkfifo /tmp/pbcopy.pipe
while true; do /bin/cat /tmp/pbcopy.pipe | /usr/bin/pbcopy; done
次のようなシェルスクリプトに変換したい場合があります(おそらくこれはより堅牢なはずです)
#!/bin/bash
if [[ -e /tmp/pbcopy.pipe ]]; then
echo "it looks like I am already running"
echo "remove /tmp/pbcopy.pipe if you are certain I am not"
exit 1
fi
while true; do
/bin/cat /tmp/pbcopy.pipe | /usr/bin/pbcopy
done
pbcopy_server.sh
という名前を付け、実行可能ファイル( chmod a + x pbcopy_server.sh
)を作成し、パスのどこかに置くことができるので、 nohup pbcopy_server.sh&
を初めてマシンを起動したとき。
2。他の端末(スクリーンセッションの端末を含む)で、catファイル(またはプログラムの出力を/tmp/pbcopy.pipeにリダイレクト)すると、テキストがクリップボードに表示されます。
cat file > /tmp/pbcopy.pipe
df -h > /tmp/pbcopy.pipe
3。実際の pbcopy
を呼び出しているように見えるようにするには、 /tmp/pbcopy.pipeを処理するために何かを使用できます。
あなたのため。
3a。 zsh
関数を使用します:
function pbcopy() { cat > /tmp/pbcopy.pipe }
3b。または pbcopy
という名前のPerlスクリプトを作成し、 / usr /よりも PATH
の前のディレクトリに配置します。ビン
:
<*> while <>;
他のヒント
http://www.samsarin.com/blog/2008/10/18/copying-gnu-screen-buffer-to-leopard-clipboard/
コメントでは、Andrew Wasonが画面バッファをコピーするためのこのソリューションを提供しています:
.screenrcのコード
# binds C-a b to copy the contents of your last screen copy to the MacOSX pasteboard
bind b eval "writebuf /tmp/screen-pbcopy" "exec /usr/bin/osascript -e 'tell application \"System Events\"' -e 'set the clipboard to (read posix file \"/tmp/screen-pbcopy\" as text)' -e 'end tell'"
また、osascriptを使用して、画面内のpbcopyの動作をエミュレートするbashスクリプトを次に示します。このスクリプトの改善は大歓迎です:
このコードをパスのどこかにbashスクリプトとして保存します。例:〜/ bin / pbcopyScreen.bash
#!/bin/bash
# saves all standard input to a file
cat > /tmp/screen_pbcopy_kludge_buffer
# uses osascript to set the MacOSX pastebaord to the contents of the file
/usr/bin/osascript -e 'tell application "System Events"' -e 'set the clipboard to (read posix file "/tmp/screen_pbcopy_kludge_buffer" as text)' -e 'end tell'
rm /tmp/screen_pbcopy_kludge_buffer
この記事のコメントに記載されているように、この問題を解決すると思われる古いバージョンのMacportの画面をインストールできます。
リンク方法を説明する最後のコメントへ
私は自分で試してみましたが、pbcopyでスクリーンは非常にうまく動作します:-)
そのステップを確認します:
-
DMGファイルを使用してMacportをインストールします。 LeopardのDMG
-
新しいターミナルを起動し、
$ sudo vi /opt/local/etc/macports/sources.conf
最後に、これらの2行はsources.confにのみ残り、それ以上はありません。file:/// Users / xxxxx / ports
rsync://rsync.macports.org/release/ports/ [デフォルト] -
$ cd
(&quot; screen&quot;ディレクトリを作成しないでください、svnは作成します)
$ mkdir -p ports / sysutils / -
$ cd ports / sysutils /
$ svn co -r 45745 http://svn.macports.org/repository/macports/trunk/dports/sysutils/screen -
一度チェックアウト:
$ cd $ HOME / ports
$ portindex
/ Users / keugaerg / portsでソフトウェアインデックスを作成する ポートsysutils / screenの追加Total number of ports parsed: 1 Ports successfully parsed: 1 Ports failed: 0
-
$ sudo portインストール画面
(画面をダウンロードして起動するのに時間がかかる場合があります)
完了したら、/ opt / local / bin / screenを起動するだけです。
この問題は、Snow Leopard のバージョンの GNU Screen では修正されているようですが、バージョン番号は 4.00.03 (FAU) 2006 年 10 月 23 日のままです。
あるいは、Screen バージョン 4.01 に更新することもできます。
git clone git://git.savannah.gnu.org/screen.git