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

57voto

Andrew_1510 Punkte 10728

xsel unter Debian/Ubuntu/Mint

# append to clipboard:
cat 'the file with content' | xsel -ab

# or type in the happy face :) and ...
echo 'the happy face :) and content' | xsel -ib

# show clipboard
xsel -ob

# Get more info:
man xsel

Installieren Sie

sudo apt-get install xsel

42voto

Zoredache Punkte 34350

Versuchen Sie

xclip

xclip - command line interface to X selections (clipboard) 

man

40voto

Auf der Windows-Subsystem für Linux (WSL) können Sie in die Zwischenablage kopieren mit clip.exe :

cat file | clip.exe

Denken Sie daran, die | Pipe-Befehl. Und nicht ein > Befehl, da dies nicht funktionieren wird.

22voto

thebunnyrules Punkte 1340

Installieren Sie das Dienstprogramm xcopy und geben Sie es im Terminal ein:

Kopieren

Thing_you_want_to_copy | xclip -selection c

Kleister

myvariable=$(xclip -selection clipboard -o)

Mir ist aufgefallen, dass viele Antworten Folgendes empfehlen pbpaste y pbcopy . Wenn Sie diese Dienstprogramme mögen, sie aber aus irgendeinem Grund in Ihrem Repository nicht verfügbar sind, können Sie immer einen Alias für die xcopy-Befehle erstellen und sie pbpaste und pbcopy nennen.

alias pbcopy="xclip -selection c"
alias pbpaste="xclip -selection clipboard -o"

Dann würde es also so aussehen:

Thing_you_want_to_copy | pbcopy
myvariable=$(pbpaste)

Eine Antwort in einem der Kommentare, die von einem Benutzer namens doug geschrieben wurde, hat mir geholfen. Da ich sie so hilfreich fand, habe ich beschlossen, sie in einer Antwort wiederzugeben.

17voto

Wolfgang Fahl Punkte 13424

Hier ist ein gebrauchsfertiges Bash-Skript zum Lesen der Zwischenablage, das auf mehreren Plattformen funktioniert.

Bitte bearbeiten Sie das Skript hier, wenn Sie Funktionen hinzufügen (z. B. weitere Plattformen).

#!/bin/bash
# WF 2013-10-04
#
# Multi-platform clipboard read access
#
# Supports
#   Mac OS X
#   Git shell / Cygwin (Windows)
#   Linux (e.g., Ubuntu)

#
# Display an error
#
error() {
  echo "error: $1" 1>&2
  exit 1
}

#
# getClipboard
#
function getClipboard() {
 os=`uname`
      case $os in
        # Git Bash  (Windows)
        MINGW32_NT-6.1)
          cat /dev/clipboard;;
        # Mac OS X
        Darwin*)
          pbpaste;;
        # Linux
        Linux*)
          # Works only for the X clipboard - a check that X is running might be due
          xclip -o;;
        *)
          error "unsupported os $os";;
      esac
}

tmp=/tmp/clipboard$$
getClipboard >$tmp
cat $tmp
# Comment out for debugging
rm $tmp

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