Оказалось простые задача создания исполняемого файла типа .bat или .cmd в Windows в MAC-OS вызывает затруднение и это неудивительно, в UNIX системах своя логика.
Но разобравшись один раз, на простом примере создания исполняемого bash скрипта, вы поймете как это работает и сможете использовать всю мощь bash скрипта на вашем Макинтоше или Хакинтоше.
Обычно создание bash скриптов происходит в приложении терминал, от начала до конца, для некоторых пользователей это проблема, белое окно терминала их напрягает, кнопок нет, чего делать-непонятно.
Поэтому мануал будет почти полностью сориентирован на создание и запуск исполняемого скрипта через графический интерфейс, все предельно просто, скопировал, вставил + комментарий к операции.
Создание bash скрипта с помощь текстового редактора TextEdit
В Finder открываем программы и ищем текстовый редактор TextEdit:
После запуска TextEdit, его надо переключить в текстовый режим, в принципе это не обязательно, но крайне желательно, это поможет впоследствии избежать непредсказуемых ошибок:
После того копируем и вставляем:
#!/usr/bin/env bash ping -c 3 8.8.8.8
knock-knock.sh
После сохренения, файл knock-knock.sh должен появиться на рабочем столе.
Итак, самое главное сделали, мы создали файл в котором будет запускаться ping до 8.8.8.8 (google DNS), будут отправлены 3 пакета. Конечно, вы можете написать вместо гуглевского ДНС любой IP адрес.
Делаем bash скрипт исполняемым
Тут нам понадобится Terminal – это приложение находится в Программы/Утилиты:
chmod +x ~/Desktop/knock-knock.sh
Теперь у нас есть есть исполняемый скрипт, аналог cmd файла в Windows, который осталось только проверить.
Перетаскиваем курсором мыши созданный вами knock-knock.sh в окно терминала и нажимаем на клавиатуре Enter
Если все сделано правильно, результат должен быть примерно таким:
Расширения исполняемых файлов в macOS
- .command – это стандартное расширение для командных файлов в macOS. Файлы с расширением .command по умолчанию открываются в терминале и выполняются как скрипты командной строки.
- .run – другое распространенное расширение для исполняемых командных файлов. Файлы .run часто используются для запуска скриптов, установщиков и других задач автоматизации.
- .app – это расширение для приложений в macOS. Файлы .app по сути являются папками, содержащими исполняемый файл приложения и другие вспомогательные файлы.
- .pkg – расширение для инсталляторов macOS. Файлы с расширением .pkg обычно используются для распространения и установки программ. Они позволяют автоматизировать процесс установки.
Таким образом, расширения определяют тип и назначение исполняемого файла в macOS. Выбор нужного расширения помогает системе корректно обрабатывать и запускать файл при необходимости.
Примеры создания простых скриптов командной строки
Вот несколько примеров создания простых скриптов командной строки в файле с расширением .command для автоматизации различных задач в macOS:
- Скрипт для создания резервной копии файлов:
#!/bin/bash TAR_FILE=backup_$(date +%Y-%m-%d).tar.gz DESTINATION=/Users/username/backups tar -czf $DESTINATION/$TAR_FILE /Users/username/Dcuments
- Скрипт для очистки системных файлов кэша:
#!/bin/bash sudo rm -rf /private/var/folders/* sudo rm -rf /Library/Caches/*
- Скрипт для изменения раскладки клавиатуры:
#!/bin/bash defaults write -g AppleKeyboardLayoutID -int 1
Эти простые примеры показывают, как с помощью скриптов командной строки можно автоматизировать рутинные задачи в macOS.
Как добавлять параметры и аргументы в командные файлы
Чтобы сделать командные файлы в macOS более гибкими, в них можно добавлять параметры и аргументы командной строки. Вот несколько способов это сделать:
- Использовать встроенные переменные $1, $2, $3 и т.д. для получения аргументов скрипта:
#!/bin/bash echo "Первый параметр: $1" echo "Второй параметр: $2"
- Получить все аргументы через переменную $*:
#!/bin/bash echo "Все параметры: $*"
- Использовать опции командной строки для параметров со значениями:
#!/bin/bash while getopts ":a:b:c" opt; do case $opt in a) echo "Параметр -a $OPTARG" ;; b) echo "Параметр -b $OPTARG" ;; c) echo "Флаг -c установлен" ;; esac done
- Запросить ввод параметров через команду read:
#!/bin/bash echo "Введите имя:" read name echo "Введите возраст:" read age echo "$name - $age лет"
Таким образом можно сделать скрипты более гибкими для разных сценариев использования.
Как сделать командный файл самовыполняющимся и автоматически запускающим задачи
Чтобы сделать командный файл в macOS самовыполняющимся и автоматически запускающим задачи, можно воспользоваться следующими способами:
- Добавить команду запуска скрипта в сам скрипт. Например:
#!/bin/bash # Команды скрипта sh /path/to/script.command
- Использовать функцию autostart в plist файле:
Создать plist файл в папке ~/Library/LaunchAgents, добавить ключи:
<key>RunAtLoad</key> <true/> <key>ProgramArguments</key> <array> <string>/path/to/script.command</string> </array>
- Добавить скрипт в crontab с @reboot:
@reboot /path/to/script.command
- Использовать автозагрузку в настройках пользователя:
Системные настройки – Пользователи и группы – Вход – добавить скрипт
- Поместить в папку запуска приложений:
/Applications/StartupItems
- Запуск через лаунч-агенты в папке (скрытой):
~/Library/LaunchAgents
Таким образом скрипт будет запускаться автоматически при старте системы или пользователя.
Заключение – Командные файлы и скрипты bash в macOS
Командные файлы (command files) – это исполняемые скрипты в macOS, позволяющие автоматизировать задачи с помощью командной строки.
Расширения командных файлов
.command
– стандартное расширение для командных скриптов в macOS. Файлы.command
открываются в терминале..run
– распространенное расширение для исполняемых командных файлов..app
– расширение для приложений в macOS..pkg
– расширение инсталляторов приложений.
Структура командного файла
Командный файл имеет простую текстовую структуру и содержит команды shell scripting на bash.
Пример скрипта:
#!/bin/bash echo "Hello World"
Первая строка указывает интерпретатор команд.
Далее идут команды bash.
Создание скриптов командной строки
Примеры скриптов автоматизации:
- Резервное копирование файлов
- Очистка кэша
- Установка приложений
- Изменение настроек системы
Скрипт может принимать параметры:
#!/bin/bash echo "First parameter: $1" echo "Second parameter: $2"
Запуск командных файлов
Способы запуска в Terminal:
bash имя_файла.command
./имя_файла.command
source имя_файла.command
- Через файл .plist в папке LaunchAgents
- Через crontab с @reboot
- Через автозагрузку пользователя
Автозапуск скриптов
Чтобы скрипт запускался автоматически, можно:
- Добавить в crontab
- Использовать лаунч-агенты
- Запустить скрипт в самом скрипте
- Добавить в автозагрузку пользователя
Таким образом, командные файлы и bash скрипты позволяют автоматизировать задачи в macOS.