ディレクトリ内のすべてのエントリと対話する方法はありますか/dev
?私が理解したところによると、ディレクトリ内のほとんどの項目/dev
は「一般」ファイルではありません。プロパティを一覧表示するか、他の操作を実行するかなど、コマンドや対話する方法があるかどうか疑問に思います。
答え1
これはやや興味深い質問です。あなたのコメントを引用します。
ほとんどのコンテンツがファイルなので、ある種のエディタを使用してコンテンツに含まれるコンテンツを確認する方法はありますか?
これは「すべてがファイルである」という言葉を文字通り受け入れなければならないという誤解(初心者として自分自身が持っていた)を明らかにします。
もちろん、「ファイル」は名前付きバイトコレクションで、別々の単位として扱われ、通常はディスクに保存されます。
「UNIXでは、すべてがファイルです」と言われるとこれは使用される「ファイル」の定義ではありません。
むしろ、この意味で「ファイル」とは、「標準を使用して何らかの方法でアクセスまたは処理できるもの」です。システムコールファイルを処理するために使用されます。 」
このような仮想ファイルシステムは/proc
この点をよく示しています。の「ファイル」と「ディレクトリ」は、/proc
ディスクに保存されている物理ファイルとディレクトリではありません。どこにも保存されません。
代わりに、プロセスがこれらのファイルのいずれかを読み取ろうとすると -ファイルから読み取るのと同じシステムコールを使用します。--カーネルは呼び出しを異なる方法で処理します。カーネルはディスクからデータを取得してデータを返すのではなく、カーネルの適切なランタイムデータで直接応答します。しかし、これは「透明な」抽象化です。カーネルが要求しない限り、どのプロセスもファイルからデータを読み取ることはありません。 (これは「システムコール」という用語に含まれる概念です。)
今、その中のディレクトリエントリは/dev
「Special Files」です。すべてのファイル関連のシステムコールがすべてのファイルに適用されるわけではありません。ただし、あらゆる種類の特殊装置または何もないプロセスで処理可能まるでファイルのように、ほとんどの場合、まだ本当です。
アイテムは/dev
さまざまな種類のアイテムの抽象化なので、実際に違いは、このツールでできるすべての種類のタスクを網羅する一般的な回答を提供するのは簡単ではないということです。
ただし、これらの項目が何であるか、意味が何であるか、および処理方法を真に理解するには、次の内容をお読みください。
「文書」いつも「ディレクトリエントリがあるもの」を意味し、通常のファイルであってもなくてもよいし、「一般ファイル」を意味します。いつも単に「ファイル」とも呼ばれる「名前が指定されたバイトコレクション」を表します。
この質問に対する答えは次のとおりです。
したがって、/ devのすべての項目は「ファイル」です。
はい、しかし両方とも通常のファイルではないはずです。
...しかし、それは必ずしも人が編集できるという意味ではありません...
人間以外に誰が何でも編集できると思いますか?ずっと前に死んだシステムプログラマーであれ、自分自身であれ、人間は意思決定や意図の唯一の源です。どのコンピュータシステム(これについての哲学的背景については、Mark Burgessの作品を参照してください。):D
しかし、どういう意味なのかは分かりそうです。の特殊ファイルは/dev
テキストファイルではないため、一般的な「テキストエディタ」では編集できないと正確に言えます。また、/dev
エントリ自体を変更するにはroot権限が必要ですが、ユーザースペース(rootではないプロセスとも呼ばれます)プロセスでは、次のことができます。使用それらを。
... UNIXでは、ファイルをシステムコールによって処理または管理されていると呼ぶためです。
はい、そうです。 「ファイル」と呼ばれるすべては、システムコールを使用して処理されます。これ含むところで、普通のファイルです。を使用している場合、gedit
編集したいファイルを開く方法はシステムコールを使用することです。別のシステムコールを介してファイルの内容を読み込みます。
...しかし、ユーザーが編集できます。私は正しいですか?
いいえ、最後の部分が間違っています。ユーザーがすべてのファイルを編集できるわけではありません。また、「編集」は非常に非常に不正確な単語であり、この程度の詳細レベルで話すときにはほとんど意味がありません。
代わりに、私たちはすべて話すべきです一般ファイルファイルのオープン、読み取り、書き込みなどのシステムコールを介してユーザースペースプロセスで処理できます。ただし、これらのシステムコールはさまざまな理由で失敗する可能性があります(権限の不足、ディスクがいっぱいになったときに書き込みを試み、ディスクがいっぱいになったときに書き込みを試みます)。ディスクが読み取り専用でマウントされている場合など)。
特殊ファイルはシステムコールとして扱うこともできますが、この場合、個々のシステムコールのサポートは、特殊ファイルの種類と最終的にそのシステムコールを処理するデフォルトドライバによって異なります。
ブロックと文字の特殊ファイルをよりよく理解するには、次を参照してください。