Привет, Хабр!
Меня зовут Рожнев Андрей, участник профессионального сообщества NTA.
Делюсь личным опытом по настройке терминала в Unix‑подобных ОС (macOS, Fedora, Ubuntu и так далее).
Когда я только залетал в отрасль софтверной разработки, первое, что меня напрягло — конечно же терминал и его неотвратимость. По итогу же оказалось, что терминал — это твой верный друг и соратник на тернистом, но таком интересном пути в мир IT. Один из вариантов полюбить терминал — потратить какое‑то время, немного разобраться в теме и настроить всё это дело под себя любимого.
Пост в первую очередь рассчитан на начинающих разработчиков, которые если и пользуются терминалом, то исключительно «в чём мать родила», а так как избежать работы в терминале не получится, то благоразумно данный процесс сделать более приятным!
Навигация по материалу
Данный пост послужит хорошей отправной точкой как фундамент для ваших дальнейших хотелок и изысканий в работе с терминалом. Также я кратко подсвечу основные понятия, которые помогут начинающему джедаю понимать суть вопроса чуть лучше.
Итак, показывать буду на примере двух систем — macOS и Fedora (как ярчайший представитель Linux‑дистрибутивов), а выбор фреймворков и библиотек для прокачки терминала обусловлен следующими факторами:
популярное решение;
легко гуглится;
актуальное в плане поддержки и развития;
установка (желательно) должна напоминать принцип: «далее‑далее‑далее» (насколько это, конечно, применимо в контексте работы с терминалом);
применённые технологии должны быть гибкими в настройке.
Сегодня я превращу вот этих мальчишек:
В успешных и состоятельных Мужчин
Для совсем маленьких. Основные понятия для работы в терминале
Что означают символы $ и # в командах терминала?
В рамках данного поста вы будете видеть такие «страшные» терминальные команды, как:
$ brew --version
# sudo apt install zsh
Во‑первых, вставлять в терминал эти символы НЕ НУЖНО! Если видишь $ brew ‑version — это значит Ctrl+C только brew ‑version с последующим Ctrl+V в терминал.
Во‑вторых, в «ваших этих» линуксах $ и # имеют различные значения в зависимости от контекста, в котором они используются, однако для понимания происходящего в этом посте справедливо следующее:
Символ $ означает, что команда выполняется от имени обычного пользователя.
Символ # означает, что команда выполняется от имени суперпользователя (root). Будь аккуратен, мой юный падаван, когда бездумно используешь команды, требующие повышенных прав! Незадумчивое исполнение команд под root-пользователем может легко привести к жжению ниже спины (в данном посте таких команд нет).
Что такое командная оболочка?
Командная оболочка (shell) — это интерфейс, который обеспечивает доступ к командам и утилитам операционной системы. Она представляет собой командный интерпретатор, который позволяет пользователям вводить команды в терминал и получать ответы на них.
Командная оболочка позволяет пользователям запускать скрипты, автоматизировать задачи, управлять файлами и каталогами, работать с процессами и многое другое. Кроме того, она может быть настроена пользователем для удобства работы с операционной системой (зачем, собственно, мы здесь и собрались).
Существует множество различных командных оболочек для разных операционных систем. Некоторые из наиболее популярных командных оболочек в Unix‑подобных системах включают Bash (Bourne‑again shell), Zsh (Z shell). В Windows наиболее распространенной командной оболочкой является cmd.exe, а в более новых версиях Windows — PowerShell.
Что такое пакетный менеджер?
Пакетный менеджер позволяет легко и быстро управлять установкой, удалением, а также получать обновления и исправления ПО без необходимости ручной загрузки с сайта производителя файла установки. Джедаи пользуются сией магией посредством терминала, и я сегодня буду!
Пакетный менеджер работает с пакетами программного обеспечения, которые содержат исполняемые файлы, библиотеки, документацию, скрипты и другие файлы, необходимые для работы программы. Пакеты, как правило, хранятся в репозиториях.
Что такое репозиторий в контексте Unix‑подобных систем?
В данном случае репозиторий — это хранилище программного обеспечения, которое содержит пакеты программ, различные библиотеки и драйвера для установки и обновления на твоём модном макбуке.
Что такое PATH?
PATH — это переменная среды, используемая операционной системой для определения местоположения исполняемых файлов, которые можно запускать из любой директории.
Когда я запускаю какую‑нибудь команду в терминале, операционная система ищет связанную с этой командой софтину в различных директориях, перечисленных в переменной PATH. Если исполняемый файл находится в одной из этих директорий, OS запустит этот файл, иначе она сообщит об ошибке (например, command not found).
Добавление новой директории в переменную PATH позволяет использовать новые исполняемые файлы из любой директории на компьютере.
Светлое нефильтрованное. Менеджер пакетов Homebrew (только для macOS)
Кто бы мог подумать, что в macOS потребуются лишние телодвижения, дабы приступить к настройке непосредственно терминала. Загвоздка в том, что из коробки в макоси нет пакетного менеджера, а без него живётся весьма грустно.
Кратко за Homebrew — The Missing Package Manager for macOS:
Homebrew позволяет устанавливать ПО, не предоставляемое Apple в App Store (а такого софта много, уж поверьте).
OpenSource - проект со стажем в 14 лет, под капотом Ruby + Git.
Устанавливаем Homebrew (только для macOS)
По данной ссылке находится официальная инструкция по установке данного пакетного менеджера, однако я, конечно же, кратко распишу процесс установки:
1.В терминале выполняю следующую команду:
$ /bin/bash ‑c «$(curl ‑fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)»
Скорее всего сообщение в терминале предложит установить The Xcode Command Line Tools, соглашаюсь (процесс не быстрый):
Для неофитов (респект ChatGPT):
The Xcode Command Line Tools в macOS — это набор утилит и инструментов для разработки программного обеспечения, которые предоставляются Apple вместе с Xcode, средой разработки приложений для экосистемы Apple.
Эти инструменты включают в себя компиляторы, библиотеки и другие утилиты, которые позволяют разработчикам создавать и отлаживать приложения с помощью командной строки.
Кроме того, Xcode Command Line Tools включает в себя инструменты для работы с системой управления версиями Git, инструменты для автоматической сборки проектов и инструменты для создания пакетов и установки приложений.
2.После установки потребуется добавить Homebrew в PATH:
Для этого необходимо выполнить ещё две команды:
$ (echo; echo 'eval “$(/opt/homebrew/bin/brew shellenv)”') >> /Users/neo/.zprofile
и
$ eval “$(/opt/homebrew/bin/brew shellenv)”
После чего необходимо перезапустить терминал (ПКМ на иконке Терминала в Dock ‑> Завершить)
3.Снова открываю Терминал и проверяю, что всё установилось, следующей командой:
$ brew --version
Если все получилось — мои поздравления, вы избранный, теперь в системе есть пакетный менеджер (который, к слову, не требует root‑прав для своей работы).
Вот список основных команд при работе с Homebrew:
$ brew install имя_пакета (установка пакета);
$ brew uninstall имя_пакета (удаление пакета);
$ brew search имя_пакета (поиск пакета в репозитории Homebrew);
$ brew list (список установленных пакетов);
$ brew upgrade (обновить установленные пакеты).
Устанавливаю Zsh (только для Fedora)
В 99% случаях в Linux дистрибутиве в качестве командной оболочки (shell) будет стоять Bash. Проверить это можно следующей командой:
$ echo $SHELL
С Bash всё в порядке, однако для моих нужд всё‑таки лучше заморочиться и установить альтернативу в лице Zsh, это позволит впоследствии прикрутить фреймворк Oh My Zsh для более простой и в то же время богатой кастомизации терминала (у меня в планах несколько постов по терминалам, и установка Zsh будет славным подспорьем). Благо все эти действия просты в исполнении. Приступим.
PS: В macOS перешли на Zsh начиная с Catalina (10.15), а это о чём‑то да говорит.
1. Вбиваю в терминал следующее (большинство пакетников в Linux требуют root‑права для исполнения команд, без этого никак):
# sudo dnf install zsh (для RPM дистрибутивов, аля Fedora)
# sudo apt install zsh (для Debian‑подобных дистрибутивов, аля Ubuntu)
Вижу, что я снова программист:
На всякий случай проверяю корректность установки следующей командой:
zsh --version
2.Важное замечание для Fedora: Zsh не может автоматически сменить оболочку с Bash на Zsh, поэтому нужно выполнить следующую команду (потребуется ввести пароль пользователя) и перезапустить терминал:
$ chsh -s $(which zsh)
3.Вообще, по‑хорошему, здесь я должен запустить $ zsh в терминале и пройтись по её настройке, однако, так как я собираюсь далее установить поверх нее фреймворк Oh My Zsh, то проводить настройку Zsh нет необходимости.
Устанавливаю Oh My Zsh (для MacOS и Fedora)
Oh My Zsh — Open source, community‑driven framework for managing Zsh configuration.
А если на русском, то это большая надстройка над оболочкой Zsh, для управления конфигурацией и плагинами Zsh, что упрощает использование и настройку командной строки.
По ссылке находится официальная инструкция по установке данного фреймворка, однако я, конечно же, кратко распишу процесс установки:
Запустить процесс установки можно как посредством Curl, так и Wget — выбирайте любой из вариантов.
Выбираю один из двух вариантов:
1.Команда, использующая Curl:
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
2.Команда, использующая Wget:
$ sh ‑c “$(wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh ‑O ‑)”
Результатом выполнения данных команд будет следующее сообщение (цветовая тема терминала была изменена на тёмную, для лучшей читаемости):
Здесь мне предлагается заглянуть внутрь конфигурационного файла.zshrc (лежит в домашней директории текущего пользователя $ cd ~) для дальнейшей настройки, что я обязательно сделаю, но чуть позднее.
Перед этим предлагаю установить гибкую и в то же время простую в плане настройки терминальную тему — Powerlevel10k.
Установка темы Powerlevel10k (для macOS и Fedora)
Установить тему можно различными способами, даже посредством Homebrew! Поэтому в macOS я воспользуюсь силами новоприобретённого пакетного менеджера, а в Fedora установлю посредством Oh My Zsh.
Установка Powerlevel10k посредством Homebrew (только для macOS)
Оригинальная инструкция находится здесь. Установка посредством Homebrew даст следующие преимущества:
1. В случае необходимости можно будет легко удалить данную тему ($ brew uninstall powerlevel10k).
2. Brew будет следить за обновлениями данной темы ($ brew update && brew upgrade).
Выполняю следующую команду:
$ brew install romkatv/powerlevel10k/powerlevel10k
Результатом успешной установки будет следующее сообщение:
Здесь мне подсказывают, что для активации темы нужно добавить строку:
source /opt/homebrew/opt/powerlevel10k/powerlevel10k.zsh-theme в файл .zshrc (напоминаю, что это файл конфигуации Zsh, и находится он в домашней директории текущего пользователя).
Так и поступаю, выполнив следующую команду:
$ echo “source $(brew ‑prefix)/opt/powerlevel10k/powerlevel10k.zsh‑theme” >>~/.zshrc
После чего необходимо будет перезапустить терминал.
Установка Powerlevel10k посредством Oh My Zsh (только для Fedora)
Оригинальная инструкция находится здесь. Для установки выполняю следующую команду:
git clone ‑depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:‑$HOME/.oh‑my‑zsh/custom}/themes/powerlevel10k
Результатом успешного выполнения будет следующее сообщение:
Теперь нужно открыть файл.zshrc и изменить значение параметра ZSH_THEME=»robbyrussell» на ZSH_THEME=»powerlevel10k/powerlevel10k». Для этого выполняю:
$ nano ~/.zshrc
В терминале откроется конфигурация оболочки Zsh, меняю параметр ZSH_THEME с последующим сохранением изменений (Control + S в macOS или Ctrl + S в Fedora) и перезапуском терминала:
Установка необходимых шрифтов и настройка прозрачности фона
Для корректной работы темы предпоследним шагом станет установка специального шрифта в эмулятор терминала (если вы используете терминалы iTerm2 или Termux — пропускайте данный раздел).
Даю ссылку на официальную инструкцию по установке шрифтов.
А вот моя краткая инструкция по установке:
Скачиваем шрифт MesloLGS NF Regular.ttf.
Устанавливаем его в систему (думаю, с этим вы и без меня разберётесь).
-
Подключаем шрифт в терминале:
macOS: будучи в открытом терминале, нажимаем Command + , à Profiles (Профили) à Выбираем любой профиль, по умолчанию Basic à Text (Текст) à Font (Шрифт) à Change… (Изменить…) à Family (Семейство) à MesloLGS NF
Здесь же можно отрегулировать прозрачность фона: Basic à Text (Текст) à Colors & Effects (Цвет и эффекты) à Opacity (Непрозрачность, я поставил 80%) и Blur (Размытие, я поставил 20%). Изменяем только верхние ползунки!
Fedora: будучи в открытом терминале, открываем Preferences (Параметры) à Выбираем профиль, по умолчанию Unnamed (Безымянный) à Text (Текст) à Custom font (Пользовательский шрифт) à MesloLGS NF
Здесь же можно отрегулировать прозрачность фона: Unnamed (Безымянный) à Colors (Цвета) à Transparent background (Прозрачный фон) Перезапускаем терминал.
Финальная настройка (ну наконец-то)
При запуске терминала вы увидите следующее приветственное сообщение:
Это сообщение от мастера настройки Powerlevel10k, где нам нужно отвечать на вопросы (выбирая Yes — буквой «y» на клавиатуре, No — буквой «n«, цифры — цифрами:D), и тем самым и сконфигурировать свою тему.
Чтобы не растягивать «хронометраж», приведу список того, что выбрал я:
1. Does this look like a diamond (rotated square)? – Yes
2. Does this look like a lock? – Yes
3. macOS à Does this look like a Debian logo (swirl/spiral)? – Yes
3.1 Fedora à Does this look like an upwards arrow? – Yes
4. Do all these icons fit between the crosses? – Yes
5. Prompt Style – (2) Classic
6. Character Set – (1) Unicode
7. Prompt Color – (2) Light
8. Show current time? – (1) No
9. Prompt Separators – (1) Angled
10. Prompt Heads – (1) Sharp
11. Prompt Tails – (1) Flat
12. Prompt Height – (2) Two lines
13. Prompt Connection – (1) Disconnected
14. Prompt Frame – (1) No frame
15. Prompt Spacing – (2) Sparse
16. Icons – (2) Many Icons
17. Prompt Flow – (2) Fluent
18. Enable Transient Prompt? – (y) Yes
19. Instant Prompt Mode – (2) Quiet
20. Apply changes to ~/.zshrc? – (y) Yes
Весь процесс весьма наглядный, поэтому смело экспериментируйте и подбирайте те настройки, которые больше приглянутся именно вам. Чтобы перезапустить мастер настройки, набираем в терминале $ p10k configure.
Выводы
Итак, подводя итоги поста, я показал, как настроить терминал в Unix‑подобных операционных системах, на примере macOS и Fedora. Также рассказал об основных этапах установки и настройки популярных и актуальных решений.
Работа с терминалом является неотъемлемой частью профессиональной деятельности разработчика, и поэтому важно потратить время на освоение и настройку этого инструмента, чтобы сделать работу более эффективной и приятной. В процессе настройки я также кратко затронул основные понятия, которые помогут начинающим разработчикам лучше разбираться в тонкостях работы с терминалом.
Надеюсь, что этот пост послужит хорошей отправной точкой для дальнейшего развития вашего мастерства работы с терминалом, а также стимулом для изучения новых возможностей, трюков и настроек. Учитывая индивидуальные предпочтения и задачи каждого разработчика, вы сможете адаптировать рассмотренные варианты и создать свою уникальную рабочую среду.
Не забывайте следить за обновлениями и развитием фреймворков, библиотек и инструментов, которые вы используете, чтобы всегда быть в курсе новых возможностей и оптимизаций. Вместе с опытом и практикой вы постепенно станете настоящим мастером терминала, и он станет вашим надежным помощником на пути к успеху в мире IT. Удачи вам в дальнейшем изучении и совершенствовании своих навыков работы с терминалом!