Unix / Linux OSの標準および/または共通ディレクトリ


25

Windowsの世界から来た私は、フォルダーディレクトリ名の大部分が非常に直感的であることがわかりました。

  • \Program Files プログラムで使用されるファイルが含まれています(サプライズ!)

  • \Program Files (x86) 64ビットOS上の32ビットプログラムで使用されるファイルが含まれています

  • \Users(以前Documents and Settings)にはユーザーのファイル、つまりドキュメントと設定が含まれます

    • \Users\USER\Application Data アプリケーション固有のデータが含まれています

    • \Users\USER\Documents ユーザーに属するドキュメントが含まれています

  • \Windows Windows自体の操作に属するファイルが含まれています

    • \Windows\Fonts フォントファイルを保存します(サプライズ!)

    • \Windows\Temp グローバル一時ディレクトリです

など。これらのフォルダが何をするのかわからなくても、その名前から正確に推測できました。

今、私はLinuxをよく見ていて、ファイルシステムを回避する方法をかなり混乱させています。

例えば:

  • /binバイナリが含まれています。しかし、そう/sbin/usr/bin/usr/sbin、そしておそらくより私が知らないことを。どっち?それらの違いは何ですか?バイナリを作成してシステム全体のどこかに配置したい場合、どこに配置しますか?

  • /media外部メディアファイルシステムが含まれています。しかし、そう/mntです。現時点では、どちらにも私のシステムには何も含まれていません。すべてがにあるよう/devです。違いは何ですか?ハードディスク上の他のパーティションはどこにありますか(Windows C:D:Windowsなど)。

  • /homeユーザーファイルと設定が含まれます。それは直感的ですが、それでは何が入るの/usrでしょうか?そして/root、ファイルと設定を持つユーザーであっても、どうしてまだ分​​離されているのでしょうか?

  • /libDLLなどの共有ライブラリが含まれます。しかし、そう/usr/libです。違いは何ですか?

  • ですか /etc?それは本当に「et cetera」または他の何かを表しますか?どの種類のファイルをそこに入れるべきですか?グローバルまたはローカル?それはどこに置くべきか誰にもわからないもののキャッチオールですか、それとも特定のユースケースがありますか?

  • 何ですか/opt/proc/var?彼らは何を表し、何のために使われていますか?私はWindows *でそれらのようなものを見たことはありませんし、それらが何のためにあるのかもわかりません。

誰かが知っておくと良いかもしれない他の標準的な場所を考えることができるなら、質問にそれを自由に追加してください。願わくば、これが* nixシステムに慣れ始めている私のような人々にとって良いリファレンスになることを願っています。

* OK、それは嘘です。WinObjでも似たようなものを見てきましたが、明らかに定期的ではありません。ただし、Linuxでこれらが何をするのかはまだわかりません。


1
良い学習精神を維持してくれてありがとう。多くの場合、このトピックは論争的です。WindowsとLinuxのファイルシステム構造の基本的な違いに関する追加の説明については、この質問に対する私の回答を参照しください。
カレブ

「usr」を「user」の省略形ではなく「Unix System Resources」と考えないでください(年前にユーザーのディレクトリが含まれていたため、おそらく逆字句であっても)(linux-training.be/files/books/html /fun/ch09s08.html)。
lgeorget

Unix / Linux / etcの暗号化されたディレクトリの命名をWindows(またはMac OS X)に対して正当化しようとしても意味がありません。それだけです。
アンドリューウルフ

2017年現在、Windowsのフォルダー構造は完全に混乱しています。C:\Program FilesC:\ProgramData%HOME%\AppData\Local%HOME%\AppData\LocalLowC:\Windows\SystemApps... 1は、Windowsで実行可能ファイルを見つけることができるすべての例。そして、私は設定ファイルとレジストリについても話しません。もっと落ち込んで欲しくありません。PS:私は主にWindowsで働いています。
rsenna

回答:


29

Linuxディストリビューションでは、FHSを使用しています:http : //www.pathname.com/fhs/pub/fhs-2.3.html

また、を試すこともできman hierます。

私はあなたの質問に対する答えを私の頭の一番上から要約しようとしますが、FHSを一読することを強くお勧めします。

  • / binは非スーパーユーザーシステムバイナリ用です
  • / sbinはスーパーユーザー(ルート)システムバイナリ用です
  • / usr / binおよび/ usr / sbinは、それぞれ重要ではない共有の非スーパーユーザーまたはスーパーユーザーのバイナリ用です
  • / mntは、パーティションを一時的にマウントするためのものです
  • / mediaは、一度に多くのリムーバブルメディアをマウントするためのものです
  • / devにはシステムデバイスファイルが含まれています。長い話だけれども :)
  • / usrフォルダーとそのサブフォルダーは、他のシステムと共有できるため、1つの場所にインストールされた同じプログラム/ファイルにアクセスできます。通常、/ usrは別のファイルシステム上にあるため、システムをオンラインにするために必要なバイナリは含まれていません。
  • / rootは別であるため、別のパーティション/ハードドライブ/サーバーにある他のディレクトリをマウントせずにシステムをオンラインにする必要がある場合
  • はい、/ etcは「et cetera」の略です。ローカルシステムの構成ファイルがそこに保存されます。
  • / optは、ダウンロード/コンパイルしたプログラムをインストールできる場所です。そうすれば、すべてのファイルを1か所にまとめて、システムの残りの部分から分離しておくことができます。
  • / procには、カーネルと実行中のプロセスに関する情報が含まれています
  • / varには、ログ、メール、ウェブページなどの可変サイズのファイルが含まれます。

