"file"コマンドの出力「ナノでファイルを開いた後、ファイルはどうなりましたか?

背景:ファイルにログを書き込むスクリプトをRaspberry Piで実行しています。スクリプトを完了するのに時間がかかるため、時々piに停電が発生し、終了することがあります。これが発生するたびに、ログファイルは通常数行が失われ、いくつかのnullバイトがログの末尾に追加されたように見えます。

ターゲット:そのような状況を検出しようとしています。ログを見ると、ヌルバイトを表す「^@^@」文字の束を見ることができます。私はこのfileコマンドを試しましたが、「破損した」ログは「データ」を返しましたが、通常のログは「ASCIIテキスト」を返しました。

質問:これがうまくいくと思いましたが、ファイルを開いていない場合(nanoを使用するなど)、破損したファイルでも「ASCIIテキスト」を返すようです。編集者として見た後にのみ「データ」になります。なぜこれが起こるのかご存知ですか?この状況を検出するための強力なソリューションはありますか?

ありがとうございます!

編集:1つの重要な事項を含めることを忘れました(私もこれに気づいたので):最初に「ASCIIテキスト」を返すと、ファイルの終わりは「^ @ ^ @」、2番目は「ASCIIテキスト」を返します。ファイルは「^@^@」で終わります。 「^@^@xxx」で終わる「データ」を返します(複数の文字が追加されます)。これが影響を与えるかどうかはわかりません。

編集2:はい、「破損した」ファイルの場合、ファイル形式のみを確認すると「ASCIIテキスト」が返されますが、そうするとecho "xxxx" >> the_fileファイルが「データ」になることを確認しました.....だから、私の現在の解決策はファイル形式をチェックする前に、いくつかの文字をファイルにエコーすることです。それでもその理由が気になります。

ベストアンサー1

おすすめ記事