こんにちは!
現在、私はシンボリックリンク、ハードリンク、ファイル、ディレクトリ関連のトピックについて学んだばかりのシェルプログラミングを学んでいます。理解しようとしています -
- ディレクトリに2つのリンクがあるのはなぜですか。ディレクトリはいつ作成されますか?。そして..ディレクトリにファイルがありますか?どのように動作しますか?
- なぜ。ディレクトリ内のファイルが必要ですか?
良い説明が役に立ちます。
よろしくお願いします。
ありがとう
- Nazmul
答え1
.
エントリは..
常にディレクトリに存在します。
彼らは具体的ではありませんLinux;すべてUnixシステムそれらを所有し、POSIXはいほぼ彼らに尋ねる。GNU ハードVSTaにもそのような機能があります。おそらくマルチプレックスシステムそれらを発明しました。オペレーティングシステム3 UnixからコピーしてWindowsそれらもあります。国際研究協議会仮想管理システム似たようなものがあります。
一度プログラム(シェル、プログラム、プログラム/bin/ls
、または他のものが使用される場合)インターネットテレビ(3)、等、等.....)を使用ディレクトリを開く(3)、次のいくつかディレクトリを読む(3)提供.
し(別の呼び出しがreaddir
返されます)..
(実際にはデフォルトです。傷がつく(2))。
.
そのアイテムと..
アイテムがそれぞれ提供されているかどうかはわかりません。ファイルシステムまたは任意の共通点を介して仮想FSカーネルのレイヤー(私たちは気にする必要はありません)。成功を考える目次(2)創作物.
と..
出品作(少なくともLinuxカーネル)。
.
カーネルパス解析層は、および(..
および)を適切に処理します/
。読むパス解像度(7)。ファイルパスはファイルを参照するために使用されます(実際には一部インデックスノード)、同じファイルに複数のパスがある場合があります(場合によってはパスがない可能性があります)。
すべてのシステムコール(次にリストされています)システムコール(2)) プロセスファイル道(例えばオープン(2)、切断(2)、統計(2)そして他の多く...)カーネルのパス解析層を介して。
.
ディレクトリにファイルが必要なのはなぜですか?
状況によっては非常に便利です。たとえば、(一部のプログラムや奇妙なコマンドを介して)-r
名前が非常に悪いファイルを作成することができます。を使用してrm ./-r
削除できます(rm -r
非常に異なる意味があるため)。シェルが使用するもの$PATH
実行可能ファイルを見つけるための変数です。現在のディレクトリに実行可能ファイルがある場合(これも非常に悪い味です)、それを実行するには入力する必要がありますls
(そうでない場合はディレクトリにある可能性が高い)。./ls
/bin/ls
$PATH
execvp(3)またはそれに対応する)。
原則として、単一のキャリッジリターンまたはタブで指定されたファイルのディレクトリエントリを持つこともできますが、これは面倒です。アンインストールする方法は、読者の練習問題として残しておきます(ただし使用できますrm
)。
いくつかの機能(例:ドロペン(3))包含または除外についてはを/
参照してください。これ。
そして..
役に立つ相対ファイルパス。また、見ることができます実際のルート(3)。
関連する質問はプロセスですタスクリスト(すべてのプロセスには独自のプロセスがあるため、cd
シェルに組み込まれている必要があります)。これは少なくとも利便性のためです(そして歴史的レガシー問題と同じ理由)だけでなく、効率も重要です。一部のシステム(ペタバイト級ディスクを搭載したスーパーコンピュータなど)では、フルファイルパスが非常に長い場合があります(たとえば、数百文字)、長いファイルパスを入力したり、すべてのプログラムがそれを処理したくない場合があります。また、見ることができます目次(2)、バウチャー(7)、chroot(2)。
他のオペレーティングシステム(特にMS-DOS)では、作業ディレクトリが少し異なります。
ちなみに、ファイルは必要ありません(ファイルは以下から提供されます)オペレーティングシステムコア)。いくつかの実験的な学術オペレーティングシステムは、他のオペレーティングシステムを実装しているので、ドキュメントがありません。〜にこだわるフロア。 1960年代、オペレーティングシステムは非常に異なるファイルを提供しました(現在のPOSIXが要求するファイルとは異なります)。
(考えてみると、現在のコンピュータで情報を整理するのにファイルが必ずしも最善の方法ではありません。ノートパソコンで何千枚もの写真や数年前に書いた手紙を見つけるのがどれほど難しいか考えてみてください。難しいです。そうなることを願っています。オペレーティングシステムではより良いものになります)
読むオペレーティングシステム:3つの簡単な部分(無料でダウンロード可能)。練習として – 自分のものを実装するUnixシェル(または既存のソースコードをそのまま研究します。フリーソフトウェア)。また、見ることができますこれ。