はじめに
bash
などの「現在使用されているシェル」への「ハードリンク」「シンボリックリンク」としてのsh
例:(設定されていれば)"docker compose exec web /bin/sh
=docker compose exec web bash
" である。
以前書いた記事で、「シンボリックリンク」「ハードリンク」という語句を使ったのですが、その違いを説明できませんでした。
今回、エンジニアなら知っておきたいmacOS環境のキホンのおかげでその違いがわかったので、記事にしていきます。
シンボリックリンクとは
簡単に言えば、Windowsの「ショートカット」
具体的に言うと、「特定のファイルやフォルダまでのパスを保存したもの(ショートカット)です。
ハードリンクとは
簡単に言えば、「別名」
具体的に言うと「同じデータを指す異なるエントリ(名前)」です。
シンボリックリンクとハードリンクの違い
まずはポイントからいきましょう。
「シンボリックリンクの方が便利でよく使われる」
です。
シンボリックリンクは、ハードリンクと比較し以下のメリットを持ちます。
- リンク先がわかりやすい(
ls -l
コマンドで確認できる) - ディレクトリへのリンクも作成可能
- 異なるディスクボリューム上のファイルへのリンクが作成できる
一方、ハードリンクは
- 同じディスクボリューム上であれば、もととなるファイルの移動に対応できる
- というか、もととなるファイルと全く同じデータを指すので、例えば「もととなるファイル」を削除しても大丈夫
というメリットを持ちますが、基本的にはあまり使い所がないです。
シンボリックリンクの便利な使い方
最近の悩み「作業ファイルを開くためのネストが深い」を解決していきましょう。
- ホームディレクトリで
mkdir tmp
作業中のディレクトリ・ファイルへのリンクを保存する場所を作ります。 - 目的のディレクトリまで移動し、
ln -s "$(pwd)" ~/tmp/sl_name
sl_name
は「シンボリックリンクの名前」という意味です。自分で設定してください。
これで、これからは~/tmp
を見れば作業が始められます!
使わなくなったり、ディレクトリのパスが変わったらrm sl_name
するだけです。良いですね!
おわりに
ちょっと駆け足になりましたので、ご質問あればコメントにお願いします。
次は何を書こうかしら・・・
参考
エンジニアなら知っておきたいmacOS環境のキホン コマンド・Docker・サーバなどをイチから解説 | 大津 真 |本 | 通販 | Amazon