コマンドラインでファイルの末尾にEOLがないことを確認する

コマンドラインでファイルの末尾にEOLがないことを確認する

ファイルを開くときにファイルのvim最後の行の末尾に "no"がない場合、エディタはそれを 。EOL[noeol]これをどのように決定できますか?今後で開くかvim? (これを確認するためにコマンドを発行できますか?)

ベストアンサー1

tail -c 1入力の最後の文字(より正確には最後のバイト)を出力します。

コマンド置換は末尾の改行を削除する$(tail -c 1 <…)のでファイルの最後の文字が改行文字の場合。最後の文字がヌルバイト(ほとんどのシェルで)であってもヌルですが、テキストファイルにはヌルバイトはありません。

空のファイルに追加の改行は必要ありません。

if [ ! -s "$filename" ]; then
  echo "$filename is empty"
elif [ -z "$(tail -c 1 <"$filename")" ]; then
  echo "$filename ends with a newline or with a null byte"
else
  echo "$filename does not end with a newline nor with a null byte"
fi

おすすめ記事