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

Pseudodateien für temporäre Daten?

Ich möchte häufig relativ kurze Zeichenfolgendaten (könnte jedoch mehrere Zeilen umfassen) in Befehlszeilenprogramme einspeisen, die wiederholt nur Eingaben aus Dateien (z. B. wdiff) akzeptieren. Sicher kann ich eine oder mehrere temporäre Dateien erstellen, den String dort speichern und den Befehl mit dem Dateinamen als Parameter ausführen. Aber es sieht für mich so aus, als ob dieses Verfahren sehr ineffizient wäre, wenn tatsächlich Daten auf die Platte geschrieben werden, und es könnte der Platte auch mehr als nötig schaden, wenn ich dieses Verfahren viele Male wiederhole, z. wenn ich einzelne Zeilen langer Textdateien in wdiff einspeisen möchte. Gibt es eine empfohlene Möglichkeit, dies zu umgehen, indem Sie beispielsweise Pseudodateien wie Pipes verwenden, um die Daten vorübergehend zu speichern, ohne sie tatsächlich auf die Festplatte zu schreiben (oder sie nur zu schreiben, wenn sie eine kritische Länge überschreiten). Beachten Sie, dass wdiff zwei Argumente benötigt und es meines Wissens nach nicht möglich ist, die Daten mit etwas wie wdiff <"text" zu füttern .

Akzeptierte Antwort:

Verwenden Sie eine benannte Pipe. Zur Veranschaulichung:

mkfifo fifo
echo -e "hello worldnnext linenline 3" > fifo

Das -e weist echo an, das Newline-Escape richtig zu interpretieren (n ). Dies wird blockieren, dh Ihre Shell wird hängen bleiben, bis etwas die Daten aus der Pipe liest.

Öffnen Sie irgendwo und im selben Verzeichnis eine andere Shell:

cat fifo

Sie lesen das Echo, das die andere Schale freigibt. Obwohl die Pipe als Dateiknoten auf der Festplatte existiert, sind die Daten, die sie durchlaufen, dies nicht; alles spielt sich in der erinnerung ab. Sie können im Hintergrund (& ) das Echo.

Die Pipe hat einen 64k-Puffer (unter Linux) und blockiert wie ein Socket den Writer, wenn er voll ist, sodass Sie keine Daten verlieren, solange Sie den Writer nicht vorzeitig beenden.


Linux
  1. Top 5 Datensicherungssoftware für Linux

  2. RAID für diejenigen, die es vermeiden

  3. Umask für Sshfs-gemountetes Dateisystem festlegen?

  4. Warten Sie, bis der Download mehrerer Dateien abgeschlossen ist?

  5. Überprüfen Sie die Linux-Konfigurationsdateien auf Syntaxfehler

Liste der NoSQL-Datenbanken für 2021

ls-Befehl in Linux zum Auflisten von Dateien

So installieren und verwenden Sie Okteta für RAW-Datendateien unter Linux

Dropbox für einen Linux Cloud Server eingerichtet

Max offene Dateien für den Arbeitsprozess

Verwenden von Dateien für Shared Memory IPC