グロブ
通常、シェルは、コマンドラインに指定されたすべてのファイル名パターンを、それにマッチするファイル名に展開する。これをグロブ(globbing)と言う。
例: ~/*.txt → ホームディレクトリにある全ての.txtファイル
Perlプログラムの中で、*.txtのようなパターンを展開するには、glob関数を使う。
my @all_files = glob '*';
my @txt_files = glob '*.txt';
Unixファイルシステムの基本(iノードとリンク)
- 各ファイルは、番号が振られたiノード(inode)に格納される(ディスクを土地だと考えると、iノードは、その特定の1区画に相当)。
- 各iノードはリンク数(link count)という数を持っている。iノードがどのディレクトリにも入っていなければ、リンク数は必ず0になる。iノードがディレクトリに追加されると、リンク数が1つ増やされる。
- ls -lコマンドの出力で、パーミッションフラグ(-rw-r–r–等)の右隣りに表示されるのはリンク数。ほとんどのファイルは1、ディレクトリは最低でも2。
- リンク(ハードリンク)を作成できるのは、ファイルのみ。ディレクトリは不可。
- ボリュームをまたいでリンクを作成することはできない。
シンボリックリンク
シンボリックリンク(symbolic link)は、ディレクトリ内の特別なエントリで、システムに対して別の場所を見に行くように指示する。シンボリックリンクには、以下のような特徴がある。
- シンボリックリンクでは、リンク数は増えない。
- ディレクトリに別名をつけることができる。
- ボリュームをまたいでシンボリックリンクを作成することができる。