GNU/Linux >> Tutoriels Linux >  >> Linux

Préfixe à chaque sortie d'une commande lors de l'exécution

Je suppose que ce que vous faites dans votre allcommands.sh est :

command1.sh
command2.sh

Remplacez-le simplement par

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

Un exemple minimal de allcommands.sh :

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

Avec command1.sh et command2.sh exécutable et dans le même répertoire juste echo en saisissant les chaînes souhaitées, cela donne la sortie du 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

Rapide sed panne

sed 's/^/['"${i%.sh}"'] /'
  • s/ passe en mode "correspondance et remplacement de motif d'expression régulière"
  • ^/ signifie "faire correspondre le début de chaque ligne"
  • ${i%.sh} se produit dans le contexte du shell et signifie "$i , mais supprimez le suffixe .sh "
  • ['"${i%.sh}"'] / imprime d'abord un [ , puis quitte le contexte cité pour saisir le $i variable du shell, puis ressaisit pour finir avec le ] et un espace.

Linux
  1. Commande pour exporter le contenu du fichier vers Stdout ?

  2. Comment ajouter la sortie à un fichier ?

  3. Rediriger la sortie de la commande vers le fichier et le terminal

  4. Comment imprimer la sortie de la commande Linux dans un fichier ?

  5. Une commande pour afficher chaque ligne vers l'avant puis vers l'arrière

Commande de fichier Linux

Moins de commande sous Linux

Commande de source bash

Comment enregistrer la sortie de la commande Linux dans une image ou un fichier texte

Comment rediriger la sortie de la commande shell

Enregistrer la sortie d'une commande du terminal Debian dans un fichier