Script unix mac os

Консоль для маководов: Beyond the GUI

Доброго дня, уважаемые хабравчане-маководы!

Сегодня я расскажу как увеличить эффективность работы в 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).

Продолжаем знакомство с консолью. Команда open

Легко можно заметить, что mc показывает куда больше файлов и папок, чем Finder. Конечно, можно поставить хак для него, чтобы он отображал такие файлы, но не все это любят. Так что остаётся лишь пользоваться Cmd+Shift+G и вводить вручную имя папки. Но данный способ не особо удобен: нет автокомплита, нет возможности видеть скрытые файлы. Теперь вернёмся к терминалу. В Mac OS X есть замечательнейшая команда open , которая действует так, как будто пользователь сделал даблклик на файле или папке в Finder — открывает файл, бандл или ссылку в связанной программе, открывает папку в Finder’е. Вот простой пример работы с этой командой: заходим с помощью mc в скрытую папку (например, /etc/) и набираем:

Wuala! Файндер отобразил нам нашу системную папку! Но это ещё не всё, ведь скрытые файлы всё ещё не видны. Для примера, откроем наш .profile :

Читайте также:  Тор прокси для windows

И — опа! — скрытый файл открылся в TextEdit! Всё предельно просто.

Пара слов о бандлах

Это всем известно, но на всякий случай повторю: обычные программы в Mac OS X на самом деле являются папками с расширением .app и особым образом устроенным содержимым. Убедиться в этом легко: открываем в Finder папку /Applications/ и делаем Ctrl+Click (либо Right-Click , если хотите) на любой программе и выбираем «Показать содержимое пакета».

Из консоли это так же очень хорошо видно: mc отображает эти программы именно как папки. И как же запустить из консоли GUI-программу, спросите вы? Очень просто, есть даже два способа.

Способ первый, простейший:

Программа будет запущена и консоль будет свободна для дальнейших действий.

Способ второй, интересный:

Программа будет запущена, но консоль не освобидится — она будет ждать завершения программы и выводить всё, что программа захочет вывести в неё. То есть, таким образом можно посмотреть рабочий лог некоторых программ.

Ещё одно очень важное различие между этими двумя методами: второй позволяет запустить два экземпляра программы, в то время как первый активирует уже запущенную, буде такая имеется. Так что через консоль можно решить и эту проблему (хотя, скорее фичу) макоси: через Finder, док и лаунчер запустить два экземпляра программы нельзя, а вот из консоли — пожалуйста, хоть двадцать два.

Скрипт?

Расскажу вкратце что из себя представляет shell-скрипт. По сути — это обычный текстовый файл, содержащий серию команд для выполнения. Самый простой скрипт просто запускает последовательно все команды. Скрипты посложнее могут иметь условия, циклы и функции, то есть, скрипт может быть весьма большой и сложной программой. Основной плюс таких скриптов — на их службе вся мощь консольных утилит из мира unix, что с лихвой компенсирует бедность языковых конструкций. Приведу простой пример скрипта, который преобразует все файлы .png в текущей директории, уменьшив их размер до 200 пикселей в ширину или высоту.

Пример простейший, но он демонстрирует главное: в скриптах сокрыта великая сила.

Скрипты AppleScript

В Mac OS X имеется несколько встроенных механизмов по автоматизации действий. Один из очень распространённых — AppleScript, для которого есть и графический редактор-запускатор. Но использовать такие скрипты можно и из консоли, для этого есть особая утилита — osascript . Использовать её можно так:

Не буду углубляться в AppleScript, он заслуживает отдельной статьи, и даже не одной. Так что рекомендую почитать справку или гугл по нему.

Главное: Вы можете комбинировать shell-скрипты со скриптами AppleScript, чтобы добиться максимальной гибкости в работе! К примеру, я использую такие вот смешанные скрипты для автоматической стилизации образа диска: сам диск создаётся с помощью shell (см. ниже), а фон и расположение элементов в образе задаётся с помощью AppleScript.

Есть ещё Automator, но он совсем уж GUI-шный, так что в данной статье его рассматривать бессмысленно. Он, конечно, полезный, но до мощи консоли не дотягивает.

Кратко о других полезных командах Mac OS X

Полный (ну, почти) список уникальных для макоси команд можно найти в одной хорошей статье (хотя сведения там немного устарели), я же вкратце расскажу о наиболее интересных.

Для работы с образами дисков имеется консольная утилита hdiutil . Пара примеров работы с ней:

Более подробно про возможности можно узнать из man hdiutil .

Если Вы — разработчик программ для макоси, то наверняка знаете о такой замечательной вещи, как Info.plist, да и вообще о plist’ах. Так вот, есть очень удобная утилита, позволяющая конвертировать .plist в .bplist, то есть, в более быстрый и лёгкий бинарный формат плиста.

Читайте также:  Outlook 2016 exchange windows

Если хотите позаниматься ерундой, то можно из консоли проговорить любой текст. Для этого есть утилита say .

Так же можно задавать голос, которым мак будет с нами говорить:

Одна беда — по-умолчанию говорит эта штука только по-английски.

Теперь снимем скриншот командой из консоли.

Так же из консоли можно конвертировать текст между различными форматами. Например, можно переконвертировать .doc файл в HTML:

Так же textutil умеет преобразовывать кодировки.

