GNU/Linux >> Linux Esercitazione >  >> Linux

Pseudo file per dati temporanei?

Spesso voglio inviare dati di stringhe relativamente brevi (potrebbero essere diverse righe però) a programmi da riga di comando che accettano solo input da file (ad esempio wdiff) in modo ripetuto. Certo che posso creare uno o più file temporanei, salvare la stringa lì ed eseguire il comando con il nome del file come parametro. Ma mi sembra che questa procedura sarebbe altamente inefficiente se i dati vengono effettivamente scritti sul disco e potrebbe anche danneggiare il disco più del necessario se ripeto questa procedura molte volte, ad es. se voglio inserire righe singole di file di testo lunghi in wdiff. C'è un modo consigliato per aggirare questo problema, ad esempio utilizzando pseudo file come pipe per archiviare temporaneamente i dati senza effettivamente scriverli sul disco (o scriverli solo se supera una lunghezza critica). Nota che wdiff accetta due argomenti e, per quanto ho capito, non sarà possibile alimentare i dati facendo qualcosa come wdiff <"text" .

Risposta accettata:

Usa una pipe con nome. A titolo illustrativo:

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

Il -e dice a echo di interpretare correttamente l'escape di nuova riga (n ). Questo si bloccherà, cioè la tua shell si bloccherà finché qualcosa non leggerà i dati dalla pipe.

Apri un'altra shell da qualche parte e nella stessa directory:

cat fifo

Leggerai l'eco, che rilascerà l'altra shell. Sebbene la pipe esista come nodo file su disco, i dati che la attraversano non lo fanno; tutto si svolge nella memoria. Puoi eseguire lo sfondo (& ) l'eco.

La pipe ha un buffer di 64k (su Linux) e, come un socket, bloccherà lo scrittore quando è pieno, quindi non perderai dati finché non ucciderai prematuramente lo scrittore.


Linux
  1. MySQL:conversione in dati per tabella per InnoDB

  2. I 5 migliori software di backup dei dati per Linux

  3. RAID per chi lo evita

  4. Controllare i file di configurazione di Linux per errori di sintassi

  5. Creazione di file temporanei in bash

Elenco dei database NoSQL per il 2021

Comando ls in Linux per elencare i file

Come installare e utilizzare Okteta per file di dati RAW in Linux

Impostare Umask per il filesystem montato su Sshfs?

Un ambiente simile a una shell per l'elaborazione binaria?

Dropbox configurato per un server cloud Linux