cat -Aオプション|非表示文字を可視化して表示する方法
生徒
「テキストファイルの中に変な文字があって、見えないのに何かあるみたいなんです…」
先生
「それは“制御文字”や“改行・タブ”など、画面に表示されない非表示文字かもしれませんね。」
生徒
「そんな文字も見えるようにできるんですか?」
先生
「はい、Linuxのcatコマンドに-Aというオプションを付ければ、すべての非表示文字を可視化できますよ。」
1. cat -Aとは?すべての非表示文字を表示するオプション
Linuxのcatコマンドは、ファイルの内容を画面に表示するために使いますが、-Aオプションを付けることで、「普通では見えない文字」も表示できるようになります。
たとえば、改行・タブ・制御文字などは、通常の表示では見えません。しかし、プログラムや設定ファイルでは、それらが原因で不具合になることがあります。
-Aは以下の3つのオプションを組み合わせたものです:
-v:制御文字を可視化-E:行末の改行を$で表示-T:タブを^Iで表示
つまり、cat -Aはファイルの中にある「目に見えない問題」をあぶり出すための便利な方法なのです。
2. cat -Aで非表示文字を確認してみよう
それでは、実際にcat -Aコマンドを使って、ファイルの中身を確認してみましょう。以下のような内容のファイルがあるとします。
cat sample.txt
こんにちは
ようこそ Linux の世界へ(←改行・タブなどが含まれている)
このファイルにcat -Aを使ってみると、次のように出力されます。
cat -A sample.txt
こんにちは$
ようこそ^ILinux^Mの世界へ$
それぞれの記号には意味があります。
$:改行の位置を表す^I:タブ文字^M:Windows形式の改行(CR:キャリッジリターン)
このように、目に見えなかった問題点がはっきり見えるようになります。
3. WindowsとLinuxの改行コードの違いも見える
LinuxとWindowsでは、改行コードの扱いが異なります。Linuxは\n(LF)、Windowsは\r\n(CR+LF)です。
WindowsからコピーしたファイルをLinuxで扱うと、改行がうまく処理されないことがありますが、cat -Aならその違いも分かります。
cat -A windows.txt
Hello^M$
World^M$
^Mが表示されていたら、Windows形式の改行が残っているということです。
4. 改行のないファイルも一目瞭然
ファイルの最後に改行が入っていないと、プログラムによってはエラーになることがあります。そんな時もcat -Aは便利です。
cat -A no_newline.txt
この行には改行がありません
出力結果に$が付いていなければ、改行されていないということです。
5. 他のcatオプションとの違い
ここで、cat -Aと他のオプションとの違いを簡単に整理しておきましょう。
| オプション | 意味 | 用途 |
|---|---|---|
-n | 行番号を表示 | ソースコードなどの確認 |
-E | 行末に$を表示 | 改行の有無確認 |
-T | タブを^Iで表示 | 整形ミスの確認 |
-A | すべての非表示文字を表示 | 全体的な可視化 |
特にトラブル調査や、外部から受け取ったファイルの確認にcat -Aは非常に役立ちます。
6. cat -Aを使うときの注意点
cat -Aは目に見えない文字を強制的に表示するため、見慣れない記号がたくさん出てきます。最初は驚くかもしれませんが、それぞれに意味があるので慣れていきましょう。
また、バイナリファイル(画像や実行ファイルなど)には使わないように注意してください。画面が文字化けして操作しづらくなる可能性があります。
7. 使いどころと実践例
次のような状況でcat -Aは非常に有効です。
- 空白だと思っていた行に実はタブが入っていた
- ファイル末尾に改行がなくてエラーになっていた
- Windowsで作ったファイルをLinuxで扱ったらうまく動かなかった
こうした見えない問題を発見するには、cat -Aがシンプルで強力なツールとなります。