コマンドラインから出力された行数を自動的に印刷します。

コマンドラインから出力された行数を自動的に印刷します。

私の魚の皮、私は使用しています魚指令タイマー各コマンドが実行された後の継続時間を自動的に表示します。これは素晴らしい機能であり、お勧めします。

今私はこれに似たものが欲しい:行数、つまり各コマンドラインの実行後にstdoutおよび/またはstderrに印刷された行もstdoutに印刷する必要があります。

はい:

変える

> cat /etc/mpd.conf
pid_file "/run/mpd/mpd.pid"
db_file "/var/lib/mpd/mpd.db"
state_file "/var/lib/mpd/mpdstate"
playlist_directory "/var/lib/mpd/playlists"

見たい

> cat /etc/mpd.conf
pid_file "/run/mpd/mpd.pid"
db_file "/var/lib/mpd/mpd.db"
state_file "/var/lib/mpd/mpdstate"
playlist_directory "/var/lib/mpd/playlists"

[ 4 lines ]

いくつかのメモ:

  • コマンドの出力行番号を印刷するいくつかの手動ソリューションがあります。ここしかし、私はこれが私の魚の構成に永続的な機能として実装されることを望んでいます。
  • コマンドを2回実行したくありません(冪等不足などの明らかな理由で)。
  • bash(魚の代わりに)ソリューションは正しい方向を知らせることができます。

コマンドタイマーは、コマンドラインを実行した後に発生するpostexecイベントで動作しますが、問題は完全には解決されないため、方法が必要です。

答え1

cat /etc/mpd.conf次に交換してみてください。cat /etc/mpd.conf | tee /proc/self/fd/2 | echo -e "\n[ $(wc -l) lines ]"

/proc/self/fd/ が使用できない場合は、2 つのコマンドに分割するか、&& 演算子を使用してこのような操作を実行してみてください。cat /etc/mpd.conf && echo "Number of lines: $(cat /etc/mpd.conf | wc -l)"

~からトイレのマニュアルページ:

-l, --lines 改行数を印刷します。

関連情報