Mac os как запустить sh скрипт
Я пытаюсь настроить несколько сочетаний клавиш, которые открывают определенные сеансы iTerm, которые я смог сделать с BetterTouchTool и немного магии AppleScript. Проблема в том, что OS X настаивает на открытии окна терминала для любого сценария оболочки, который вы выполняете через графический интерфейс (т. е. из Finder или в качестве сочетания клавиш из BetterTouchTool). Окно терминала не появляется, если я запускаю скрипт непосредственно из другого терминала.
временное решение я нашел, чтобы обернуть скрипт в .App directory, которая решает проблему избыточного окна терминала, но имеет некоторые другие проблемы (например, OS X, похоже, рассматривает каждое результирующее окно iTerm как отдельное приложение, загромождая мою док-станцию). (EDIT: это поведение было вызвано ошибкой в моем скрипте, см. ниже)
Я также попытался назначить приложение терминала другому виртуальному рабочему столу в настройках Spaces в попытке переместить его из поля зрения, но затем он просто сначала переключится на этот рабочий стол перед запуском сценарий.
есть ли способ полностью отключить такое поведение? Я уже нашел настройку в настройках терминала, чтобы закрыть окно После завершения сценария, но все еще раздражает, что окно терминала появляется на секунду.
открыть Automator выберите приложение добавьте Выполнить Скрипт действие и введите команду кавычки (если у вас есть файл, вы можете просто перетащить его).
кроме воспроизведения, теперь вы можете сохранить (как приложение в любом месте) и даже установить значок.
вот небольшой обходной путь, в случае, если вы представляете себе пусковые установки приложений, как Alfred. Я использую его каждый день, и я купил Powerpack, что позволяет запускать молчит скриптов.
Они не откроют терминал при запуске и могут быть привязаны к любой последовательности ключевых слов. Они могут даже включать параметры и иметь дополнительные опции:
Сегодня я расскажу как увеличить эффективность работы в Mac OS X за счёт использования консоли.
Думаю, ни для кого не секрет, что Mac OS является Unix-based системой, но переработанной почти до неузнаваемости. Даже консоль засунули куда подальше — не сразу и найдёшь. И вся система нацелена на использование GUI, при дефолтных настройках даже переключение между кнопками по Tab не работает — без мыши никуда. И тем не менее, Мак — это не только окошки, не только док и лаунчер. Мак это ещё и вся мощь shell скриптов и консоли!
Если Вы пришли из мира M$, то для начала неплохо бы поучить общие команды shell'а, например, по вот этому учебному пособию. Как минимум, нужно усвоить команды перехода по каталогам и способы запуска программ и скриптов.
Если Вы пришли в мир Mac OS из мира Linux'а и FreeBSD, то, скорее всего, знаете как минимум основы shell-скриптинга. Но и для вас в статье может оказаться кое-что интересное, ведь в маке есть уникальные консольные команды, которые так же полезно знать.
Вот о некоторых особенностях маковской консоли далее и пойдёт речь.
Для начала избавимся от стандартного терминала. Ну, точнее, поставим другой — получше. Я лично предпочитаю iTerm2, который подходит для работы куда лучше системного. Хотя, и у него бывают интересные моменты (см. картинку вверху).
Далее нам могут понадобиться дополнительные инструменты, поэтому устанавливаем MacPorts (хотя, конечно, можно и другой менеджер пакетов). Теперь мы можем ставить нужные консольные утилиты с помощью простых команд. Например, ставим Midnight Commander (он в любом случае может пригодиться), набираем в iTerm2:
После ввода пароля и установки зависимостей и самого mc, можем его запустить, как вы уже догадались, командой mc .
О ужас! Нам понадобятся функциональные клавиши, а они нажимаются только через Fn+F15 , что же делать? Ну как что — лезть в системные настройки и выключать это. Иначе сложно будет с mc работать.
Ещё одно важное замечание: кури мануалы если что-то не понятно, набираем в консоли man команда — и получаем подробное описание команды. (Кстати, для выхода из просмотра мануала надо просто нажать Q).
Легко можно заметить, что mc показывает куда больше файлов и папок, чем Finder. Конечно, можно поставить хак для него, чтобы он отображал такие файлы, но не все это любят. Так что остаётся лишь пользоваться Cmd+Shift+G и вводить вручную имя папки. Но данный способ не особо удобен: нет автокомплита, нет возможности видеть скрытые файлы. Теперь вернёмся к терминалу. В Mac OS X есть замечательнейшая команда open , которая действует так, как будто пользователь сделал даблклик на файле или папке в Finder — открывает файл, бандл или ссылку в связанной программе, открывает папку в Finder'е. Вот простой пример работы с этой командой: заходим с помощью mc в скрытую папку (например, /etc/) и набираем:
Wuala! Файндер отобразил нам нашу системную папку! Но это ещё не всё, ведь скрытые файлы всё ещё не видны. Для примера, откроем наш .profile :
И — опа! — скрытый файл открылся в TextEdit! Всё предельно просто.
Пара слов о бандлах
Это всем известно, но на всякий случай повторю: обычные программы в Mac OS X на самом деле являются папками с расширением .app и особым образом устроенным содержимым. Убедиться в этом легко: открываем в Finder папку /Applications/ и делаем Ctrl+Click (либо Right-Click , если хотите) на любой программе и выбираем «Показать содержимое пакета».
Из консоли это так же очень хорошо видно: mc отображает эти программы именно как папки. И как же запустить из консоли GUI-программу, спросите вы? Очень просто, есть даже два способа.
Способ первый, простейший:
Программа будет запущена и консоль будет свободна для дальнейших действий.
Способ второй, интересный:
Программа будет запущена, но консоль не освобидится — она будет ждать завершения программы и выводить всё, что программа захочет вывести в неё. То есть, таким образом можно посмотреть рабочий лог некоторых программ.
Ещё одно очень важное различие между этими двумя методами: второй позволяет запустить два экземпляра программы, в то время как первый активирует уже запущенную, буде такая имеется. Так что через консоль можно решить и эту проблему (хотя, скорее фичу) макоси: через Finder, док и лаунчер запустить два экземпляра программы нельзя, а вот из консоли — пожалуйста, хоть двадцать два.
Расскажу вкратце что из себя представляет shell-скрипт. По сути — это обычный текстовый файл, содержащий серию команд для выполнения. Самый простой скрипт просто запускает последовательно все команды. Скрипты посложнее могут иметь условия, циклы и функции, то есть, скрипт может быть весьма большой и сложной программой. Основной плюс таких скриптов — на их службе вся мощь консольных утилит из мира unix, что с лихвой компенсирует бедность языковых конструкций. Приведу простой пример скрипта, который преобразует все файлы .jpg в текущей директории, уменьшив их размер до 200 пикселей в ширину или высоту.
Пример простейший, но он демонстрирует главное: в скриптах сокрыта великая сила.
В Mac OS X имеется несколько встроенных механизмов по автоматизации действий. Один из очень распространённых — AppleScript, для которого есть и графический редактор-запускатор. Но использовать такие скрипты можно и из консоли, для этого есть особая утилита — osascript . Использовать её можно так:
Не буду углубляться в AppleScript, он заслуживает отдельной статьи, и даже не одной. Так что рекомендую почитать справку или гугл по нему.
Главное: Вы можете комбинировать shell-скрипты со скриптами AppleScript, чтобы добиться максимальной гибкости в работе! К примеру, я использую такие вот смешанные скрипты для автоматической стилизации образа диска: сам диск создаётся с помощью shell (см. ниже), а фон и расположение элементов в образе задаётся с помощью AppleScript.
Есть ещё Automator, но он совсем уж GUI-шный, так что в данной статье его рассматривать бессмысленно. Он, конечно, полезный, но до мощи консоли не дотягивает.
Полный (ну, почти) список уникальных для макоси команд можно найти в одной хорошей статье (хотя сведения там немного устарели), я же вкратце расскажу о наиболее интересных.
Для работы с образами дисков имеется консольная утилита hdiutil . Пара примеров работы с ней:
Более подробно про возможности можно узнать из man hdiutil .
Если Вы — разработчик программ для макоси, то наверняка знаете о такой замечательной вещи, как Info.plist, да и вообще о plist'ах. Так вот, есть очень удобная утилита, позволяющая конвертировать .plist в .bplist, то есть, в более быстрый и лёгкий бинарный формат плиста.
Если хотите позаниматься ерундой, то можно из консоли проговорить любой текст. Для этого есть утилита say .
Так же можно задавать голос, которым мак будет с нами говорить:
Одна беда — по-умолчанию говорит эта штука только по-английски.
Теперь снимем скриншот командой из консоли.
Так же из консоли можно конвертировать текст между различными форматами. Например, можно переконвертировать .doc файл в HTML:
Так же textutil умеет преобразовывать кодировки.
Для изменения системных (и не только) настроек, можно использовать команду defaults . Используем её во благо! Включим наконец отображение скрытых файлов и папок в Finder!
Файндер автоматически перезапустится и теперь будет отображать скрытые файлы и папки! Но опять таки, это не всем нравится, так давайте это выключим, пока родителикто-нибудь не испугался или не удалил нужных файликов. Для сокрытия в уже указанной команде поставьте 0 вместо 1. Ну и для примера, ссылка на статью, где описано много твиков с помощью этой команды.
Ну что ж, мы разобрали некоторые интересные возможности консоли в Mac OS X. Статья, разумеется, не претендует на полноту и является, скорее, «заманухой» для вовлечения маководов в shell-скриптинг да и вообще в консоль.
Хотите улучшить этот вопрос? Обновите вопрос, чтобы он соответствовал теме переполнения стека.
Закрыто 7 лет назад .
Мне интересно, сможет ли кто-нибудь помочь мне с запуском файла .sh при входе в свою учетную запись на моем компьютере. Я использую Mac OS X 10.6.7.
У меня есть файл «Example.sh», который я хочу запустить при входе на компьютер. У меня нет проблем с его запуском, когда я уже вошел в систему, но я хочу, чтобы он запускался автоматически.
Люди говорят, чтобы добавить его в файл оболочки входа, но я не знаю, где это. Некоторая помощь, пожалуйста.
Это не по теме . Мне нужно было запустить мой демон Emacs;) Кстати, лучший ответ - ИМХО приложение Lingon X. Мне все равно, если это не по теме. Это лучший ответ, который я нашел в Интернете, и он заслуживает уважения. Я игнорировал это для других в первый раз, когда искал решение, и это было большой ошибкой!Следить за этим:
- Начало Automator.app
- Выбрать Application
- нажмите Show library на панели инструментов (если скрыто)
- добавить Run shell script (из Actions/Utilities )
- скопируйте и вставьте ваш скрипт в окно
- Попробуй это
сохранить где-нибудь (например, вы можете сделать Applications папку в вашем доме, вы получите your_name.app )
перейти к System Preferences -> Accounts -> Login items
РЕДАКТИРОВАТЬ:
Недавно я получил значок «Хороший ответ» для этого ответа. Хотя моё решение простое и работает, самый простой способ запуска любой программы или сценария оболочки во время входа в систему описан в ответе @ trisweb , если только вы не хотите интерактивности .
С помощью автоматического решения вы можете делать следующее:
Итак, запрос на запуск сценария или выход из приложения, запрос пароля, запуск других рабочих процессов автоматизатора во время входа в систему, условный запуск приложений во время входа в систему и так далее .
@GregMiernicki LOL, доброе утро . ;) Почти год назад добавили РЕДАКТИРОВАТЬ к моему ответу, где это тоже сказано. Но это немного проще для обычных пользователей, потому что создание файлов XML (plist) не очень удобно для многих пользователей. В любом случае - спасибо за комментарий. ;) @GregMiernicki и не забывайте, что с помощью решения Automator вы можете создавать интерактивные сценарии входа в систему - например, сценарий, который попросит вас ввести некоторые данные (например, дополнительный пароль или что-то подобное). Мир не только черный или белый - по крайней мере, это как зебра . :) :) @Cupidvogel Запуск демона во время входа в систему - это именно то, что нужно для решения launchd - см. Ответ trisweb. Если вы можете управлять демоном python, вы наверняка сможете управлять конфигурационным файлом plist, в котором вы сможете управлять всеми аспектами перезапусков и т. Д. Слава за указание на другой ответ, как самый чистый. Это должно получить хороший значок гражданства :). Удивительный ответ. Выполните экспорт PATH = / usr / local / bin: $ PATH в начале скрипта, если вы хотите запускать такие команды, как «глобальное обновление composer» при запуске системы.tl; dr: использовать встроенный в OSX модуль запуска и управления процессами launchd .
Для этого создайте launchctl демон. Вы будете иметь полный контроль над всеми аспектами сценария. Вы можете запустить один раз или остаться в живых как демон. В большинстве случаев это путь.
- Создайте .plist файл в соответствии с инструкциями в документации Apple Dev здесь или более подробно ниже.
- Установить в
Более того launchd , статья в Википедии довольно хороша и описывает систему и ее преимущества перед другими старыми системами.
Вот конкретный файл plist для запуска скрипта при входе в систему .
Обновлен 2017/09/25 для OSX El Capitan и новее (кредит Хосе Мессиасу-младшему ):
Замените <string> после ключа программы нужной вам командой (обратите внимание, что любой сценарий, на который ссылается эта команда, должен быть исполняемым: chmod a+x /path/to/executable/script.sh это должно быть сделано для всех пользователей).
Запустить launchctl load
Ключевым моментом является то, что это запись запуска для конкретного пользователя, поэтому она будет выполняться при входе в систему для данного пользователя. Системные демоны запуска (помещенные в /Library/LaunchDaemons ) запускаются при загрузке.
Если вы хотите, чтобы сценарий запускался при входе в систему для всех пользователей, я полагаю, что LoginHook - ваш единственный вариант, и, вероятно, именно поэтому он существует.
Открытие и завершение приложения «Терминал» на Mac
Каждое окно в Терминале представляет свой экземпляр процесса shell. Окно содержит приглашение, которое означает, что можно вводить команду. Отображаемое приглашение зависит от настроек Терминала и shell, однако обычно оно включает имя хоста, к которому Вы подключены, Вашу текущую рабочую папку, Ваше имя пользователя и символ приглашения. Например, если пользователь с именем michael использует по умолчанию оболочку zsh, приглашение выглядит следующим образом:
В приглашении указано, что пользователь с именем michael вошел в систему на компьютере с именем MacBook-Pro и текущей папкой является его папка пользователя, обозначаемая тильдой (
Открытие Терминала
На компьютере Mac выполните одно из следующих действий.
Нажмите значок Launchpad в панели Dock, введите «Терминал» в поле поиска и нажмите значок Терминала.
В окне Finder откройте папку «Программы/Утилиты» и дважды нажмите приложение «Терминал».
Завершение приложения «Терминал»
В приложении «Терминал» на Mac выберите пункт меню «Терминал» > «Завершить Терминал».
Завершение сеанса shell
В окне приложения «Терминал» на Mac, где запущен процесс shell, который Вы хотите завершить, введите exit и нажмите клавишу Return.
Это обеспечит закрытие всех текущих команд, выполняемых в shell. Если что-то продолжает выполняться, появляется диалоговое окно.
Если Вы хотите изменить поведение при выходе из shell, см. Изменение настроек shell для профилей.
Как запустить sh скрипт на Mac?
Откройте терминал, введите sh /path/to/file и нажмите Enter. Быстрее ввести sh и пробел, а затем перетащить файл в окно и выпустить значок в любом месте окна.
Как запустить файл sh?
Чтобы его запустить, надо зайти в каталог, где расположен скрипт, набрать название интерпретатора sh и первым параметров указать ваш файл hello.sh. Чтобы каждый раз не указывать интерпретатор в терминале, можно сделать скрипт исполняемым. Для этого необходимо: Указать интерпретатор внутри файла.
Как запустить скрипт sh на Windows?
1] Выполнить файл скрипта оболочки, используя WSL
- Откройте командную строку и перейдите в папку, где доступен файл скрипта
- Введите Bash script-filename.sh и нажмите клавишу Enter.
- Система выполнит скрипт, и в зависимости от файла вы должны увидеть вывод.
Как запустить скрипт на Windows?
Как открыть файл с расширением sh?
Чем открыть файл SH
- В Windows: gVim, Notepad++, GNU Bash, Cygwin, Adobe ExtendScript.
- В Mac OS: Apple Terminal, iTerm, MacVim, GNU Bash.
- В Linux: GNU Bash, Vim.
- Кроссплатформенное ПО: Sublime Text.
Как запустить скрипт на Python?
Python-код можно запустить одним из следующих способов:
- С помощью командной строки операционной системы (shell или терминал);
- С помощью конкретной версии Python или Anaconda;
- Использовать Crontab;
- Запустить код с помощью другого Python-скрипта;
- С помощью файлового менеджера;
- Использовать интерактивный режим Python;
Как запустить файл в bash?
Чтобы запустить скрипт Bash в вашей системе, вы должны использовать команду bash и указать имя скрипта, который вы хотите выполнить, с необязательными аргументами. Кроме того, вы можете использовать sh , если в вашем дистрибутиве установлена утилита sh . $ bash script This is the output from your script!
Как запустить скрипт VBS в Windows 10?
Как запустить bash в Windows 10?
Установка Bash в Windows 10 1607 и 1703
Зайдите в панель управления — Программы и компоненты — Включение или отключение компонентов Windows, отметьте пункт «Подсистема Windows для Linux». После установки компонентов, введите в поиске Windows 10 «bash», запустите предлагаемый вариант приложения и выполните установку.
Как установить Wsl?
Как запустить bash в Ubuntu?
Что такое скрипт?
Скрипты Скрипт (сценарий) — это последовательность действий, описанных с помощью скриптового языка программирования (JavaScript, PHP, Perl, Python и др.) для автоматического выполнения определенных задач. Например, для функционирования какого-нибудь сервиса, инструмента на сайте.
Как запустить скрипт Повершелл?
Для того чтобы запустить скрипт PowerShell необходимо сделать текстовый файл (txt), набрать в нем необходимые команды, после этого сменить расширение файла на PS1. Если возникли проблемы с изменением расширения файла- оно не отображается, рекомендую прочитать статью- Как сделать видимым расширение файлов.
Как запустить скрипт Windows 10?
Запуск файла сценария PowerShell
Как запустить скрипт Perl?
Если вы используете LinuxUnix, то скорее всего perl у вас уже установлен. Проверить это проще простого: зайдите в консоль и наберите в ней «perl»(+перевод строки, естественно). Если он уже установлен, то консоль будет ожидать дальнейший ввод — код вашего перл-скрипта.
Я всегда хотел иметь возможность запустить скрипт, который я скачал онлайн прямо из Finder, но двойной щелчок по файлу не работает.
Откройте терминал, введите sh /path/to/file и нажмите Enter.
Быстрее ввести sh и пробел, а затем перетащить файл в окно и выпустить значок в любом месте окна.
В качестве альтернативы, вы также можете сделать
/.bash_profile и добавьте следующую строку:
выполнить следующую командную строку:
тогда вы сможете запустить свой файл как программу
/bin/sh , в то время как в OSX скрипте должно быть .sh расширение и a alias для каждого из них. : -O
Выполните следующие шаги для запуска файлов сценария:
Щелкните правой кнопкой мыши на файле .sh.
Наведите курсор на Open With .
Выберите Другие . .
Вы должны быть в папке Приложения . Откройте папку Utilities и выберите Terminal.app.
Если вы не можете выбрать Terminal.app, измените включенные приложения с Рекомендуемые приложения на Все приложения . Это в нижней части окна.
Если вы хотите открыть каждый .sh файл с помощью Terminal.app, установите флажок Всегда открывать с помощью .
Причина, по которой он не работает после загрузки, заключается в том, что права доступа к файлам не позволяют это сделать. Чтобы включить разрешения на выполнение, откройте Терминал и введите chmod 755 /path/to/script . Вместо того, чтобы вводить полный путь, вы можете перетащить скрипт в окно терминала из Finder. Затем, чтобы выполнить, просто введите /path/to/script . Опять же, вы можете перетащить файл в окно терминала. Этот синтаксис должен выполнять скрипт, используя правильную оболочку, как определено в первой строке скрипта.
Читайте также: