Вопрос: Разница между приложениями .app и файлами в / usr / bin?


Я не совсем понимаю разницу. Я попытался поместить файл .app в / usr / bin и выполнить, если с терминала, но это ничего не делает. Какие файлы идут туда?


4
2018-01-06 22:18


Источник




Ответы:


В Википедии есть хорошая статья о Приложение Bundles.

Короче говоря, .app не является файлом: это дерево каталогов с определенной структурой. Фактический двоичный файл, который выполняется (т. Е. Эквивалент двоичного кода, который вы найдете в /usr/bin) является PackageName.app/Contents/MacOS/PackageName, Однако вы (как правило) не можете просто скопировать этот файл в «/ usr / bin» и запустить его, потому что он ожидает, что в папке .app также будет много других файлов, которые ему нужны, - например, многие приложения имеют файлы перевода, которые позволяют им представлять пользовательский интерфейс на разных языках в PackageName.app/Contents/Resources/de.lproj (где de означает german).

В некоторых случаях .app пакет может содержать исполняемые файлы, которые вы можете выполнить напрямую - например, я часто использую ebook-convert двоичный с calibre.app пучок, запуская /Applications/calibre.app/Contents/Resources/loaders/ebook-convert, В этом случае ebook-convert оказывается автономным сценарием python и совершенно счастлив, что его называют таким образом - не все исполняемые файлы будут такими же счастливыми.

Обычно вы можете начать .app вызывая основной двоичный файл напрямую - например, /Applications/Safari.app/Contents/MacOS/Safari запустит Safari. Тем не менее, это много печатает - open /Applications/Safari.app это ярлык, который делает то же самое.

man open имеет еще много примеров использования open чтобы действовать так, как если бы пользователь дважды нажал на значок в finder.


6
2018-01-07 01:30



Просто добавьте примечание. В Finder вы можете увидеть, что находится внутри пакета приложений (или любого пакета), щелкнув правой кнопкой мыши по его значку и выбрав «Показать содержимое пакета» в контекстном меню. - Josh


Как сказал Томас Маркаускас, .app - это расслоение.

Почему вы пытались переместить файл .app в / usr / bin? Я собираюсь угадать, что вы действительно хотите знать, «как открыть файл с помощью Foo.app, когда я нахожусь в командной строке?»

Если я прав, ответ не должен переместить файл .app в / usr / bin. Правильный ответ - использовать open команда:

$ open -a Foo some_file

С помощью open без -a откроет файл с его приложением по умолчанию - так же, как если бы вы дважды нажали на some_file в Finder.


4
2018-01-06 23:21





.app на самом деле не файл, а папка (или пакет приложений) с множеством разных файлов. Он также содержит исполняемые файлы, которые вы фактически запускаете.


2
2018-01-06 22:33





Вы также можете запустить приложение напрямую с помощью open команда:

open /Applications/Safari.app/

0
2018-01-07 00:30