【Linux】lnコマンド / update-alternativesコマンド

■ はじめに

めちゃくちゃいまさらながら、
lnコマンド / update-alternativesコマンドについてメモ。
ついでに、あいまいだった
Linux のハードリンク(hard link)と シンボリックリンク(Symbolic link)
について学んでおく。

目次

【1】lnコマンド
 1)ハードリンク (オプションなし)
 2)シンボリックリンク (-sオプション)
【2】update-alternativesコマンド
 1)オプション
 2)コマンド例
【3】unlinkコマンド
【4】Linux のリンク
 1)ハードリンク(hard link)
 2)シンボリックリンク(Symbolic link)
 補足:iノード(i Node)

【1】lnコマンド

* ファイルのリンクを作成するためのコマンド

1)ハードリンク (オプションなし)

* オプションなしで、ハードリンクを作成

構文

ln ファイル名 ハードリンク名

2)シンボリックリンク (-sオプション)

* -sオプションで、シンボリックリンクを作成

構文

ln -s ファイル名 シンボリックリンク名

コマンド例
https://dk521123.hatenablog.com/entry/2018/06/28/222959

sudo ln -s /usr/local/bin/git /usr/bin/git

補足:確認方法
https://dk521123.hatenablog.com/entry/2022/07/01/000000

$ ls -l
l rwx rwx rwx
- --- --- ---
1  2   3   4

#  1) ファイル種別(ファイル(-)/ディレクトリ(d)/シンボリックリンク(l))

【2】update-alternativesコマンド

* シンボリックリンクを管理してデフォルトのコマンドを決定する
 => 例えば、JavaやPythonのような複数バージョンを入れたい場合に使用

https://graziegrazie.hatenablog.com/entry/2015/11/14/101050

1)オプション

Options Explanations
--install シンボリックリンクの作成・登録
--config 使用するシンボリックリンクの設定(一覧から選択)
--set 使用するシンボリックリンクの設定(コマンド設定)
--display 現在選択されているシンボリックリンクの内容を表示

2)コマンド例

https://dk521123.hatenablog.com/entry/2024/01/13/002637

# sudo update-alternatives --install  <作成するシンボリックのパス> <グループ名> <実体へのパス> <優先度>
sudo update-alternatives --install /usr/bin/sbt sbt /usr/local/sbt/bin/sbt 100

update-alternatives --display sbt

https://dk521123.hatenablog.com/entry/2019/11/10/205535

# バージョンを切り替えるためにシンボリックリンクを設定
# sudo update-alternatives --install <作成するシンボリックのパス> <グループ名> <実体へのパス> <優先度>
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2

# sudo update-alternatives --config <グループ名>
sudo update-alternatives --config python3
2 << を選択 (python3.7)

# 選択なしで行う場合
# sudo update-alternatives --set <グループ名> <実体へのパス>
# sudo update-alternatives --set python3 /usr/bin/python3.7

# Pythonのバージョンを確認 (python3.7 になっているはず)
python -V

【3】unlinkコマンド

* ハードリンクを削除するコマンド

https://qiita.com/ko1nksm/items/dccd33cbdf52412568f1

【4】Linux のリンク

* 以下の2つ。
 1)ハードリンク(hard link)
 2)シンボリックリンク(Symbolic link)

イメージ

[ファイル] -> [ファイルのiノード] -> [ディスク上の実体]
 ↑      ↑
シンボリック ハードリンク
リンク
* ファイルの iノード(※)に関するリンク
 => ファイルを削除しても実体は残る
* ファイル自体のリンク
* Windows の ショートカットのようなもの
 => ファイルを削除すると実体も削除される

補足:iノード(i Node)

* ファイルの管理情報(※)が格納されている部分

* 所有者
* 更新日時
* アクセス権
など

関連記事

SBT ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2024/01/13/002637
Git ~ 初期設定 / Linux 編 ~
https://dk521123.hatenablog.com/entry/2018/06/28/222959
Linux ~ ユーザに関わるコマンド ~
https://dk521123.hatenablog.com/entry/2016/06/26/233349
Linux ~ 権限/所有 に関わるコマンド ~
https://dk521123.hatenablog.com/entry/2016/06/10/233349
Linuxパーミッション / アクセス権限 ~
https://dk521123.hatenablog.com/entry/2022/07/01/000000
Linux環境変数あれこれ ~
https://dk521123.hatenablog.com/entry/2015/07/16/103501
シェル ~ Shebang
https://dk521123.hatenablog.com/entry/2024/02/02/000000
シェル ~ あれこれ編 ~
https://dk521123.hatenablog.com/entry/2018/03/03/210642
Linuxログイン時に独自のメッセージ表示を表示するには
https://dk521123.hatenablog.com/entry/2017/06/22/214918