私の最初の質問の一つです。追加の説明や情報が必要な場合、または質問がここに収まらない場合はコメントを残してください。
私はサーバー(この場合はMinecraftサーバー)を自動的に起動するためにスクリーンを使用しています。
こんな画面を作っています。
screen -S 'server_1' -d -m "java -Xmx4G -Xms4G -jar spigot.jar"
次にログファイルを設定し、ロギングを有効にします。
screen -S 'server_1' -X logfile /srv/serverinstalls/1/stdout.txt
screen -S 'server_1' -X log
次に、NodeJSを介してstdout.txtの内容を読み込みます。
「cat stdout.txt」の出力は問題ないようですが、「less stdout.txt」を含むファイルを見ると、各行は次のように始まります。
>ESC[2K^M
ここで ^M と ESC は制御文字です (^M は \r 文字です)。これが画面録画サーバーがインタラクティブシェルのプロンプトを表示する方法のようです(">"で始まります)。
これらの制御文字を無視し、シェルの対話型部分を記録しないように画面コマンドを設定する方法はありますか?
必要に応じて、ログファイルを読み取るたびに別のコマンドを実行したり、NodeJSを使用して不要な文字を置き換えたりすることができますが、プロンプトがすべてのサーバーで同じように表示されるわけではありません。
私は画面4.05.00のDebian 9.9(stretch)で動作しています。
答え1
以下を試してみた人はいますか?
ansifilter
less -r
strings