Wie kann ich die Ausgabe eines Befehls in meine Zwischenablage leiten und wieder einfügen, wenn ich ein Terminal verwende? Zum Beispiel:
cat file | clipboard
Wie kann ich die Ausgabe eines Befehls in meine Zwischenablage leiten und wieder einfügen, wenn ich ein Terminal verwende? Zum Beispiel:
cat file | clipboard
Das wollte ich schon immer mal machen und habe jetzt eine schöne und einfache Möglichkeit gefunden, das zu tun. Ich habe das komplette Verfahren aufgeschrieben, nur für den Fall, dass jemand anderes es braucht.
Installieren Sie zunächst ein 16 kB großes Programm namens xclip
:
sudo apt-get install xclip
Sie können die Ausgabe dann über die Pipeline in xclip
die in die Zwischenablage kopiert werden sollen:
cat file | xclip
Um den soeben kopierten Text einzufügen, verwenden Sie:
xclip -o
Um das Leben zu vereinfachen, können Sie einen Alias in Ihrer .bashrc-Datei einrichten, wie ich es getan habe:
alias "c=xclip"
alias "v=xclip -o"
Um zu sehen, wie nützlich das ist, stelle ich mir vor, ich möchte meinen aktuellen Pfad in einem neuen Terminalfenster öffnen (es gibt vielleicht andere Möglichkeiten, wie Ctrl + T auf einigen Systemen, aber dies dient nur zur Veranschaulichung):
Terminal 1:
pwd | c
Terminal 2:
cd `v`
Beachten Sie die ` `
um v
. Dies führt aus v
zuerst als Befehl und ersetzt ihn dann anstelle von cd
zu verwenden.
Kopieren Sie den Inhalt nur in den X
Zwischenablage
cat file | xclip
Wenn Sie an einer anderen Stelle als einer X
Anwendung, versuchen Sie diese:
cat file | xclip -selection clipboard
"cat file | xclip" kopiert den Inhalt nur in die X-Zwischenablage. Wenn Sie den Inhalt woanders als in einer X-Anwendung einfügen wollen, versuchen Sie dies: "cat file | xclip - Auswahl Zwischenablage"
Wenn Sie das Zeilenumbruchszeichen entfernen möchten, damit Sie das Ergebnis von "pwd | c" direkt einfügen und bearbeiten können, können Sie "pwd | tr -d ' \n ' | xclip -selection c"
Funktioniert jedoch nicht bei der Befehlsausgabe - z. B. pbcopy < git merge-base master some-branch
Wenn Sie tmux verwenden, wird es nicht funktionieren, es sei denn, Sie schließen Ihre Sitzung wieder an: superuser.com/a/413233/146254
Ich habe ein Tool für Linux/OSX/Cygwin entwickelt, das einigen dieser Tools ähnelt, aber etwas einzigartig ist. Ich nenne es cb
y Es kann in diesem github gist gefunden werden .
In diesem Gist zeige ich, wie man Kopieren und Einfügen per Kommandozeile unter Linux, macOS und Cygwin durchführt.
_copy(){
cat | xclip -selection clipboard
}
_paste(){
xclip -selection clipboard -o
}
_copy(){
cat | pbcopy
}
_paste(){
pbpaste
}
_copy(){
cat > /dev/clipboard
}
_paste(){
cat /dev/clipboard
}
Anmerkung: Ursprünglich wollte ich dies nur in meinem Kommentar zu Bob Enohp's Antwort . Aber dann wurde mir klar, dass ich eine README zu meinem Gist hinzufügen sollte. Da der Gist-Editor keine Markdown-Vorschau bietet, habe ich das Antwortfeld hier verwendet und nach dem Kopieren/Einfügen in meinen Gist gedacht: "Ich könnte die Antwort auch einreichen." Wenn Sie über Funktionalität/Fehler diskutieren möchten wäre es wahrscheinlich am besten, dies in der Kommentare für das Wesentliche auf Github.
Dieses Skript ist angelehnt an tee
(ver man tee
).
Es ist wie Ihre normalen Kopier- und Einfügebefehle, aber vereinheitlicht und in der Lage zu erkennen, wann Sie es verkettbar machen wollen
$ date | cb
# clipboard contains: Tue Jan 24 23:00:00 EST 2017
# clipboard retained from the previous block
$ cb
Tue Jan 24 23:00:00 EST 2017
$ cb | cat
Tue Jan 24 23:00:00 EST 2017
$ cb > foo
$ cat foo
Tue Jan 24 23:00:00 EST 2017
$ date | cb | tee updates.log
Tue Jan 24 23:11:11 EST 2017
$ cat updates.log
Tue Jan 24 23:11:11 EST 2017
# clipboard contains: Tue Jan 24 23:11:11 EST 2017
(chronologisch gesehen war es sinnvoll, dies am Ende zu zeigen)
# clipboard retained from the previous block
$ cb < foo
$ cb
Tue Jan 24 23:00:00 EST 2017
# note the minutes and seconds changed from 11 back to 00
Dies funktionierte perfekt für mich, um eine Befehlsausgabe in die Zwischenablage im Terminal auf macOS zu kopieren, danke!
Eine Lösung für alle Fälle! Vielen Dank, hat bei mir unter MacOS funktioniert - ich werde es auch unter Linux testen
Es bleibt beim Ausführen des Verkettungsbeispiels in Ubuntu 18.04 hängen. Die Tests zeigen das gleiche Verhalten, versuchte Ausführung cb --test
und es bleibt bei der Änderungsprüfung hängen.
Ich habe dieses kleine Skript geschrieben, mit dem man die Befehle zum Kopieren und Einfügen nicht mehr erraten muss.
Die Linux-Version des Skripts setzt voraus, dass xclip bereits auf Ihrem System installiert ist. Das Skript heißt Clipboard.
#!/bin/bash
# Linux version
# Use this script to pipe in/out of the clipboard
#
# Usage: someapp | clipboard # Pipe someapp's output into clipboard
# clipboard | someapp # Pipe clipboard's content into someapp
#
if command -v xclip 1>/dev/null; then
if [[ -p /dev/stdin ]] ; then
# stdin is a pipe
# stdin -> clipboard
xclip -i -selection clipboard
else
# stdin is not a pipe
# clipboard -> stdout
xclip -o -selection clipboard
fi
else
echo "Remember to install xclip"
fi
Die OS X-Version des Skripts stützt sich auf pbcopy und pbpaste, die auf allen Macs vorinstalliert sind.
#!/bin/bash
# OS X version
# Use this script to pipe in/out of the clipboard
#
# Usage: someapp | clipboard # Pipe someapp's output into clipboard
# clipboard | someapp # Pipe clipboard's content into someapp
#
if [[ -p /dev/stdin ]] ; then
# stdin is a pipe
# stdin -> clipboard
pbcopy
else
# stdin is not a pipe
# clipboard -> stdout
pbpaste
fi
Die Verwendung des Skripts ist sehr einfach, da Sie einfach eine Pipeline in oder aus der clipboard
wie in diesen beiden Beispielen gezeigt.
$ cat file | clipboard
$ clipboard | less
Ich verwende die Namen pbcopy
y pbpaste
auf Linux, so dass es sowohl für Linux als auch für OS X funktioniert.
Damit das Skript global in Ubuntu funktioniert: * Speichern Sie es unter ~/.scripts/clipboard
* Ausführbar machen chmod +x ~/.scripts/clipboard
für Bash: * add export PATH=$PATH:~/.scripts
bis zum Ende von ~/.bashrc
für Fisch: * hinzufügen set PATH ~/.scripts $PATH
à ~/.config/fish/fish.config
Wenn eine der Dateien oder ein Ordner noch nicht vorhanden ist, legen Sie sie einfach an.
Sie können dieses Skript auch als Funktion verpacken clipboard(){ ... }
und fügen Sie sie in .bashrc ein
Jedes dieser Systeme verwendet ein eigenes Tool, um die Zwischenablagefunktionalität in die Datenbank zu integrieren. Befehlszeilenschnittstelle (CLI). Das bedeutet, dass bei der Verwendung von Ubuntu CLI auf Windows Subsystem for Linux (WSL) die üblichen xclip
Lösung wird nicht funktionieren. Das Gleiche gilt für macOS.
Die folgende Tabelle gibt einen Überblick über die auf den verschiedenen Systemen benötigten Kopier-/Einfügewerkzeuge:
OS
Kopieren
Kleister
WSL
clip.exe
powershell.exe Get-Clipboard
CYGWIN
> /dev/clipboard
cat /dev/clipboard
macOS
pbcopy
pbpaste
Linux
xclip -sel clip
xclip -sel clip -o
.bashrc
LösungFügen Sie einfach den folgenden Code in Ihr ~/.bashrc
um die Verwendung von copy
y paste
auf allen Systemen. Die Lösung funktioniert sowohl auf "normalen" Linux-Systemen (z. B. Ubuntu, Debian) als auch auf WSL und macOS:
if grep -q -i microsoft /proc/version; then
# on WSL: version contains the string "microsoft"
alias copy="clip.exe"
alias paste="powershell.exe Get-Clipboard"
elif grep -q -i cygwin $(uname -a); then
# on CYGWIN: uname contains the string "cygwin"
alias copy="/dev/clipboard"
alias paste="cat /dev/clipboard"
elif [[ ! -r /proc/version ]]; then
# on MAC: version is not readable at all
alias copy="pbcopy"
alias paste="pbpaste"
else
# on "normal" linux
alias copy="xclip -sel clip"
alias paste="xclip -sel clip -o"
fi
Zum Kopieren:
# pipe
echo "hello world" | copy
# or for direct file input
copy < file
Zum Einfügen:
paste > file
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.
0 Stimmen
Mögliche Duplikate von Leitung zu/von Zwischenablage
0 Stimmen
Mögliche Duplikate von superuser.com/questions/104981/
0 Stimmen
Ich habe gerade eine ähnliche Frage gestellt, da ich xclip nicht zum Laufen bringen kann, wenn ich mich von Git Bash unter Windows in Ubuntu einlogge: stackoverflow.com/q/60117294/470749
2 Stimmen
Speichern Sie den Inhalt der Datei in der Zwischenablage.
apt install xclip
ycat file | xclip -sel clip