Привет, Хабр!

Меня зовут Рожнев Андрей, участник профессионального сообщества NTA.

Делюсь личным опытом по настройке терминала в Unix‑подобных ОС (macOS, Fedora, Ubuntu и так далее).

Когда я только залетал в отрасль софтверной разработки, первое, что меня напрягло — конечно же терминал и его неотвратимость. По итогу же оказалось, что терминал — это твой верный друг и соратник на тернистом, но таком интересном пути в мир IT. Один из вариантов полюбить терминал — потратить какое‑то время, немного разобраться в теме и настроить всё это дело под себя любимого.

Пост в первую очередь рассчитан на начинающих разработчиков, которые если и пользуются терминалом, то исключительно «в чём мать родила», а так как избежать работы в терминале не получится, то благоразумно данный процесс сделать более приятным!

Навигация по материалу

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

Итак, показывать буду на примере двух систем — macOS и Fedora (как ярчайший представитель Linux‑дистрибутивов), а выбор фреймворков и библиотек для прокачки терминала обусловлен следующими факторами:

  • популярное решение;

  • легко гуглится;

  • актуальное в плане поддержки и развития;

  • установка (желательно) должна напоминать принцип: «далее‑далее‑далее» (насколько это, конечно, применимо в контексте работы с терминалом);

  • применённые технологии должны быть гибкими в настройке.

Сегодня я превращу вот этих мальчишек:

Стандартный вид терминала macOS
Стандартный вид терминала macOS
Стандартный вид терминала Fedora
Стандартный вид терминала Fedora

В успешных и состоятельных Мужчин

Жених со стороны macOS (на примере стандартного терминала macOS, хотя сам использую iTerm2, но об этом в другой раз)
Жених со стороны macOS (на примере стандартного терминала macOS, хотя сам использую iTerm2, но об этом в другой раз)
Альфа-самец на Fedora
Альфа-самец на Fedora

 

Для совсем маленьких. Основные понятия для работы в терминале

Что означают символы $ и # в командах терминала?

В рамках данного поста вы будете видеть такие «страшные» терминальные команды, как:

  • $ 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. Удачи вам в дальнейшем изучении и совершенствовании своих навыков работы с терминалом!

Комментарии (0)