ファイルを開くときにファイルの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