tail -cオプションの使い方を完全解説!Linuxで末尾のバイト数を指定して表示しよう
生徒
「Linuxでファイルの末尾だけ見たいんですけど、行じゃなくて文字数で指定できますか?」
先生
「はい、その場合はtailコマンドの-cオプションを使えば、指定したバイト数だけ末尾から表示できますよ。」
生徒
「バイト数って行数とどう違うんですか?」
先生
「行数は改行単位ですが、バイト数は文字の大きさで数えます。詳しく説明していきましょう。」
1. tail -cオプションとは?
tail -cオプションは、Linuxでファイルの末尾から指定したバイト数だけを表示するためのオプションです。バイト(byte)とは、コンピュータで使われるデータの単位のことで、1バイトはアルファベット1文字や数字1文字に相当します。
たとえば「Hello」という文字列は、半角英字なので5バイトです。日本語の「こんにちは」は1文字が2〜3バイトになることが多いため注意が必要です。
2. tail -cの基本的な使い方
tail -cの基本構文は以下の通りです。
tail -c バイト数 ファイル名
たとえば、ファイルmessage.txtの末尾から10バイトだけ表示したい場合は、以下のように入力します。
tail -c 10 message.txt
is text!
これは、ファイルの最後の10バイト「is text!」が出力された例です。
3. バイト数と文字数の違いに注意しよう
日本語は1文字が2バイト以上になることがあるため、バイト数と文字数は必ずしも一致しません。たとえば、次のようなテキストを考えてみましょう。
「こんにちは世界」
この文章は7文字ですが、UTF-8という文字コードでは1文字あたり3バイトとして扱われるため、全体で21バイトになります。
つまり、-c 9と指定しても、ちょうど3文字が表示されるとは限らないということです。
4. ファイルサイズが小さい場合
もしファイル全体のバイト数より多い値を指定しても、エラーにはなりません。
tail -c 10000 small.txt
ファイルのすべての内容が表示されます
このように、存在するバイト数すべてが表示されるだけなので、安心して使えます。
5. head -cとの違い
tail -cは「ファイルの最後から○バイト」を表示するのに対し、head -cは「最初から○バイト」を表示します。両者はペアで覚えておくと便利です。
head -c 10 message.txt
Hello thi
このように、先頭の10バイトが出力されます。
6. tail -nとtail -cの違い
tail -nは「行数」で指定するのに対し、tail -cは「バイト数」で指定します。用途によって使い分けましょう。
- ログファイルの最新の10行を確認したい →
tail -n 10 - ファイルの末尾10バイトだけ確認したい →
tail -c 10
7. tail -fと-cの組み合わせは非対応
tail -fはリアルタイム監視ですが、-cとは一緒に使えません。
エラーメッセージが表示されるか、正しく動作しないことがあるので、リアルタイム監視には-nを使いましょう。
8. 他コマンドとの連携例:ddコマンドとの違い
ddコマンドもバイト単位での読み取りが可能ですが、tail -cのほうが単純な末尾表示には向いています。
dd if=message.txt bs=1 skip=30
tail -c 30 message.txt
上記はいずれもファイルの後半部分を表示する例ですが、tailの方が直感的で簡単です。