Как мне выполнить сценарии командной строки?

17

В Windows я могу создавать .batфайлы. Я дважды щелкаю по нему, и все строки интерпретируются так, как будто я ввел его в консоль.

В OS X какой файл или программу мне нужно использовать? Если я хочу написать файл с;

 echo hello world

Я хочу дважды щелкнуть этот файл и запустить его в консоли. Как мне это сделать?

Родриго
источник
нужно ли запускать файл при двойном щелчке или вы просто хотите запустить файл, введя имя файла?
Фил М
двойной щелчок по файлу быстрее :)
Rodrigo

Ответы:

24

Основы терминала в OS X такие же, как те, что используются в Linux. То, что вы конкретно ищете, обычно называют «сценариями оболочки».

Оболочкой по умолчанию при открытии Terminal.app(расположенной внутри /Applications/Utilties) является оболочка bash.

OS X имеет встроенный обработчик оболочки, доступный через Finder и другие приложения через .commandрасширение, хотя, к сожалению, не через .shрасширение. Однако настроить скрипт для запуска через Finder еще сложнее.

  1. Создайте простой сценарий оболочки, как в вашем примере я сделал приложение Hello World:
#!/bin/bash
echo "Hello World"
  1. Сохраните этот файл как HelloWorld.command.

  2. Дайте этому файлу разрешение на выполнение. chmod u+x HelloWorld.commandдолжен сделать это.

  3. Откройте каталог, в котором вы сохранили этот файл в Finder. Затем дважды щелкните HelloWorld.commandфайл.

Это откроет терминал и выполнит скрипт, вывод на моем компьютере следующий:

$ /Users/jason/Applications/HelloWorld.command; выход;
Hello World
выход

[Процесс завершен]

Альтернативный способ выполнения этого файла - пока ./HelloWorld.commandвы все еще находитесь в Терминале, просто задайте вопрос, если вы находитесь в том же каталоге, что и файл.

Это приведет к гораздо более простому выводу:

Ясон-макинтош Приложение $ ./HelloWorld.command
Hello World
Ясон-макинтош Приложение $

Вы только что создали и выполнили скрипт оболочки в OS X!

Джейсон Салаз
источник
Как отступление: смешно разочаровывает, что OS X не делает это с файлами ".sh", только с файлами ".command". Да, это можно изменить, но команда .com уже существует, так что это мое предлагаемое решение.
Джейсон Салаз
Вы хотите задать вопрос, как внедрить .sh в базу данных служб запуска, или я должен?
bmike
У вас, очевидно, была идея (мысль даже не приходила мне в голову), так что вы можете это сделать.
Джейсон Салаз
У меня есть идея от вас - вот, я спрашиваю все это самостоятельно ...
bmike
Это дает мне:chown: u+x: Invalid argument
Родриго
4

Эквивалентом консоли или командной строки в Windows является приложение терминала, расположенное в / Applications / Utilities /

Эквивалент DOS (или как они называют это в наши дни) это "bash"

Эквивалентом командного файла (.bat) в Windows является сценарий оболочки (.sh)

Просто сделайте в Google поиск по "bash" и "справочнику", а остальное вы поймете. Я также рекомендовал бы купить Поваренную книгу Bash (O'Reilly).

В частности, это будет то, что вы напечатаете в окне терминала, чтобы получить свой сценарий "hello world":

Чтобы создать файл:

    echo "echo hello world" > file.sh

Чтобы изменить разрешения, чтобы сделать файл исполняемым:

    chmod 755 file.sh

Чтобы запустить скрипт:

    ./file.sh

Если вы хотите иметь возможность дважды щелкнуть его в Finder, щелкните правой кнопкой мыши (или удерживая нажатой клавишу Control) файл и выберите «Получить информацию», затем в разделе «Открыть с помощью» выберите приложение «Терминал». Или вы можете использовать расширение .command вместо расширения .sh.

Фил М
источник
2

Вы, вероятно, хотите взглянуть на AppleScript. Эта книга Сала Согояна считается многими популярной книгой по AppleScript.

Другой удобный способ для автоматизации приложений Mac - использование Automator . Вы можете также попробовать. Надеюсь это поможет.

Обновить

Кажется, вы ищете что-то вроде сценариев оболочки Unix. Эти два урока являются приличными и, кажется, охватывают основы.

Кристиан Корреа
источник
Я видел это, но AppleScript не является терминальным скриптом. Я думаю, что вы можете сделать: «Перейти к терминалу и написать команду x». Ну, разве это не стиль .bat (и немного сложнее)
Родриго
Кажется, что вы ищете сценарии оболочки Unix.
Кристиан Корреа
0

Сценарии оболочки. Я не думаю, что Ask Different будет подходящим местом для подробного обсуждения, но здесь есть очень подробное руководство: http://tldp.org/LDP/abs/html/index.html

Mac OS X сертифицирована на UNIX начиная с версии 10.5 (верно?), Поэтому эта мудрость здесь также применима к Linux и другим UNIX-подобным ОС.

(Менее сложным является Automator в Mac OS X, как и AppleScript Editor, который может выполнять сценарии оболочки и другие команды с программами и заключать их в удобный пакет .app для Launchpad или для совместного использования с друзья)

Swizzlr
источник
Из вступления руководства, на которое я ссылался: «Программа оболочки, называемая скриптом, представляет собой простой в использовании инструмент для создания приложений путем« склеивания »системных вызовов, инструментов, утилит и скомпилированных двоичных файлов. Практически весь репертуар Команды, утилиты и инструменты UNIX доступны для вызова сценарием оболочки. Если этого недостаточно, внутренние команды оболочки, такие как тестирование и конструкции цикла, придают сценариям дополнительную мощность и гибкость ».
Swizzlr
И в «подходящем месте» я думаю, что сценарии оболочки действительно лучше всего обсудить на SuperUser: superuser.com/questions/tagged/shell-script
Swizzlr
-1

Я сделал видео пару дней назад, объясняя это. Надеюсь, это поможет: http://www.youtube.com/watch?v=Q2jxpJAlsyg

Майк
источник
Не могли бы вы объяснить это здесь, а не просто предоставить ссылку
user151019
-2

Для Mac есть .sh файл, он же Shell скрипт

Davide
источник
Но при вызове из искателя, вы захотите использовать .command. .shэто необработанный тип файла из поиска (по умолчанию).
Джейсон Салаз