UNIXファイルタイプ

UNIXファイルタイプ（UNIX file types）とは、UNIXが識別するファイルの種別のことであり、POSIXに規定される標準のUNIXファイルタイプは、"regular"（一般）、"directory"（ディレクトリ）、"symbolic link"（シンボリックリンク）、"FIFO special"（名前付きパイプ）、"block special"（ブロックデバイスファイル）、"character special"（キャラクタデバイスファイル）、"socket"（ソケット）の7種類である。OSの実装によっては、これよりも多くのファイルタイプが使用できる（Solarisのなど）。ファイルタイプはcodice_1コマンドで識別できる。このコマンドは、ファイルパーミッションフィールドの1文字目にファイルタイプを表示する。
通常(regular)のファイルの場合、UNIXのシステムではファイルの内部構造を解釈しないため、その構造と解釈はそれを使用するソフトウェアに完全に依存する。ただし、codice_2コマンドを使用して、含まれるデータのタイプを判別することができる。
モード文字列.
codice_1コマンドの実行例を以下に示す。
 drwxr-xr-x 2 root root 0 Jan 1 1970 home
codice_1コマンドで出力されるlsコマンドの長い形式の出力形式はPOSIXで規定されている。最初のフィールドはファイルモード文字列(file mode string)と呼ばれ、その1文字目はファイルタイプを表す。残りの文字列はファイルパーミッションを表す。
従って、上記の例ではファイルモード文字列はcodice_5であり、ファイルタイプはcodice_6（ディレクトリ）、ファイルパーミッションはcodice_7である。
内部的には、codice_8は、ファイルに関連するcodice_9構造を取得して、codice_10フィールドを人が読める形に変換する。codice_10は、実際には2つの部分を持つビットフィールドであり、ファイルタイプはcodice_12マスク内に保存されている。codice_13（マスクcodice_12のcodice_15値）のようないくつかのマクロでテストして、ファイルタイプフラグを取得する。
実装の例.
GNU coreutilsバージョンのcodice_8は、モード文字列の取得にGNU Cライブラリ（Gnulib）の関数であるcodice_17の呼び出しを使用する。
FreeBSDはよりシンプルなアプローチを使用するhが、使用できるファイルタイプの数は少なくなる。
一般ファイル.
一般ファイルは、モード文字列の1文字目にcodice_18（ハイフン）が表示される。
 $ ls -l /etc/passwd
 -rw-r--r-- ... /etc/passwd
ディレクトリ.
ディレクトリは、最も一般的な特殊ファイルである。ディレクトリファイルのレイアウトは、使用するファイルシステムによって定義される。UNIXではネイティブと非ネイティブの両方のファイルシステムが利用できるため、ディレクトリファイルレイアウトは1つではない。
ディレクトリは、モード文字列の1文字目にcodice_6が表示される。
 $ ls -dl /
 drwxr-xr-x 26 root root 4096 Sep 22 09:29 /
 $ stat /
 File: "/"
 Size: 4096 Blocks: 8 IO Block: 4096 directory
 Device: 802h/2050d Inode: 128 Links: 26
 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
シンボリックリンク.
シンボリックリンクは他のファイルへの参照を示す特殊ファイルである。シンボリックリンクは、参照先ファイルのパスのテキスト表現として保存される。パスは相対パスであっても良く、また、参照先のファイルが必ずしも存在するとは限らない。
シンボリックリンクは、モード文字列の1文字目にcodice_20（小文字のエル）が表示される。
 lrwxrwxrwx ... termcap -&gt; /usr/share/misc/termcap
 lrwxrwxrwx ... S03xinetd -&gt; ../init.d/xinetd
名前付きパイプ(FIFO).
UNIXの強みの1つにプロセス間通信があり、その機能の1つにパイプがある。これは、あるプロセスの出力を別のプロセスの入力とする機能である。同じユーザによって開始された同じ親プロセス空間に両方のプロセスが存在する場合は問題ないが、プロセスが異なるユーザ名と権限で実行されている場合などには名前付きパイプ（FIFOともいう）を使用する必要がある。
名前付きパイプは、ファイルシステムのどこにでも存在することができる特殊ファイルである。codice_21コマンドを使用して、codice_22のようにすることで作成することができる。
名前付きパイプはは、モード文字列の1文字目にcodice_23が表示される。
 prw-rw---- ... mypipe
ソケット.
ソケット（UNIXドメインソケット）は、プロセス間通信に使用される特別ファイルであり、2つのプロセス間の通信を可能にする。プロセスはUNIXドメインソケットを介して、データの送信だけでなく、codice_24 and codice_25システムコールを使用してファイル記述子も送信することができる。
一方向のデータフローのみしか使用できない名前付きパイプとは異なり、ソケットは完全に双方向通信である。
名前付きパイプは、モード文字列の1文字目にcodice_26が表示される。
 srwxrwxrwx /tmp/.X11-unix/X0
デバイスファイル.
UNIXでは、ほとんど全ての物が「ファイル」として処理され、ファイルシステム内のいずれかの場所に格納されている。ハードディスクドライブなどのハードウェアデバイスも同様である。例外はネットワークデバイスであり、これはファイルシステムに表示されず、個別に処理される。
デバイスファイルは、デバイスにアクセス権を適用し、ファイルに対する操作を適切なデバイスドライバに指示するために使用される。
UNIXは、キャラクタデバイスとブロックデバイスを区別する。その区別はおおよそ次の通りである。
例えば、ディスクパーティションには、パーティション上のブロックへのバッファなしランダムアクセスを提供するキャラクタデバイスと、パーティション上のブロックへのバッファ付きランダムアクセスを提供するブロックデバイスの両方がある。
キャラクタデバイスは、モード文字列の1文字目にcodice_27が表示される。ブロックデバイスは、モード文字列の1文字目にcodice_28が表示される。
 crw------- ... /dev/null
 brw-rw---- ... /dev/sda
Doors.
Doorsは、クライアントとサーバ間のプロセス間通信用の特別ファイルであり、現在Solarisでのみ実装されている。
Doorsは、モード文字列の1文字目にcodice_29が表示される。
 Dr--r--r-- ... name_service_door