(キャット)はUNIXの標準コマンドであり、ファイルを連結させたり表示したりするのに用いる。は連結することを意味する「concatenate」の略である。

仕様 Single UNIX Specificationでは、は引数で指定されたファイルの内容を指定された順番に標準出力に書き出すと規定している。 ファイル名のリストに「」が含まれていた場合、はリストのその時点で標準入力からデータを読み込む。ファイル名が指定されなかった場合もは標準入力から読み込む。

拡張 BSD版のとGNU版のはどちらも次のオプションを指定できる。 (GNUではとも):空白でない行の数を数え、行番号を付加する。 (GNUではとも):すべての行の数を数え、行番号を付加する。 (GNUではとも):隣接する空白行を除く。 (GNUではとも):表示できない文字も表示する。ただしタブと改行文字を除く。 (BSD)または(GNU):と同じだが、タブをと表示する。 (BSD)または(GNU):と同じだが、改行文字をと表示する。

実例

コマンド コマンドの説明 file1の内容を表示する file1およびfile2の内容を連結し、端末上にその結果を表示する file1およびfile2の内容を連結し、ファイルfile3にその結果を出力する 新規ファイルnewfileを作成もしくは上書きして、入力したい内容を打ち込み、CTRL+Dコマンドで終了する。入力された内容は新規ファイルに書き込まれる。 file1およびfile2の内容を連結し、ファイルfile3にその結果を行番号とともに出力する file1の内容をfile2にコピーする file1の内容をfile2に追加する file1およびfile2およびfile3の内容を連結し、連結された行を頭文字の順に並べ替え、その内容を新規ファイルに書き出す。 file1およびfile2の内容を連結し、lessコマンドを実行する

UNIXの文化 ジャーゴンファイルでの定義 ジャーゴンファイルのバージョン4.3.3には、の定義として次のように記されている。 ファイル全体をスクリーンまたは流し台か何かにとめどなく吐き出すこと(類:)。 転じて、膨大なデータを注意深く目を通すこともせずに準備ができていない目標に向かって吐き捨てること。使用例:馬鹿げている。UNIX以外の場所で使われることは稀である。参照:、BLT。

UNIXファンの間では、はユーザインターフェースデザインのよい手本とされている。はファイルの内容に空白やヘッダのような余分なものを一切付加せずに提供してくれるためであり、またテキストファイルのみならずどんな種類のデータに対しても正しく動作するためだ。

UNIX嫌いの間では、は悪いユーザインターフェースデザインの正統な手本とされている。それはこの悲しいまでにわかりづらい名称のためである。は、ファイルの連結(concatenate)に使うよりもむしろ標準出力への出力に使われることの方がはるかに多い。後者の使用法に対するという名称は、ちょうどLISPののように非直感的である。

catコマンドとUUOC UUOCは「無駄なcatの使用(Useless Use of cat)」の略である。 Usenetのcomp.unix.shellに投稿された賢者の観察によると, catの役割はファイルを連結することである。もしファイルが1つしかないのであれば、何かと連結しようとするのは時間と手間の無駄でしかない 。 にもかかわらず、次のような使用をよく見かける。

代わりに次のように書けば簡単である。

次も同じであるが、より古典的な方法である。

1995年からUUOCの授賞が、主にRandal L. Schwartzによって時々行われている。イギリスのハッカーたちの間では、UUOCに挙げられた例を修正することはmoggyが猫(cat)を表すことからdemoggificationと呼ばれる。

関連項目 GNU Core Utilities フィルタ (ソフトウェア)

外部リンク

cat Single UNIX Specificationによる規定(英語) cat man page(GNU coreutils、英語) Useless Use of Cat Award(英語)