cat、head、tailでファイルの中身を表示し、出力をファイルに取り込みましょう。
このレッスンを Kodokon で開くファイルをちょっと覗くだけなら、いちいちエディタを開く必要はありません。cat コマンドは、その中身をターミナルに直接表示します。名前はconcatenate、「つなげる」に由来しています。複数のファイルを続けて表示することもできるからです。小さなファイル、せいぜい数十行までのファイルにうってつけの道具です。
yoann@laptop:~/my-project$ cat shopping.txt
パン
チーズ
トマト
yoann@laptop:~/my-project$ cat shopping.txt notes.txt
パン
チーズ
トマト
土曜日の朝市を忘れずに1万行のファイルでは、cat は10秒間画面を流し続け、あなたに見えるのは末尾だけです。もっと細かく指定できるコマンドが2つあります。head はファイルの先頭を、tail は末尾を表示します。どちらも初期状態では10行を表示し、-n オプションで行数を選べます。tail には -f オプション(follow)という必殺技があって、開いたまま待機し、新しい行が届くたびに表示してくれます。サーバーのログをリアルタイムで見張るのは、こうやってやるのです。
head server.log
head -n 5 server.log
tail -n 20 server.log
tail -f server.log初期状態では、コマンドは結果を画面に書き出します。でも、ホースの水をバケツに引き込むように、その結果をファイルに引き込むことができます。これがリダイレクトで、山かっこを使って書きます。1つの山かっこ > は出力をファイルに送り、そのファイルの中身を上書きします。2つ重ねた >> は、何も消さずに末尾に追記します。この1文字の違いがすべてを変えます。作ったものを全部表示せずに確認するには、wc コマンド(word count)に -l オプション(lines)を付けると、ファイルの行数を数えられます。
yoann@laptop:~/my-project$ echo "1行目" > notes.txt
yoann@laptop:~/my-project$ echo "2行目" >> notes.txt
yoann@laptop:~/my-project$ cat notes.txt
1行目
2行目
yoann@laptop:~/my-project$ ls -l > inventory.txt
yoann@laptop:~/my-project$ wc -l inventory.txt
7 inventory.txtcat コマンドは何のためのものですか?> と >> の違いは何ですか?> は末尾に追記し、>> はファイルを上書きする> はファイルを上書きし、>> は末尾に追記するserver.log ファイルの最後の20行を表示するにはどうしますか?