[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

7. 特殊ファイルの形式

この章は,特殊な形式のファイルを作成する方法(と,特殊なファイル形式の 一つのディレクトリを削除するrmdir方法)を記述します.

Unixのようなオペレーティングシステムには,特殊なファイル形式は,他より 著しく少ないのですが,すべて通常のファイルと差のないバ イトストリームのみとして扱うことはできません.例えば,ファイルを作成し たり削除したりするとき,システムはこの情報を記録する必要があり,それは ディレクトリ--特殊な形式のファイル--で行います.ディレクトリを 通常のファイルとして読み込むこともできますが,気になる場合は,システム がその仕事を行うために,ファイルのバイト上で構造,特定の順序を強制する 必要があります.このためそれは"特殊な"形式のファイルとなります.

ディレクトリ以外では,特殊なファイル形式は,名前付きパイプ(FIFO),シンボ リックリンク,ソケット,そして特殊ファイルと呼ばれるものを含みます.


7.1 ln: ファイル間にリンクを作成

lnは,ファイル間のリンクを作成します.デフォルトで,それはハード リンクを作成します.`-s'を用いると,シンボリック(またはソフト) リンクを作成します.

 
ln [option]… target [linkname]
ln [option]… targetdirectory

ハードリンクは,既存のファイルの別名です.リンクとオリジナルは区別 できません.技術的には,それらは同じinodeを共有し,inodeはファイルに関す る必要な情報をすべて含みます--実際,inodeがファイルであると言っ ても間違いではありません.既存のすべての実装では,ディレクトリにハードリ ンクを作成できず,ハードリンクはファイルシステム間をまたぐことができませ ん.(しかしながら,これらの制限はPOSIXと一致しません.)

一方,シンボリックリンク (短く言うとsymlinks)は,リンクファ イルが実際には名前の異なるファイルを参照する特殊なファイル形式です(すべ てのカーネルがサポートしているわけではありません.System V release 3(と それより古いもの)はsymlinkがありません).ほとんどの処理(開く,読み込む, 書き出す等)は,シンボリックリンクを通じて行われ,カーネルは自動的にリン クをdereferencesし,リンク先を処理します.しかし,リンク先ではなく リンクファイル自身に作用する(例えば削除)処理もあります.See (library)Symbolic Links section `Symbolic Links' in GNU C library.

プログラムは以下のオプションも受け入れます.共通のオプション,も参照 してください.

` -b'
` --backup'

上書きされたり削除されたりするそれぞれのファイルのバックアップを作成しま す.See section バックアップオプション.

` -d'
` -F'
` --directory'

スーパーユーザがディレクトリのハードリンクを作成できるようにします.

` -f'
` --force'

既存の目的ファイルを削除します.

` -i'
` --interactive'

既存目的ファイルを削除するかどうか,プロンプトを表示します.

` -n'
` --no-dereference'

明示的な,ディレクトリへのシンボリックリンクとなる目標が与えられたとき, 目標を通常のファイルとして扱います.

目標が(シンボリックリンクではない)実際のディレクトリのとき,不明瞭なもの はありません.しかし,指定された目標がディレクトリへのシンボリックリンク の時,ユーザの要求の扱い方は,二通りあります.lnは,目標を通常の ディレクトリとして扱い,それに対するリンクを作成することができます.一方, 目標を非ディレクトリ--シンボリックリンク--として見ることもできます.そ の場合,lnは,新しいリンクを作成する前に,そのシンボリックリンク を削除またはバックアップする必要があります.デフォルトでは,ディレクトリ へのシンボリックリンクである目標を,ディレクトリと同様に扱います.

` -s'
` --symbolic'

ハードリンクの代わりにシンボリックリンクを作成します.このオプションは, シンボリックリンクをサポートしていないシステムでは,単にエラーメッセージ を生成します.

` -S suffix'
` --suffix=suffix'

`-b'を用いて生成されるそれぞれのバックアップファイルにsuffix を追加します.See section バックアップオプション.

` -v'
` --verbose'

リンクする前にそれぞれのファイル名を出力します.

` -V method'
` --version-control=method'

`-b'で作成されるバックアップの形式を変更します.method引数は, `numbered' (または`t'),`existing' (または`nil'),ま たは,`never' (または`simple')が可能です.See section バックアップオプション.

以下は例です.

 
ln -s /some/name  # creates link ./name pointing to /some/name
ln -s /some/name myname  # creates link ./myname pointing to /some/name
ln -s a b ..      # creates links ../a and ../b pointing to ./a and ./b

7.2 mkdir: ディレクトリの作成

mkdirは指定された名前でディレクトリを作成します.構文は以下のとお りです.

 
mkdir [option]… name

nameが既存のディレクトリ場合,エラーではありません.mkdirは 単に処理します.しかし,nameが既存のファイルで,ディレクトリではな い場合,mkdirは文句を言います.

プログラムは以下のオプションも受け入れます.共通のオプション,も参照 してください.

` -m mode'
` --mode=mode'

作成されるディレクトリのモードを,chmodで設定する抽象的な modeで設定し,(読み書きと実行を全員に許可する)0777から目的のポイン トに対するumaskのビットセットを引いたものを使用します.See section ファイルのパーミッション.

` -p'
` --parents'

それぞれの引数に対し,足りない親ディレクトリを作成します.親ディレクトリ のモードは`u+wx'で編集されたumaskに設定します.既存のディレクトリに 対する引数は無視します.

` --verbose'

作成されるそれぞれのディレクトリに対しメッセージを出力します.これは `--parents'とともに用いると最も便利です.


7.3 mkfifo: FIFO(名前付きパイプ)の作成

mkfifoはFIFO(名前付きパイプとも呼ばれる)を指定された名前で作成します.構文は以下のとおりです.

 
mkfifo [option] name

FIFOは,通信に依存するプロセスを可能にする特殊なファイル形式です. 一つのプロセスは書き込みで,もう一つは読み込みでFIFOを開き,データは,シェ ルやその他の通常の名前なしパイプのように流れます.

プログラムは以下のオプションも受け入れます.共通のオプション,も参照 してください.

` -m mode'
` --mode=mode'

作成されるFIFOのモードを,chmodで設定する抽象的なmodeで設定 し,(読み込みと書き出しを全員に許可する)0666から目的のポイントに対する umaskのビットセットを引いたものを使用します.See section ファイルのパーミッション.


7.4 mknod: ブロックや文字の特殊ファイルの作成

mknodは,FIFO,キャラクタ特殊ファイルや,ブロック特殊ファイルを指 定された名前で作成します.構文は以下のとおりです.

 
mknod [option]… name type [major minor]

上記の"特殊ファイル形式"と異なり,特殊ファイルという用語は,Unix 上で技術的な意味があります.それはデータを生成または受信するものです.こ れは通常,ハードウェアの物理的な部分に対応します.(これらのファイルは通 常システム設定時に作成されます.)mknodコマンドは,この形式のファ イルを作成するものです.そのようなデバイスは,一度に一文字または一度に一 "ブロック"(多くの文字)読み込むことができ,そのため,ブロック特殊 ファイルとキャラクタ特殊ファイルがあると言っているのです.

nameの後の引数は作成するファイルの形式を指定します.

` p'

FIFOに対応します.

` b'

ブロック特殊ファイルに対応します.

` c'

キャラクタ特殊ファイルに対応します.

ブロックやキャラクタの特殊ファイルを作成しているとき,メジャーとマイナー デバイス番号をファイル形式の後に与える必要があります.

プログラムは以下のオプションも受け入れます.共通のオプション,も参照 してください.

` -m mode'
` --mode=mode'

作成されるファイルのモードを,chmodで設定する抽象的なmodeで 設定し,0666から目的のポイントに対するumaskのビットセットを引いたものを 使用します.See section ファイルのパーミッション.


7.5 rmdir: 空のディレクトリの削除

rmdirは空のディレクトリを削除します.構文は以下のとおりです.

 
rmdir [option]… directory

directory引数が既存の空のディレクトリを参照していない場合,エラー となります.

プログラムは以下のオプションも受け入れます.共通のオプション,も参照 してください.

` --ignore-fail-on-non-empty'

ディレクトリが空でないための単独の失敗を無視します.

` -p'
` --parents'

引数のdirectoryが削除された後に空になる親ディレクトリを削除します.

` --verbose'

削除に成功したそれぞれの診断を与えます.directoryは削除されます.

空でないディレクトリの(再帰的な)削除方法は,See section rm: ファイルやディレクトリの削除.


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Akihiro Sagawa on June, 15 2005 using texi2html 1.70.