GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich die Ausgabe eines Befehls direkt in meine Zwischenablage kopieren?

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 Gist gefunden werden.

In diesem Kernstück demonstriere ich das Kopieren und Einfügen über die Befehlszeile unter Linux, macOS und Cygwin.

Linux

_copy(){
    cat | xclip -selection clipboard
}

_paste(){
    xclip -selection clipboard -o
}

macOS

_copy(){
    cat | pbcopy
}

_paste(){
    pbpaste
}

Cygwin

_copy(){
    cat > /dev/clipboard
}

_paste(){
    cat /dev/clipboard
}

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 hinzufügen sollte. Da der Kerneditor keine Markdown-Vorschau anbietet, habe ich hier das Antwortfeld verwendet und nach dem Kopieren/Einfügen in meinen Kern gedacht:"Ich könnte die Antwort genauso gut einreichen." Wenn Sie Funktionalität/Fehler besprechen möchten Es wäre wahrscheinlich am besten, dies in den Kommentaren für das Wesentliche auf GitHub zu tun.

cb

Ein auslaufsicheres T-Stück für die Zwischenablage

Dieses Skript ist tee nachempfunden (siehe man tee ).

Es ist wie Ihre normalen Befehle zum Kopieren und Einfügen, aber vereinheitlicht und in der Lage zu erkennen, wann es verkettet werden soll

Beispiele

Kopieren

$ date | cb
# clipboard contains: Tue Jan 24 23:00:00 EST 2017

Einfügen

# 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

Verkettung

$ 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

Kopieren per Dateiumleitung

(chronologisch war es sinnvoll, dies am Ende zu demonstrieren)

# 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

Das wollte ich schon immer mal machen und habe einen schönen und einfachen Weg dafür gefunden. Ich habe das komplette Verfahren aufgeschrieben, falls jemand anderes es braucht.

Installieren Sie zuerst ein 16 KB großes Programm namens xclip :

sudo apt-get install xclip

Sie können die Ausgabe dann an xclip weiterleiten in die Zwischenablage kopieren:

cat file | xclip

Um den gerade 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, stellen Sie sich vor, ich möchte meinen aktuellen Pfad in einem neuen Terminalfenster öffnen (möglicherweise gibt es andere Möglichkeiten, dies zu tun, wie Strg +T auf einigen Systemen, aber dies dient nur der Veranschaulichung):

Terminal 1:
pwd | c

Terminal 2:
cd `v`

Beachten Sie den ` ` etwa v . Dies führt v aus als Befehl und ersetzt ihn dann an Ort und Stelle für cd zu verwenden.

Kopieren Sie den Inhalt nur auf den X Zwischenablage

cat file | xclip

Wenn Sie an einer anderen Stelle als X einfügen möchten Anwendung, versuchen Sie diese hier:

cat file | xclip -selection clipboard

Verwenden Sie unter OS X pbcopy; pbpaste geht in die entgegengesetzte Richtung.

pbcopy < .ssh/id_rsa.pub

Linux
  1. Wie speichere ich die Ausgabe von SHOW PROCESSLIST in einer Datei in MySQL?

  2. Wie weist man die Ausgabe eines Befehls einer Shell-Variablen zu?

  3. Linux – Wie bootet man Puppy Linux Slacko in die Kommandozeile?

  4. Wie verwende ich den Rsync-Befehl unter Linux?

  5. Wie hängt man die Ausgabe an eine Datei an?

So ändern Sie die Ausgabefarbe von „Echo“ in Linux

Wie kann ich die Ausgabe eines Shell-Befehls durchlaufen?

Wie speichere ich die Befehlsausgabe in Ansible in einem Array?

Wie kann ich die Ausgabe eines Remote-Befehls in die lokale Zwischenablage kopieren?

Wie kann ich alle PDF-Dateien in einem Verzeichnis (und seinen Unterverzeichnissen) rekursiv in ein einziges Ausgabeverzeichnis kopieren?

Wie kann ich einen Ordner über die Linux-Befehlszeile kopieren?