Можно ли использовать «сводную службу» в командной строке в Mac OS X?
Я уже пробовал конвейерную передачу, используя текстовый файл в качестве аргумента и отправляя текстовый файл как stdin.
Можно ли использовать «сводную службу» в командной строке в Mac OS X?
Я уже пробовал конвейерную передачу, используя текстовый файл в качестве аргумента и отправляя текстовый файл как stdin.
Попробуйте этот AppleScript (скажем, он называется sumrize.scpt) и вызовите из командной строки, используя «osascript sumrize.scpt <n>
», где n - это количество желаемых итоговых предложений. Это работает на OS X 10.6.7. Просто передайте содержимое в.
on run argv
set stdin to do shell script "cat"
set stdout to summarize stdin in (item 1 of argv)
end run
С другой стороны, вы можете использовать один лайнер что-то вроде этого:
#!/bin/bash
osascript -e 'set stdin to do shell script "cat"' -e "set stdout to summarize stdin in $1"
К сожалению, без написания приложения (AppleScript ObjC или даже настоящего приложения Obj-C) для взаимодействия с NSService, нет. Даже в этом случае Summary Service является исключительно приложением с графическим интерфейсом, поэтому оно будет вызывать GUI.
Однако некоторые службы (если рабочий процесс Automator) можно запустить вручную из командной строки, используя automator
в командной строке.
Есть также библиотека с открытым текстом, называемая libots, которая включает в себя исполняемый файл командной строки "ots", к которому можно обратиться. Итоговые сервисы и OTS, похоже, дают разные результаты, в кратком тестировании я не уверен, какой из них я бы дал более высокие оценки.