2016-11-21 2 views
0

Unixのすべてがファイルなので、 "cd"と呼ぶと私たちは実際にディレクトリに入っていますか? ?それは、各ディレクトリの親ディレクトリへの保護されたシンボリックリファレンスですか?期間コマンドは "。"ですか?と ".."実際にファイルを参照していますか?

+1

'.'と' ..'はそれぞれ、現在のディレクトリと親ディレクトリを指すディレクトリ内の実際のファイル名エントリ(inode番号とファイル名)です。それらはシンボリックリンクではありません。彼らはハードリンクです。また、すべてのプロセスにはカーネルによって記録されたカレントディレクトリがあります。これは、ディレクトリのinodeの参照カウントを保持して、物事があまりにもひどく間違っていないようにします。 –

+0

http://stackoverflow.com/help/how-to-ask、http://stackoverflow.com/help/dont-ask、http://stackoverflow.com/help/mcveを読んで[ツアー] (http://stackoverflow.com/tour)よりQをここに投稿してください。がんばろう。 – shellter

答えて

2

はい、Unixのすべてがファイルです。あらゆるディレクトリと同様に、あらゆるタイプのファイル、任意のデバイス(スピーカー、キーボードなど)、さらにはファイルシステムそのものもOS用のファイルのように動作します。 Unixでは、すべてのファイルにはinodeが添付されています。このファイルには、パーミッション、サイズ、タイムスタンプに関する情報などのファイルメタデータと、実際のファイルデータを含むデータブロックを指すファイルデータブロックポインタがあります。

したがって、各ディレクトリ(ファイル)にもiノードがあります。ディレクトリの内容は一連のレコードです。各レコードには、ファイル名とiノード番号の少なくとも2つのフィールドがあります。

file1name file1_inode_number 

正確な構造は、ファイルシステムの実装によって異なります。したがって、基本的にディレクトリファイルには、各ファイルに対応する(レコード)エントリと、その内部の直接のサブディレクトリが含まれています。それに加えて、ディレクトリのファイルも、それぞれ(あなたがcd ./またはcd ../ OSは、現在または親ディレクトリを参照するたびに構造がそう

.   inode_number_of_self 
..   inode_number_of_parent_dir 
file1name inode_number_of_file1 
file2name inode_number_of_file2 
. 
. 
so on 

のように見えるので、すべてのディレクトリ上

. : mapped with self inode 
and 
.. : mapped with parent's inode 

をしている2つの以上の項目が含まれています)をあなたの現在のディレクトリに対して相対的に表示します。

関連する問題