Я понятия не имел, что все приложения Windows понимают аргументы командной строки.
Независимо от того, так ли это, это не так в Mac OS. Когда вы используете приложение Terminal, вы взаимодействуете с подсистемой BSD, которая следует всем шаблонам, которые вы ожидаете от операционной системы UNIX или Linux.
Существует множество ресурсов для ознакомления с оболочкой bash и командной строкой * NIX. Для начала команда man
выдаст вам man-страницу для любой команды, которую вы передаете. Обычно все разделенные пробелом "слова", которые вы вводите после команды, рассматриваются как аргументы для этой команды, по крайней мере, до тех пор, пока вы не нажмете какое-либо перенаправление вывода или управляющий символ, такой как |
, <
, >
, &
.
Итак, в вашем примере вы вызывали open
и передавали в качестве аргументов file.pdf
, --args
и -page=5
. Как вы заметили, open
не знает, что делать с большинством из них.
В любом случае, давайте копать глубже. Большинство приложений (например, Preview.app в этом случае) имеют исполняемый файл где-то в своем комплекте приложений. Вы можете фактически выполнить это (/Applications/Preview.app/Contents/MacOS/Preview
), чтобы запустить предварительный просмотр напрямую, не проходя через open
, но только некоторые специально созданные исполняемые файлы будут понимать аргументы командной строки. Preview
не является одним из них.
Команда man
работает только для команд, на которых установлены manpages, и обычно это будут только команды из $PATH
вашей оболочки. Для других исполняемых файлов (и обычно также для стандартных) вы можете попробовать вызвать исполняемый файл с аргументом --help
чтобы получить информацию об использовании независимо от того, находится ли он на вашем пути. Это не будет работать для всех, но это общая схема.
Таким образом, может существовать программа чтения PDF, чей исполняемый файл понимает аргументы командной строки, но если мы все еще работаем с Preview, нам нужно перейти к другой парадигме - AppleScript. Вы можете прочитать все об этом в Википедии, но суть в том, что это язык сценариев на естественном языке, который позволяет программно отправлять события Apple в приложения. Некоторые приложения реализуют обширные библиотеки AppleScript, чтобы обеспечить большую автоматизацию.
Хорошей новостью является то, что вы можете обрабатывать AppleScript в командной строке с помощью osascript
. Еще более приятной новостью является то, что люди уже решили вашу проблему с AppleScript, заставив Предварительный просмотр перейти на страницу в PDF здесь: https://discussions.apple.com/thread/3215851
Так что ваш подход должен быть здесь, чтобы решить вашу проблему:
- Разработайте команду терминала, чтобы открыть ваш PDF в Preview
open file.pdf
должен работать нормально.
- Протестируйте AppleScript, чтобы изменить страницу этого PDF на указанную вами (используйте Script Editor.app).
- Узнайте достаточно о командной строке, чтобы разработать оператор, который будет выполнять оба шага за один раз.