2026-09-16

slink

シンボリックリンクを手軽に作成・管理する macOS 向け CLI

Table of Contents

1. はじめに

設定ファイルを整理するとき、シンボリックリンクを使うと便利です。ファイルやディレクトリへの「別の場所からの入り口」を作れるので、設定の実体を一か所にまとめておけます。

ただ、リンクが増えてくると、次のようなことが気になります。

  • どこにリンクを作ったか
  • それぞれ何を参照しているか
  • 参照先が今も存在するか
  • 消してしまったリンクを復元したい

slink は、シンボリックリンクの作成と同時に、リンクの場所と参照先を管理ファイルに記録する macOS 向け CLI です。

作成したリンクの一覧表示、状態の確認、復元まで、コマンドで操作できます。すでにあるリンクを管理対象に追加することもできます。dotfiles に限らず、すべてのシンボリックリンクを手軽に管理できます。

favicon

2. インストール

Homebrew からインストールできます。

brew install kkensuke/tap/slink

次のコマンドでバージョンが表示されれば、インストール完了です。

slink --version

3. まずは使ってみる

設定ファイルを事前に用意する必要はありません。まずは練習用のファイルで試してみましょう。

3.1. リンクを作成する

練習用のディレクトリとテキストファイルを用意します。

mkdir -p ~/slink-demo
cd ~/slink-demo
printf 'Hello, slink!\n' > hello.txt

hello.txt を参照するリンクを作ります。

slink hello.txt hello-link.txt

基本形は次の通りです。

slink <参照先> <作成するリンク>

今回の例では、hello.txt が実体で、hello-link.txt がその実体への入り口になります。

リンク経由で中身を読んでみましょう。

cat hello-link.txt

Output:

Hello, slink!

元のファイルの内容が表示されます。hello.txt を編集すると、リンク経由で読む内容も変わります。

ディレクトリへのリンクも、同じ書き方で作成できます。

3.2. 登録したリンクを一覧表示する

slink で作成したリンクは、自動で管理対象に登録されます。

slink list

リンクの配置先と参照先をまとめて確認できます。

3.3. リンクの状態を確認する

登録どおりのリンクがあり、参照先にもアクセスできるかを確認します。

slink check ~/slink-demo/hello-link.txt

問題がなければ、次のように表示されます。

OK 1 links

管理しているリンクをまとめて確認する場合は、パスを省略します。

slink check

登録内容を見るのが list、実際の状態を確認するのが check です。

4. 管理ファイル

4.1. 保存場所を確認する

リンクの登録内容は、通常、次の TOML ファイルに保存されます。

~/.config/slink/links.toml

実際に使用している管理ファイルの場所は、次のコマンドで確認できます。

slink --config

管理ファイルは、リンクの作成や adopt による登録の際に自動で作成されます。

4.2. 管理ファイルを開く

macOS の既定のアプリで開くには、次のコマンドを使います。

open "$(slink --config)"

VS Code の code コマンドが使える場合は、次のように開くこともできます。

code "$(slink --config)"

4.3. 管理ファイルの内容

先ほどのリンクは、ホームディレクトリが /Users/you の場合、次のように記録されます。

links.toml
[[link]]
link   = "/Users/you/slink-demo/hello-link.txt"
target = "/Users/you/slink-demo/hello.txt"
項目内容
linkリンクを配置する場所
targetリンクの参照先

リンクが増えると、[[link]] のブロックが追加されます。コマンドに相対パスを指定した場合も、管理ファイルには絶対パスで記録されます。

普段の操作は slink のコマンドで行えますが、管理ファイルを開くと、登録したリンクの対応関係を直接確認・編集できます。

5. コマンド一覧

コマンド説明
slink <target> <link>リンクを作成し、参照先と配置先を登録する
slink --config管理ファイルの場所を表示する
slink list登録したリンクの一覧を表示する
slink check [link ...]登録と実際のリンクを照合し、参照先にアクセスできるか確認する
slink fix [link ...]登録内容に合わせてリンクを作成・修復する
slink unregister <link ...>リンクを残して、管理対象から外す
slink remove <link ...>登録と一致するリンクを削除し、登録も解除する
slink adopt <link ...>既存のリンクを管理対象に登録する
slink scan [directory ...]指定したディレクトリの直下にあるリンクを探す

