(57)【特許請求の範囲】
【請求項１】
ファイル・システムにおいてファイルに対する階層的ハードリンクをグラフィカルに表示する方法であって、
（ａ）ファイルに対する複数のハードリンクを特定するステップを有し、
ハードリンクは、ファイルに対するリンクであって、当該ファイルを階層的ネームスペースに直接に写像するリンクから成り、
前記ステップ（ａ）が、
（ａ１）前記ファイルから前記ファイルに対する前記複数のハードリンクのリスト（以下「ハードリンク・リスト」と表記）まで、前記ファイル内に保持され且つ前記ハードリンク・リストを指し示すマスタ・ハードリンク・ポインタを辿るステップと、
（ａ２）前記ハードリンク・リストを走査して前記ファイルに対する前記複数のハードリンクを特定するステップを含み、
（ｂ）前記複数のハードリンクと前記ファイルとの間の関係を表示するステップを有し、
前記ステップ（ｂ）が、
（ｂ１）前記ファイルを表し且つ前記ファイルに対する前記複数のハードリンクの個数を表す、少なくとも１つのアイコンを表示するステップと、
（ｂ２）前記ファイルに対する各ハードリンクを表す特有のアイコンを表示するステップを含み、
（ｃ）「すべてリネーム」ボタンを介して、前記ファイルに対する前記複数のハードリンクをリネームするステップを有し、
前記ステップ（ｃ）が、
（ｃ１）ユーザから新しいファイル名を受け取るステップと、
（ｃ２）前記ファイルから前記ハードリンク・リストまで、前記ファイル内に保持され且つ前記ハードリンク・リストを指し示すマスタ・ハードリンク・ポインタを辿るステップと、
（ｃ３）前記ハードリンク・リスト内の前記複数のハードリンクに前記新しい名前を割り当てるステップを含み、
（ｄ）「別名一覧」ボタン又は「別名表示」ボタンを介して、前記ファイルに対する前記複数のハードリンクのパス名を表示するステップを有し、
前記ステップ（ｄ）が、
（ｄ１）前記ファイルから前記ハードリンク・リストまで、前記ファイル内に保持され且つ前記ハードリンク・リストを指し示すマスタ・ハードリンク・ポインタを辿るステップと、
（ｄ２）前記ハードリンク・リスト内の各ハードリンクについて、当該ハードリンクから名前を検索するステップと、
（ｄ３）前記ハードリンク・リスト内の各ハードリンクについて、当該ハードリンクのパスを検索するために、前記階層的ネーム・スペースをそのルートまで走査するステップを含み、
（ｅ）「すべて削除」ボタンを介して、前記複数のハードリンクを有する前記ファイルを削除するステップを有し、
前記ステップ（ｅ）が、
（ｅ１）前記ファイルから前記ハードリンク・リストまで、前記ファイル内に保持され且つ前記ハードリンク・リストを指し示すマスタ・ハードリンク・ポインタを辿るステップと、
（ｅ２）前記ハードリンク・リスト内の前記複数のハードリンクのすべてを削除するステップを含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の分野はデータ処理であり、さらに詳細には、ファイル・システム内のファイルに対する階層的ハードリンクをグラフィカルに表示する方法である。
【背景技術】
【０００２】
１９４８年のＥＤＶＡＣコンピュータ・システムの開発が、コンピュータ時代の始まりとしてよく引用される。その時以来、コンピュータ・システムは、非常に複雑な装置に発展してきた。今日のコンピュータは、ＥＤＶＡＣのような初期のシステムと比較して、はるかに高性能である。通常、コンピュータ・システムは、ハードウェアおよびソフトウェア・コンポーネントの組合せ、アプリケーション・プログラム、オペレーティング・システム、プロセッサ、バス、メモリ、入出力装置などを含む。半導体プロセスおよびコンピュータ・アーキテクチャの進歩がコンピュータの高性能化をますます推し進めるにつれて、ハードウェアのより高い性能を駆使するために、より洗練されたコンピュータ・ソフトウェアが発展し、その結果、ほんの２、３年前に比べても、今日のコンピュータ・システムは、はるかに強力なものとなっている。
【０００３】
コンピュータは、オペレーティング・システムと呼ばれるソフトウェアの基礎階層を有し、このオペレーティング・システムは、ファイルを格納し、かつ組織化し、アプリケーションがコンピュータ資源にアクセスするために、このオペレーティング・システムを利用する。オペレーティング・システムでは、ファイルのようなオブジェクトが命名され、格納され、組織化される全体的な構造が、ファイル・システムと呼ばれる。ファイル・システムは、ファイル・システム内に格納されたオブジェクトにアクセスするために用いられる、パス名の集合から成るネーム・スペースにおいて組織化されることが多い。パス名は、ファイルを特定するシンボルおよび名前の列である。ネーム・スペース内のあらゆるファイルは、ファイル名と呼ばれる名前を有するため、最も簡単な種類のパス名は、ファイル名だけから成る。ディレクトリ内のファイルにアクセスするために、パス名は、作業ディレクトリまたはルート・ディレクトリから始まってファイルに到達する、ファイルへのパスを特定する。様々なオペレーティング・システムは、パス名を指定する異なった規則を有する。例えば、ＤＯＳシステムでは、ルート・ディレクトリは「＼」と命名され、各サブディレクトリは、バックスラッシュを付加することにより区切られる。ＵＮＩＸ（Ｒ）では、ルート・ディレクトリは「／」と命名され、各サブディレクトリのあとにスラッシュが続いている。マッキントッシュ（Ｒ）環境では、ディレクトリは、コロンにより区切られる。これらのパス名は、オブジェクトをネーム・スペースに「写像する」、または「リンクする」。オブジェクトをネーム・スペースに直接に写像するリンクは、「ハードリンク」と呼ばれる。
【０００４】
今日のオペレーティング・システムは、ファイル・システム内のファイルおよびディレクトリを参照して、操作するために、グラフィカル・ユーザ・インターフェース（ＧＵＩ）を提供する。通常、従来のＧＵＩは、ファイル・システムのネーム・スペースをユーザに示すため、ファイル・システムのオブジェクトを、コンテナ・オブジェクトまたはデータ・オブジェクトとして分類することをその手段としている。ディレクトリまたはフォルダのようなコンテナ・オブジェクトは、他のコンテナ・オブジェクトまたはディレクトリを含むことができ、通常、ファイル・システム用のＧＵＩの左側に配設されている。ファイルに対するハードリンクのようなデータ・オブジェクトは、他のオブジェクトを含まず、通常、ファイル・システム用のＧＵＩの右側に配設されている。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
通常、ハードリンクのようなデータ・オブジェクトは、これらのデータ・オブジェクトが表すファイル・システム内の下位ファイル（ｕｎｄｅｒｌｙｉｎｇ  ｆｉｌｅ）と１対１の関係を有する。しかしながら、ファイル・システム内の単一のファイルに対して複数のハードリンクがあるとき、従来のＧＵＩは、これらのハードリンクを、ファイルに対する他のハードリンクが存在することを示さないデータ・オブジェクトとして、ファイル・システムＧＵＩの右側に表示する。従来のファイル・システムＧＵＩでは、複数のハードリンクを有するファイルと、単一のハードリンクを有するファイルとの間に差異が無いために、混乱を生じ、複数のハードリンクを有するファイルの管理を困難にさせる。
【０００６】
例えば、ファイル・システムからファイルを除去しようとするユーザは、ファイルに対する単一のハードリンクであるように見えるものを削除すればよい。ファイルが、実際には、ネーム・スペースの全体にわたって複数のハードリンクを有するとき、ユーザは、ファイル・システムから下位ファイルを除去する代わりに、ハードリンクの１つを除去しただけになるであろう。ユーザが従来のファイル・システムＧＵＩを用いてファイル・システムからファイルを除去するためには、ユーザは、手作業でファイル・システムの全ネーム・スペースを検索するとともに、そのファイルに関連するすべてのハードリンクを手作業で削除しなければならない。ファイル・システムＧＵＩ内の複数のハードリンクを有するファイルを効率的に参照し、操作することができないと、ユーザにとって時間の浪費につながる。
【課題を解決するための手段】
【０００７】
本発明は、ファイル・システム内のファイルに対する階層的ハードリンクをグラフィカルに表示する方法を提供する。この方法は、ファイルに対する複数のハードリンクを特定するステップと、これらのハードリンクとファイルの間の関係を表示するステップを含む。また、いくつかの実施例に含まれているハードリンクは、ファイルをネーム・スペースに直接に写像する、当該ファイルに対するリンクから成る。また、この方法は、ファイルに対するハードリンクのリスト（以下「ハードリンク・リスト」と称する）を提供し、ファイル内にハードリンク・リストに対するポインタを提供するステップを含む。また、いくつかの実施例は、複数のハードリンクを有するファイルを削除するステップと、ファイルに対するハードリンクをリネームするステップと、ファイルに対するハードリンクのパス名を表示するステップを含む。
【０００８】
また、複数のハードリンクとファイルの間の関係を表示するステップは、ファイルを表し、かつファイルに対するハードリンクの個数を表す少なくとも１つのアイコンを表示するステップと、複数のハードリンクを有するファイルに対する各ハードリンクを表す特有のアイコンを表示するステップを含んでもよい。
【０００９】
また、ファイルに対する複数のハードリンクを特定するステップは、階層的ネーム・スペースを走査するステップと、各ハードリンクについて、そのハードリンクが他のハードリンクを指し示すかどうかを判定するステップと、複数のハードリンクを有するファイルからファイルに対するハードリンク・リストまでポインタを辿るステップと、ハードリンク・リストを走査するステップを含んでもよい。
【００１０】
また、複数のハードリンクを有するファイルを削除するステップは、複数のハードリンクを有するファイルからファイルに対するハードリンク・リストまでポインタを辿るステップと、ハードリンク・リスト内のすべてのハードリンクを削除するステップを含んでもよい。
【００１１】
また、ファイルに対するハードリンクをリネームするステップは、ユーザから新しいファイル名を受け取るステップと、複数のハードリンクを有するファイルからファイルに対するハードリンク・リストまでポインタを辿るステップと、当該リスト内のハードリンクに新しい名前を割り当てるステップを含んでもよい。
【００１２】
また、ファイルに対するハードリンクのパス名を表示するステップは、複数のハードリンクを有するファイルからファイルに対するハードリンク・リストまでポインタを辿るステップと、ハードリンク・リスト内の各ハードリンクについて、そのハードリンクから名前を検索するステップと、ハードリンク・リスト内の各ハードリンクについて、そのハードリンクのパスを検索するために、階層的ネーム・スペースをそのルートまで走査するステップを含んでもよい。
【００１３】
本発明の、前述および他の目的、特徴、および利点は、添付図面で示されたような本発明の例示的な実施例についての下記のさらに具体的な説明から明らかとなるであろう。添付図面では、全体を通して類似の参照番号は本発明の例示的な実施例の類似の部分を表す。
【発明を実施するための最良の形態】
【００１４】
本発明は、ファイル・システム内のファイルに対する階層的ハードリンクをグラフィカルに表示する方法に関して、本明細書においてその大部分が説明される。しかしながら、当業者は、開示された方法に従って作動する好適なプログラミング手段を含む任意のコンピュータ・システムが、本発明の範囲内にあることを認識するであろう。好適なプログラミング手段は、本発明の方法のステップを実行するようにコンピュータ・システムに指示する任意の手段を含み、この任意の手段は、例えば、処理装置、およびメモリと結合された演算論理回路から成る、メモリに格納する能力を有するシステムを含み、このメモリは、データ、およびプログラム命令、処理装置により実行するための本発明の方法のプログラミングされたステップを格納するように構成された電子回路を含む。
【００１５】
また、任意の好適なデータ処理システムと共に使用するために、フレキシブル・ディスク、または他の記録媒体のようなコンピュータ・プログラムにおいて、本発明を具現化できる。磁気媒体、光学媒体、または他の好適な記憶媒体を含む、機械可読情報用の任意の記録媒体を用いて、コンピュータ・プログラムの実施例を実装することができる。好適なプログラミング手段を有する任意のコンピュータ・システムが、プログラムで具現されるような本発明の方法のステップを実行できるであろうことを、当業者は直ちに認識するであろう。本明細書で説明された例示的な実施例の大部分はまた、コンピュータ・ハードウェアにインストールされて、コンピュータ・ハードウェア上で実行するソフトウェアに関するものではあるが、ファームウェアとして、またはハードウェアとして実装された他の実施例が本発明の範囲内にあることを、当業者は直ちに認識するであろう。
【００１６】
図１から順に添付図面を参照しながら、本発明に従った、ファイル・システム内のファイルに対する階層的ハードリンクをグラフィカルに表示する方法について説明する。図１は、ファイル・システム内のファイルに対する階層的ハードリンクをグラフィカルに表示するために有用なシステムを例示するネットワーク図である。図１のシステムの各装置１０８、１１２、１０４、１１０、１０２、１２６、および１０６は、ファイル・システム内のファイルに対する階層的ハードリンクをグラフィカルに表示する能力を有し、その手段として、ファイルに対する複数のハードリンクを特定して、複数のハードリンクとファイルの間の関係を表示する方法を採用している。
【００１７】
図１のシステムは、広域ネットワーク（ＷＡＮ）１０１、およびローカル・エリア・ネットワーク（ＬＡＮ）１０３を含む。図１のアーキテクチャのネットワーク結合態様は、あくまで説明のために示したに過ぎず、限定しようとするものではない。実際には、ファイル・システム内のファイルに対する階層的ハードリンクをグラフィカルに表示するためのシステムは、ＬＡＮ、ＷＡＮ、イントラネット、インターネット、ウェブ、ワールド・ワイド・ウェブ自体、または当業者が想起するであろう他の接続として接続されうる。このようなネットワークは、全体的なデータ処理システム内で共に接続された様々な装置およびコンピュータ間のデータ通信接続を提供するために用いることができる媒体である。
【００１８】
図１のサーバ１０６は、ＬＡＮ １０３とＷＡＮ １０１の間のゲートウェイ、ルータ、またはブリッジを実装する。ＰＤＡ １１２、ワークステーション１０４、携帯電話１１０、およびパーソナル・コンピュータ１０８を含む数個の例示的な装置が、ＷＡＮ １０１に接続されている。ネットワーク対応の携帯電話１１０は、無線リンク１１６を介してＷＡＮ １０１に接続し、ＰＤＡ １１２は、無線リンク１１４を介してＷＡＮ １０１に接続する。パーソナル・コンピュータ１０８は、有線接続１２０を介してＷＡＮ １０１に接続し、ワークステーション１０４は、有線接続１２２を介してＷＡＮ １０１に接続する。ラップトップ１２６は、無線リンク１１８を介してＬＡＮ １０３に接続し、パーソナル・コンピュータ１０２は、有線接続１２４を介してＬＡＮ １０３に接続する。
【００１９】
図１の各装置１０８、１１２、１０４、１１０、１２６、１０６、および１０２は、プロセッサ、およびデータ送受信のためにプロセッサと接続されたメモリを含む。図１の各装置のメモリは、その中に、ファイル・システム、およびグラフィカル・ハードリンク・ディスプレイ・モジュールを構成するプログラム命令を配設する。グラフィカル・ハードリンク・ディスプレイ・モジュールは、一般に、ファイル・システム内のファイルに対する階層的ハードリンクをグラフィカルに表示する能力を有し、その手段として、ファイルに対する複数のハードリンクを特定して、複数のハードリンクとファイルの間の関係を表示する方法を採用している。
【００２０】
また一般に、グラフィカル・ハードリンク・ディスプレイ・モジュールは、ファイルを表し、かつファイルに対するハードリンクの個数を表す少なくとも１つのアイコンを表示し、複数のハードリンクを有するファイルに対する各ハードリンクを表す特有のアイコンを表示することができる。また、一般に、グラフィカル・ハードリンク・ディスプレイ・モジュールは、階層的ネーム・スペースを走査し、各ハードリンクについて、そのハードリンクが他のハードリンクを指し示すかどうかを判定し、複数のハードリンクを有するファイルからファイルに対するハードリンク・リストまでポインタを辿り、ハードリンク・リストを走査することができる。一般に、グラフィカル・ハードリンク・ディスプレイ・モジュールは、ファイルに対するハードリンク・リストを提供し、ファイル内にハードリンク・リストに対するポインタを提供することができる。また、一般に、グラフィカル・ハードリンク・ディスプレイ・モジュールは、複数のハードリンクを有するファイルを削除することができ、その手段として、複数のハードリンクを有するファイルからファイルに対するハードリンク・リストまでポインタを辿り、ハードリンク・リスト内のすべてのハードリンクを削除する方法を採用している。一般に、グラフィカル・ハードリンク・ディスプレイ・モジュールは、ファイルに対するハードリンクをリネームすることができ、その手段として、ユーザから新しいファイル名を受け取り、複数のハードリンクを有するファイルからファイルに対するハードリンク・リストまでポインタを辿り、ハードリンク・リスト内のハードリンクに新しい名前を割り当てる方法を採用している。一般に、グラフィカル・ハードリンク・ディスプレイ・モジュールは、ファイルに対するハードリンクのパス名を表示することができ、その手段として、複数のハードリンクを有するファイルからファイルに対するハードリンク・リストまでポインタを辿り、ハードリンク・リスト内の各ハードリンクについて、そのハードリンクから名前を検索し、ハードリンク・リスト内の各ハードリンクについて、そのハードリンクのパスを検索するために、階層的ネーム・スペースをそのルートまで走査する方法を採用している。
【００２１】
図１に例示されたシステムを構成するサーバおよび他の装置の配置は、説明のためのものであり、限定するものではない。本発明に有用なデータ処理システムは、当業者が想起しうる、図１に示していない付加的なサーバ、ルータ、他の装置、およびピア・ツー・ピア・アーキテクチャを含んでもよい。このようなデータ処理システムのネットワークは、例えば、ＴＣＰ（伝送制御プロトコル）、ＩＰ（インターネット・プロトコル）、ＨＴＴＰ（ハイパーテキスト転送プロトコル）、ＷＡＰ（無線アクセス・プロトコル）、ＨＤＴＰ（ハンドヘルド・デバイス・トランスポート・プロトコル）、および当業者が想起しうる他のプロトコルを含む多くのデータ通信プロトコルをサポートできる。図１に例示されたもの以外の種々のハードウェア・プラットフォーム上で、本発明の様々な実施例を実装できる。
【００２２】
ファイル・システム内のファイルに対する階層的ハードリンクをグラフィカルに表示する方法は、一般に、コンピュータにおいて実装される。図１のシステムでは、例えば、すべてのノード、サーバ、および通信装置は、ある程度までは、少なくともコンピュータとして実装される。したがって、詳細な説明のために、図２は、ファイル・システム内のファイルに対する階層的ハードリンクをグラフィカルに表示するために有用なコンピュータ１５２のブロック図を示す。コンピュータ１５２は、少なくとも１つのプロセッサ１５６に加えて、システムバス１６０を介して、プロセッサ１５６、およびコンピュータ１５２の他のコンポーネントに接続されるランダム・アクセス・メモリ（ＲＡＭ）１６８を含む。
【００２３】
ＲＡＭ１６８内には、オペレーティング・システム１５４が格納されている。コンピュータ１５２で有用なオペレーティング・システムには、ＵＮＩＸ（Ｒ）、Ｌｉｎｕｘ（Ｒ）、マイクロソフトＷｉｎｄｏｗｓ ＮＴ（Ｒ）、ＡＩＸ（Ｒ）、ＩＢＭのｉ５／ＯＳ（Ｒ）、および当業者が想起しうる他のオペレーティング・システムがある。オペレーティング・システム１５４は、ファイル・システム２１０を含む。ファイル・システムは、ファイル・システムのオブジェクトを命名し、格納し、組織化する全体的な構造を提供する。ファイル・システムは、ファイル、ディレクトリ、およびこれらのアイテムを位置付けして、かつアクセスするために必要とされる情報を含んでもよい。コンピュータ１５２で有用なファイル・システムには、高性能ファイル・システム（ＨＰＦＳ）、ＮＴファイル・システム（ＮＴＦＳ）、ＨＦＳプラス、Ｕｎｉｘファイル・システム（ＵＦＳ）、第２拡張ファイル・システム（ｅｘｔ２）」、および当業者が想起しうる他のファイル・システムがある。
【００２４】
また、オペレーティング・システム１５４は、グラフィカル・ハードリンク・ディスプレイ・モジュール２００、すなわち、ファイル・システム内のファイルに対する階層的ハードリンクをグラフィカルに表示するためのプログラム命令を含む。グラフィカル・ハードリンク・ディスプレイ・モジュール２００は一般に、ファイル・システム内のファイルに対する階層的ハードリンクをグラフィカルに表示する能力を有し、その手段として、ファイルに対する複数のハードリンクを特定し、複数のハードリンクとファイルの間の関係を表示する方法を採用している。図２の例では、オペレーティング・システム１５４、ファイル・システム２１０、グラフィカル・ハードリンク・ディスプレイ・モジュール２００は、ＲＡＭ１６８内に格納されるものとして示されているが、通常、このようなソフトウェアの多くのコンポーネントは、不揮発性メモリ１６６内にも格納される。図２の例では、グラフィカル・ハードリンク・ディスプレイ・モジュール２００は、オペレーティング・システム１５４のサブシステムとして示されているが、これは説明のためであり、限定するものではない。また、グラフィカル・ハードリンク・ディスプレイ・モジュール２００を、オペレーティング・システム１５４の外部にあるアプリケーションとして実装することができる。
【００２５】
コンピュータ１５２は、システムバス１６０を介して、プロセッサ１５６、およびコンピュータ１５２の他のコンポーネントに接続された不揮発性メモリ１６６を含む。不揮発性メモリ１６６を、ハード・ディスク・ドライブ１７０、光ディスク・ドライブ１７２、電気消去可能プログラマブル読出し専用メモリ（ＥＥＰＲＯＭ）１７４、ＲＡＭドライブ（図示せず）として、または当業者が想起しうる任意の他の種類のメモリとして実現することができる。
【００２６】
コンピュータ１５２は、１つ以上の入出力インターフェース・アダプタ１７８を含む。入出力インターフェース・アダプタ１７８は、例えば、ディスプレイ画面のような表示装置１８０への出力とともに、キーボードおよびマウスのようなユーザ入力装置１８１からのユーザ入力を制御するソフトウェア・ドライバおよびコンピュータ・ハードウェアを介して、ユーザ指向の入出力を実装する。
【００２７】
コンピュータ１５２は、他のコンピュータ１８２とのデータ通信１８４を実装する通信アダプタ１６７を含む。このようなデータ通信は、ＲＳ−２３２接続を介してシリアルに、ＵＳＢのような外部バスを介して、ＩＰネットワークのようなデータ通信ネットワークを介して、および当業者が想起しうる他の方法で実施されうる。通信アダプタは、１つのコンピュータが、直接に、またはネットワークを介して他のコンピュータにデータ通信を送信するためのデータ通信のハードウェア・レベルを実装する。宛先の使用可能性を判定するために有用な通信アダプタの例は、有線ダイヤルアップ通信用モデム、有線ネットワーク通信用イーサネット（Ｒ）（ＩＥＥＥ８０２．３）アダプタ、および無線ネットワーク通信用８０２．１１ｂアダプタを含む。
【００２８】
詳細な説明のために、図３は、本発明に従った、ファイル・システム２１０内のファイルに対する階層的ハードリンクをグラフィカルに表示する方法を例示する。この方法は、ファイル３０２に対する複数のハードリンク３１２を特定するステップ（３１０）と、複数のハードリンク３１２とファイル３０２の間の関係を表示するステップ（３２０）を含む。前述のように、ネーム・スペースで実装されたファイル・システム２１０は、ＮＴＦＳ、ＨＰＦＳ、ＵＦＳ、および当業者が想起しうる他のファイル・システムを含む。本明細書では、この方法は、主にＵｎｉｘファイル・システムに関して説明される。これは、説明のためであり、それに限定しようとするものではない。実際には、この方法は、当業者が想起しうる複数のハードリンクを有するファイルをサポートするネーム・スペースを有する多数のファイル・システムで実施されうる。
【００２９】
前述のように、通常、ファイル・システムは、オブジェクトを命名し、格納し、組織化する。例えば、Ｕｎｉｘファイル・システムのような典型的なファイル・システムは、２つの主なファイル・システム・オブジェクト、すなわち、ファイルおよびディレクトリをサポートする。Ｕｎｉｘファイル・システムでは、各オブジェクトは、「ｉノード（ｉ−ｎｏｄｅ）」と呼ばれるデータ構造により表される。ｉノードは、オブジェクトの種類、所有者、グループ、モード、サイズ、リンクの個数、最後のアクセス時間、および最後の更新時間のようなオブジェクトに関する情報を格納する。また、ｉノードは、オブジェクトの中身を格納するために用いられるすべてのデータ・ブロックの物理ディスク・アドレスを保持する。ファイル・システム２１０のあらゆるオブジェクトは、オブジェクトの新規作成時点で、一意的なｉノードを割り当てられる。すなわち、ファイル・システム２１０内の各ファイルについて、１つのｉノードが存在する。ファイル・システム２１０が作成されると、ファイル・システム２１０のすべてのｉノードが割り当てられて、各ｉノードは、一意的な「ｉ番号」を割り当てられる。
【００３０】
図３のネーム・スペース３００は、ファイル・システム２１０内に格納されたファイルにアクセスするために用いられるパス名の集合を表す。Ｕｎｉｘファイル・システムでは、各パス名およびファイル・システム２１０内の各ファイル３０２のｉ番号を関連付けることにより、複数のパス名が複数のファイルに写像される。ネーム・スペース３００内のファイル名とファイル３０２自体の間の各直接写像は「ハードリンク」と呼ばれて、ファイル３０２を表すｉノードのリンク・カウントを増加させる。また、パス名を間接的にファイルに写像できる。これらの間接的な写像は、「ソフトリンク」と呼ばれる。通常、ソフトリンクは、ファイル３０２自体の代わりに、パス名を他のハードリンクに写像する。
【００３１】
ファイル・システム２１０内の複数のファイルをネーム・スペース３００に写像することにより、複数のディレクトリは、全体としてファイル・システム２１０に構造を課す。各ディレクトリは、いくつかの個数のハードリンク、または他のディレクトリを保持してもよい。オペレーティング・システム１５４は、各ファイル・システム２１０について「ルート」ディレクトリと呼ばれる、１つの特別なディレクトリを維持する。このディレクトリは、ファイル・システム２１０階層のルートとして機能する。ファイル・システム２１０内の他のあらゆるファイルまたはディレクトリは、ルート・ディレクトリに従属する。ルートを基点として一連のディレクトリを通るパスを指定することにより、ネーム・スペース３００を介して、ファイル・システム２１０内の任意のファイルを位置付けることができる。
【００３２】
前述のように、通常、ファイル・システムは、ファイルのようなオブジェクトを命名し、格納し、組織化する。ファイル３０２は、ファイル・システム２１０内に格納されたデータの任意の集合である。ファイルの例は、スプレッドシート、ワープロ文書、画像、アプリケーション構成、または当業者が想起しうる他の任意の種類のデータの集合を含む。前述のように、Ｕｎｉｘファイル・システムでは、ファイル３０２は、単一のｉノードにより表される。しかしながら、ネーム・スペース３００を介して、２つ以上のハードリンクによりファイル３０２にアクセスできる。したがって、図３の例は、ファイル３０２に対する複数のハードリンク３１２を特定するステップ（３１０）を含む。ステップ（３１０）は、以下で図４を参照してさらに詳細に説明されるように、階層的ネーム・スペース３００を走査し、各ハードリンクについて、そのハードリンクが他のハードリンクを指し示すかどうかを判定し、複数のハードリンクを有するファイル３０２からファイル３０２に対するハードリンク・リストまでポインタを辿り、ハードリンク・リストを走査することにより実施されうる。
【００３３】
また、図３の方法は、複数のハードリンク３１２とファイル３０２の間の関係を表示するステップ（３２０）を含む。ステップ（３２０）は、グラフィカル・ユーザ・インターフェース（ＧＵＩ）内にファイル・ナビゲータ・ウィンドウ３４０を提供することにより実施されうる。ファイル・ナビゲータ・ウィンドウ３４０は、ファイル・システム２１０内の他のオブジェクトに関して、コンテナ・オブジェクト３３３、３４２、およびファイル３０２に対する複数のハードリンク３１４〜３１６を階層的に表示する。前述のように、コンテナ・オブジェクトは、他のオブジェクトへの経路としての機能を果たす。例えば、ディレクトリは、コンテナ・オブジェクトである。というのは、ディレクトリは、ファイルおよび他のディレクトリのような他のオブジェクトを保持するからである。複数のハードリンク３１４〜３１６は、ファイル３０２に対応する単一のハードリンク３４４を指し示す。また、ファイル・ナビゲータ・ウィンドウ３４０は、複数のハードリンクを有するファイルを操作するためのボタン３４８を含む。これらのボタン３４８は、ユーザが、ファイル３０２に関連するすべてのハードリンクを削除し、ファイル３０２に関連するすべてのハードリンクをリネームし、ファイル３０２に関連する別名を参照して、一覧表示することを可能とする。
【００３４】
また、ステップ（３２０）は、ファイル３０２を表し、かつファイル３０２に対するハードリンクの個数を表す少なくとも１つのアイコン３３０を表示するステップ（３２２）を含む。図３の例では、アイコン３３０は、ファイル３０２を表す文書のアイコンであり、アイコン３３０は、ファイル・システム２１０がファイル３０２に関連するネーム・スペース３００内で３つのハードリンクを保持することを表すための数字「３」を保持する。
【００３５】
図３の例は、その中にファイル３０２に対するハードリンクの個数を表すための数字を有するアイコン３３０を含むが、これは説明のためのものであり、それに限定するものではない。ファイル３０２に対するハードリンクの個数は、任意のアイコン３３０、またはアイコンの色、アイコンの形、アイコンの大きさ、アイコンの動画化のようなアイコンの属性、もしくは当業者が想起しうる他の任意の方法により表される。
【００３６】
単一のアイコン３３０は、ファイル３０２、およびファイル３０２に対するハードリンクの個数を表す。この場合も先と同様に、説明のためであり、これに限定しようとするものではない。実際には、ファイル３０２を表し、かつファイル３０２に対するハードリンクの個数を表すために、２つ以上のアイコンを用いることができる。ファイル３０２を表し、かつファイル３０２に対するハードリンクの個数を表す少なくとも１つのアイコン３３０を有することにより、ユーザが、ファイル・ナビゲータ・ウィンドウ３４０内に示されうる多数のファイルのうちで、どのファイルが複数のハードリンクを有するのかを目視により判断できるようになるために都合が良い。
【００３７】
また、ステップ（３２０）は、ファイル３０２に対する各ハードリンク３１４〜３１６をそれぞれ表す、２つの特有のアイコン３３２、３３４を表示するステップ（３２４）を含む。２つの特有のアイコン３３２、３３４の各々は、ファイル３０２に対する各ハードリンクを表す。一方の特有のアイコン３３２は、ファイル・ナビゲータ・ウィンドウ３４０において、他のコンテナ・オブジェクトと共に、各ハードリンク３１４〜３１６の名前と一緒に表示される。一方の特有のアイコン３３２は、ファイル・システム２１０内のディレクトリを表し、かつファイル３０２に対するハードリンクを表すという点で、アイコン３３３から区別されている。他方の特有のアイコン３３４は、ファイル・ナビゲータ・ウィンドウ３４０の複数のハードリンク３１４〜３１６からファイル３０２に対応する単一のハードリンク３４４に至る、点線矢印として実装されている。
【００３８】
特有のアイコン３３２および３３４は、ファイル３０２に対する各ハードリンク３１４〜３１６を表す、特有のアイコンを表示するステップ（３２４）のために用いられる。２つの特有のアイコン３３２および３３４を用いることは、それに限定するものではなく、説明のためである。実際には、ファイル３０２に対する各ハードリンク３１４〜３１６を表す特有のアイコンを表示するステップ（３２４）のために、任意の個数の特有のアイコンを用いることができる。
【００３９】
ファイル・システム２１０は、多数のハードリンクをファイル３０２と関連付けることが多いため、ファイル３０２に対する各ハードリンクを表す、すべての特有のアイコンを表示するステップ（３２４）は、ファイル・ナビゲータ・ウィンドウ３４０を乱雑なものにし、非常に見づらくなる場合がある。このため、ファイル・ナビゲータ・ウィンドウ３４０は、ファイル３０２に対する各ハードリンクを表す、特有のアイコンの個数を限定して表示することができる。
【００４０】
「Ｈ」を保持する特有のアイコン３３２、および点線矢印で構成された特有のアイコン３３４は、それに限定するものではなく、説明のためのものである。実際には、ハードリンクを表す特有のアイコンと、ファイル・ナビゲータ・ウィンドウ３４０の左側にあるフォルダ３４２とを区別するために、例えば、異なった形、大きさ、色、強調表示、または当業者が想起しうる他の任意の変更などを用いることができる。
【００４１】
詳細な説明のために、図４は、図３のステップ（３１０）の内容を例示する。ステップ（３１０）は、階層的ネーム・スペースを走査するステップ（４４０）と、各ハードリンクについて、そのハードリンクが他のハードリンクを指し示すかどうかを判定するステップ（４４１）を含む。通常、ステップ（４４０）は、ルート・ディレクトリを起点として、ディレクトリ構造を走査してハードリンクを探すことにより実施される。Ｕｎｉｘファイル・システムでは、例えば「／」は、ネーム・スペース内のルート・ディレクトリを表し、ルート・ディレクトリ内のすべてのエントリを保持するディレクトリ構造と関連付けられる。前述のように、ハードリンクは、ネーム・スペース内のファイル名を、ファイルを表すｉノードに直接に写像するディレクトリ・エントリである。ハードリンクを作成する各ディレクトリ・エントリは、「ｕｓｅｒ．ｄａｔ」のようなファイル名、および特定のｉノードに関連するｉ番号を保持する。また、前述のように、ディレクトリ・エントリは、サブディレクトリへのリンクを作成することができる。サブディレクトリにリンクするディレクトリ・エントリは、サブディレクトリのエントリが格納されている位置の参照（ｒｅｆｅｒｅｎｃｅ）を保持する。Ｕｎｉｘファイル・システムは、ｉノードでサブディレクトリを表すが、これらのｉノードは、ファイルを表すｉノードとは異なった構造を保持する。ステップ（４４０）は、反復アルゴリズムまたは再帰的なアルゴリズムを用いて、ネーム・スペース内のルート・ディレクトリ、およびすべての従属するディレクトリを走査し、各ディレクトリ・エントリから、階層的ネーム・スペース内のハードリンクを特定することにより実施される。
【００４２】
ステップ（４４１）は、各ハードリンクの「次のリンク・ポインタ」を走査することにより実施されうる。「次のリンク・ポインタ」がヌル値を保持するとき、そのハードリンクは、他のハードリンクを指し示さない。「次のリンク・ポインタ」内の非ヌル値は、ファイルに対する複数のハードリンクが存在することを示す。
【００４３】
ステップ（４４１）において、ハードリンクが他のハードリンクを指し示さないとき、階層的ネーム・スペースが走査されたかどうかを判定するステップ（４４３）に移行する。ネーム・スペースが走査されていないとき、ステップ（４４０）を継続する。
【００４４】
ステップ（４４１）において、ハードリンクが他のハードリンクを指し示すとき、複数のハードリンクを有するファイルからファイルに対するハードリンク・リストまでポインタを辿るステップ（４４２）に移行する。ステップ（４４２）は、ステップ（４４１）の間に見つけられたハードリンクの「ファイル・ポインタ」を辿ることにより実施されうる。また、ステップ（４４２）は、ファイルに関連するマスタ・ハードリンクへの、ファイルの「マスタ・ハードリンク・ポインタ」を辿ることにより実施されうる。
【００４５】
ステップ（４４２）の後は、ハードリンク・リストを走査するステップ（４４４）に移行する。ステップ（４４４）は、ファイルに関連する他のハードリンクまで、ファイルに関連するハードリンク内の「次のリンク・ポインタ」を辿ることにより実施されうる。また、ステップ（４４４）は、走査された現在のハードリンクが、走査された第１のハードリンクと一致するまで、ハードリンク・リスト内の１つのハードリンクから他のハードリンクまで「次のリンク・ポインタ」を辿ることにより実施されうる。走査された現在のハードリンクが、走査された第１のハードリンクと一致するかどうかを判定する１つの方法は、走査された現在のハードリンクのポインタを走査された第１のハードリンクのポインタと比較することを含む。走査された現在のハードリンクのポインタと走査された第１のハードリンクのポインタが一致するとき、全体のハードリンク・リストが走査されたことになる。走査された現在のハードリンクのポインタと走査された第１のハードリンクのポインタが一致しないとき、ステップ（４４４）は継続する。
【００４６】
ステップ（４４４）の後に、ネーム・スペースが走査されたかどうかを判定するステップ（４４３）に移行する。ネーム・スペースが走査されていないとき、ステップ（４４０）を継続する。通常、図４の方法は、ネーム・スペースのすべての部分が走査されるまで継続する。
【００４７】
詳細な説明のために、図５は、図４について前述された、ファイルに対する複数のハードリンクを特定するステップ（３１０）の態様を図解する線画を示す。前述のように、通常、ファイルに対する複数のハードリンクを特定するステップ（３１０）は、階層的ネーム・スペースを走査するステップ（４４０）と、各ハードリンクについて、そのハードリンクが他のハードリンクを指し示すかどうかを判定するステップ（４４１）を含む。ステップ（４４１）は、各ハードリンクの「次のリンク・ポインタ」を走査することを含みうる。図５は、ステップ（４４１）において有用な、各ハードリンク４１２、４２２、４３２の「次のリンク・ポインタ」４１４、４２４、４３４を示す。各「次のリンク・ポインタ」４１４、４２４、４３４は、ファイル３０２に関連する他のハードリンクの参照を保持する。図５の「次のリンク・ポインタ」４１４は、ハードリンク４２２を参照し、「次のリンク・ポインタ」４２４は、ハードリンク４３２を参照し、「次のリンク・ポインタ」４３４は、ハードリンク４１２を参照する。ハードリンク４１２、４２２、４３２から成る、このリンク・リスト構造は、ファイル３０２に対するハードリンク・リスト４１０を提供する。このハードリンク・リスト４１０は、ファイル３０２をファイル・システム２１０のネーム・スペース３００に写像するすべてのハードリンクを保持する。「次のリンク・ポインタ」がヌル値を保持するとき、図５の例におけるハードリンクは、他のハードリンクを指し示さない。しかしながら、「次のリンク・ポインタ」の非ヌル値は、ファイルに対する複数のハードリンクが存在することを示す。
【００４８】
また、前述のように、通常、ファイルに対する複数のハードリンクを特定するステップ（３１０）は、ハードリンクが他のハードリンクを指し示すとき、複数のハードリンクを有するファイルからファイルに対するハードリンク・リストまでポインタを辿るステップ（４４２）を含む。ステップ（４４２）は、ハードリンクの「ファイル・ポインタ」を辿ることにより実施されうる。図５は、ステップ（４４２）において有用な、各ハードリンク４１２、４２２、４３２の「ファイル・ポインタ」４１６、４２６、４３６を示す。「ファイル・ポインタ」４１６、４２６、４３６は、各ハードリンク４１２、４２２、４３２をファイル３０２と関連付ける、ファイル３０２に対する参照を保持する。Ｕｎｉｘファイル・システムでは、ハードリンクからファイル３０２への参照４１６、４２６、４３６は、ファイル３０２に関連するｉ番号である。また、図５は、ファイル３０２内に保持される「マスタ・ハードリンク・ポインタ」４００を示す。マスタ・ハードリンク４１２は、複数のハードリンクを有するファイルからファイルに対するハードリンク・リストまでポインタを辿る際に有用である。図５では、ファイル３０２の「マスタ・ハードリンク・ポインタ」４００は、ファイル・システム２１０のネーム・スペース３００内のファイル３０２を表す、マスタ・ハードリンク４１２への参照を保持する。「マスタ・ハードリンク・ポインタ」４００は、ハードリンク・リスト４１０へのポインタ４００をファイル３０２内に有利に提供し、その結果、ファイル３０２に対する複数のハードリンクを特定するステップ（３１０）を容易にする。図５の「マスタ・ハードリンク・ポインタ」４００は、ファイル３０２からハードリンク・リスト４１０へのエントリ・ポイントとしての機能を果たすため、ハードリンクは「マスタ・ハードリンク」４１２と呼ばれる。
【００４９】
ステップ（４４２）の後は、通常、ハードリンク・リストを走査するステップ（４４４）に移行する。ステップ（４４４）は、ファイル３０２に関連する他のハードリンクまで、ファイル３０２に関連するハードリンク内の「次のリンク・ポインタ」を辿ることにより実施されうる。図５は、ステップ（４４４）において有用な、ハードリンク４１２、４２２、４３２の「次のリンク・ポインタ」４１４、４２４、４３４を示す。図５では、ハードリンク４１２、４２２、４３２の各「次のリンク・ポインタ」４１４、４２４、４３４は、ハードリンク・リスト４１０内の次のハードリンクを参照する。
【００５０】
また、ステップ（４４４）は、走査された現在のハードリンクが、走査された第１のハードリンクと一致するまで、ハードリンク・リスト４１０内の１つのハードリンクから他のハードリンクまで「次のリンク・ポインタ」を辿ることにより実施されうる。走査された現在のハードリンクが、走査された第１のハードリンクと一致するかどうかを判定する１つの方法は、走査された現在のハードリンクのポインタを走査された第１のハードリンクのポインタと比較することを含む。走査された現在のハードリンクのポインタと走査された第１のハードリンクのポインタが一致するとき、全体のハードリンク・リスト４１０が走査されたことになる。
【００５１】
複数のハードリンクを有するファイルを特定したとき、ファイルに対する複数のハードリンクのうちの１つ以上を削除することが有利な場合がある。したがって、詳細な説明のために、図６は、複数のハードリンクを有するファイル３０２を削除するステップ（５０２）を含む、本発明に従った方法を例示する。ステップ（５０２）は、複数のハードリンクを有するファイル３０２からファイル３０２に対するハードリンク・リスト４１０までポインタ４００を辿るステップ（５０４）と、ハードリンク・リスト４１０内のすべてのハードリンクを削除するステップ（５０６）を含む。
【００５２】
図６のファイル・ナビゲータ・ウィンドウ３４０は、単一のハードリンクを位置付ける際に、ユーザがファイル３０２に対するすべてのハードリンク４１２、４２２、４３２を削除するのに都合の良い「すべて削除」ボタン５００を保持する。「すべて削除」ボタン５００は、ネーム・スペースの全体を通して検索し、かつファイル３０２に対する各ハードリンクを個別に削除することを排除する。
【００５３】
ステップ（５０４）は、ファイル３０２に関連するマスタ・ハードリンク４１２への、ファイル３０２の「マスタ・ハードリンク・ポインタ」４００を辿ることにより実施されうる。前述のように、マスタ・ハードリンク４１２は、ネーム・スペース内のファイル３０２を表すすべてのハードリンクを保持する、ハードリンク・リスト４１０の要素である。マスタ・ハードリンク４１２は、ファイル３０２からハードリンク・リスト４１０へのエントリ・ポイントとしての機能を果たす。図６のハードリンク・リスト４１０は、マスタ・ハードリンク４１２、ハードリンク４２２、およびハードリンク４３２の３つのハードリンクを保持する。
【００５４】
ステップ（５０６）は、ファイル３０２自体から、ハードリンクに関連する各ファイル名をリンク解除することにより実施されうる。ファイル３０２からファイル名をリンク解除すると、ハードリンクを保持するディレクトリからハードリンク・エントリが除去される。ファイル３０２自体から、ハードリンクに関連する各ファイル名をリンク解除することは、例えば、次の擬似コード関数「ｒｅｍｏｖｅ（）」と類似の関数を利用する、ハードリンク・リスト４１０を走査する反復アルゴリズムにより実施されうる。
intremove(const char *path);
【００５５】
例示的なｒｅｍｏｖｅ（）関数は、「パス」と命名されたディレクトリ・エントリを除去して、ファイルを表すｉノードのリンク・カウントを減少させる。ファイルを表すｉノードのリンク・カウントがゼロになると、ファイルにより占有されたファイル・システム内のスペースは割り当て解除されて、ファイルは消滅する。
【００５６】
複数のハードリンクを有するファイルを特定したとき、ファイルに対する複数のハードリンクのうちの１つ以上をリネームすることが有利な場合がある。したがって、詳細な説明のために、図７は、ファイル３０２に対するハードリンクをリネームするステップ（６０２）を含む、本発明に従った方法を例示する。ステップ（６０２）は、ユーザから新しいファイル名６０１を受け取るステップ（６０４）と、複数のハードリンクを有するファイル３０２からファイル３０２に対するハードリンク・リスト４１０までポインタ４００を辿るステップ（６０６）と、ハードリンク・リスト４１０内のハードリンクに新しい名前６０１を割り当てるステップ（６０７）を含む。
【００５７】
図７のファイル・ナビゲータ・ウィンドウ３４０は、１つのハードリンクを位置付ける際に、ユーザが、ファイル３０２に対するすべてのハードリンク４１２、４２２、４３２をリネームするのに都合の良い「すべてリネーム」ボタン（６００）を保持する。「すべてリネーム」ボタン（６００）は、ネーム・スペースの全体を通して検索し、かつファイル３０２に対する各ハードリンクを個別にリネームすることを排除する。
【００５８】
ステップ（６０４）は、新しいファイル名６０１となる文字の入力を可能とするテキスト・ボックスをユーザに提供することにより実施されうる。また、ステップ（６０４）は、新しいファイル名６０１が、ファイル・システムの要件に適合することを保証するために、新しいファイル名６０１を構成する文字を検証することを含みうる。また、ステップ（６０４）は、新しいファイル名６０１を電子ストレージに格納することを含みうる。
【００５９】
ステップ（６０６）は、ファイル３０２に関連するマスタ・ハードリンク４１２への、ファイル３０２の「マスタ・ハードリンク・ポインタ」４００を辿ることにより実施されうる。前述のように、マスタ・ハードリンク４１２は、ネーム・スペース内のファイル３０２を表すすべてのハードリンクを保持する、ハードリンク・リスト４１０の要素である。マスタ・ハードリンク４１２は、ファイル３０２からハードリンク・リスト４１０へのエントリ・ポイントとしての機能を果たす。図７のハードリンク・リスト４１０は、マスタ・ハードリンク４１２、ハードリンク４２２、およびハードリンク４３２の３つのハードリンクを保持する。
【００６０】
ステップ（６０７）は、ハードリンク・リスト４１０内のハードリンク４１２、４２２、４３２に関連する各ファイル名をリネームすることを含みうる。ハードリンクに関連するファイル名をリネームすることは、新しいファイル名６０１の値をハードリンクの「名前」の値に割り当てることを含みうる。ステップ（６０７）は、例えば、次の擬似コード関数「ｒｅｎａｍｅ（）」と類似の関数を利用する、ハードリンク・リスト４１０を走査する反復アルゴリズムにより実施されうる。
intrename(const char *old, const char *new);
【００６１】
例示的なｒｅｎａｍｅ（）関数は、「ｏｌｄ（旧）」内に保持されるファイルの名前を、「ｎｅｗ（新）」内に保持される名前に変更する。図７の例では、現に各ハードリンク４１２、４２２、４３２に関連するファイル名は「旧」を表し、新しいファイル名６０１は「新」を表す。
【００６２】
複数のハードリンクを有するファイルを特定したとき、ファイルに対する複数のハードリンクのうちの１つ以上を表示することが有利な場合がある。詳細な説明のために、図８は、ファイル３０２に対するハードリンクのパス名を表示するステップ（７０２）を含む、本発明に従った方法を例示する。ステップ（７０２）は、複数のハードリンクを有するファイル３０２からファイル３０２に対するハードリンク・リスト４１０までポインタ４００を辿るステップ（７０６）と、ハードリンク・リスト４１０内の各ハードリンクについて、そのハードリンクから名前を検索するステップ（７０７）と、ハードリンク・リスト４１０内の各ハードリンクについて、そのハードリンクのパスを検索するために、階層的ネーム・スペースをそのルートまで走査するステップ（７０８）を含む。
【００６３】
図８のファイル・ナビゲータ・ウィンドウ３４０は、ユーザが、ファイル３０２に対するハードリンク４１２、４２２、４３２のパス名７０９のすべてのテキスト表現７１０の表示を参照するのに都合の良い「別名一覧」ボタン７００を保持する。ハードリンク４１２、４２２、４３２のパス名のすべてのテキスト表現７１０を表示することにより、ユーザは、ファイル３０２を表すハードリンクのネーム・スペース内の他の位置を容易に見つけることができる。
【００６４】
また、図８のファイル・ナビゲータ・ウィンドウ３４０は、ユーザが、ファイル３０２に対するハードリンク４１２、４２２、４３２のパス名７０９のグラフィカル表現７１２を表示するのに都合の良い「別名表示」ボタン７０１を保持する。ハードリンク４１２、４２２、４３２のパス名のグラフィカル表現７１２を表示することにより、ユーザが、ファイル３０２を表すハードリンクのネーム・スペース内の他の位置を視覚的に把握することを支援する。
【００６５】
ステップ（７０６）は、ファイル３０２に関連するマスタ・ハードリンク４１２への、ファイル３０２の「マスタ・ハードリンク・ポインタ」４００を辿ることにより実施されうる。前述のように、マスタ・ハードリンク４１２は、ネーム・スペース内のファイル３０２を表すすべてのハードリンクを保持する、ハードリンク・リスト４１０の要素である。マスタ・ハードリンク４１２は、ファイル３０２からハードリンク・リスト４１０へのエントリ・ポイントとしての機能を果たす。図８のハードリンク・リスト４１０は、マスタ・ハードリンク４１２、ハードリンク４２２、およびハードリンク４３２の３つのハードリンクを保持する。
【００６６】
ステップ（７０７）は、ハードリンク・リスト４１０内の各ハードリンク４１２、４２２、４３２の「名前」４１８、４２８、４３８の値を走査することを含んでもよい。ステップ（７０７）は、例えば、次の擬似コード構造および関数を利用する、ハードリンク・リスト４１０を走査する反復アルゴリズムにより実施されうる。
void readhardlink(struct dirent *hardlink);
struct dirent {
long d_inode;
char *d_name;
structdirent *next_link;
};
【００６７】
例示的なｒｅａｄｈａｒｄｌｉｎｋ（）関数は、「ｓｔｒｕｃｔ ｄｉｒｅｎｔ」タイプのハードリンク・リスト４１０内のハードリンクに対するディレクトリ・エントリを読み取る。この構造の「ｄ＿ｉｎｏｄｅ」フィールドは、ファイル３０２を表すｉノードに関連する、ハードリンク４１２、４２２、４２３のｉ番号を保持する。この構造の「ｄ＿ｎａｍｅ」フィールドは、各ハードリンク４１２、４２２、４２３のファイル名４１８、４２８、４３８を保持する。「ｎｅｘｔ＿ｌｉｎｋ」フィールドは、ハードリンク・リスト４１０内のハードリンクに対する次のディレクトリ・エントリへのポインタを保持する。
【００６８】
ステップ（７０８）は、ハードリンク・リスト４１０内の各ハードリンク４１２、４２２、４３２について、現在のディレクトリを走査して「．．」エントリを探し、親ディレクトリへの「．．」エントリを辿り、以前のディレクトリの名前を読み取ることを含みうる。Ｕｎｉｘファイル・システム内の各ディレクトリは、それ自身に対するエントリ「．」およびその親に対するエントリ「．．」を保持する。前者の「．」エントリは、ディレクトリ自身を表すｉノードに対するｉ番号を保持し、後者の「．．」エントリは、親ディレクトリを表すｉノードに対するｉ番号を保持する。ルート・ディレクトリの「．」および「．．」エントリは、両方ともルート・ディレクトリに対するｉノードを参照する。図８の例に従って、現在のディレクトリを走査して「．．」エントリを探し、親ディレクトリへの「．．」エントリを辿り、以前のディレクトリの名前を読み取ることは、「．」および「．．」エントリが同一のｉ番号を参照するまで、反復または再帰的なアルゴリズムを用いて実施されうる。図８の例に従って、以前のディレクトリの名前を読み取ることは、各々の反復または再帰呼び出しの間に、ファイル名およびディレクトリ名を連結することにより、パス名７０９を作成することを含んでもよい。
【００６９】
ステップ（７０２）は、ファイル・ナビゲータ・ウィンドウ３４０内にパス名７０９をテキスト形式７１０で表示することにより実施されうる。また、ステップ（７０２）は、ネーム・スペース内のハードリンク４１２、４２２、４３２の位置を視覚的に表示する、グラフィカル形式７１２でパス名７０９を表示することにより実施されうる。
【００７０】
本発明の例示的な実施例は、主に、ファイル・システム内のファイルに対する階層的ハードリンクをグラフィカルに表示するための完全に機能的なコンピュータ・システムの文脈で説明される。しかしながら、当業者は、任意の好適なデータ処理システムと共に使用するために、信号保持媒体に配設されたコンピュータ・プログラムにおいて本発明を具現化できることを認識するであろう。このような信号保持媒体は、伝送媒体、もしくは磁気媒体、光媒体、または他の好適な媒体を含む、機械可読情報用の書き込み可能媒体でありうる。書き込み可能媒体の例は、ハード・ドライブ内の磁気ディスクまたはフレキシブル・ディスク、光ドライブ用コンパクト・ディスク、磁気テープ、およびその他の当業者が想起しうるものを含む。伝送媒体の例は、音声通信用の電話ネットワークと、例えば、イーサネット（Ｒ）、ならびにインターネット・プロトコルおよびワールド・ワイド・ウェブを用いて通信するネットワークのようなデジタル・データ通信ネットワークを含む。好適なプログラミング手段を有する任意のコンピュータ・システムが、プログラムで具現されるように本発明の方法のステップを実行できるであろうことを、当業者は直ちに認識するであろう。本明細書で説明された例示的な実施例のいくつかは、コンピュータ・ハードウェアにインストールされて、コンピュータ・ハードウェア上で実行するソフトウェアに関するものであるが、それにもかかわらず、ファームウェアとして、またはハードウェアとして実装された他の実施例が本発明の範囲内にあることを、当業者は直ちに認識するであろう。
【００７１】
前述の説明により、本発明の真の要旨を逸脱することなく、本発明の様々な実施例において修正および変更をなしうることが理解されるであろう。本明細書の説明は、あくまで例を示すためのものに過ぎず、制限を意味するものと解釈されるべきではない。本発明の範囲は、特許請求の範囲の記載によってのみ制限される。
【図面の簡単な説明】
【００７２】
【図１】ファイル・システム内のファイルに対する階層的ハードリンクをグラフィカルに表示するためのシステムを例示するネットワーク図である。
【図２】ファイル・システム内のファイルに対する階層的ハードリンクをグラフィカルに表示するために有用なコンピュータを例示するブロック図である。
【図３】ファイル・システム内のファイルに対する階層的ハードリンクをグラフィカルに表示する方法を例示するフローチャートである。
【図４】ファイル・システム内のファイルに対する階層的ハードリンクをグラフィカルに表示する方法を例示する他のフローチャートである。
【図５】ファイル・システム内のファイルに対する階層的ハードリンクをグラフィカルに表示する方法を例示する線画である。
【図６】ファイル・システム内のファイルに対する階層的ハードリンクをグラフィカルに表示する方法を例示する他のフローチャートである。
【図７】ファイル・システム内のファイルに対する階層的ハードリンクをグラフィカルに表示する方法を例示する他のフローチャートである。
【図８】ファイル・システム内のファイルに対する階層的ハードリンクをグラフィカルに表示する方法を例示する他のフローチャートである。
【図１】
0004906419.tif 000002
【図２】
0004906419.tif 000003
【図３】
0004906419.tif 000004
【図４】
0004906419.tif 000005
【図５】
0004906419.tif 000006
【図６】
0004906419.tif 000007
【図７】
0004906419.tif 000008
【図８】
0004906419.tif 000009