GNU/Linux >> Tutoriales Linux >  >> Linux

Prefijo para cada salida de un comando en tiempo de ejecución

Supongo que lo que está haciendo en allcommands.sh es:

command1.sh
command2.sh

Simplemente reemplácelo con

command1.sh | sed "s/^/[command1] /"
command2.sh | sed "s/^/[command2] /"

Un ejemplo mínimo de allcommands.sh :

#!/bin/bash
for i in command{1,2}.sh; do
    ./"$i" | sed 's/^/['"${i%.sh}"'] /'
done

Con command1.sh y command2.sh ejecutable y en el mismo directorio solo echo ing las cadenas deseadas, esto da la salida de Shell:

$ ./command1.sh 
file exists
file moved
$ ./command2.sh 
file copied
file emptied
$ ./allcommands.sh 
[command1] file exists
[command1] file moved
[command2] file copied
[command2] file emptied

Rápido sed desglose

sed 's/^/['"${i%.sh}"'] /'
  • s/ ingresa al modo "coincidencia y reemplazo de patrones de expresión regular"
  • ^/ significa "coincidir con el principio de cada línea"
  • ${i%.sh} sucede en el contexto de shell y significa "$i , pero elimina el sufijo .sh "
  • ['"${i%.sh}"'] / al principio imprime un [ , luego sale del contexto citado para tomar el $i variable del shell, luego vuelve a ingresar para terminar con el ] y un espacio.

Linux
  1. ¿Comando para enviar el contenido del archivo a la salida estándar?

  2. ¿Cómo analizar cada línea de un archivo de texto como un argumento para un comando?

  3. Redirección de salida de comando a archivo y terminal

  4. ¿Cómo imprimir la salida del comando Linux en un archivo?

  5. Un comando para mostrar cada línea hacia adelante y luego hacia atrás

Comando de archivo de Linux

Menos comando en Linux

Comando de fuente Bash

Cómo guardar la salida del comando de Linux en una imagen o un archivo de texto

Cómo redirigir la salida del comando de shell

Guardar la salida de un comando desde la terminal de Debian a un archivo