Для изменения системных (и не только) настроек, можно использовать команду defaults . Используем её во благо! Включим наконец отображение скрытых файлов и папок в Finder!

Файндер автоматически перезапустится и теперь будет отображать скрытые файлы и папки! Но опять таки, это не всем нравится, так давайте это выключим, пока родителикто-нибудь не испугался или не удалил нужных файликов. Для сокрытия в уже указанной команде поставьте 0 вместо 1. Ну и для примера, ссылка на статью, где описано много твиков с помощью этой команды.

Что-то типа заключения

Ну что ж, мы разобрали некоторые интересные возможности консоли в Mac OS X. Статья, разумеется, не претендует на полноту и является, скорее, «заманухой» для вовлечения маководов в shell-скриптинг да и вообще в консоль.

Источник

The Agile Warrior

A blog about creating valuable software

How to create a UNIX bash script on a mac

The ability to create and make your own custom bash scripts is on of the biggest advantages to working off a unix based operating system (like the mac).

You can take just about any mundane, or complicated task, and easily automated it by learning how to create your own bash scripts.

In this post I am going to show you how to create a bash script called:

(which recursively search all files for text containing xxx (very handy)) and call it from anywhere on your computer.

Setup your environment

Go to your home directory:

and make a directory called scripts (this is where you will store your scripts):

Then if you don’t have one already, create a .bash_profile file (in your root directory) and add the following line:

This puts the directory you just created into the unix $PATH variable which lets you call your scripts from anywhere on your machine.

To register this new path you may need to go:

You can then check your new path by typing:

If all is well you should see your new directory in the output.

OK. We are now ready to create your script.

Create your script

To create your script go back to that scripts directory your just created and using your favorite text editor create a file called ‘findtext.sh’

And give yourself permission to execute it using the following command:

That’s it! At this point you are basically done.

You should now be able to run this script from anywhere on your box.

To test it out, navigate to some directory containing a lot of files and text and search for something.

Here is the output I get when I search my rails app for ‘README’

Add your aliases

You can also add aliases to your .bash_profile to help make your life easier.

Now I can type ‘dev’ and instant be taken to my development directory.

For more information on bash and scripting click here.

Читайте также:  Как сбросить windows mobile до заводских настроек

Источник

О shell-скриптах в команде «Терминал» на Mac

Вместо ввода команд и ожидания ответа Вы можете составить shell-скрипт, который будет выполняться без Вашего непосредственного участия.

Shell-скрипт — это текстовый файл, который содержит одну или несколько команд UNIX. Вместо того чтобы вручную поочередно вводить команды в командной строке, Вы запускаете shell-скрипт, который выполняет все эти команды.

Плюс в том, что в одном shell-скрипте можно объединить большое количество стандартных задач. Это обеспечивает экономию Вашего времени и сокращает количество возможных ошибок при многократном выполнении однотипных задач. Кроме того, shell-скрипты можно автоматизировать с помощью таких инструментов, как launchd или Apple Remote Desktop.

Shell-скрипт начинается с комбинации символов, которая сообщает, что это shell-скрипт. Это символы # и ! (вместе называемые shebang), после которых указывается оболочка shell, в которой должен быть выполнен скрипт. Например, вот первая строка shell-скрипта, который будет запущен в sh :

Рекомендуется снабжать shell-скрипты комментариями. Чтобы добавить комментарий, начните строку со знака номера (#). Каждая строка комментария должна начинаться со знака номера:

Чтобы визуально отделить различные части shell-скрипта, в него можно добавлять пустые строки.

С помощью инструмента chmod можно указать, что файл является исполняемым (то есть, его содержимое может быть запущено как приложение). См. раздел Преобразование файлов в исполняемые в Терминале.

Инструкции по написанию shell-скриптов см. в статье Основные сведения о shell-скриптах на веб‑сайте Apple для разработчиков.

Источник

How to make a simple bash script (Mac)

How to make a simple bash script (Mac)

The first step to make a simple bash script is writing the script.

Open Text Edit, found in Applications, once in Text Edit, click “New Document”.

Next, write the Bash Script, as below:

#!/bin/bash tells the terminal that you are using bash shell

echo hello world prints out “hello world” in the terminal

Once you have written the script, you have to convert the document into plain text.

Select “Format” from the Menu and then click “Make Plain Text.”

Next click “File” and then “Save.”

Name it whatever you would like, but remember how you typed the name because we are going to be using that exact name in the terminal.

For the purpose of this tutorial, I am going to name it “FirstScript”, and I am going to save it in my Documents folder.

Also you have to uncheck the box that says “If no extension is provided, use ‘.txt’.”

Next you are going to open the Finder.

Search for the name of the script you just wrote, or navigate to the file.

Once you found it, right click on it (CTRL + click) and click “Get Info”.

Look on the very bottom right of the opened info window, and you will see a Lock icon that should appear locked.

Click it, and if you have a password on your computer it will ask you for your password to unlock it, otherwise it will just unlock.

Once that is done, you have to open Terminal and navigate to the folder you put the document in.

In the terminal, for my case, I am going to type in

Now we have to change the file we saved to an executable file. Type in chmod 700(file Name). I’m going to type in

chmod 700 FirstScript

This will change it into an executable file.

Now type in ./(File Name). Im going to type in

Источник

Оцените статью