Вопрос или проблема
Например, если у меня есть ссылка со специальным протоколом foobar://
, я хочу открыть такую ссылку в терминале.
Процесс:
- открыть браузер
- найти ссылку вроде
foobar://bazeggsspam
- кликнуть на ссылку
- браузер перенаправляет на терминал и выполняет команду
mycmd -l {link}
(Я знаю, что это может выглядеть как уязвимость безопасности, но всё же интересно, существует ли такая функция)
Или мне нужно создать .app
, который должен получить разрешения от ОС для открытия пользовательских ссылок?
Я вполне уверен, что это то, что вам нужно.
LinCastor позволяет вам зарегистрировать свою собственную схему пользовательского URL-протокола (например, mylink://foo/bar) и связать её с приложением, оболочкой или обработчиком AppleScript.
Поскольку большинство приложений OS X поддерживают встраивание ссылок как часть текста, схема пользовательского URL-протокола предоставляет отличный способ соединять разные приложения или инициировать пользовательские рабочие процессы. Например: ссылка jira://issue1234 может открыть трекер JIRA с конкретной задачей. Эта ссылка затем может быть помещена в напоминание iCal или любые другие текстовые поля, поддерживающие ссылки.
Ответ или решение
Для того чтобы открыть ссылку с специальным протоколом, например foobar://
, в терминальном приложении macOS, существует несколько подходов. Обсуждение данного вопроса освещает как простые решения, так и более сложные варианты, включая создание собственного приложения.
1. Использование кастомного URL-протокола
Для начала, необходимо зарегистрировать собственный URL-протокол в операционной системе. Это обеспечит перенаправление ссылок с указанным протоколом на нужное приложение или скрипт. Вот общий способ, как это сделать:
a. Регистрация протокола
-
Создание или модификация файла Info.plist:
- Если вы разрабатываете
.app
, добавьте в файлInfo.plist
следующий код, который указывает на ваш кастомный протокол:<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>foobar</string> <!-- Замените на ваш протокол --> </array> </dict> </array>
- Если вы разрабатываете
-
Создание скрипта:
- Если вам не нужно создавать полноценное приложение, вы можете написать скрипт на AppleScript или Shell, который будет обрабатывать входящие ссылки.
-
Сохранение и тестирование:
- Убедитесь, что приложение или скрипт, связанный с вашим протоколом, функционирует правильно.
- Тестируйте ссылку, вводя в терминал:
open foobar://bazeggsspam
- Это должно активировать приложение, обрабатывающее данный протокол.
b. Запуск команды в терминале
Теперь, когда протокол зарегистрирован, можно запустить необходимую команду из терминала. Эта команда может быть, например:
mycmd -l "foobar://bazeggsspam"
2. Использование AppleScript
Если вы хотите обработать ссылку в терминале без создания полноценного приложения, можно использовать AppleScript:
- Откройте AppleScript Editor (или Script Editor) и создайте новый скрипт:
on open location this_URL
do shell script "mycmd -l '" & this_URL & "'"
end open location
-
Сохраните этот скрипт как приложение (.app).
-
Убедитесь, что это приложение установлено как обработчик для вашего протокола
foobar://
. -
Попробуйте открыть ссылку
foobar://bazeggsspam
, и ваше приложение должно выполниться с указанием на нужную команду в терминале.
3. Безопасность и разрешения
Важно понимать, что управление ссылками с нестандартными протоколами может представлять риск. macOS ограничивает приложения, которые могут открывать системные URL, поэтому разработанные вами приложения должны быть подписаны, а пользователям нужно будет предоставить необходимые разрешения.
Заключение
Таким образом, для открытия кастомированной ссылки, такой как foobar://
, в терминал на macOS, необходимо зарегистрировать собственный протокол и создать связанное приложение или скрипт. Также есть возможность использовать AppleScript для обработки URL, что позволяет реализовать желаемую функциональность без большого объема работы. При реализации подобных решений важно учитывать меры безопасности и верификацию прав доступа, чтобы избежать возможных уязвимостей.