GNU/Linux >> Linux の 問題 >  >> Linux

実行時のコマンドの各出力のプレフィックス

あなたが allcommands.sh で行っていることは次のとおりだと思います:

command1.sh
command2.sh

で置き換えるだけです

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

allcommands.sh の最小限の例 :

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

command1.sh で と command2.sh 実行可能で、同じディレクトリに echo だけ 必要な文字列を入力すると、シェル出力が得られます:

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

クイック sed 内訳

sed 's/^/['"${i%.sh}"'] /'
  • s/ 「正規表現パターンの一致と置換」モードに入ります
  • ^/ 「すべての行の先頭に一致する」という意味
  • ${i%.sh} シェルコンテキストで発生し、「$i」を意味します 、ただし接尾辞 .sh を取り除きます "
  • ['"${i%.sh}"'] / 最初に [ を出力します 、次に引用されたコンテキストを終了して $i を取得します シェルから変数を入力し、再入力して ] で終了します とスペース。

Linux
  1. ファイルの内容をStdoutに出力するコマンド?

  2. 各行の先頭にプレフィックス文字列を追加します

  3. 出力をファイルに追加する方法は?

  1. Linuxでコマンド出力をファイルに保存する方法

  2. Linuxコマンド出力をファイルに出力するには?

  3. 各行を前後に出力するコマンド

  1. コマンド出力またはファイルの内容を列形式で表示する

  2. コマンドへの引数としてテキストファイルの各行を解析する方法は?

  3. コマンド出力をファイルと端末にリダイレクト