Я выполняю значительную часть работы в командной строке и определяю множество псевдонимов формы:
alias skim='/Applications/Skim.app/Contents/MacOS/Skim'
Есть ли способ добавить магию так, чтобы при запросе исполняемого файла "foo" автоматически использовался исполняемый файл /Applications/Foo.app/Contents/MacOS/Foo? Это на OS X 10.6.
(Я знаю, что мог бы это сделать open foo.pdf
, но Skim не является программой чтения PDF по умолчанию, и я хотел бы получить общее решение - в некоторых случаях нецелесообразно устанавливать соответствующее приложение в качестве обработчика по умолчанию для файла.)
open -a Skim foo.pdf
.Ответы:
Наконец-то я понял: добавь это в свой
.bash_profile
Сейчас ведутся следующие работы:
Редактировать Рейд:
Я реализовал вышеупомянутое как скрипт Python, который создает сценарии-оболочки вместо псевдонимов. Вам нужно будет поставить
~/bin/mankoffmagic
свой путь. Если вы хотите, чтобы обертки обновлялись автоматически, регулярно запускайте их с помощью cron или somesuch.источник
ls
команду, и это тоже будет работать.Вам не нужно ничего особенного, у вас уже есть ответ. Пытаться:
open /Applications/Foo.app bar.pdf
на редактировании
В свете комментариев ниже, я думаю, что мой ответ все еще будет относительно похожим ... Я бы сделал функцию, которая переопределяет open, выполняет pushd
/Applications
, вызывает/usr/bin/open $appName.app $args
, выполняет popd и возвращает.Я отстой от сценариев оболочки, но что-то вроде ниже, который охватывает особые случаи и позволяет вам использовать почти тот же синтаксис, что и Apple, предусмотренный для open. Мне нравится, чтобы моя среда была максимально чистой.
Я уверен, что синтаксис из космоса:
на втором редактировании
Если посмотреть на комментарий @ mankoff к исходному вопросу, большая часть описанной выше функции, вероятно, будет пустой тратой времени, поскольку вы можете просто ее использовать
open -a $appName
. Так что у mankoff, наверное, самое простое решение, и он должен поменять свой комментарий на ответ;)источник
Есть два решения, которые я могу придумать:
Более простой способ - используя
Info.plist
файл в каждом каталоге .appContents
, создайте индекс значения для ключей CFBundleExecutable. Затем добавьте короткий псевдоним, который вызывает скрипт (perl, python и т. Д.) С именем исполняемого файла и аргументами, которые вы хотите передать.Ваш индекс будет парами исполняемых имен и путей к этим исполняемым файлам. Вы должны написать повторяющийся запланированный сценарий, чтобы сохранить это обновление.
Вы в конечном итоге сможете позвонить:
где f - псевдоним скрипта, который проверяет ваш индекс на наличие исполняемого файла с именем
foo
.В общем, не так много работы, чтобы получить функциональность, которую вы хотели бы.
Более сложный способ - расширить вашу оболочку, чтобы дополнить обработку ее
command_not_found
ошибки. По сути, вы бы реализовали функциональность стиля Rubymethod_missing
в любой оболочке, которую вы используете. Когдаcommand_not_found
был брошен, ваш метод будет проверять имена исполняемых файлов ваших установленных приложений.источник
Applescript на помощь:
Замените название приложения на приложение, которое вы хотите запустить, и все готово. Вы можете, конечно, сделать это функцией оболочки при необходимости:
и используйте это так:
Я ненавижу appleScript, но иногда это полезно, и я считаю, что единственный способ обратиться к приложению просто по имени в командной строке. Все остальное потребует полного пути.
источник