Как создать симлинк для быстрого открытия файла в нужной программе прямо из терминала 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, я исправлю или дополню запись.