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

Subsections



3 シンボリックリンク

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

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

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

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

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

  1. まず, mybirth がどのディレクトリにあるかを確かめましょう。 ホームディレクトリ以外の場所にあるならば,mv コマンドを使って ホームディレクトリに移動してください。

    ファイルの中身と実行結果も確認してください。

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

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

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

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

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

  7. エディタで symlink を開き,ファイルの末尾に次の 1 行を加えてから 保存してください。

    echo symlink changed

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

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


3.2 問題

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

  2. カレントディレクトリをホームディレクトリとしてから,前項で作成し たファイル now へのシンボリックリンクを,ホームディレクトリに作成 してください。シンボリックリンクの名前は symnow とします。 リンク先は,相対パス名を使えば unix/now でしたね。

  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 ファイルの詳細情報とアクセス権

平成17年12月21日