Metadata
Title
17.6.5. リンク
Category
general
UUID
08b67c9f638e4c4bb923d6160eeb80bc
Source URL
https://hwb.ecc.u-tokyo.ac.jp/hwb2023/applications/shell/fs/links/
Parent URL
https://hwb.ecc.u-tokyo.ac.jp/hwb2023/literacy/email/
Crawl Time
2026-03-23T10:18:55+00:00
Rendered Raw Markdown

17.6.5. リンク

Source: https://hwb.ecc.u-tokyo.ac.jp/hwb2023/applications/shell/fs/links/ Parent: https://hwb.ecc.u-tokyo.ac.jp/hwb2023/literacy/email/

一つのファイルを、別の場所から別の名前でアクセスできるようにしたい場合があります。このような場合、リンクと呼ばれる機能を使うと便利です。UNIX 系の OS では、ハードリンクシンボリックリンクと呼ばれる複数の種類のリンクがあります。シンボリックリンクの方がよく使われるので、そちらについてまず説明します。

シンボリックリンク #

シンボリックリンクは、一見ファイルのように見えるが、実態は「他の場所のファイルやディレクトリの名称を持っているだけのもの」です。シンボリックリンクを作る(しばしば「張る」といいます)には、ln コマンドに -s オプションを渡します。

ln -s (実体のパス) (偽物のパス)

「実体の名前」は、リンクが指し示す実体のファイルやディレクトリの名前を書きます。

例えば、カレントディレクトリの english.txt を、eigo.txt という名前でも参照できるようにするためにシンボリックリンクを張るには、次のようにします。

ln -s english.txt eigo.txt

すると、english.txt を確かに eigo.txt という名前でも参照できるようになりました。

cat english.txt

hogehoge

cat eigo.txt

hogehoge

片方の内容を変更すると(実体は english.txt の1つだけなので)もう片方も変更されたように見えるわけです。下の例では echo コマンドで english.txt の内容を変更していますが、eigo.txt の内容も同じように変更されていることがわかります。

echo fugafuga > english.txt

cat english.txt

fugafuga

cat eigo.txt

fugafuga

ls コマンドで、シンボリックリンクとそうでないファイルは以下のようにして区別できます:

以下がその例です。

ls -l eigo.txt

lrwxr-xr-x 1 0000000000 student 7 3 16 16:26 eigo.txt -> english.txt

ls -F eigo.txt

eigo.txt@

ディレクトリのシンボリックリンクを張ることもできます。方法はファイルのときと同じです。

ls -F

eigo.txt@ english.txt piyo/

ls piyo

fuga.txt

ln -s piyo foo

ls -F

eigo.txt@ english.txt foo@ piyo/

ls foo

fuga.txt

シンボリックリンクを消す場合は、リンクの方を削除します。リンクを消しても、それが指し示す実体(リンク先)は消えません。

実体のほうを消すと本当にファイルが消えてしまい、せっかく作ったシンボリックリンクは無効になってしまいます。 以下は本物を消してしまった失敗例です。

rm english.txt

cat eigo.txt

cat: eigo.txt: No such file or directory

同じように、リンク先のファイルを移動させたり、リンク先の名前を変更させてもシンボリックリンクは無効になります。

ハードリンク #

ハードリンクは、シンボリックリンクとほぼ同様ですが、作成されたファイルと元の実体のファイルは同等になります。 作成方法は同じ ln コマンドで、-sオプションは使いません。

ln  (実体のパス) (新しいファイル名)

例えば、次のコマンドは english.txt のハードリンク engelsk.txt を作ります。

ln  english.txt engelsk.txt

なお、ディレクトリのハードリンクは作成できません。他にも異なるディスクパーティションをまたげないなど制限があります。

これがハードリンクとシンボリックリンクの違いです。