So kopieren Sie den Inhalt einer Datei in UNIX, ohne den Dateiinhalt anzuzeigen. Ich möchte nicht cat oder vi, um den Inhalt zu sehen.
Ich möchte sie in die Zwischenablage kopieren, damit ich sie wieder in meinen Windows-Notizblock einfügen kann.
Ich kann die Datei aufgrund von Zugriffsbeschränkungen nicht von diesem Server auf einen anderen kopieren.
Akzeptierte Antwort:
X11
Bei Verwendung von X11 (der gebräuchlichsten GUI auf traditionellen Unix- oder Linux-basierten Systemen), um den Inhalt einer Datei in die X11-CLIPBOARD-Auswahl zu kopieren, ohne anzeigen dafür können Sie den xclip
verwenden oder xsel
Dienstprogramm.
xclip -sel c < file
Oder:
xsel -b < file
um den Inhalt von file
zu speichern als CLIPBOARD X11-Auswahl.
So speichern Sie die Ausgabe eines Befehls:
mycommand | xclip -sel c
mycommand | xsel -b
Beachten Sie, dass es mit einer UTF-8-Codierung gespeichert werden sollte, da das Einfügen sonst nicht richtig funktioniert. Wenn die file
mit einem anderen Zeichensatz codiert ist, sollten Sie zuerst in UTF-8 konvertieren, wie:
<file iconv -f latin1 -t utf8 | xclip -sel c
für eine in latin1 kodierte Datei /iso8859-1 .
xsel
funktioniert nicht mit binären Daten (es akzeptiert keine Nullbytes), aber xclip
tut.
Um es als CUT_BUFFER zu speichern (diese werden immer noch von einigen Anwendungen wie xterm
abgefragt wenn nichts die CLIPBOARD- oder PRIMARY X-Auswahl beansprucht und kein Prozess laufen muss, um sie wie für Auswahlen bereitzustellen), obwohl Sie das heutzutage wahrscheinlich nicht mehr verwenden wollen oder müssen:
xprop -root -format CUT_BUFFER0 8s -set CUT_BUFFER0 "$(cat file)"
(entfernt die abschließenden Newline-Zeichen aus file
).
GNU-Bildschirm
GNU screen
hat den readbuf
Befehl, den Inhalt einer Datei in ihren eigenen Kopier-Einfüge-Puffer zu schlürfen (den Sie mit ^A]
einfügen ). Also:
screen -X readbuf file
Apple OS/X
Obwohl Apple OS/X das kann Verwenden Sie X11. Dies ist standardmäßig nicht der Fall, es sei denn, Sie führen eine X11-Anwendung aus. Sie könnten xclip
verwenden oder xsel
da OS/X die X11 CLIPBOARD-Auswahl mit OS/X-Pasteboard-Puffer synchronisieren sollte, aber es wäre ein bisschen verschwendet, den X11-Server nur dafür zu starten.
Unter OS/X können Sie den pbcopy
verwenden Befehl zum Speichern beliebiger Inhalte in Pasteboard Puffer:
pbcopy < file
(Es wird erwartet, dass die Zeichencodierung der Datei der des Gebietsschemas entspricht). So speichern Sie die Ausgabe eines Befehls:
mycommand | pbcopy
Schalen
Die meisten Shells haben ihre eigenen Puffer zum Kopieren und Einfügen. Im Emacs-Modus speichern Ausschneide- und Kopieroperationen den kopierten/ausgeschnittenen Text auf einem Stapel, den Sie mit Strg-Y ziehen/einfügen , und durchlaufen Sie sie mit Alt+Y
Verwandte:Nehmen Sie die erste Spalte aus 2 Dateien und schreiben Sie sie in eine 3. Datei?zsh CUTBUFFER/killring
In zsh
, wird der Stack im $killring
gespeichert -Array und die Spitze des Stacks im $CUTBUFFER
Variable, obwohl diese Variablen nur von Zsh Line Editor (zle)-Widgets verfügbar sind und einige spezialisierte Widgets die bevorzugte Art sind, diese zu manipulieren.
Da diese nur über das ZLE verfügbar sind, ist es etwas kompliziert, dies mit Befehlen zu tun:
zmodload zsh/mapfile
zle-line-init() {
if [ -n "$FILE_TO_COPY" ]; then
zle copy-region-as-kill $mapfile[$FILE_TO_COPY]
unset FILE_TO_COPY
fi
}
mycommand | pbcopy
mycommand | pbcopy
zle -N zle-line-init
file-copy() FILE_TO_COPY=$1:A
Die zle-line-init
Spezial-Widget wird einmal zu Beginn jeder neuen Eingabeaufforderung ausgeführt. Das bedeutet, dass die Datei erst bei der nächsten Eingabeaufforderung kopiert wird. Wenn Sie beispielsweise Folgendes tun:
file-copy file; sleep 2
Die Datei wird erst nach diesen 2 Sekunden kopiert.