Wie leite ich die Standardausgabe des Terminals (stdout) in die Zwischenablage?

106

Zum Beispiel,

Angenommen, ich möchte den Inhalt eines Ordners auflisten und ihn direkt in ein Chatfenster einfügen, damit ein Freund ihn sehen kann.

Mir ist klar, dass ich tun könnte ls > filename.txt, um eine Datei (filename.txt) mit diesen Inhalten zu erstellen. Ich müsste dann die Datei öffnen oder drucken und den Textblock manuell auswählen und kopieren ( was ärgerlich / mühsam sein kann .) Ich könnte natürlich auch die Ausgabe von lsdirekt aus dem Terminalfenster auswählen und kopieren .

Es wäre viel schneller / einfacher, die Standardausgabe einfach in die Zwischenablage zu leiten .

Welcher Terminalbefehl ermöglicht es mir, dies zu tun?

Insperatus
quelle

Antworten:

122

Dies kann mit den Befehlszeilenprogrammen xsel oder xclip erfolgen . Da keines der beiden Programme standardmäßig mit Ubuntu geliefert wird, müssen Sie diese zuerst über die Ubuntu-Software oder das Terminal installieren. Hier ist, wie im Terminal (aber denken Sie daran, Sie brauchen nur eine dieser beiden.)

sudo apt install xsel
sudo apt install xclip

Nun einige Beispiele. Wenn Sie die Ausgabe von lsin die Zwischenablage kopieren möchten, gehen Sie wie folgt vor:

Mit xsel:

ls | xsel -ib

Mit xclip:

ls | xclip -sel clip

Dies kann natürlich auch für andere Terminalbefehle verwendet werden . Angenommen, Sie möchten Ihre Netzwerkinformationen in ein Hilfeforum einfügen.

Mit xsel:

sudo lshw -C network | xsel -ib

Mit xclip:

sudo lshw -C network | xclip -sel clip

Machen Sie dies mit einem neuen Bash-Alias ​​noch einfacher!

Bearbeiten Sie Ihre ~/.bash_aliasesDatei (falls noch nicht vorhanden, erstellen Sie sie zuerst mit touch ~/.bash_aliases)

Dann fügen Sie ein (je nachdem , welches Programm Sie sich entschieden , mit zu gehen) die folgenden Möglichkeiten :

alias copy='xclip -sel clip'

oder

alias copy='xsel -ib'

Dann speichern und schließen.

Jetzt (nach dem Neustart Ihres Terminals) können Sie die Standardausgabe an die Zwischenablage senden, indem Sie sie zum Kopieren weiterleiten (oder wie auch immer Sie sich entscheiden, Ihren neuen Alias ​​zu benennen).

Zum Beispiel:

ls | copy
Insperatus
quelle
1
Mit neueren Ubuntu-Versionen sollten Sie verwenden apt. Also sudo apt install xseloder sudo apt install xclip.
wisbucky
1
Vielen Dank für die Antwort, aber wissen Sie etwas nur für Linux-Terminal?
Mohamad
1
@jpaugh. Vergleichen Sie die Ubuntu - Paketverwaltung Dokumentation für 16,04 vs 14,04 . In 16.04 erwähnt es nur aptund nicht apt-get. Sie können immer noch verwenden apt-get, aber sie versuchen, die Menschen zu ermutigen, zu verwenden apt.
wisbucky
2
Sie müssen das Terminal nicht neu starten. Sie können nursource ~/.bash_aliases
Rob K
1
@Mohamad Diese sind für die Ausführung innerhalb eines X-Servers vorgesehen (da sie die Funktionen der Zwischenablage bereitstellen). Wenn Sie das nicht haben, müssen Sie es in Ihrem Terminal-Emulator tun. Wie das geht, hängt von der tatsächlich verwendeten Software ab, da es dafür keinen De-facto-Standard gibt.
Thorbjørn Ravn Andersen
2

Wenn Sie versuchen, mit Ubuntu im Windows-Subsystem für Linux (WSL) in die Zwischenablage zu kopieren, funktioniert xsel oder xclip nur, wenn Sie X Windows als Zwischenablage nur für Grafikzwecke verwenden. Sie können jedoch die Standardausgabe von Terminals an die Zwischenablage in WSL Ubuntu leiten clip.exe. Sie können dann mit Standard-Einfügebefehlen in das WSL Ubuntu-Terminal einfügen. Der kopierte Text ist auch in Windows verfügbar. Zum Beispiel,

pwd | clip.exe 

kopiert das aktuelle Arbeitsverzeichnis in die (Windows) Zwischenablage.

Dieses Suchergebnis wird oben angezeigt, wenn nach Möglichkeiten zum Kopieren / Einfügen von Text in WSL gesucht wird. Ich denke, es lohnt sich, dies zu erwähnen, damit Leser xsel oder xclip nicht unnötig in Ubuntu installieren und stattdessen verwenden clip.exe.

Schnappschuss
quelle