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

laufen

Code (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?

War es hilfreich?

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:

  1. Installieren MacPort seine DMG-Datei. Leopard DMG

  2. 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]

  3. $ cd
    $ mkdir -p ports/sysutils/
    (mit dem "Bildschirm" Verzeichnis nicht erstellen, SVN)

  4. $ cd ports/sysutils/
    $ svn co -r 45745 http://svn.macports.org/repository/macports/trunk/dports/sysutils/screen

  5. Sobald Check-out:

    $ cd $ HOME / ports
        $ Portindex
        Erstellen von Software-Index in / Users / keugaerg / ports     Hinzufügen von Port sysutils / Bildschirm

    Total number of ports parsed:   1 
    Ports successfully parsed:  1    
    Ports failed:           0
    
  6. $ 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.

halten

Alternativ können Sie aktualisieren, um Bildschirm Version 4.01:

git clone git://git.savannah.gnu.org/screen.git
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top