GNU/Linux >> Belajar Linux >  >> Linux

Awalan untuk setiap output dari perintah saat runtime

Saya berasumsi bahwa apa yang Anda lakukan di allcommands.sh Anda adalah:

command1.sh
command2.sh

Hubungkan saja dengan

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

Contoh minimal allcommands.sh :

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

Dengan command1.sh dan command2.sh dapat dieksekusi dan di direktori yang sama hanya echo ing string yang diinginkan, ini memberikan keluaran 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

Cepat sed kerusakan

sed 's/^/['"${i%.sh}"'] /'
  • s/ memasuki mode "pencocokan pola regexp dan ganti"
  • ^/ berarti "cocokkan dengan awal setiap baris"
  • ${i%.sh} terjadi dalam konteks shell dan berarti "$i , tetapi hapus akhiran .sh "
  • ['"${i%.sh}"'] / pada awalnya mencetak [ , lalu keluar dari konteks yang dikutip untuk mengambil $i variabel dari shell, lalu masuk kembali untuk menyelesaikan dengan ] dan spasi.

Linux
  1. Tambahkan string awalan ke awal setiap baris

  2. Bagaimana cara menambahkan output ke file?

  3. Output perintah dialihkan ke file dan terminal

  1. Cara Menyimpan Output Perintah ke File di Linux

  2. Bagaimana cara mencetak keluaran perintah Linux ke file?

  3. Perintah untuk menampilkan setiap baris maju lalu mundur

  1. Tampilkan Output Perintah atau Isi File dalam Format Kolom

  2. Perintah Untuk Mengeluarkan Konten File Ke Stdout?

  3. Bagaimana Mengurai Setiap Baris File Teks Sebagai Argumen Untuk Perintah?