Ich habe gerade eine verwandte Frage gestellt, da ich xclip nicht zum Laufen bringen kann, wenn ich mich von Git Bash unter Windows bei Ubuntu anmelde
Ryan
1
Speichern Sie den Dateiinhalt in der Zwischenablage. apt install xclipundcat file | xclip -sel clip
EsmaeelE
Antworten:
597
Ich wollte das immer tun und fand einen schönen und einfachen Weg, es zu tun. Ich habe das gesamte Verfahren für den Fall aufgeschrieben, dass es jemand anderes benötigt.
Installieren Sie zuerst ein 16-kB-Programm mit dem Namen xclip:
sudo apt-get install xclip
Anschließend können Sie die Ausgabe xclipin die Zwischenablage kopieren, um sie zu kopieren:
cat file | xclip
Um den gerade kopierten Text einzufügen, müssen Sie Folgendes verwenden:
xclip -o
Um das Leben zu vereinfachen, können Sie wie ich einen Alias in Ihrer .bashrc-Datei einrichten:
alias "c=xclip"
alias "v=xclip -o"
Um zu sehen, wie nützlich dies ist, stellen Sie sich vor, ich möchte meinen aktuellen Pfad in einem neuen Terminalfenster öffnen ( auf einigen Systemen gibt es möglicherweise andere Möglichkeiten wie Ctrl+ T, dies dient jedoch nur zur Veranschaulichung):
Terminal1:
pwd | c
Terminal2:
cd `v`
Beachten Sie die ` ` Umgebung v. Dies wird zuerst vals Befehl ausgeführt und dann an Ort und Stelle für cddie Verwendung ersetzt.
Kopieren Sie nur den Inhalt in die XZwischenablage
cat file | xclip
Wenn Sie eine andere Stelle als eine XAnwendung einfügen möchten , versuchen Sie Folgendes:
"cat file | xclip" kopiert den Inhalt nur in die 'X'-Zwischenablage. Wenn Sie eine andere Stelle als eine' X'-Anwendung einfügen möchten, versuchen Sie Folgendes: "cat file | xclip -selection clipboard"
khotyn
5
Ihre Wahl des Griffs ist angemessen!
Matt Joiner
4
Wenn Sie das Zeilenumbruchzeichen 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"
Anake
12
Definieren alias "cs=xclip -selection clipboard"und alias "vs=xclip -o -selection clipboard"vereinfachen Sie auch das Kopieren / Einfügen aus der System-Zwischenablage
Yibo Yang
1
Was ist mit einer Lösung, bei der ich keinen Sudo-Zugriff habe und xclip nicht installiert ist?
DanGordon
179
Verwenden Sie unter OS X pbcopy; pbpastegeht in die entgegengesetzte Richtung.
Yups! Genau so zum Beispiel:pbcopy < .ssh/id_rsa.pub
DoubleJosh
funktioniert nicht für Befehlsausgabe tho - zBpbcopy < git merge-base master some-branch
Ben
wenn Sie tmux verwenden, wird es nicht funktionieren , wenn Sie wieder anbringen Ihre Sitzung: superuser.com/a/413233/146254
Atav32
1
Sie können auch cat verwenden, wenn Sie bereits damit arbeiten: cat file.txt | pbcopy
rtrigoso
3
Ich weiß, dass der Kommentar 5 Jahre alt ist, aber falls jemand in Zukunft darauf git merge-base master some-branch | pbcopy
Sam
62
Ich habe ein Tool für Linux / OSX / Cygwin erstellt, das einigen dieser anderen ähnelt, aber etwas einzigartig ist. Ich nenne es cbund es kann in diesem Github-Kern gefunden werden .
In diesem Kern zeige ich, wie man mit Linux, macOS und Cygwin über die Kommandozeile kopiert und einfügt.
Hinweis: Ich wollte dies ursprünglich nur in meinem Kommentar zu Bob Enohps Antwort erwähnen . Aber dann wurde mir klar, dass ich meinem Kern eine README-Datei hinzufügen sollte. Da der Haupteditor keine Markdown-Vorschau anbietet, habe ich hier das Antwortfeld verwendet und nach dem Kopieren / Einfügen in meinen Hauptgedanken "Ich kann die Antwort genauso gut einreichen".
Dies funktionierte perfekt für mich, um eine Befehlsausgabe in die Zwischenablage im Terminal unter macOS zu kopieren, danke!
Joshua Dyck
46
Ich habe dieses kleine Skript geschrieben, das das Erraten der Befehle zum Kopieren / Einfügen erleichtert.
Die Linux-Version des Skripts setzt voraus, dass xclip bereits auf Ihrem System installiert ist. Das Skript heißt Zwischenablage.
#!/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;thenif[[-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
fielse
echo "Remember to install xclip"fi
Die OS X-Version des Skripts basiert 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 ein- oder auspipen, clipboardwie in diesen beiden Beispielen gezeigt.
Ich benutze die Namen pbcopyund pbpasteunter Linux, damit es sowohl unter Linux als auch unter OS X
funktioniert.
So arbeiten Sie das Skript global in Ubuntu: * Speichern Sie es unter ~/.scripts/clipboard * Machen Sie es chmod +x ~/.scripts/clipboard für Bash ausführbar : * Fügen Sie es am export PATH=$PATH:~/.scriptsEnde von ~/.bashrc for fish hinzu: * Hinzufügen set PATH ~/.scripts $PATHzu ~/.config/fish/fish.config Wenn eine der Dateien oder Ordner noch nicht vorhanden ist, erstellen Sie sie einfach.
Hockey
2
Sie können dieses Skript auch als Funktion clipboard(){ ... }umschließen und in .bashrc
Sebastian Nowak am
Dies ist sehr ähnlich zu dem, den ich gemacht habe, aber ich erlaube Verkettung wie date | cb | tee -a updates.log. Das würde die dateBefehlsausgabe an die Zwischenablage senden und an den tee -aBefehl weiterleiten, der sie an eine Datei anfügt und an weiterleitet stdout. Aber es ist wie ein " auslaufsicheres T - Stück in die Zwischenablage", denn wenn Sie es nur tun, erhalten date | cbSie keine Ausgabe. Und schließlich tut es auch cb > file.txtgist.github.com/RichardBronosky/…
Bruno Bronosky
Ein Vorschlag: Entfernen Sie das nachfolgende Zeilenumbruchzeichen, um zu vermeiden, dass der Befehl beim Einfügen ausgeführt wird (z. B. beim Kopieren und Einfügen eines Pfads). Ich mache das, indem ich den Befehl xclip -i -selection clipboardaufxargs echo -n | xclip -i -selection clipboard
Ivaylo Strandjev
23
Fügen Sie dies zu Ihrem hinzu ~/.bashrc:
# Now `cclip' copies and `clipp' pastes'
alias cclip='xclip -selection clipboard'
alias clipp='xclip -selection clipboard -o'
Jetzt Clip- P- Pasten und C- Clip-Kopien - aber Sie können auch schickere Sachen machen:
clipp | sed 's/^/ /'| cclip
↑ rückt Ihre Zwischenablage ein; Gut für Websites ohne Stapelüberlauf- { }Schaltfläche
Sie können es hinzufügen, indem Sie Folgendes ausführen:
printf "\nalias clipp=\'xclip -selection c -o\'\n">>~/.bashrc
printf "\nalias cclip=\'xclip -selection c -i\'\n">>~/.bashrc
Ich verwende Parcellite und xselkopiere die letzte Festschreibungsnachricht von gitin meinen Zwischenablage-Manager ( xclipfunktioniert aus irgendeinem Grund nicht):
@AfshinMoazami, der Titel und die Frage selbst sind generisch. Nur die Tags weisen auf ein Unix-System hin, und meine Antwort deckt den Fall ab, wenn Sie versuchen, das Datum von einem Unix-Server auf einen Windows-Computer zu übertragen, was für zukünftige Leser nützlich sein kann.
d.raev
1
Upvoted, weil ja, nützlich für Windows-Administratoren, die nur Powershell zum lokalen Spielen haben (obwohl LSW jetzt tatsächlich funktioniert, kann ich direkt von Powershell aus in Bash einsteigen und von dort aus meine * nixy-Dinge erledigen).
Flith
Es arbeitet an der DOS-Eingabeaufforderung sowie an Git Bash unter Windows 10, dhecho Hello World | clip
5
Für Mac ist dies ein Beispiel für das Kopieren (in die Zwischenablage) des Einfügens (aus der Zwischenablage) über die Befehlszeile
Kopieren Sie das Ergebnis des pwdBefehls in die Zwischenablage als
$ pwd | pbcopy
Verwenden Sie den Inhalt in der Zwischenablage als
Ich habe ein kleines Tool erstellt, das ähnliche Funktionen bietet, ohne xclip oder xsel zu verwenden. stdoutwird in eine Zwischenablage kopiert und kann wieder in das Terminal eingefügt werden. Sehen:
Beachten Sie, dass dieses Tool keine X-Sitzung benötigt. Die Zwischenablage kann nur innerhalb des Terminals verwendet werden und muss nicht durch Ctrl+VKlicken oder Klicken mit der mittleren Maustaste in andere X-Fenster eingefügt werden .
Ich komme aus einem Hintergrund nach unten KDE gestrippt und haben keinen Zugang zu xclip, xseloder die andere fancy stuff. Ich habe eine TCSH-Konsole, um die Sache noch schlimmer zu machen.
Hinweis: Dies muss bash sein, da TCSH keine mehrzeiligen Argumente unterstützt.
Gefolgt von einem TCSH-Alias in der .cshrc.
alias clipboard xargs -0/path/to/foo
Erläuterung:
xargs -0leitet stdin in ein einziges Argument. Dieses Argument wird an die ausführbare Bash-Datei übergeben, die eine Anforderung zum Kopieren in die Zwischenablage zur klipperVerwendung sendet qdbus. Die Pipe an /dev/nullbesteht darin, das von qdbusder Konsole zurückgegebene Zeilenumbruchzeichen nicht zu drucken .
Anwendungsbeispiel:
ls | clipboard
Dadurch wird der Inhalt des aktuellen Ordners in die Zwischenablage kopiert.
Hinweis: Funktioniert nur als Rohr. Verwenden Sie die ausführbare Bash-Datei direkt, wenn Sie ein Argument kopieren müssen.
Wenn Sie bash verwenden, das auf Ihrem Windows-System installiert ist (bekannt als Windows Subsystem for Linux (WSL)), wird beim Versuch von xclip ein Fehler ausgegeben:
Error:Can't open display: (null)
Denken Sie stattdessen daran, dass das Linux-Subsystem Zugriff auf ausführbare Windows-Dateien hat. Es ist möglich, clip.exe wie zu verwenden
echo hello | clip.exe
Hiermit können Sie den Befehl Einfügen (Strg-V) verwenden.
Beachten Sie, dass Sie xclip scheinbar problemlos verwenden können, wenn ein xserver (z. B. vcxsvr oder xming) unter Windows installiert ist, eine Anzeige aktiv ist und xclipboard ausgeführt wird.
Bitbyte
0
Nur um einen Randfall abzudecken :) und weil der Fragentitel (zumindest jetzt) fragt, wie die Ausgabe eines Befehls direkt in die Zwischenablage kopiert werden soll.
Oft finde ich es nützlich, die Ausgabe des Befehls zu kopieren, nachdem er bereits ausgeführt wurde, und ich möchte oder kann den Befehl nicht erneut ausführen.
In diesem Szenario können wir entweder gdm oder ein ähnliches Mausdienstprogramm verwenden und mit der Maus auswählen. apt-get install gdmund dann entweder den rechten Klick oder die Kombinationen Strg + Umschalt + c und Strg + Umschalt + v zum Kopieren und Einfügen in das Terminal
Oder, was für mich die bevorzugte Methode ist (da die Maus nicht richtig in einem Bereich auswählen kann, wenn Sie mehrere Fenster nebeneinander haben und mehr als eine Zeile auswählen müssen), können wir mit tmux mithilfe des Standards in den tmux-Puffer kopieren [, Leerzeichen, verschieben, um auszuwählen, eingeben oder Sie können einen Codeblock auswählen. Dies ist auch besonders nützlich, wenn Sie sich in einer der Spuren des CLI-Multiplexers wie tmux befinden UND eine Reihe von Texten auswählen müssen, jedoch nicht die Zeilennummern (mein vim-Setup rendert Zeilennummern).
Danach können Sie den folgenden Befehl verwenden:
tmux save-buffer - | xclip -i
Sie können es natürlich mit einem Alias versehen oder direkt in die tmux-Konfigurationsdatei einbinden
Dies dient nur dazu, Ihnen eine konzeptionelle Antwort zu geben, um diesen Randfall abzudecken, wenn es nicht möglich ist, den Befehl erneut auszuführen. Wenn Sie spezifischere Codebeispiele benötigen, lassen Sie es mich wissen
apt install xclip
undcat file | xclip -sel clip
Antworten:
Ich wollte das immer tun und fand einen schönen und einfachen Weg, es zu tun. Ich habe das gesamte Verfahren für den Fall aufgeschrieben, dass es jemand anderes benötigt.
Installieren Sie zuerst ein 16-kB-Programm mit dem Namen
xclip
:Anschließend können Sie die Ausgabe
xclip
in die Zwischenablage kopieren, um sie zu kopieren:Um den gerade kopierten Text einzufügen, müssen Sie Folgendes verwenden:
Um das Leben zu vereinfachen, können Sie wie ich einen Alias in Ihrer .bashrc-Datei einrichten:
Um zu sehen, wie nützlich dies ist, stellen Sie sich vor, ich möchte meinen aktuellen Pfad in einem neuen Terminalfenster öffnen ( auf einigen Systemen gibt es möglicherweise andere Möglichkeiten wie Ctrl+ T, dies dient jedoch nur zur Veranschaulichung):
Beachten Sie die
` `
Umgebungv
. Dies wird zuerstv
als Befehl ausgeführt und dann an Ort und Stelle fürcd
die Verwendung ersetzt.Kopieren Sie nur den Inhalt in die
X
ZwischenablageWenn Sie eine andere Stelle als eine
X
Anwendung einfügen möchten , versuchen Sie Folgendes:quelle
alias "cs=xclip -selection clipboard"
undalias "vs=xclip -o -selection clipboard"
vereinfachen Sie auch das Kopieren / Einfügen aus der System-ZwischenablageVerwenden Sie unter OS X
pbcopy
;pbpaste
geht in die entgegengesetzte Richtung.quelle
pbcopy < .ssh/id_rsa.pub
pbcopy < git merge-base master some-branch
git merge-base master some-branch | pbcopy
Ich habe ein Tool für Linux / OSX / Cygwin erstellt, das einigen dieser anderen ähnelt, aber etwas einzigartig ist. Ich nenne es
cb
und es kann in diesem Github-Kern gefunden werden .In diesem Kern zeige ich, wie man mit Linux, macOS und Cygwin über die Kommandozeile kopiert und einfügt.
Linux
Mac OS
Cygwin
Hinweis: Ich wollte dies ursprünglich nur in meinem Kommentar zu Bob Enohps Antwort erwähnen . Aber dann wurde mir klar, dass ich meinem Kern eine README-Datei hinzufügen sollte. Da der Haupteditor keine Markdown-Vorschau anbietet, habe ich hier das Antwortfeld verwendet und nach dem Kopieren / Einfügen in meinen Hauptgedanken "Ich kann die Antwort genauso gut einreichen".
cb
Ein auslaufsicheres T-Shirt in der Zwischenablage
Dieses Skript ist nachempfunden
tee
(sieheman tee
).Es ist wie bei normalen Kopier- und Einfügebefehlen, jedoch einheitlich und in der Lage zu erkennen, wann es verkettbar sein soll
Beispiele
Kopieren
Einfügen
Verkettung
Kopieren per Dateiumleitung
(chronologisch war es sinnvoll, dies am Ende zu demonstrieren)
quelle
Ich habe dieses kleine Skript geschrieben, das das Erraten der Befehle zum Kopieren / Einfügen erleichtert.
Die Linux-Version des Skripts setzt voraus, dass xclip bereits auf Ihrem System installiert ist. Das Skript heißt Zwischenablage.
Die OS X-Version des Skripts basiert auf pbcopy und pbpaste, die auf allen Macs vorinstalliert sind.
Die Verwendung des Skripts ist sehr einfach, da Sie einfach ein- oder auspipen,
clipboard
wie in diesen beiden Beispielen gezeigt.quelle
pbcopy
undpbpaste
unter Linux, damit es sowohl unter Linux als auch unter OS X~/.scripts/clipboard
* Machen Sie eschmod +x ~/.scripts/clipboard
für Bash ausführbar : * Fügen Sie es amexport PATH=$PATH:~/.scripts
Ende von~/.bashrc
for fish hinzu: * Hinzufügenset PATH ~/.scripts $PATH
zu~/.config/fish/fish.config
Wenn eine der Dateien oder Ordner noch nicht vorhanden ist, erstellen Sie sie einfach.clipboard(){ ... }
umschließen und in .bashrcdate | cb | tee -a updates.log
. Das würde diedate
Befehlsausgabe an die Zwischenablage senden und an dentee -a
Befehl weiterleiten, der sie an eine Datei anfügt und an weiterleitetstdout
. Aber es ist wie ein " auslaufsicheres T - Stück in die Zwischenablage", denn wenn Sie es nur tun, erhaltendate | cb
Sie keine Ausgabe. Und schließlich tut es auchcb > file.txt
gist.github.com/RichardBronosky/…xclip -i -selection clipboard
aufxargs echo -n | xclip -i -selection clipboard
Fügen Sie dies zu Ihrem hinzu
~/.bashrc
:Sie können es hinzufügen, indem Sie Folgendes ausführen:
quelle
Ich verwende Parcellite und
xsel
kopiere die letzte Festschreibungsnachricht vongit
in meinen Zwischenablage-Manager (xclip
funktioniert aus irgendeinem Grund nicht):quelle
Wenn Sie ohne Verwendung externer Tools eine Verbindung zur Serveransicht SSH herstellen, ist dies ein relativ einfacher Befehl:
An einer Windows 7+ Eingabeaufforderung:
Dadurch wird der Inhalt der Remote-Datei in Ihre lokale Zwischenablage verschoben.
(Für den Befehl muss Pageant für den Schlüssel ausgeführt werden, oder Sie werden nach einem Kennwort gefragt.)
quelle
echo Hello World | clip
Für Mac ist dies ein Beispiel für das Kopieren (in die Zwischenablage) des Einfügens (aus der Zwischenablage) über die Befehlszeile
Kopieren Sie das Ergebnis des
pwd
Befehls in die Zwischenablage alsVerwenden Sie den Inhalt in der Zwischenablage als
quelle
Ich habe ein kleines Tool erstellt, das ähnliche Funktionen bietet, ohne xclip oder xsel zu verwenden.
stdout
wird in eine Zwischenablage kopiert und kann wieder in das Terminal eingefügt werden. Sehen:https://sourceforge.net/projects/commandlinecopypaste/
Beachten Sie, dass dieses Tool keine X-Sitzung benötigt. Die Zwischenablage kann nur innerhalb des Terminals verwendet werden und muss nicht durch Ctrl+VKlicken oder Klicken mit der mittleren Maustaste in andere X-Fenster eingefügt werden .
quelle
Unter Linux mit installiertem xclip:
quelle
Basierend auf früheren Beiträgen habe ich die folgende Alias-Lösung mit geringem Gewicht erhalten, die hinzugefügt werden kann
.bashrc
:Beispiele:
quelle
Ich komme aus einem Hintergrund nach unten KDE gestrippt und haben keinen Zugang zu
xclip
,xsel
oder die andere fancy stuff. Ich habe eine TCSH-Konsole, um die Sache noch schlimmer zu machen.Voraussetzungen:
qdbus
klipper
xargs
bash
Erstellen Sie eine ausführbare Bash-Datei
foo.sh
.Hinweis: Dies muss bash sein, da TCSH keine mehrzeiligen Argumente unterstützt.
Gefolgt von einem TCSH-Alias in der
.cshrc
.Erläuterung:
xargs -0
leitet stdin in ein einziges Argument. Dieses Argument wird an die ausführbare Bash-Datei übergeben, die eine Anforderung zum Kopieren in die Zwischenablage zurklipper
Verwendung sendetqdbus
. Die Pipe an/dev/null
besteht darin, das vonqdbus
der Konsole zurückgegebene Zeilenumbruchzeichen nicht zu drucken .Anwendungsbeispiel:
Dadurch wird der Inhalt des aktuellen Ordners in die Zwischenablage kopiert.
Hinweis: Funktioniert nur als Rohr. Verwenden Sie die ausführbare Bash-Datei direkt, wenn Sie ein Argument kopieren müssen.
quelle
Normalerweise führe ich diesen Befehl aus, wenn ich Folgendes kopieren muss
ssh-key
:ctrl+v
irgendwo anders.quelle
Auf Wayland scheint xcopy nicht zu funktionieren. Verwenden Sie stattdessen die wl-Zwischenablage . zB auf Fedora
quelle
Wenn Sie bash verwenden, das auf Ihrem Windows-System installiert ist (bekannt als Windows Subsystem for Linux (WSL)), wird beim Versuch von xclip ein Fehler ausgegeben:
Denken Sie stattdessen daran, dass das Linux-Subsystem Zugriff auf ausführbare Windows-Dateien hat. Es ist möglich, clip.exe wie zu verwenden
Hiermit können Sie den Befehl Einfügen (Strg-V) verwenden.
quelle
Nur um einen Randfall abzudecken :) und weil der Fragentitel (zumindest jetzt) fragt, wie die Ausgabe eines Befehls direkt in die Zwischenablage kopiert werden soll.
Oft finde ich es nützlich, die Ausgabe des Befehls zu kopieren, nachdem er bereits ausgeführt wurde, und ich möchte oder kann den Befehl nicht erneut ausführen.
In diesem Szenario können wir entweder gdm oder ein ähnliches Mausdienstprogramm verwenden und mit der Maus auswählen.
apt-get install gdm
und dann entweder den rechten Klick oder die Kombinationen Strg + Umschalt + c und Strg + Umschalt + v zum Kopieren und Einfügen in das TerminalOder, was für mich die bevorzugte Methode ist (da die Maus nicht richtig in einem Bereich auswählen kann, wenn Sie mehrere Fenster nebeneinander haben und mehr als eine Zeile auswählen müssen), können wir mit tmux mithilfe des Standards in den tmux-Puffer kopieren [, Leerzeichen, verschieben, um auszuwählen, eingeben oder Sie können einen Codeblock auswählen. Dies ist auch besonders nützlich, wenn Sie sich in einer der Spuren des CLI-Multiplexers wie tmux befinden UND eine Reihe von Texten auswählen müssen, jedoch nicht die Zeilennummern (mein vim-Setup rendert Zeilennummern).
Danach können Sie den folgenden Befehl verwenden:
tmux save-buffer - | xclip -i
Sie können es natürlich mit einem Alias versehen oder direkt in die tmux-Konfigurationsdatei einbinden
Dies dient nur dazu, Ihnen eine konzeptionelle Antwort zu geben, um diesen Randfall abzudecken, wenn es nicht möglich ist, den Befehl erneut auszuführen. Wenn Sie spezifischere Codebeispiele benötigen, lassen Sie es mich wissen
Prost
quelle