2

Цель состоит в том, чтобы использовать командную строку, чтобы открыть файл PDF для определенной страницы. Более общий вопрос: как мне узнать, какие аргументы доступны для любого приложения? Я могу открыть файл pdf в командной строке Mac OS X с помощью команды open , и знаю, что вы можете передавать аргументы, но не смог определить точные аргументы, которые нужно указать, чтобы открыть файл PDF на стр. 5.

Пробовал следующие слепо, и не сработало ...

open file.pdf --args -page=5
open file.pdf --args -p 5
open file.pdf --args -page 5

Видели этот вопрос, но для решения требуется установить evince или написать Apple Script. Нет ли простого решения просто передать --args в Mac, как в командной строке Windows?

1 ответ1

4

Я понятия не имел, что все приложения 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

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

  1. Разработайте команду терминала, чтобы открыть ваш PDF в Preview open file.pdf должен работать нормально.
  2. Протестируйте AppleScript, чтобы изменить страницу этого PDF на указанную вами (используйте Script Editor.app).
  3. Узнайте достаточно о командной строке, чтобы разработать оператор, который будет выполнять оба шага за один раз.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .