【初心者でもわかる】Linuxでのリンクファイルの作成方法と使い方

リンクファイル
  • このエントリーをはてなブックマークに追加
  • Pocket

LinuxのリンクファイルとはWindowsでいうところのショートカットだ。ショートカットキーではなく、デスクトップに置かれるようなファイルやフォルダへのショートカットがそれに当たる。

このページではLinuxでのリンクファイルの作成方法と使い方についてお伝えした。

リンクファイルを作成する意味

「リンク」を使用すると深い階層にあるファイルへのパスを短くしたり、特定の場所にリンクを設置することで、あたかも実態がそこにあるかのように振る舞うことが出来る。

例えば実態の実行ファイルをパスの通っていない場所に設置して、リンクをパスの通った場所に設置することでリンクをとおしてファイルを実行できるようになる。

要するに諸々の作業時間を減らしたり、わかりやすくすることができるということだ。

作業時間を減らすという意味では下記ページも参考になるし、下記でもリンクファイルの作成方法を簡単に説明している。このページよりもざっくり説明しているので、早く知りたい方はこちらを参考に。

Windowsでは「ショートカット」といわれるが、Linuxではリンクの種類が二つある「ハードリンク」と「シンボリックリンク」である。

ハードリンクに最初は戸惑うかもしれないが、さほど難しい概念ではないので安心していただきたい。

inodeのお話

ハードリンクやシンボリックリンクの話をする前にファイルの実態に関わる「inode」について話をしよう。

Linuxでファイルを作成すると、自動的にユニークな「inode番号」という番号が割り振られる。全てのファイルにinode番号が割り当てられることになっており、inodeはファイルの実態と強く結びついている。

またinodeにはファイルの「各属性情報」が収納されており、具体的には

  • ファイル種別
  • ファイルサイズ
  • アクセス権
  • 所有者情報
  • リンク
  • ブロック番号

などが納められている。

ハードリンク

ハードリンクを理解するときに重要なのは、「ファイル名はラベル」ということだ。ひとつのinodeにたいして複数のファイル名を割り振ることが可能になっている。

ハードリンクがまさにそれだ。ハードリンクはinodeに複数のファイル名つまりラベルを貼りつける作業となる。

ハードリンク

名前や場所が違うファイルが実際には同じものを見ているイメージだ。

ファイルそのものを見るため、ファイルシステムに強く関係している。そのため、異なるファイルシステムやパーティションへのハードリンクはできない。

また、inodeの番号を参照するため、元のファイルを移動させてもリンクがデットリンクになることがない。

特徴

  • inodeを参照する
  • パーティションをまたげない(inodeの関係上)
  • 異なるファイルシステム上ではリンクを作成できない(inodeの関係上)
  • ディレクトリのハードリンクは作成できない
  • 元ファイルを移動しても大丈夫

シンボリックリンク

Linuxに限らずパソコン上で一般的にリンクというと「シンボリックリンク」を指すことが多いだろう。こっちが、Windows用語でいうならば「ショートカット」となる。

ただ、置き場を見にくだけのリンクだ。

シンボリックリンク

パスでの参照となるのでinodeに依存しておらず、OSが認識しているファイルシステムならパーティションや異なるファイルシステムであっても問題なくリンクを作成できる。

lsなどで見ると、シンボリックリンクもファイルのように見える。

元ファイルを移動や削除するとデットリンクになる。ハードリンクよりもソフト的であり比較的に柔軟だ。

他のファイルシステムなどにリンクを貼っても動く。

特徴

  • パスでファイルやディレクトリを参照(リンク元のポインタとして動作する)
  • 別のファイルシステムでも問題なく動作する
  • ディレクトリに対しても有効
  • 元ファイルを移動するとデットリンクになる
  • 元ファイルを削除するとデットリンクになる

lnコマンドで実際に操作してみる

ハードリンクを実験する

では実際にlnコマンドでリンクを作成してみよう。とりあえず実験するためにディレクトリとファイルを用意しよう

$ mkdir -p testdir/mydir

$ touch testdir/mydir/testfile1.txt

$ echo test > testdir/mydir/testfile1.txt

$ cd testdir

準備はこのくらいで大丈夫だろう。いよいよlnコマンドを使用してみる

$ ln mydir/testfile1.txt ./test-hard-link

ハードリンクの作業は以上で終了だ。

ためしに

$ cat test-hard-link

としてみるとtestfile1.txtと内容が同じになっているはずだ。無事にリンクを作成できている。

さて次はinodeを確認してみよう

$ ls -il test-hard-link mydir/testfile1.txt

カラム1がinode番号であり、同じものをしめしているのがわかる。

ここで元のファイルtestfile1.txtの場所を変更してみよう

$ mv mydir/testfile1.txt .

この状態で

$ cat test-hard-link

としてみよう。問題なく参照できるはずだ。

ハードリンクはinode番号(今回の例では145717)が判断基準となりファイル名が増えるだけなので、どこに移動させてもリンクの状態はたもたれる。

ちなみにカラム3がinode番号に対してリンクされている数をしめしている。通常では実態ファイルを削除したい場合、ハードリンクをすべて削除すると実態も削除される。つまり現状

$ rm testfile1.txt

$ cat test-hard-link

としても実態はなくならないのである。inodeを基準にファイルが開かれるはずだ。

シンボリックリンクを実験する。

ハードリンクの次はシンボリックリンクを実験してみよう

まずは先程とおなじく適当にディレクトリやファイルを作成

$ mkdir -p stestdir/smydir

$ touch stestdir/smydir/stestfile1.txt

$ echo test > stestdir/smydir/stestfile1.txt

$ cd stestdir

この状態で

$ ln -s smydir/stestfile1.txt ./test-link

として

$ ls -lah

とすると

リンクがはられているのがわかる。

この状態で元ファイルの場所を変えてみよう

$ mv smydir/stestfile1.txt .

この状態で

$ cat test-link

としてみるとファイルが参照できなくなる。

シンボリックリンクはファイル名とパスに依存している。そのため名前が変わったり、場所が変更されると参照できなくなるので注意しよう。またシンボリックリンクを削除するときはrmコマンドを使用するよりも「unlink」コマンドを使用した方が安全だ。

$ unlink test-link

まとめ

このページではLinuxのリンクファイルの作成方法などについてまとめてご紹介してきた。

特にシンボリックリンクはシステム動作にも不可欠なものになっている。よく出てくるので、使い方含めマスターしてしまおう。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメント

  1. hahaha より:

    ハードリンクとシンボリックリンクの違いが今までよくわかってなかったんですが,この記事を読んでよくわかりました!ありがとうございます

    1. リカレントテクノロジー より:

      ご参考にしていただきありがとうございます。
      引き続き、ご愛読いただけますと幸いです。

  2. 栃木の自然派人間 より:

    今まで、右クリックにて、リンクが作成できたのに、Ubuntu 18.04 より、リンクの作成みたいなものが見当たらず、どうしようかと思っていました。(私自身の設定の不備もあると思いますが)
    端末を利用して作成するのですね。投稿されておられる記事を参考にして、リンクを作成することができました。
    ほんとうにありがとうございます。

    1. リカレントテクノロジー より:

      ご愛読いただきありががとうございます。
      引き続き、何卒よろしくお願いいたします。

リカレントテクノロジー へ返信する コメントをキャンセル

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する