next up previous contents
Next: A. 問題の解答例 Up: UNIX 基礎演習 B 組 Previous: 2 ファイルの詳細情報とアクセス権

Subsections



3 シンボリックリンク

UNIX ファイルシステムでは,既存のファイルに別の名前を付けて利用すること ができます。この仕組みがリンク(link) です22。UNIX ファイルシステムには,ハードリンク (hard link) とシンボリックリンク (symbolic link) がありますが,ここではシンボ リックリンクのみを取り上げます23

シンボリックリンクを作成するには,コマンド ln をオプション -s を 付けて実行します。基本的な実行の書式は

ln -s リンク先のファイル名 作成するリンク名
です。

3.1 通常ファイルへのシンボリックリンク

2.5 節の問題 14 で作成した誕生月カレンダー を表示するコマンドが,ホームディレクトリに mybirth という名前のファイル として存在するとします。以下では,このファイルへのシンボリックリンクを作 成して,その性質を見てみます。

  1. まず,上記の誕生月カレンダーのコマンドが,どのディレクトリに何と いうファイル名で存在するかを確かめましょう。ファイルの中身や実行 結果を確認してください。

    ファイルが確認できたら,次項以降の mybirth を実際のファイル名(ま たはパス名)に読み替えて実行してください。または,mv コマンドを使っ てファイル名を mybirth に変更したり,ファイルをホームディレクトリ に移動して,以下をそのまま実行しても構いません。

  2. mybirth へのシンボリックリンクを symlink という名前で作成します。
    cd
    ln -s mybirth symlink

  3. できたかどうか確認します。シンボリックリンクもファイルなので, ls コマンドが使えます。
    ls
    ls -F
    シンボリックリンクであることを表す印はわかりましたか。

  4. もっと詳しい情報も見てみましょう。
    ls -l
    シンボリックリンクでは,ファイルの種類の表示(左端)が l になって いますね24。また, ファイル名の表示欄からはリンク先もわかります。なお,シンボリック リンクのアクセス権は,リンク先のものが引き継がれます。

  5. シンボリックリンクの内容はどのように表示されるでしょう。シンボリッ クリンクとリンク先ファイルに cat コマンドを適用して比較しましょう。
    cat symlink
    cat mybirth

  6. 実行結果を比較しましょう。
    ./symlink
    ./mybirth

  7. エディタで symlink を開き,適当に書き換えて保存してください。

    cat コマンドで,symlink とリンク先のファイル mybirth の内容を比較 してください。

  8. symlink を削除してもリンク先のファイルは消えません。試してくださ い。


3.2 問題

  1. ホームディレクトリに存在するディレクトリ unix に,現在の日付・日 時が入ったファイル now を作ってください。date コマンドを使います。

  2. 前項で作成したファイル now へのシンボリックリンクをホームディレク トリに作成してください。シンボリックリンクの名前は symnow としま す。リンク先と異なるディレクトリにリンクを作るには,ln のいずれか の引数をパス名で与える必要があります。

  3. ホームディレクトリをカレントディレクトリとし,シンボリックリンク symnow を通じて now の内容を確認してください。
    シンボリックリンクを作ることで,カレントディレクトリとは異なるディ レクトリのファイルを,パス名に代えファイル名で扱うことが可能になり ます。

  4. リンク先である now の名前を old に変更し, ホームディレクトリで cat symnow を実行してみましょう。
    しかられますね。リンク先の名前が変わるとシンボリックリンクは無効 になります。

  5. symnow は使えなくなったので削除しましょう。 old も消しましょう。

3.3 ディレクトリへのシンボリックリンク

  1. ディレクトリ /bin へのシンボリックリンク mybin を,ホームディレク トリに作成します。
    cd
    ln -s /bin mybin

  2. できたかどうか確認します。
    ls -l

  3. シンボリックリンクを使ってカレントディレクトリを /bin にします。
    cd mybin
    pwd
    ls

  4. こんなこともできます。
    cd
    pwd
    ls
    ls mybin
    ls -l mybin/pwd
    mybin/pwd
    mybin/echo now using symbolic link for /bin

  5. シンボリックリンクを削除しても,リンク先のディレクトリに影響はあ りません。
    rm mybin
    ls /bin


next up previous contents
Next: A. 問題の解答例 Up: UNIX 基礎演習 B 組 Previous: 2 ファイルの詳細情報とアクセス権
Hideaki Konno
平成17年1月5日