Как открыть ссылку в терминальном приложении на macOS?

Вопрос или проблема

Например, если у меня есть ссылка со специальным протоколом 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. Регистрация протокола

  1. Создание или модификация файла Info.plist:

    • Если вы разрабатываете .app, добавьте в файл Info.plist следующий код, который указывает на ваш кастомный протокол:
      <key>CFBundleURLTypes</key>
      <array>
       <dict>
           <key>CFBundleURLSchemes</key>
           <array>
               <string>foobar</string> <!-- Замените на ваш протокол -->
           </array>
       </dict>
      </array>
  2. Создание скрипта:

    • Если вам не нужно создавать полноценное приложение, вы можете написать скрипт на AppleScript или Shell, который будет обрабатывать входящие ссылки.
  3. Сохранение и тестирование:

    • Убедитесь, что приложение или скрипт, связанный с вашим протоколом, функционирует правильно.
    • Тестируйте ссылку, вводя в терминал:
      open foobar://bazeggsspam
    • Это должно активировать приложение, обрабатывающее данный протокол.

b. Запуск команды в терминале

Теперь, когда протокол зарегистрирован, можно запустить необходимую команду из терминала. Эта команда может быть, например:

mycmd -l "foobar://bazeggsspam"

2. Использование AppleScript

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

  1. Откройте AppleScript Editor (или Script Editor) и создайте новый скрипт:
on open location this_URL
    do shell script "mycmd -l '" & this_URL & "'"
end open location
  1. Сохраните этот скрипт как приложение (.app).

  2. Убедитесь, что это приложение установлено как обработчик для вашего протокола foobar://.

  3. Попробуйте открыть ссылку foobar://bazeggsspam, и ваше приложение должно выполниться с указанием на нужную команду в терминале.

3. Безопасность и разрешения

Важно понимать, что управление ссылками с нестандартными протоколами может представлять риск. macOS ограничивает приложения, которые могут открывать системные URL, поэтому разработанные вами приложения должны быть подписаны, а пользователям нужно будет предоставить необходимые разрешения.

Заключение

Таким образом, для открытия кастомированной ссылки, такой как foobar://, в терминал на macOS, необходимо зарегистрировать собственный протокол и создать связанное приложение или скрипт. Также есть возможность использовать AppleScript для обработки URL, что позволяет реализовать желаемую функциональность без большого объема работы. При реализации подобных решений важно учитывать меры безопасности и верификацию прав доступа, чтобы избежать возможных уязвимостей.

Оцените материал
Добавить комментарий

Капча загружается...