- Консоль для маководов: Beyond the GUI
- Лирическое отступление
- Начнём работу
- Продолжаем знакомство с консолью. Команда open
- Пара слов о бандлах
- Скрипт?
- Скрипты AppleScript
- Кратко о других полезных командах Mac OS X
- Что-то типа заключения
- Как мне отредактировать $ PATH (.bash_profile) в OSX?
- 10 ответов
- Разница между .bashrc, .profile, .bash_profile, …?
Консоль для маководов: 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 :
И — опа! — скрытый файл открылся в 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, то есть, в более быстрый и лёгкий бинарный формат плиста.
Если хотите позаниматься ерундой, то можно из консоли проговорить любой текст. Для этого есть утилита say .
Так же можно задавать голос, которым мак будет с нами говорить:
Одна беда — по-умолчанию говорит эта штука только по-английски.
Теперь снимем скриншот командой из консоли.
Так же из консоли можно конвертировать текст между различными форматами. Например, можно переконвертировать .doc файл в HTML:
Так же textutil умеет преобразовывать кодировки.
Для изменения системных (и не только) настроек, можно использовать команду defaults . Используем её во благо! Включим наконец отображение скрытых файлов и папок в Finder!
Файндер автоматически перезапустится и теперь будет отображать скрытые файлы и папки! Но опять таки, это не всем нравится, так давайте это выключим, пока родителикто-нибудь не испугался или не удалил нужных файликов. Для сокрытия в уже указанной команде поставьте 0 вместо 1. Ну и для примера, ссылка на статью, где описано много твиков с помощью этой команды.
Что-то типа заключения
Ну что ж, мы разобрали некоторые интересные возможности консоли в Mac OS X. Статья, разумеется, не претендует на полноту и является, скорее, «заманухой» для вовлечения маководов в shell-скриптинг да и вообще в консоль.
Источник
Как мне отредактировать $ PATH (.bash_profile) в OSX?
Я пытаюсь отредактировать запись в PATH, так как что-то сделал не так.
Я использую Mac OS X 10.10.3
Но редактор файлов открывается, а внутри ничего нет.
Я пытаюсь установить ANDROID_HOME в свой PATH
Я неправильно написал его, но когда закрыл терминал и вернулся, его уже не было, поэтому я попробовал еще раз:
На этот раз я набрал команду правильно, но когда закрыл терминал, мои настройки снова исчезли.
Как мне выполнить желаемые настройки?
Если бы мне пришлось редактировать bash.profile, как бы я ввел приведенный выше код?
10 ответов
Вы должны открыть этот файл в текстовом редакторе, а затем сохранить его.
Он откроет файл с помощью TextEdit, вставит ваши вещи и затем сохранит. Если вы откроете его снова, вы найдете свои правки.
Вы можете использовать другие редакторы:
Но если вы не знаете, как их использовать, проще использовать подход open .
Кроме того, вы можете положиться на pbpaste . Копировать
В системном буфере обмена, а затем в оболочке
Или вы также можете использовать cat
(теперь cat ждет ввода: вставьте два определения экспорта и нажмите ctrl-D).
Самый простой ответ:
Шаг 1. Запустите Terminal.app.
Шаг 2: введите nano .bash_profile — эта команда откроет документ .bash_profile (или создаст его, если он еще не существует) в самом простом в использовании текстовом редакторе Терминала — Nano.
Шаг 3. Теперь вы можете просто изменить файл. Вставьте эти строки кода, чтобы изменить приглашение терминала.
Экспорт PS1 = «___________________ | \ w @ \ h (\ u) \ n | =>»
Шаг 4: Теперь сохраните изменения, набрав ctrl + o, нажмите return, чтобы сохранить. Затем выйдите из Nano, набрав ctrl + x.
Шаг 5: Теперь нам нужно * активировать ваши изменения. Введите source .bash_profile и посмотрите, как изменится ваше приглашение.
Это оно! Наслаждайтесь!
Определите, какую оболочку вы используете, набрав echo $SHELL в Терминале.
Затем откройте / создайте правильный файл rc. Для Bash это $HOME/.bash_profile или $HOME/.bashrc . Для оболочки Z это $HOME/.zshrc .
Добавьте эту строку в конец файла:
Для проверки обновите переменные, перезапустив Терминал или набрав source $HOME/. , а затем сделав echo $PATH
Для меня Mac OS — Мохаве. и я сталкиваюсь с той же проблемой в течение трех дней, и в конце я просто записываю правильный путь в файле .bash_profile, который выглядит следующим образом:
- note1: если у вас нет .bash_profile, создайте его и напишите строку выше
- note2: заархивируйте загруженный SDK flutter в [home] / development, если вы скопируете и вставите этот путь
Mac OS X сохраняет путь не в .bash_profile, а в .profile, поскольку Mac OS X является ветвью семейства * BSD. Вы должны увидеть экспорт-бла-бла-бла в .profile после того, как выполните cat .profile на своем терминале.
Установите путь JAVA_HOME и ANDROID_HOME> Вы должны открыть терминал и ввести приведенный ниже cmd.
После этого вставьте ниже пути в файл базового профиля и сохраните его.
В Macbook шаг за шагом:
- Прежде всего откройте терминал и напишите его: cd
/
Вы создали свой файл «.bash_profile», но если вы хотите его отредактировать, вы должны его написать;
- Измените свой профиль bash: open -e .bash_profile
После сохранения в верхнем левом углу экрана: Файл> Сохранить .
Для начинающих: чтобы создать файл .bash_profile в домашнем каталоге в MacOS, запустите:
Затем вы можете вставить следующее:
Как видите, он включает несколько примеров псевдонимов и переменную среды внизу.
Когда вы закончите вносить изменения, следуйте инструкциям в нижней части окна редактора Nano для WriteOut ( Ctrl-O ) и Exit ( Ctrl-X ). Затем выйдите из Терминала и снова откройте его, и вы сможете использовать только что определенные псевдонимы и переменные среды.
Если вы используете MAC Catalina, вам необходимо обновить файл .zshrc вместо .bash_profile или .profile
Немного подробнее для новичков:
Сначала убедитесь, что существует файл .bash_profile? Помните, что файл .bash_profile отсутствует по умолчанию. Вы должны создать его самостоятельно.
Войдите в свою папку пользователя в Finder . Там должен быть найден файл .bash_profile. -> HD / Пользователи / [ИМЯ ПОЛЬЗОВАТЕЛЯ]
Помните: файлы с точкой в начале ‘.’ по умолчанию скрыты .
Чтобы отобразить скрытые файлы в Mac OS Finder:
Если он не существует, вы должны создать .bash_profile самостоятельно.
Откройте приложение терминала и перейдите в папку пользователя с помощью простой команды:
Если его нет, используйте эту команду для создания файла :
Во-вторых, если вы не можете запомнить сложные команды для сохранения и закрытия в vim, nano и т. Д. (Способ, рекомендованный выше), самый простой способ редактировать — открыть файл .bash_profile в предпочитаемом вами редакторе кода (Sublime и т. Д.).
Finder -> Папка пользователя. Щелкните правой кнопкой мыши -> открыть с помощью: Sublime Text (или другого редактора кода). Или перетащите его в приложение в доке.
… А там его можно редактировать, передавать команды экспорта в новые строки.
Источник
Разница между .bashrc, .profile, .bash_profile, …?
/ .bash_profile загружается при входе в систему. Он читается только один раз.
/ .bashrc загружается каждый раз при запуске оболочки (например, при запуске терминала), но не загружается при первом входе в систему.
Примечание. Некоторые терминалы (например, gnome-terminal) имеют возможность «запускать команду в качестве оболочки входа», то есть, если она включена, она сначала загрузит файл
/ .profile), прежде чем запускать
Примечание. В Mac OS X приложение Terminal запускается как оболочка входа, поэтому он запускает файл
/ .bash_profile. Различные unixes имеют разную настройку.
Вот выдержка из man bash:
Также есть <.login, .profile, …>. Это в основном наследие, которое bash также может читать.
.login – это устаревший файл инициализации входа для исходной оболочки, оболочка Bourne «sh». BASH (Bourne-Again SHell) является в основном совместимой расширенной версией.
Во многих системах unix / bin / sh привязывается к / bin / bash.
В Ubuntu Linux, 2006, / bin / sh является символической ссылкой на / bin / dash. тире является новым. «Тире» меньше и быстрее, чем bash, для запуска сценариев запуска системы.
Файл .profile является устаревшим исходным файлом оболочки оболочки для оболочки Bourne «sh».
.csh – это файл init для оболочки csh. (в основном, оболочка с синтаксисом Си).
.tcshrc – это файл init для tcsh tcsh. (в основном, улучшенный csh)
Источник