cat (UNIX)

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

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

仕様[編集]

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

拡張[編集]

BSD版のcatとGNU版のcatはどちらも次のオプションを指定できる。

  • -b(GNUでは--number-nonblankとも):空白でない行の数を数え、行番号を付加する。
  • -n(GNUでは--numberとも):すべての行の数を数え、行番号を付加する。
  • -s(GNUでは--squeeze-blankとも):隣接する空白行を除く。
  • -v(GNUでは--show-nonprintingとも):表示できない文字も表示する。ただしタブと改行文字を除く。
  • -t(BSD)または-T(GNU):-vと同じだが、タブを^Iと表示する。
  • -e(BSD)または-E(GNU):-vと同じだが、改行文字を$と表示する。

UNIXの文化[編集]

ジャーゴンファイルでの定義[編集]

ジャーゴンファイルのバージョン4.3.3には、catの定義として次のように記されている[1]

  1. ファイル全体をスクリーンまたは流し台か何かにとめどなく吐き出すこと(類:blast)。
  2. 転じて、膨大なデータを注意深く目を通すこともせずに準備ができていない目標に向かって吐き捨てること。使用例:馬鹿げている。UNIX以外の場所で使われることは稀である。参照:ddBLT

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

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

catとUUOC[編集]

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

cat file | some_command とその引数 ...

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

<file some_command とその引数 ...

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

some_command とその引数 ... <file

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

関連項目[編集]

外部リンク[編集]