システムにアクセスするには、通常/ var、/ opt、/ usr、/ homeは必要ありません。システム上の潜在的に最大のディレクトリのいくつか。

一部の人々が使用しない私のお気に入りの1つは、/ srvです。これは、http / ftp / sambaなどのサービスを介してホストされているデータ用です。これには/ varがよく使われますが、これは実際の目的ではありません。


特定の質問に対処する概要。一部のディストリビューションは/home/users/username、ユーザーおよび/home/services/servicenameあなたが言及し/srcている目的で使用することに注意してください。パーティション分割の方が汎用性が高いという点で、これはうまく機能すると思います。独自のパーティションに配置することも、同じパーティションとユーザーデータを使用することもできますが、これはよくやりたいことです。
カレブ

リンクと説明に+1の感謝、それらは素晴らしいです!:)
Mehrdad

/ usrには、オペレーティングシステム上にあるアプリケーションに固有のファイルやサードパーティのファイルが含まれている必要があります。本質的に共有可能ではありません!LSBは、これらは/ optに保持されると主張していますが。一方、/ usr / shareには、異なるアーキテクチャ/ OSバージョンのマシン間で共有可能なファイルを含めることができます。しかし、これらはすべて慣例です!完全に異なる構造を使用することは非常に困難ですが、大変な作業です。OracleのOptimal Flexible Architectureのような-他の規則しかしあります
symcbean

1
Unixについて覚えておくべきもう1つのことは、「すべてがファイルである」という概念です(少なくとも1つのように見えます)。たとえば、/ procの内容はファイルやディレクトリのように見えますが、コンテンツは実際にアクセスするとカーネルによって動的に作成されます。これは、同じツール(ls、catなど)を使用してこの情報にアクセスできることを意味します。
キースB

1
@symcbean FHSから: "... / usrは共有可能な読み取り専用データです。つまり、/ usrはさまざまなFHS準拠ホスト間で共有できるはずです..."。明らかに、一部のファイルはアーキテクチャに依存しており、一部のディストリビューションは大きく異なるディレクトリ階層を想定しています。解決策は、良い管理者のように宿題をすることです:)
bhinesley

18

私はそれらがすべて意味するもの(他の人が持っている)については答えませんが、少し歴史的な文脈を与えます。

まず、UNIXが40年近くになり、紙テープと300ボーのハードコード化された端末がメインフレームに戻ったことを思い出してください(Windows XPシステムは10年近く近くなっています)。タイピングは遅く、タイピングの効率の必要性は他の多くの考慮事項を上回りました。これが、非常に短い基本コマンド(つまり、「ls」、「cat」、「cc」、「dd」など)の理由です。ディレクトリ構造についても同じことが言えます。コマンドが3文字または4文字を超える場合、名前が長すぎると考えられました。

コマンドのほとんどが/ binにあり、すべてのデバイスファイルが/ devにあったため、/ usrディレクトリには元々ユーザーのホームディレクトリが含まれていました。その後、起動時間を短縮するためにプライマリドライブ(ルートファイルシステム、「/」)を小さくすることが考えられました。そのため、/ usr / bin、/ usr / include、および/ usr / libのような他の構造が生まれました。ここで、/ usrは別個の「ドライブ」でした。ずっと後に、ユーザーのホームディレクトリが/ homeにあり、さらに別のドライブがあると考えられていました。そしてそれよりずっと後、/ var(variable / changeableの略)を作成しました。/ etcディレクトリは、「et cetera」を意味していました。これは、すべてのシステム構成ファイルのすべての場所であるためです。/ mntは、ドライブ(多くの場合、バックアップドライブ)にアクセスするための一時的な場所として使用されました。/ opt、/ proc、および/ mediaなどのディレクトリは、ずっと後に登場しました。

(/ usr / localや/ netのように)省略されている部分はたくさんありますが、これは名前が「直感的ではない」理由を簡単に説明しています。


2
+1歴史的文脈が大好きで、脳を整理します。:)これを書いてくれてありがとう!
Mehrdad

5

ここですでに述べたように、Linuxディストリビューションは主にFHSを使用します。Windows から来ている人に特に適したチュートリアルのような概要については、こちらを参照してください。

ちなみに、Windowsディレクトリ表面的に直感的に見えます。しかし、プログラムの設定*.iniは、プログラムフォルダー内のファイル、Documents and Settings\User\Application Dataまたは\Local Settings\Application Data)、または悪名高いレジストリーのどこに属しているのか、お聞きします。誰も知らないし、マイクロソフトも知らない。そして、私たちは続けていくことができます。


1
フォルダーのWindows 7名の方が優れていると思います。すなわち、AppData \ Roaming vs AppData \ Local-そこにあるデータの種類を説明します。構成情報に関しては、見たときにどこに置くかは知っていると思いますが、うまく説明できません。:)
Mehrdad
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.