Как создать симлинк для быстрого открытия файла в нужной программе прямо из терминала MacOS?

Дата публикации: 15 ноября  2024 года

Для этого служит команда с синтаксисом ln -s target_path link_name, но есть и альтернативные способы.

Создание симлинка для открытия файла

Для примера вспомню как создавал симлинк для открытия файлов в Sublime Text.

Команда в данном случае будет выглядела так:

ln -s "/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl" /usr/local/bin/subl

После этого можно открыть файл filename.txt из терминала так:

subl filename.txt

А где взять путь к исполняемому файлу?

Но если мы зайдём в «файндере» в папку /Applications, то Sublime Text.app будет приложением, а не директорией. Откуда взялось продолжение пути?

Всё просто.

Приложения в macOS, подобные Sublime Text.app, выглядят как файлы в «файндере», но на самом деле это пакеты приложений, которые являются директориями. Для создания симлинка нужно найти фактический исполняемый файл внутри пакета приложения.

Найти его можно, кликнув правой кнопкой мыши на пакете приложения и выбрав в контекстном меню пункт «Показать содержимое пакета" (Show Package Contents)».

После этого ищем нужный файл. В случае с Sublime Text мне потребовалась директория /Contents/SharedSupport/bin/, но если SharedSupport отсутствует, то нужно смотреть в /Contents/MacOS.

Так, например, создание симлинка для открытия markdown-файлов в приложении Markdown Editor выглядело сперва так:

ln -s "/Applications/Markdown Editor.app/Contents/MacOS/Markdown Editor" /usr/local/bin/mark

Симлинк не работает...

Пример с Markdown Editor взял не случайно, в этом случае симлинк не сработал.

Ввожу в терминале:

mark filename.md

А дальше процесс зависает и файл не открывается.

Если лень разбираться почему завис процесс, то можно воспользоваться альтернативными способами создания симлинков.

Вот этот создаст симлинк, который будет работать в текущей сессии терминала, но исчезнет при её закрытии.

alias mark='open -a "Markdown Editor"'

Чтобы создать alias на постоянной основе, нужно добавить его в конфигурацию оболочки:

Для bash добавляем команду в ~/.bashrc или ~/.bash_profile:

echo "alias mark='open -a \"Markdown Editor\"'" >> ~/.bashrc

Для zsh (если используется macOS Catalina и выше) добавляем в ~/.zshrc:

echo "alias mark='open -a \"Markdown Editor\"'" >> ~/.zshrc

После изменения конфигурации может потребоваться её перезагрузка:

source ~/.bashrc  # для bash
source ~/.zshrc   # для zsh

Правда, у меня всё заработало без перезагрузки.


Если вы нашли неточность или ошибку в моём посте, напишите мне на mail@nikolaywerner.ru, я исправлю или дополню запись.