GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Präfix für jede Ausgabe eines Befehls zur Laufzeit

Ich gehe davon aus, dass Sie in Ihrer allcommands.sh Folgendes tun:

command1.sh
command2.sh

Ersetzen Sie es einfach mit

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

Ein Minimalbeispiel für allcommands.sh :

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

Mit command1.sh und command2.sh ausführbar und im selben Verzeichnis nur echo Wenn Sie die gewünschten Zeichenfolgen eingeben, ergibt dies die Shell-Ausgabe:

$ ./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

Schnell sed Zusammenbruch

sed 's/^/['"${i%.sh}"'] /'
  • s/ Wechselt in den "Regexp-Mustervergleichs- und -ersetzungs"-Modus
  • ^/ bedeutet "Übereinstimmung mit dem Anfang jeder Zeile"
  • ${i%.sh} kommt im Shell-Kontext vor und bedeutet "$i , aber entfernen Sie das Suffix .sh "
  • ['"${i%.sh}"'] / gibt zunächst eine [ aus , verlässt dann den Kontext in Anführungszeichen, um $i abzurufen Variable aus der Shell, wird dann erneut eingegeben, um mit ] abzuschließen und ein Leerzeichen.

Linux
  1. Befehlsausgabe oder Dateiinhalt im Spaltenformat anzeigen

  2. Befehl zum Ausgeben von Dateiinhalten an Stdout?

  3. Wie analysiert man jede Zeile einer Textdatei als Argument für einen Befehl?

  4. Befehlsausgabeumleitung auf Datei und Terminal

  5. Ein Befehl, um jede Zeile vorwärts und dann rückwärts auszugeben

Linux-Dateibefehl

Weniger Befehl unter Linux

Bash-Quellbefehl

So speichern Sie die Linux-Befehlsausgabe in einem Bild oder einer Textdatei

So leiten Sie die Shell-Befehlsausgabe um

Speichern Sie die Ausgabe eines Befehls vom Debian-Terminal in einer Datei