Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

Linuxのcatコマンド完全ガイド – Bashの実行例で学ぶファイル連結の基本

はじめに

Linuxのcatコマンドは、英語の「concatenate(連結する)」が語源となっており、最も便利で汎用性の高いLinuxコマンドのひとつです。本物の猫ほど可愛らしくはありませんが、catコマンドを使えば、文字列・ファイル・出力を組み合わせたさまざまな操作を効率的に行えます。

catコマンドの主な用途は、テキストファイルに関わる次の3つです。

  • 作成
  • 読み取り・表示
  • 更新・編集

以降では、それぞれの操作に関連するコマンドとオプションを順番に解説していきます。

準備:サンプルファイルを作成する

まず、foo.txtspam.txtという2つのファイルを作成してみましょう。

コマンドラインでcat > foo.txtと入力すると、foo.txtの作成が始まります。

注意:同名のファイルがすでに存在する場合、>演算子付きのcatコマンドは既存のファイルを上書きしてしまうので気をつけてください。

コマンド実行後、カーソルが改行された状態で待機するので、そこに入力したいテキストを書き込みます。今回は次のように入力します。

FILE 1
foo
bar
baz

入力が完了したらCtrl + Dを押すことで、入力モードを終了してコマンドラインに戻り、ファイルが保存されます。

続いて、cat > spam.txtspam.txtを作成し、以下の内容を入力しましょう。

FILE 2
spam
ham
eggs

すでにあるファイルへテキストを追記したい場合は、cat >> ファイル名を使います。

>演算子が上書きを意味するのに対し、>>演算子は追記を意味するという点に注意してください。

テキストエディタを開かなくても、コマンドラインだけで手軽にテキストファイルを作成できるため、時間と手間を大きく節約できます。

このセクションのポイントを整理すると、次のとおりです。

  • cat > ファイル名:新規作成または上書き
  • cat >> ファイル名:既存ファイルへの追記
  • 入力終了後はCtrl + Dで確定・終了

ファイルの中身を読む・表示する

作成したファイルの内容を確認してみましょう。

ここでのコマンドには>>>といったリダイレクト演算子が付いておらず、catとファイル名だけである点に注目してください。

cat foo.txtを実行すると、次のように表示されます。

FILE 1
foo
bar
baz

このようにcat ファイル名でファイルを読み取れますが、それ以外にも便利な機能があります。

たとえば、ファイルの行数を把握したい場面では-nオプションが役立ちます。

cat -n foo.txtを実行すると、各行に行番号が付いた状態で表示されます。

  1  FILE 1
2 foo
3 bar
4 baz

-nオプションを使えばファイル全体の行数をつかめるため、決まった長さのファイルを行単位で処理したいときなどに非常に便利です。

ファイルを連結する

ここまでで、ファイルの作成と表示ができることを確認しました。次は、catコマンドの本領である連結(concatenate)を試してみましょう。

引き続きfoo.txtspam.txtを使います。まずは2つのファイルの内容を一度に表示してみましょう。cat foo.txt spam.txtのように、ファイル名を並べて指定するだけです。

FILE 1
foo
bar
baz
FILE 2
spam
ham
eggs

ただしこれは、あくまで2つのファイルを画面に表示しただけであり、この時点では新しいファイルとして結合されていない点に注意してください。

実際に1つの新しいファイルへ連結するには、リダイレクトを組み合わせてcat foo.txt spam.txt > fooSpam.txtと実行します。これにより、連結結果がfooSpam.txtとして保存されます。

cat fooSpam.txtで内容を確認すると、ターミナルには次のように表示されます。

FILE 1
foo
bar
baz
FILE 2
spam
ham
eggs

この手法は、3つ以上のファイルをまとめて1つのファイルに結合したい場合にもそのまま使えます。

このセクションのポイントは以下の2つです。

  • 複数ファイルの同時表示:cat ファイル名1 ファイル名2
  • 複数ファイルの結合:cat ファイル名1 ファイル名2 > ファイル名3

catのその他の便利な使い方

ファイルを操作しているとき、ファイルの末尾付近で原因不明のエラーが続いたり、想定していたよりも行数が多いように感じたりすることはありませんか。

そんなときにファイルの中身を詳しく調査できるのが-Aオプションです。-Aを付けると、行末が$で表示され、タブ文字は^Iとして可視化され、その他の印刷できない(非印字)文字もすべて表示されます。

たとえば、非印字文字を含むファイルを通常どおりcat nonPrintExample.txtで表示しても、ほとんど何も見えない空行ばかりが出力されるだけの場合があります。

これでも一応出力はされていますが、トラブルの原因になっている文字や文字列の正体はつかめません。

一方、cat -A nonPrintExample.txtとすると、はるかに有益な情報が得られます。

^I^I$
$
^L$
$
^G^H^H^H^Y^I^N^O^P^@$
^@^@^[g^[f^[d^[g^[6^[5^[4^[6^[=$
$
$
^X$

このように、タブ・ラインフィード・キャリッジリターンなど、目に見えない制御文字がどこに混在しているのかを明確に把握できます。

-Aオプションを使いこなせば、普段は見えないファイル内部の詳細まで確認できるようになり、デバッグの強力な味方になります。

まとめ

この記事では、Linuxのcatコマンドについて、その基本的な機能と主な使い方を解説しました。

  • ファイルの新規作成・上書き:cat > ファイル名
  • 既存ファイルへの追記:cat >> ファイル名
  • ファイル内容の表示:cat ファイル名
  • 行番号付き表示:cat -n ファイル名
  • 複数ファイルの連結:cat ファイル名1 ファイル名2 > 結合先ファイル名
  • 非印字文字の可視化:cat -A ファイル名

シンプルながら奥深いcatコマンドをマスターして、日々のコマンドライン操作をより快適にしていきましょう。

  1. Linuxで覚えておきたい10個のコマンド連結演算子と実用例

    Linuxにおける「コマンドの連結(チェーン)」とは、複数のコマンドを1行にまとめ、その間に挟んだ演算子の働きに応じて実行を制御するテクニックです。シェル上で小さなスクリプトを書くのに近い感覚で、ターミナルから直接手軽に実行できます。定型作業の自動化はもちろん、無人で稼働するサーバーをより体系的かつ安定して動作させるうえでも非常に有効です。あわせて読みたい: Awkと正規表現を使ってファイル内のテキストを抽出・フィルタリングする方法本記事では、日常的によく使われるコマンド連結演算子を10個厳選し、簡潔な説明と実際の実行例とともに解説します。これらを使いこなせるようになれば、短くて意味のあるコマ

  2. Linuxのwatchコマンドの使い方と実用例をわかりやすく解説

    Linuxのwatchコマンドは、指定したコマンドを一定間隔で繰り返し実行し、その結果を画面に表示し続けるためのツールです。コマンドの出力が時間とともにどう変化するかをリアルタイムで監視したい場合に非常に便利です。この記事では、watchコマンドの基本的な使い方と、覚えておくと役立つ実用的な例を紹介します。 watchコマンドの基本構文 watchコマンドの構文は以下のとおりです。 watch オプション コマンド 各要素の意味は次のとおりです。 オプション: 後述の表から選択したオプションを指定します。watchコマンドのデフォルト動作を変更できます。 コマンド: watchが繰り返し実行