LoginSignup
0
0

シンボリックリンクとハードリンク【macOS Linux】

Posted at

はじめに

  1. bashなどの「現在使用されているシェル」への「ハードリンク」「シンボリックリンク」としてのsh
    例:(設定されていれば)"docker compose exec web /bin/sh = docker compose exec web bash" である。

以前書いた記事で、「シンボリックリンク」「ハードリンク」という語句を使ったのですが、その違いを説明できませんでした。

今回、エンジニアなら知っておきたいmacOS環境のキホンのおかげでその違いがわかったので、記事にしていきます。

シンボリックリンクとは

簡単に言えば、Windowsの「ショートカット」
具体的に言うと、「特定のファイルやフォルダまでのパスを保存したもの(ショートカット)です。

ハードリンクとは

簡単に言えば、「別名」
具体的に言うと「同じデータを指す異なるエントリ(名前)」です。

シンボリックリンクとハードリンクの違い

まずはポイントからいきましょう。
「シンボリックリンクの方が便利でよく使われる」
です。

シンボリックリンクは、ハードリンクと比較し以下のメリットを持ちます。

  • リンク先がわかりやすい(ls -lコマンドで確認できる)
  • ディレクトリへのリンクも作成可能
  • 異なるディスクボリューム上のファイルへのリンクが作成できる

一方、ハードリンクは

  • 同じディスクボリューム上であれば、もととなるファイルの移動に対応できる
  • というか、もととなるファイルと全く同じデータを指すので、例えば「もととなるファイル」を削除しても大丈夫

というメリットを持ちますが、基本的にはあまり使い所がないです。

シンボリックリンクの便利な使い方

最近の悩み「作業ファイルを開くためのネストが深い」を解決していきましょう。

  1. ホームディレクトリでmkdir tmp
    作業中のディレクトリ・ファイルへのリンクを保存する場所を作ります。
  2. 目的のディレクトリまで移動し、ln -s "$(pwd)" ~/tmp/sl_name
    sl_nameは「シンボリックリンクの名前」という意味です。自分で設定してください。

これで、これからは~/tmpを見れば作業が始められます!
使わなくなったり、ディレクトリのパスが変わったらrm sl_nameするだけです。良いですね!

おわりに

ちょっと駆け足になりましたので、ご質問あればコメントにお願いします。

次は何を書こうかしら・・・

参考

エンジニアなら知っておきたいmacOS環境のキホン コマンド・Docker・サーバなどをイチから解説 | 大津 真 |本 | 通販 | Amazon

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0