unixspec @ ウィキ
cat
最終更新:
Bot(ページ名リンク)
-
view
名前
cat - ファイルの結合と表示
概要
cat [-u][file ...]
説明
catユーティリティは、引数として指定されたファイルを読み込み、同一の内容を標準出力に書き込む。
オプション
catユーティリティは、Base Definitions volume of IEEE Std 1003.1-2001, Section 12.2, Utility Syntax Guidelinesに従う。
次に挙げるオプションがサポートされている。
-u入力ファイルからバイト列が読み込まれるたびに、すぐに標準出力に書き込む。
オペランド
次に挙げるオペランドがサポートされている。
file入力ファイルへのパス名。もしこの引数が存在しないときには、標準入力が使われる。この引数が'-'の時には、catユーティリティはその位置に標準入力から読み込まれた内容を標準出力に書きこむ。もしもcatユーティリティが標準入力を一度閉じて開き直す事が出来なくても、複数個指定された'-'パラメータは受け入れられる。
標準入力
標準入力は、file引数が存在せず、又は'-'が引数として指定された時のみに使用される。「入力ファイル」を参照せよ。
入力ファイル
どんな種類の入力ファイルも指定できる。
環境変数
次に挙げる環境変数が、catの実行時に影響を及ぼす。
LANGセットされていない、又は空である国際化変数(Internationalization Variables)のデフォルト値を規定する(ローケルの分類を決める値として使われる国際化変数を知るためには、Base Definitions volume of IEEE Std 1003.1-2001, Section 8.2, Internationalization Variablesを見よ)。LC_ALL空でない文字列がセットされていたときには、他の全ての国際化変数の値としてこの値を用いる。LC_CTYPEテキストデータのバイトの並びを文字列として解釈するためのロケールを決定する。LC_MESSAGES標準エラー出力に書かれる診断メッセージの内容と形式に影響を与える為に用いられるロケールを決定する。NLSPATHLC_MESSAGESの処理の際に、メッセージの分類の位置を決める。
非同期のイベント
デフォルト
標準出力
標準出力は入力ファイルから読み込まれたバイト列を格納する。その他のものは標準出力には書かれない。
標準エラー出力
標準エラー出力は診断メッセージの為だけに用いられる。
出力ファイル
無し
補足説明
無し
終了ステータス
次に挙げる終了ステータスが返される。
0全ての入力ファイルは正常に出力された。0
エラーが発生した。
帰結
デフォルト
次に続くセクションは情報を付加する。
使用方法
使用方法
-uオプションはFIFOからプロトタイピングかつノンブロッキングに読み取る際に価値を持つ。この目的は次に挙げるコマンド列をサポートすることにある。mkfifo foo
cat -u foo > /dev/tty13 &
cat -u > fooデフォルトケースでは、標準出力がバッファされているかどうかは未定義である。これは標準出力がターミナルに関連付けられている時に、バッファリングが出力を遅れさせる点で重要である。配置された-uオプションはバッファされない入出力の可用性を保証する。catユーティリティの-uオプションが未定義の際に出力をバッファするかどうかは処理系定義である。慣例では、-uオプションはSystem Interfaces volume of IEEE Std 1003.1-2001に定義されているsetvbuf()関数を用いて実装される。
例
次に挙げるコマンドはcat myfilemyfileの内容を標準出力に書く。
次に挙げるコマンドはcat doc1 doc2 > doc.alldoc1とdoc2を結合して、その結果を標準出力に書く。
シェル言語の出力リダイレクションの動作機構により、次のようなコマンドによってcat doc doc.end > docdocのオリジナルデータは消失する。
次のコマンドはcat start - middle - end > file標準入力がターミナルの時、catの一度の呼び出しで、ターミナルから入力された任意の塊を2つ得る。注意:しかしながら、もし標準入力が正規のファイルである時、これは次のコマンドと同一となる。cat start - middle /dev/null end > file何故ならば、ファイル内の全ての内容は最初に'-'がfileオペランドとして使い尽くされておリ、2度目に'-'が参照されたときに、ファイル終端状態(end-of-file condition)が直ちに検出される為である。
理由付け
catユーティリティの歴史的なバージョンは-e、-t、及び-vオプションを含み、行末、タブ、不可視文字をそれぞれ見えるようにした。初期の開発者は、彼らが「何が見えるようになるべきか」に関してコントロール出来なくなる程ゴテゴテに飾り建てした上に、似たようなものが次のようなコマンドで手に入る為に、これらのオプションを削除した。sed -n -e 's/$/$/' -e | pathname-sオプションはBSD及びSystem V上の異なった機能と一致したために削除した。BSDの空行を削除する-sオプションは、次に挙げるようなシェルスクリプトによって果たされる。sed -n '
# Write non-empty lines.
/./ {p
d
}# Write a single empty line, then look for more empty lines.
/^$/ p
# Get next line, discard the held <newline> (empty line),
# and look for more empty lines.
:Empty
/^$/ {N
s/.//
b Empty
}# Write the non-empty line before going back to search
# for the first in a set of empty lines.p'System Vのエラーメッセージを静かにさせる-sオプションは、標準エラー出力をリダイレクトする事によって果たされる。注意したいのは、catの使用方法に関するBSDのドキュメント上の"blank line"はPOSIXの"empty line"と同じ意味であるということである。行が<newline>のみから成るという事だ。
BSDの-nオプションはprユーティリティの-nオプションによく似た機能だった為、削除された。
未来への方向性
無し
参照