Předpokládám, že to, co děláte ve svém allcommands.sh, je:
command1.sh
command2.sh
Stačí jej nahradit pomocí
command1.sh | sed "s/^/[command1] /"
command2.sh | sed "s/^/[command2] /"
Minimální příklad allcommands.sh
:
#!/bin/bash
for i in command{1,2}.sh; do
./"$i" | sed 's/^/['"${i%.sh}"'] /'
done
S command1.sh
a command2.sh
spustitelný a ve stejném adresáři jen echo
Když zadáte požadované řetězce, dostanete výstup shellu:
$ ./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
Rychle sed
členění
sed 's/^/['"${i%.sh}"'] /'
s/
přejde do režimu „shoda a nahrazení vzoru regulárních výrazů“^/
znamená "odpovídají začátku každého řádku"${i%.sh}
se děje v kontextu shellu a znamená "$i
, ale odstraňte příponu.sh
"
." ['"${i%.sh}"'] /
nejprve vytiskne[
, pak opustí citovaný kontext a uchopí$i
proměnnou z shellu, poté znovu vstoupí a skončí s]
a mezerou.
xargs --replace/-I pro jednotlivé argumenty
Nastavení ZFS pro začátečníky s různými velikostmi disků