it-swarm.com.de

Was ist mit OSXs pbcopy für Linux?

In einem Terminal in OSX kann ich die Ausgabe per Pipe an pbcopy übergeben und dann in einen Webbrowser wechseln und ihn einfügen. Ich habe dies unter Linux mit xcopy versucht, aber wenn ich zum Browser wechsle, wird die Zwischenablage nur mit dem Inhalt überschrieben, der sich bei der letzten Verwendung des Browsers darin befand. Wie funktioniert pbcopy unter Linux?

134
tony_sid

wenn Sie X installiert haben, können Sie xsel folgendermaßen ausprobieren:

alias pbcopy='xsel --clipboard --input'
alias pbpaste='xsel --clipboard --output'

oder mit xclip:

alias pbcopy='xclip -selection clipboard'
alias pbpaste='xclip -selection clipboard -o'

jetzt kannst du sie benutzen:

echo 'go to my clipboard' | pbcopy

wenn ich kein X habe, benutze ich die Bildschirmfunktionalität GNU, um zwischen offenen Shells in einer Sitzung mithilfe der Tastatur zu kopieren

zu kopieren: Ctrl-a -> Esc -> go to wanted position * -> Space (to begin selecting) -> press k to go forward mark text -> Enter

einfügen: Ctrl-a + ]

* Bewegungen erfolgen mit vim-ähnlichen Tastenkombinationen (j, k, l & m).

158
amized

Fügen Sie ein Skript wie das folgende mit dem Namen pbcopy in Ihren bin-Ordner ein:

#!/bin/bash
xclip -i -sel c -f |xclip -i -sel p

Dadurch wird STDIN sowohl in den Auswahlpuffer als auch in die Zwischenablage verschoben:

echo Hello world |pbcopy
9
Erik

Erweiterung der Lösungen von @Erik und @xpixelz; Diese beiden Skripte sollten auf beiden Plattformen funktionieren:

pbcopy:

#!/bin/bash
__IS_MAC=${__IS_MAC:-$(test $(uname -s) == "Darwin" && echo 'true')}
if [ -n "${__IS_MAC}" ]; then
  cat | /usr/bin/pbcopy
else
  # copy to selection buffer AND clipboard
  cat | xclip -i -sel c -f | xclip -i -sel p
fi

pbpaste:

#!/bin/bash
__IS_MAC=${__IS_MAC:-$(test $(uname -s) == "Darwin" && echo 'true')}
if [ -n "${__IS_MAC}" ]; then
  /usr/bin/pbpaste
else
  xclip -selection clipboard -o
fi
5
Wes Turner

Diese Antwort bezieht sich auf das Linux-Subsystem für Windows.

Kurze Antwort: Verwenden Sie clip.exe als wäre es pbcopy, um etwas in die Windows-Zwischenablage zu kopieren. Es ist Magie. Beispiel echo "Hello Windows" | clip.exe in Ihrem Bash- oder Ubuntu-Bash-Terminal und dann `ctrl-v 'in einem Windows-Programm.

Mehr Kontext:

In einem obigen Kommentar habe ich erwähnt, dass bei Verwendung von Xming unter Windows zum Aktivieren dieser Funktionalität eine DISPLAY-Variable (in vielen Fällen export DISPLAY=:0) festgelegt werden muss, bevor die Lösungen xsel und xclip funktionieren. Es ist ärgerlich, dass diese Lösung auf unzuverlässige, stochastische Weise funktioniert. Wenn Sie beim Einfügen von Linux auf Windows ctrl-v ein- bis zehnmal drücken, wird die Zwischenablage (einmalig) eingefügt (dies ist in meinem Windows 10 Surface Book 2 der Fall). Verschwenden Sie keine Zeit, verwenden Sie clip.exe.

HINWEIS: Vergessen Sie nicht den .exe. Andernfalls schlägt Ubuntu bash vor, dass Sie das Linux-Paket geomview installieren. Dies ist nicht das, was Sie wollen.

2
scottgwald