Unfähig pbcopy -clipboard innen Bildschirm zu haben
-
03-07-2019 - |
Frage
Problem nicht gelöst, obwohl eine Antwort akzeptiert wurde. Wir arbeiten Jonas Code an der Arbeit
Problem: den Code ändern (1) bis (2)
Ich kenne den Thread . Ich möchte in der Lage, den folgenden Code innerhalb Bildschirm
laufenCode (1)
cat ~/.vimrc | pbcopy (1)
Code (2)
cat ~/.vimrc > /tmp/pbcopy.pipe (2)
Mein Versuch, das Problem zu lösen: den folgenden Code zu setzen, um .zshrc
function pbcopy() { "(cat \"$1\")" > /tmp/pbcopy.pipe }
ich
cat masi | pbcopy
pbcopy: command not found: (cat "")
cat: masi: No such file or directory
Wie kann man pbcopy innerhalb Bildschirm verwenden?
Lösung
In Ordnung, das ist eine screwy Antwort, aber es ist auch eine screwy Frage, so dass zumindest sie übereinstimmen. Sie können eine Named Pipe erstellen mit mkfifo
, und dann Setup eine unendliche Schleife, die liest Dateien aus dem Named Pipe und Rohren sie pbcopy
(oder xsel
, xclip
usw.).
1 In einem Terminal, das nicht in einer Bildschirmsitzung (laufen diese nur einmal) ist.
/usr/bin/mkfifo /tmp/pbcopy.pipe
while true; do /bin/cat /tmp/pbcopy.pipe | /usr/bin/pbcopy; done
Sie können wollen, dass diese in einen Shell-Skript drehen wie (dies sollte wahrscheinlich robuster sein)
#!/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
, die Sie pbcopy_server.sh
benennen können, machen ausführbare Datei (chmod a+x pbcopy_server.sh
) und irgendwo in den Weg legen, so können Sie nohup pbcopy_server.sh &
sagen, wenn Sie zuerst Ihre Maschine starten.
2. In jeder anderen Endgerät (einschließlich der in Bildschirm-Sitzungen) können Sie nun cat-Dateien (oder Ausgabe von Programmen in /tmp/pbcopy.pipe umleiten und der Text wird in der Zwischenablage angezeigt.
cat file > /tmp/pbcopy.pipe
df -h > /tmp/pbcopy.pipe
3. Um es so aussehen, wie Sie die echte pbcopy
rufen Sie etwas zu tun, um das cat'ing zu /tmp/pbcopy.pipe
für Sie verwenden können.
3a Verwenden Sie eine zsh
Funktion:.
function pbcopy() { cat > /tmp/pbcopy.pipe }
3b oder erstellen Sie einen Perl-Skript namens pbcopy
und steckt es in einem Verzeichnis früher in Ihrem PATH
als /usr/bin
.
#!/usr/bin/perl
use strict;
use warnings;
open my $out, ">", "/tmp/pbcopy.pipe"
or die "could not open pipe to pbcopy: $!\n";
print $out $_ while <>;
Andere Tipps
Es gibt eine viel einfachere Lösung nur verwenden osascript wie unter http://www.samsarin.com/blog/2008/10/18/copying-gnu-screen-buffer-to-leopard-clipboard/
In den Kommentaren stellt Andrew Wason diese Lösung die Bildschirmpuffer zu kopieren:
Code in Ihrem .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'"
Auch osascript verwenden, hier ist ein Bash-Skript, die das Verhalten von pbcopy im Bildschirm emuliert. Verbesserungen dieses Skript sind willkommen:
Speichern Sie diesen Code als Bash-Skript irgendwo in Ihrem Pfad, Beispiel: ~ / 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
Sie können eine ältere Version von MacPort Bildschirm installieren, um dieses Problem zu lösen scheint, wie in den Kommentaren dieses Artikels angegeben:
Link zum letzten Kommentar zu erklären, wie zu tun
Ich habe mich versucht und Bildschirm funktioniert sehr gut jetzt mit pbcopy! : -)
Überprüfen Sie diesen Schritt:
-
Installieren MacPort seine DMG-Datei. Leopard DMG
-
Starten Sie ein neuen Terminal und
$ sudo vi /opt/local/etc/macports/sources.conf
schließlich nur jene zwei Linien bleiben in sources.conf, nicht mehr:file: /// Users / xxxxx / ports
rsync: //rsync.macports.org/release/ports/ [Standard] -
$ cd
(mit dem "Bildschirm" Verzeichnis nicht erstellen, SVN)
$ mkdir -p ports/sysutils/ -
$ cd ports/sysutils/
$ svn co -r 45745 http://svn.macports.org/repository/macports/trunk/dports/sysutils/screen -
Sobald Check-out:
$ cd $ HOME / ports
$ Portindex
Erstellen von Software-Index in / Users / keugaerg / ports Hinzufügen von Port sysutils / BildschirmTotal number of ports parsed: 1 Ports successfully parsed: 1 Ports failed: 0
-
$ sudo port install screen
(Kann eine Weile dauern als Bildschirm Herunterladen und buidling it)
Dann getan es, nur starten müssen / opt / local / bin / Bildschirm.
Dies scheint in Snow Leopard-Version von GNU-Bildschirm festgelegt werden, obwohl sie die gleiche Versionsnummer 4.00.03 (FAU) 23-Oct-06.
haltenAlternativ können Sie aktualisieren, um Bildschirm Version 4.01:
git clone git://git.savannah.gnu.org/screen.git