[link ...] のように角括弧で囲まれた引数は省略できます。... は複数のパスを指定できることを表します。

  • checkfix は、パスを省略すると登録済みの全リンクが対象になります。
  • unregisterremoveadopt は、登録済みのリンクを指定します。
  • adopt は、未登録のリンクを指定します。
  • scan は、ディレクトリを省略すると現在のディレクトリを探索します。

6. オプション一覧

短縮形長い形式説明
-c--config管理ファイルの場所を表示する
-f--force作成・fix で、参照先が異なる既存のリンクを置き換える
-p--parents作成・fix で、リンクを置くために不足している親ディレクトリを作成する
-n--dry-run作成・fixunregisterremoveadopt の変更予定を、書き込まずに表示する
-R--recursivescan でサブディレクトリも探索する
-o--format <形式>listcheckscan の出力形式を指定する。human / tsv に対応し、既定は human
-h--helpヘルプを表示する
-V--versionバージョンを表示する

短いオプションは、-np のようにまとめて指定できます。

--config--help--version は、それぞれ単独で使います。--config は、別の設定ファイルを指定するオプションではなく、現在の管理ファイルの場所を表示するものです。

slink --help

7. よく使う操作

7.1. dotfiles の設定をリンクする

例えば、Neovim の設定を ~/dotfiles/nvim にまとめ、Neovim が設定を探す ~/.config/nvim から参照させたい場合です。

参照先の ~/dotfiles/nvim に設定を用意したうえで、次のように実行します。

slink -p ~/dotfiles/nvim ~/.config/nvim

-p を付けると、必要に応じて親ディレクトリの ~/.config を作成します。参照先の ~/dotfiles/nvim 自体を作成するオプションではありません。

これで、~/dotfiles/nvim に置いた設定を ~/.config/nvim 経由で利用できます。

実行前に変更予定を確認したい場合は、-n を付けます。

slink -np ~/dotfiles/nvim ~/.config/nvim

内容を確認してから、-n を外して実行します。

7.2. 消してしまったリンクを復元する

登録済みのリンクは、fix で作り直せます。

先ほどの練習用リンクで試してみましょう。まず、リンクだけを削除します。

rm ~/slink-demo/hello-link.txt

この操作では、参照先の hello.txt は残ります。

続いて、登録内容からリンクを復元します。

slink fix ~/slink-demo/hello-link.txt

リンク経由で読めることを確認します。

cat ~/slink-demo/hello-link.txt
Hello, slink!

複数のリンクをまとめて復元したい場合は、対象のパスを省略できます。-n を付けると、実際には作成せずに何が起こるかを確認できます。

slink fix -n

確認後に実行します。

slink fix

7.3. すでにあるリンクを探して登録する

これまで ln -s などで作成したリンクも、slink の管理対象に追加できます。

例えば、~/.config の直下にあるリンクを探すには、次のようにします。

slink scan ~/.config

サブディレクトリも含めて探す場合は、-R を付けます。

slink scan -R ~/.config

scan は、まだ登録していないリンクも見つけられます。

見つかったリンクを管理対象に追加するには、adopt を使います。例えば、~/.config/nvim がすでにシンボリックリンクになっている場合は、次のように登録します。

slink adopt ~/.config/nvim

リンク自体は変更せず、その場所と現在の参照先を登録します。

登録後は、ほかのリンクと一緒に listcheck で確認できます。

slink check ~/.config/nvim

7.4. リンクを削除する・管理対象から外す

練習用リンクが不要になったら、目的に応じて次のどちらかを使います。

リンクと登録を両方削除する場合は、remove を使います。

slink remove ~/slink-demo/hello-link.txt

参照先の hello.txt は削除されません。

リンクを残して管理だけやめる場合は、unregister を使います。

slink unregister ~/slink-demo/hello-link.txt

こちらはリンクをそのまま残し、listcheckfix の対象から外します。

詳しい使い方や更新情報は、日本語 README で確認できます。

関連記事