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


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 или для совместного использования с друзья)


Из вступления руководства, на которое я ссылался: «Программа оболочки, называемая скриптом, представляет собой простой в использовании инструмент для создания приложений путем« склеивания »системных вызовов, инструментов, утилит и скомпилированных двоичных файлов. Практически весь репертуар Команды, утилиты и инструменты UNIX доступны для вызова сценарием оболочки. Если этого недостаточно, внутренние команды оболочки, такие как тестирование и конструкции цикла, придают сценариям дополнительную мощность и гибкость ».
Swizzlr

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


-2

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


Но при вызове из искателя, вы захотите использовать .command. .shэто необработанный тип файла из поиска (по умолчанию).
Джейсон Салаз
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.