GNU/Linux >> Tutoriels Linux >  >> Linux

passer stdout comme nom de fichier pour l'utilitaire de ligne de commande ?

Solution 1 :Utiliser la substitution de processus

Le moyen le plus pratique de le faire est d'utiliser la substitution de processus. Dans bash, la syntaxe ressemble à ceci :

foo -o >(other_command)

(Notez qu'il s'agit d'un bashisme. Il existe des solutions similaires pour d'autres shells, mais l'essentiel est qu'il n'est pas portable.)

Solution 2 :Utiliser explicitement des canaux nommés

Vous pouvez faire ce qui précède explicitement/manuellement comme suit :

  1. Créez un canal nommé en utilisant le mkfifo commande.

    mkfifo my_buf
    
  2. Lancez votre autre commande avec ce fichier en entrée

    other_command < my_buf
    
  3. Exécutez foo et laissez-le écrire sa sortie dans my_buf

    foo -o my_buf
    

Solution 3 :Utiliser /dev/stdout

Vous pouvez également utiliser le fichier de périphérique /dev/stdout comme suit

foo -o /dev/stdout | other_command

Vous pouvez utiliser la magie d'UNIX et créer un tube nommé :)

  1. Créer le tuyau

    $ mknod -p mypipe
    
  2. Démarrer le processus qui lit à partir du tube

    $ second-process < mypipe
    
  3. Démarrer le processus, qui écrit dans le tube

    $ foo -o mypipe
    

Afin de rendre stackoverflow heureux, permettez-moi d'écrire une phrase assez longue car ma solution proposée ne contient que 18 caractères au lieu des 30+ requis

foo -o /dev/stdout

Les canaux nommés fonctionnent bien, mais vous avez une syntaxe plus agréable et plus directe disponible via la substitution de processus bash qui a l'avantage supplémentaire de ne pas utiliser de canal nommé permanent qui doit être supprimé ultérieurement (la substitution de processus utilise des canaux nommés temporaires dans les coulisses) :

foo -o >(other command)

De plus, si vous souhaitez rediriger la sortie vers votre commande et également enregistrer la sortie dans un fichier, vous pouvez le faire :

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


Linux
  1. 8 conseils pour la ligne de commande Linux

  2. exécuter une commande sur chaque ligne d'un fichier texte

  3. Comment décomposer un fichier comme Split en Stdout pour le diriger vers une commande ?

  4. Comment passer le contenu d'un fichier en tant que paramètre de ligne de commande ?

  5. À quoi sert Linux test -a command test ?

Tutoriel de commande de fichier Linux pour les débutants (5 exemples)

Commande Diff sous Linux avec exemples

Commande ls sous Linux pour lister les fichiers

Newsboat - Un lecteur de flux RSS / Atom en ligne de commande pour les consoles de texte

Afficher le contenu d'un fichier dans la ligne de commande Linux

Exa - Un remplacement moderne de la commande ls