GNU/Linux >> Tutoriales Linux >  >> Linux

¿Pasar stdout como nombre de archivo para la línea de comando util?

Solución 1:usar la sustitución de procesos

La forma más conveniente de hacerlo es mediante la sustitución de procesos. En bash, la sintaxis es la siguiente:

foo -o >(other_command)

(Tenga en cuenta que esto es un bashism. Hay soluciones similares para otros shells, pero la conclusión es que no es portátil).

Solución 2:usar canalizaciones con nombre explícitamente

Puede hacer lo anterior explícitamente/manualmente de la siguiente manera:

  1. Cree una tubería con nombre usando el mkfifo comando.

    mkfifo my_buf
    
  2. Inicie su otro comando con ese archivo como entrada

    other_command < my_buf
    
  3. Ejecutar foo y deja que escriba su salida en my_buf

    foo -o my_buf
    

Solución 3:Usar /dev/stdout

También puede usar el archivo de dispositivo /dev/stdout de la siguiente manera

foo -o /dev/stdout | other_command

Podrías usar la magia de UNIX y crear una canalización con nombre :)

  1. Crea la tubería

    $ mknod -p mypipe
    
  2. Inicie el proceso que lee desde la tubería

    $ second-process < mypipe
    
  3. Inicie el proceso, que escribe en la tubería

    $ foo -o mypipe
    

En aras de hacer feliz a stackoverflow, permítanme escribir una oración lo suficientemente larga porque mi solución propuesta tiene solo 18 caracteres en lugar de los más de 30 requeridos

foo -o /dev/stdout

Las canalizaciones con nombre funcionan bien, pero tiene una sintaxis más agradable y directa disponible a través de la sustitución del proceso bash que tiene el beneficio adicional de no usar una canalización con nombre permanente que luego debe eliminarse (la sustitución del proceso usa canalizaciones con nombre temporales detrás de escena):

foo -o >(other command)

Además, si desea canalizar la salida a su comando y también guardar la salida en un archivo, puede hacer esto:

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


Linux
  1. 8 consejos para la línea de comandos de Linux

  2. Comando wc de Linux explicado para principiantes (6 ejemplos)

  3. Titan:un administrador de contraseñas de línea de comandos para Linux

  4. ¿Cómo dividir un archivo como Split to Stdout para canalizar a un comando?

  5. ¿Cómo pasar el contenido de un archivo como un parámetro de línea de comando?

Tutorial de comandos de archivos de Linux para principiantes (5 ejemplos)

Comando Diff en Linux con ejemplos

Comando ls en Linux para listar archivos

Newsboat:un lector de fuentes RSS/Atom de línea de comandos para consolas de texto

Ver el contenido de un archivo en la línea de comandos de Linux

Exa:un reemplazo moderno para el comando ls