web-dev-qa-db-ja.com

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

Windowsの世界から来た私は、 folder 非常に直感的なディレクトリ名:

  • _\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:_など、ハードディスクの他のパーティションはどこにありますか?

  • _/home_には、ユーザーファイルと設定が含まれています。これだけは直感的ですが、_/usr_には何が入るのでしょうか。そして、ファイルと設定を持つユーザーであるにもかかわらず、なぜ_/root_はまだ分離されているのですか?

  • _/lib_には、DLLなどの共有ライブラリが含まれています。しかし、_/usr/lib_も同様です。違いは何ですか?

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

  • _/opt_、_/proc_、および_/var_とは何ですか?それらは何を表し、何に使用されますか?私はWindows *でそれらのようなものを何も見たことがなく、それらが何のためにあるのか理解できません。

誰かが知っておくとよい他の標準的な場所について考えることができる場合は、質問に自由に追加してください。うまくいけば、これは、* nixシステムに慣れ始めた私のような人々にとって、良い参考になります。

* OK、それは嘘です。私はWinObjで同様のことを見てきましたが、明らかに定期的ではありません。ただし、Linuxでこれらが何を行うのかはまだわかりません。

26
user541686

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がこれによく使用されているのを目にしましたが、それは実際にはその目的ではありません。

30
bhinesley

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

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

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

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

19
Arcege

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

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

5
Philomath