Kopieren Sie den Inhalt einer Datei in die Zwischenablage, ohne den Inhalt anzuzeigen

67

Kopieren des Inhalts einer Datei unter UNIX ohne Anzeige des Dateiinhalts. Ich möchte nicht, dass cat oder vi den Inhalt sehen.

Ich möchte sie in die Zwischenablage kopieren, damit ich sie wieder in meinen Windows-Editor einfügen kann.

Ich kann die Datei aufgrund von Zugriffsbeschränkungen nicht von diesem Server auf einen anderen kopieren.

Web Nash
quelle
Sie können nicht auf den Inhalt einer Datei zugreifen, ohne sie zu öffnen ...
123
OK, wenn ja, gibt es eine einfache Möglichkeit, eine sehr große Datei zu kopieren. Ich habe wie 1000 Zeilen.
Web Nash
Wenn Ihre Datei sehr groß ist, schlägt die Zwischenablage trotzdem fehl. Wenn die Zugriffsbeschränkungen besagen, dass Sie die Datei nicht lesen können, sind Sie natürlich verloren. Wenn Sie die Datei nicht kopieren können, weil Sie sie nicht schreiben können, müssen Sie sich fragen, ob es ein anderes Ziel gibt, an das Sie schreiben können.
ikrabbe
Sehr groß. 1000 Zeilen. Wähle eins.
123,
2
Was ist ein Windows-Notizblock BTW?
Stéphane Chazelas

Antworten:

77

X11

Wenn Sie X11 (die häufigste Benutzeroberfläche auf herkömmlichen Unix- oder Linux-basierten Systemen) verwenden, können Sie den Inhalt einer Datei in die Auswahl X11 CLIPBOARD kopieren, ohne sie anzuzeigen. Verwenden Sie dazu das Dienstprogramm xclipoder xsel.

xclip -sel c < file

Oder:

xsel -b < file

Zum Speichern des Inhalts fileals CLIPBOARD X11-Auswahl.

Beachten Sie, dass es mit einer UTF-8-Codierung gespeichert werden sollte, da andernfalls das Einfügen nicht ordnungsgemäß funktioniert. Wenn die fileZeichen mit einem anderen Zeichensatz codiert sind, sollten Sie zuerst nach UTF-8 konvertieren, z.

iconv -f latin1 -t utf8 | xclip -sel c

Für eine in latin1 / iso8859-1 codierte Datei .

Um es als CUT_BUFFER zu speichern (diese werden immer noch von einigen Anwendungen abgefragt, xtermwenn nichts die CLIPBOARD- oder PRIMARY X-Auswahl beansprucht und kein Prozess ausgeführt werden muss, um es wie eine Auswahl zu bedienen), obwohl Sie wahrscheinlich oder nicht wollen müssen das heutzutage nutzen:

xprop -root -format CUT_BUFFER0 8s -set CUT_BUFFER0 "$(cat file)"

(Entfernt die nachfolgenden Zeilenumbrüche von file).

GNU-Bildschirm

GNU screenhat den readbufBefehl, den Inhalt einer Datei in einen eigenen Copy-Paste-Buffer (mit dem Sie einfügen ^A]) zu schlürfen . Damit:

screen -X readbuf file

Apple OS / X

Obwohl Apple OS / X können X11 verwenden. Dies ist standardmäßig nur möglich, wenn Sie eine X11-Anwendung ausführen. Sie könnten xclipoder xseldort verwenden, da OS / X die Auswahl von X11 CLIPBOARD mit den Puffern von OS / X-Pasteboards synchronisieren sollte. Es wäre jedoch eine Verschwendung, den X11-Server nur dafür zu starten.

Unter OS / X können Sie mit dem pbcopyBefehl beliebigen Inhalt in Pasteboard- Puffern speichern :

pbcopy < file

(Es wird erwartet, dass die Zeichencodierung der Datei der des Gebietsschemas entspricht.)

Muscheln

Die meisten Shells haben eigene Copy-Paste-Puffer. Im Emacs-Modus speichern Ausschneiden und Kopieren den kopierten / ausgeschnittenen Text auf einem Stapel, mit dem Sie ruckeln / einfügen Ctrl-Yund durchlaufenAlt+Y

zsh CUTBUFFER / killring

In zshwird der Stapel im $killringArray und der obere Bereich des Stapels in der $CUTBUFFERVariablen gespeichert , obwohl diese Variablen nur in Zle-Widgets (Zsh Line Editor) verfügbar sind. Einige spezielle Widgets sind die bevorzugte Methode, um diese zu bearbeiten.

Da diese nur über das ZLE verfügbar sind, ist das Ausführen mit Befehlen etwas kompliziert:

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
}
zle -N zle-line-init
file-copy() FILE_TO_COPY=$1:A       

Das zle-line-initspezielle Widget wird zu Beginn jeder neuen Eingabeaufforderung einmal ausgeführt. Dies bedeutet, dass die Datei nur bei der nächsten Eingabeaufforderung kopiert wird. Zum Beispiel, wenn Sie:

file-copy file; sleep 2

Die Datei wird erst nach diesen 2 Sekunden kopiert.

Stéphane Chazelas
quelle
3
Ich Error: Can't open display: (null)
Marcelo Filho
Gleiches Problem hier in Fedora 7
Michael Pacheco
@MarceloFilho xclipund xselX11-Dienstprogramme manipulieren die X11-Auswahl und können daher nur in einer X11-Umgebung verwendet werden, in der dies festgelegt $DISPLAYist.
Stéphane Chazelas
2

Vielleicht wolltest du das fragen . Jede Datei, die Sie lesen möchten, muss jedoch durch einen Systemaufruf geöffnet werden. Wenn Sie keinen Zugriff auf eine Datei haben, können Sie sie nicht lesen. Das ist die Idee des eingeschränkten Zugangs.

ikrabbe
quelle
Was ist dein eigentliches Problem? Wenn Sie lesen können, aber nicht kopieren können, können Sie möglicherweise nicht schreiben. Aber wenn Sie kopieren möchten, müssen Sie die Daten irgendwo schreiben.
ikrabbe
Dankeschön!!! Du hast mein Leben gerettet)
Alena Kastsiukavets
0

Verwendung von X11:

xclip -o > file

Wenn Sie eine Datei lesen können, handelt es sich bei dem Zugriffsproblem um den Zielserver.

tjombka
quelle