基本は以下。(/ ディレクトリ配下)
ディレクトリ | 解説 |
/ | ルートディレクトリ |
ユーザー別 | |
/home | ユーザーのホームディレクトリ |
/root | root のホームディレクトリ |
ソフトウェア | |
/bin | 汎用コマンド |
/sbin | 管理者用コマンド |
/usr | アプリケーションなどのパッケージ |
管理ファイル | |
/etc | 設定ファイル |
/var | データファイル |
/tmp | 一時ファイル |
デバイス、ハードウェア | |
/dev | デバイスファイル |
/mnt | デバイスをマウントするディレクトリ |
/proc | システム情報 |
その他 | |
/lib | 共有ライブラリ |
/boot | OSのブート用ファイル |
/usr の下は更に以下のようになっています。
ディレクトリ | 解説 |
/usr/bin | アプリケーションによる汎用コマンド |
/usr/sbin | アプリケーションによる管理者用コマンド |
/usr/lib | アプリケーションのライブラリ |
/usr/share | アーキテクチャに依存しないファイル (ドキュメントなど) |
/usr/include | C言語用ヘッダファイル |
/usr/local | アプリケーションをソースからコンパイルして入れるなど、管理者が自由に使える領域 |
ホームディレクトリにはユーザーの個人ファイルの他、ユーザー固有の設定ファイルやデータファイルがドットファイルとして置かれています。
このようになっている理由は、パーティションを分ける際にディレクトリの用途によって別々の領域に分けやすくするためです。(例えば /home とその他のディレクトリを分けておくと、他のパーティションが障害にあっても /home は被害にあわずに済む)
ディストリビューションによっては /usr とは別に /opt があったり、/mnt がなかったり、/boot が /initrd だったりもします。
現在の Linux のファイルシステムは大体 Filesystem Hierarchy Standard に準拠されてることが多いので、それを読めば分かるかも。
以下は FHS の概要と解説。
/ や /usr にある bin や sbin ディレクトリには、ユーザーやシステムから使われるバイナリ/実行ファイルを置きます。
どんなユーザーからも使われる可能性がある汎用的なプログラムは bin に、システム管理者しか使わないような運用系のプログラムは sbin に置きます。
/ にはシステムの動作に最低限必要なファイルとプログラム、/usr にはそれ以外のファイルとプログラムを置きます。
どちらもプログラムから使用される設定・データファイルを置きます。ただし、一度設定したら変わらないようなファイルは /etc に置き(*1)、/var は使っているたびにサイズが変化するファイル(*2)を置きます。
以下を参照。
サポート元が違うとか、サイズが大きすぎるとかの理由で /usr から外されたファイルを置く。
/opt の下はパッケージ別に分かれていて、/usr/bin は /opt/kde/bin とかに当たります。
KDE や GNOME を使っている場合、個人のデスクトップ画面に表示されるディレクトリ。
ドライブがない代わりに、/mnt や /media ディレクトリにメディア名でマウントされる。(*3)
自動でマウントされない場合は、手動で /dev からマウント。
ServersGeneralFAQs#initに移動しました。
大抵のディストリビューションは、インストール時の記録が後で参照できるように用意されていますが、ディストリビューションによっては記録が保存されている場所が異なっていることがあります。
ファイルやディレクトリを検索するには find , locate が使える。
検索 | コマンド |
find (逐次検索) | $ find 検索するディレクトリ -name ファイル名 |
locate (データベースから検索) | $ locate ファイル名 |
find では逐一ファイルを検索するのに対し、locate ではファイル名のデータベースから検索するのでやや高速。
ただし、locate ではデータベース更新後に作成されたファイルやディレクトリは検索できません。データベースを再更新するには root で updatedb コマンドを実行します。大抵の場合、updatedb は cron デーモンによって自動で定期的に行われる設定になっています。
findコマンドの-execアクションを使用します。
例: カレントディレクトリの複数のzipファイルを一度にまとめて展開する。
$ find . -name '*.zip' -exec unzip {} \;
あるファイルがどんな種類のファイルかわからない時は less などのページャでとりあえず中身を覗いてみるのも一つの手だけど、 file コマンドを使うとマジックナンバーに基づいてファイルの種類を調べることができます。
$ file sample.gif sample.gif: GIF image data, version 89a, 302 x 231
-f のようにファイル名が - ではじまるファイルを作ってしまうと、コマンドラインから rm -f で消そうとしたときに -f がオプション指定だと解釈されてしまい、rm コマンドで削除することができません。
こういった場合は rm ./-f として引数に与える文字の最初に「-」以外を指定するか、rm -- -f としてオプションとして解釈させない (参照: man rm) ことで削除します。
shred コマンドを使いましょう。データの削除やシステムファイルの削除をより確実に実行して、その復元を困難にします。
shred | コマンド |
ファイルを確実に消去 | $ shred --remove ファイル |
メディアやドライブを廃棄したり、他人に譲渡する際活用できます。
基本的に復元できません。大事なファイルは普段からどこかにバックアップをとっておこう。
ファイルシステムに ext2 を使っている場合に限り、mc で復元できるかも。うっかりと削除してしまったファイルを復活させたい (ITMedia) を参照のこと。
rm コマンドでは -i オプションを付けると削除するかどうか尋ねるようになるので、rm を使う場合は予防的にこのオプションを使うのもいいかもしれません。
次のような状況を想像してほしい。ここ 3 日間、飲まず食わすでシャワーも浴びずに作業を続け、ようやくその抑えきれないハッキングの衝動が実を結んだ。ついに、プログラムが完成したのだ。世界的な賞賛と名声をもたらすだろうほどの。あとは tar でかためて、Metalab にあげるだけだ。おっと、Emacs のバックアップファイルの削除を忘れていた。ここであなたは、rm * ~ とコマンドを打つ。そして、嗚呼、コマンドに余計なスペースを入れてしまったことに気付くのである。世紀の逸品 を削除してしまった! しかし、万策尽きたわけではない。この文書は、Ext2 ファイルシステム上で削除してしまったファイルを復旧する方法について解説している。おそらく、最後にあなたはそのプログラムをリリースできるはず....
Linux で使われているファイルシステムはひとつのファイルに対し連続したブロックを取るので、Windowsに比べて断片化しにくいといわれています(一部では「断片化しない」と盲目的に語られているのも事実ではありますが)。
なので、デフラグはしなくても構いません。
MS-DOS ファイルシステムはディスクスペースの異常な管理でよく知られています。MS-DOS のバッファキャッシュの使い方がひどく悪いことと相まってパフォーマンスに及ぼすファイルフラグメンテーションの影響は際だっています。 DOS ユーザー達はほとんど毎週ディスクをデフラグすることに慣れていて、デフラグすることに関して儀式的な信仰に達している人すらいます。このような習慣は Linux と ext2 に持ちこむべきではありません。Linux のネイティブなファイルシステムは普通の使い方ではデフラグを必要としません。ディスク上の空き領域がすくなくとも 5% ある状況なら「普通の使い方」の範疇です。
たとえば下記の例。 Used と Avail を足すと 137GB となっており、Size の 143GB より少なくなっている。
$ df -h / Filesystem Size Used Avail Use% Mounted on /dev/sda1 143G 24G 113G 18% / $
これはパーティションの一部が root 専用領域として予約されているため。 この予約領域は一般ユーザ権限では書き込むことができない。 またこの予約領域は断片化防止のためにも使われる。
予約領域のサイズは、デフォルトではパーティション全体のうち5%。 サイズはファイルシステム作成時に mke2fs の -m オプションで指定できる。 またファイルシステム作成後に tune2fs の -m オプションで変更もできる。
カレントディレクトリにあるファイルとディレクトリ一覧を見る。
$ ls
ドットファイルまで見たい時は -a オプション、ファイルの詳細を表示するには -l オプションをつける。
$ ls -al
ディレクトリ名を指定するとカレントディレクトリ以外を表示する。
$ ls [表示するディレクトリ名]
指定ディレクトリに移動する。(カレントディレクトリを変更する)
$ cd [ディレクトリ名]
zshで setopt auto_cd を設定すると、ディレクトリを打つだけでcdすることができるので、激しく便利。
ファイルをコピーする。
$ cp [コピー元のファイル、ディレクトリ名] [コピー先のファイル、ディレクトリ名]
ディレクトリごとコピーする時は -r オプション。
ファイルを検索する
$ find [探すディレクトリ] -name [名前]
いろんなオプションが使える上、ディレクトリツリーを調べるのにも使えて便利。
ファイルを移動する。名前の変更にも使える。
$ mv [現ファイル、ディレクトリ名] [新ファイル、ディレクトリ名]
新しいディレクトリを作る。
$ mkdir [ディレクトリ名]
一気に深いディレクトリを作る時は -p オプション。
ファイル、ディレクトリを削除する。
$ rm [ファイル、ディレクトリ名]
ディレクトリ以下をまるごと削除するは -r オプション。
tar.gz または tar.bz2 形式で圧縮されたファイルの展開。
$ tar xvf [圧縮されたファイル]
ハードディスクの残り容量(=使用状況)を表示。
$ df Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/hda3 14160404 2292192 11148904 18% / /dev/hda2 101105 6340 89544 7% /boot none 123728 0 123728 0% /dev/shm
デフォルトだとブロック数で表示するためわかりにくいので、-h オプションをつけるとよいでしょう。-h は単位を MB や GB で表示させるオプションです。
$ df -h Filesystem サイズ 使用 残り 使用% マウント位置 /dev/hda3 14G 2.2G 11G 18% / /dev/hda2 99M 6.2M 88M 7% /boot none 121M 0 121M 0% /dev/shm
-T オプションをつけるとファイルシステムの種類(ext2, ext3, Reiserfs, …etc)を併せて表示します。