1315 Stimmen

Pipe in/aus der Zwischenablage in einem Bash-Skript

Ist es möglich, Pipe zu/von der Zwischenablage in Bash?

Egal, ob es sich um Piping zu/von einem Geräte-Handle oder um eine Hilfsanwendung handelt, ich kann nichts finden.

Zum Beispiel, wenn /dev/clip war ein Gerät, das mit der Zwischenablage verbunden war, was wir tun konnten:

cat /dev/clip        # Dump the contents of the clipboard
cat foo > /dev/clip  # Dump the contents of "foo" into the clipboard

7voto

SergioAraujo Punkte 9813

Ich habe eine gute Referenz gefunden: Wie man mit xclip mehrere Auswahlen anvisiert

In meinem Fall möchte ich Inhalte in die Zwischenablage einfügen und auch sehen, was dort eingefügt wurde, also habe ich auch die tee Befehl mit einem Dateideskriptor:

echo "just a test" | tee >(xclip -i -selection clipboard)

>() ist eine Form der Prozess-Substitution. Die Bash ersetzt jeden durch den Pfad zu einem Dateideskriptor, der mit der Standardeingabe des Programms innerhalb der Klammern verbunden ist.

En tee Kommando verzweigt Ihr Kommando und ermöglicht es Ihnen, dessen Inhalt zu "pipen" und das Ergebnis auf der Standardausgabe "stdout" zu sehen.

Sie können auch Aliase zum Abrufen und Schreiben in der Zwischenablage erstellen, so dass Sie "pbcopy" und "pbpaste" wie auf einem Mac verwenden können. In meinem Fall, da ich Z-Muschel ( zsh ), habe ich dies in meiner Alias-Datei:

(( $+commands[xclip] )) && {
    alias pbpaste='xclip -i -selection clipboard -o'
    alias pbcopy='xclip -selection clipboard'
}

En (( $+command[name] )) in Z-Shell testet, ob der Befehl "name" auf Ihrem System installiert ist, und dann werden beide Aliase mit {} . Die && ist eine binäre UND Wenn a dann b, also wenn Sie xclip haben, werden die Aliase gesetzt.

echo "another test" | tee >(pbcopy)

Um den Inhalt der Zwischenablage abzurufen, geben Sie einfach ein:

pbpaste | "any-command-you-need-here"

6voto

tysweat Punkte 79

Dies ist ein einfaches Python-Skript, das genau das tut, was Sie brauchen:

#!/usr/bin/python

import sys

# Clipboard storage
clipboard_file = '/tmp/clipboard.tmp'

if(sys.stdin.isatty()): # Should write clipboard contents out to stdout
    with open(clipboard_file, 'r') as c:
        sys.stdout.write(c.read())
elif(sys.stdout.isatty()): # Should save stdin to clipboard
    with open(clipboard_file, 'w') as c:
        c.write(sys.stdin.read())

Speichern Sie diese Datei als ausführbare Datei irgendwo in Ihrem Pfad (ich habe sie unter /usr/local/bin/clip . Sie können Dinge einfügen, die in Ihrer Zwischenablage gespeichert werden sollen...

echo "Hello World" | clip

Und Sie können das, was sich in Ihrer Zwischenablage befindet, an ein anderes Programm weiterleiten...

clip | cowsay
 _____________
< Hello World >
 -------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

Wenn Sie das Programm selbst ausführen, wird lediglich der Inhalt der Zwischenablage ausgegeben.

5voto

Martin Fischer Punkte 51
  xsel -b

Erledigt die Aufgabe für X Window, und es ist meist schon installiert. Ein Blick in die Manpage von xsel ist die Mühe wert.

5voto

Stenemo Punkte 585

Kopieren und Einfügen in die Zwischenablage in Windows (Cygwin):

Siehe:

$ clip.exe -?

CLIP
Description:
    Redirects output of command line tools to the Windows clipboard.
    This text output can then be pasted into other programs.
Parameter List:
/?                  Displays this help message.
Examples:
DIR | CLIP          Places a copy of the current directory
                        listing into the Windows clipboard.
CLIP < README.TXT   Places a copy of the text from readme.txt
                        on to the Windows clipboard.

Auch getclip (es kann anstelle von Shift + Ins !) und putclip (echo oaeuoa | putclip.exe, um es in clip zu speichern) existieren.

5voto

Skulas Punkte 367

Pbcopy ist in OS X eingebaut:

Kopieren des Inhalts einer Datei .bash_profile :

cat ~/.bash_profile | pbcopy

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X