mpg123でウェルカムメッセージを表示せずに曲を維持する方法は?

mpg123でウェルカムメッセージを表示せずに曲を維持する方法は?

私はこれについてしばらく頭を傷つけました。

答え1

-Cパイプバッファリングがmpg123オプションに問題を引き起こすことがわかりました。この問題は--line-bufferedgrepまたはsedのオプションを使用して解決できます-u

結局、私が使用したフラグセットは次のようになります。

mpg123 -Z -C --title */* 2>&1 | grep --line-buffered -Ev "High Performance|written and copyright by|without any warranty but with best wishes|Terminal control enabled|MPEG 1.0|Decoding of" | sed -uE 's/Playing MPEG stream [0-9]+ of [0-9]+: //' | sed -uE "s/Directory: //" | sed -uE "s/\.\.\.//" | sed -uE '/^\s*$/d'

オプションを段階的に見てみましょう。これらのいくつかは、便利なmpg123設定に関するより広範な質問に答えます。

  • -Zこれは永遠のランダムシャッフルです。
  • -C制御コマンドを許可
  • --title端末のタイトルを現在の曲のタイトルに変更
  • */*現在のサブディレクトリでファイルを探します。ファイルが指定されたディレクトリにある場合は「*」で十分です。
  • 2>&1標準エラー(mpg123が印刷する内容)からパイプを使用して実行できる標準出力にリダイレクト
  • --line-bufferedgrep と-used のフラグはバッファリングを防ぎ、問題が発生しました。
  • 他のフラグは単なる正規表現スイッチであり、問​​題の核心ではありません。

次に、使いやすいようにコマンドにエイリアスを割り当てました。 alias pmr="clear; mpg123 -Z -C --title */* 2>&1 | grep --line-buffered -Ev 'High Performance|written and copyright by|without any warranty but with best wishes|Terminal control enabled|MPEG 1.0|Decoding of' | sed -uE 's/Playing MPEG stream [0-9]+ of [0-9]+: //' | sed -uE 's/Directory: //' | sed -uE 's/\.\.\.//' | sed -uE '/^\s*$/d'" ## pmr := play music recursively

tailには-fバッファリングを防ぐためのフラグがありますが、引き続き問題が発生します。

関連情報