Запустите Firefox Portable на Mac с помощью сценария оболочки - PullRequest
0 голосов
/ 09 июня 2011

Прежде всего, позвольте мне заявить, что я ненавижу Mac полностью. У меня мало опыта с ними, кроме программирования в Objective-C.

Проблема: мне нужно иметь возможность запустить переносную установку Firefox на флэш-накопитель в каталоге

[Drive root]/.assets/port/Firefox Portable.app

Могу ли я получить помощь по:

  1. Убедиться, что сценарий оболочки будет принимать пробелы и точки в именах папок
  2. Убедиться, что скрипт оболочки будет принимать пробелы в имени файла
  3. Разрешение изменения корня диска, аналогично «/» на машине с Windows.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 09 июня 2011

Это должно сработать.

cmd=$(ls -d /Volumes/*/.assets/port/Firefox\ Portable.app 2>/dev/null | head -1) && open "$cmd"

попытается ls всех Firefox на всех подключенных дисках в / Volumes и запустит первый. (и ничего не делать, когда не найдете Firefox.)

Пояснение:

  • ls -d список попыток в режиме каталога (поэтому укажите имя каталога, а не его содержимое)
  • обратная косая черта в Firefox\ Portable - означает экранирование следующего символа, (здесь space)
  • 2>/dev/null - не показывать ошибки (или вы можете попробовать 2>&- тоже)
  • |head -1 - показать только 1-ю строку из результата (если здесь больше строк)
  • и все вышеперечисленное присваивается переменной cmd - поэтому, если здесь есть команда, переменная будет содержать путь
  • && open "$cmd" - открыть приложение по пути, сохраненному в переменной $ cmd, КОГДА предыдущая команда выполнена успешно (вот команда)
2 голосов
/ 09 июня 2011

В OS X open(1) используется для запуска приложения из командной строки:

open "[/Volumes/[Drive file system name]/.assets/port/Firefox Portable.app"

Как и в любой стандартной оболочке Unix, заключение пути в кавычки " " защитит от пробелов и периодов.

Для данной флэш-памяти имя файловой системы тома всегда будет одинаковым, если вы не измените его. Если вы заранее не знаете, каким будет имя файловой системы, вам нужно будет выполнить поиск по смонтированным томам и угадать.

Точнее, по умолчанию OS X будет пытаться подключить USB-накопитель, используя ту же файловую систему в /Volumes/[Drive file system name] точке монтирования , если эта точка монтирования уже не используется другой одноименной файловая система, в этом случае будет использоваться измененное имя точки монтирования, обычно путем добавления чего-либо. Или вы или какая-либо программа можете монтировать ее вручную в произвольной точке монтирования Итак, в самом общем случае вам нужно будет выполнить поиск. Это зависит от того, что вы пытаетесь сделать.

...