GNU/Linux >> Linux Esercitazione >  >> Linux

passare stdout come nome file per la riga di comando util?

Soluzione 1:utilizzo della sostituzione del processo

Il modo più conveniente per farlo è utilizzare la sostituzione del processo. In bash la sintassi appare come segue:

foo -o >(other_command)

(Nota che questo è un bashismo. Esistono soluzioni simili per altre shell, ma il punto è che non è portabile.)

Soluzione 2:utilizzo esplicito di named pipe

Puoi fare quanto sopra esplicitamente / manualmente come segue:

  1. Crea una named pipe usando mkfifo comando.

    mkfifo my_buf
    
  2. Avvia l'altro comando con quel file come input

    other_command < my_buf
    
  3. Esegui foo e lascia che scriva il suo output in my_buf

    foo -o my_buf
    

Soluzione 3:utilizzo di /dev/stdout

Puoi anche utilizzare il file del dispositivo /dev/stdout come segue

foo -o /dev/stdout | other_command

Potresti usare la magia di UNIX e creare una named pipe :)

  1. Crea la pipe

    $ mknod -p mypipe
    
  2. Avvia il processo che legge dalla pipe

    $ second-process < mypipe
    
  3. Avvia il processo, che scrive nella pipe

    $ foo -o mypipe
    

Per rendere felice StackOverflow, lasciatemi scrivere una frase abbastanza lunga perché la mia soluzione proposta è lunga solo 18 caratteri invece dei 30+ richiesti

foo -o /dev/stdout

Le pipe con nome funzionano bene, ma hai una sintassi più bella e più diretta disponibile tramite la sostituzione del processo bash che ha l'ulteriore vantaggio di non utilizzare una pipe con nome permanente che deve essere successivamente eliminata (la sostituzione del processo utilizza pipe con nome temporanee dietro le quinte):

foo -o >(other command)

Inoltre, se vuoi reindirizzare l'output al tuo comando e anche salvare l'output in un file, puoi farlo:

foo -o >(tee output.txt) | other command


Linux
  1. 8 suggerimenti per la riga di comando di Linux

  2. Spiegazione del comando Linux wc per principianti (6 esempi)

  3. Titan:un gestore di password da riga di comando per Linux

  4. Come passare il contenuto di un file come parametro della riga di comando?

  5. A cosa serve il test di Linux:un test di comando?

Tutorial sui comandi di file Linux per principianti (5 esempi)

Comando Diff in Linux con esempi

Comando ls in Linux per elencare i file

Newsboat:un lettore di feed RSS/Atom da riga di comando per console di testo

Visualizza il contenuto di un file nella riga di comando di Linux

Exa:un moderno sostituto del comando ls