導入
cat は、英語の「catenate」に由来し、「concatenate」と同義です (つまり、 concatenate ) は、ファイルを連結したり、ファイルの内容を標準出力 (通常は Unix 端末) に表示したりできる標準 Unix コマンドです。ほとんどの場合「シェル」、特に Bash、zsh、Csh などです。
tac はcatと同等ですが、ファイルの内容を末尾から先頭まで表示します。

仕様
「単一UNIX仕様」では、コマンドの動作は、標準出力への引数として指定された各ファイルの内容を単一のシーケンスで表示することと決定されています。 「 -u 」オプション (GNU バージョンでは使用されません) とともに使用されるこのコマンドは、バッファーを使用せずに、読み取られるとすぐに各バイトを表示します。
「 - 」オプションが適用される場合、 cat は標準入力 (例: キーボード) を読み取り、出力シーケンスに表示します。 file 引数がない場合、 cat は標準入力から読み取ります。
したがって、 cat を使用すると、ファイルの内容を迅速かつ受動的に表示できます。
拡張機能
catの BSD バージョンとGNU coreutils バージョンは両方とも、次のオプションをサポートしています。
- -b (GNU のみ: --number-nonblank )、出力内の非空白行の番号を指定します。
- -n (GNU のみ: --number )、出力行に番号を付けます。
- -s (GNU のみ: --squeeze-blank )、連続するすべての白線を 1 つにマージします。
- -v (GNU のみ: --show-nonprinting ) は、タブと行末文字 (EOL: End Of Line) を除き、非印刷文字を表示されているかのように表示します。
- BSD の-tまたは GNU の-T は、 -vと同じ動作をしますが、タブも^Iとして表示されます。
- BSD の-eまたは GNU の-Eは、 -vと同じ動作をしますが、行末文字も$として表示します。
ちょっとした Unix 文化

専門用語ファイルの定義
バージョン 4.3.3 の「専門用語ファイル」では、 catコマンドが次のように定義されています。
- ファイル全体を停止せずに画面または別の標準出力に表示するために使用されます。
- 拡張すると、準備ができていないターゲット、またはデータを注意深く読むつもりのないターゲットに大量のデータを送信するために使用されます。したがって、注文は限定的であると考えられます。
Unix ファンにとって、 cat はユーザー インターフェイスデザインの優れた例と考えられています。その理由は、一方ではファイル間のスペースや区切り文字などの予期しない追加を行わずにファイルの内容を提供し、他方ではそれを必要としないからです。ファイルはテキスト行で構成されていますが、どのタイプのデータでも機能することを確認します。
Unix を批判する人にとって、 cat はその名前の選択が特に不適切であるため、悪い “ユーザー インターフェイス” 設計の原型であると考えられています。実際、このコマンドは、複数のファイルを連結するよりも、単一のファイルを標準出力に表示するためによく使用されます。実際、 catという名前は、たとえばポインタを抽出することを目的としたLispのcdrコマンドの名前と同じくらい直感的ではありません。
猫とUUOC
UUOC は、Usenet のcomp.unix.shellから取得したもので、 「Useless Use of cat 」の略です。 comp.unix.shellの一部の人が指摘したように、 catコマンドの目的はファイルを連結することです。 1 つのファイルのみで使用すると、時間の無駄となり、リソースの不必要な追加コストがかかります。 「 catの目的は、ファイルを連結 (または「連結」) することです。ファイルが 1 つだけの場合、何も結合しないのは時間の無駄であり、プロセスにコストがかかります。 »
UUOCの例
次のことを行っていることがわかります。
猫ファイル | other_commandsとその引数
の代わりに :
< file other_commandsとその引数
またはもっと古典的に:
other_commandsとその引数< file
どちらも同じことを行いますが、リソースの点で安価です。
1995 年以来、 cat (UUOC) の最も不必要な使用に対して賞が時々授与されています。 Perl に関する多数の本の著者でありプログラミングコンサルタントであるRandal L. Schwartz がこれらの賞を授与することがよくあります。実際、UUOC Award およびその他の同様の賞のみを特集したWeb サイトがあります。
ハッカーにとって、UUOC を削除する活動は、デモグフィケーション (demoggification)と呼ばれることもあります (「モギー」とは、愛情を込めて飼い猫である「猫」を指す英連邦英語の用語です)。

