- Делаем Linux терминал красивым и удобным
- Добавляем функциональность
- Командная оболочка
- Настройка Zsh
- Настраиваем внешний вид
- Делаем Linux терминал красивым и удобным
- Добавляем функциональность
- Командная оболочка
- Настройка Zsh
- Настраиваем внешний вид
- Разноцветные терминалы
- Разукрашиваем вывод в консоли: теория и практика
- Управляющие последовательности ANSI
- 8 основных цветов и стили
- Возможные аргументы
- Бонус: другие интересные модификаторы, которые могут поддерживаться не всеми платформами
- Часто используемые сочетания (copy-paste-able)
- Больше цветов: аж целых 256
- Совсем много цветов
- Python: Использование библиотеки Colorama
- А что не так с Windows?
- Termcolor
- Выводы
- Источники
Делаем Linux терминал красивым и удобным
Все дистрибутивы Linux поставляются с функциональным и кастомизируемым эмулятором терминала. В интернете, а порой даже в самом терминале, есть масса готовых тем, чтоб он красиво выглядел. Однако, чтоб сделать из стандартного терминала (в любом DE, любого дистрибутива) нечто красивое и одновременно удобное и простое в использовании я потратил много времени. Итак, как же сделать дефолтный терминал удобным и приятным в использовании?
Добавляем функциональность
Командная оболочка
Большинство дистрибутивов поставляется со встроенным Bash. Используя дополнения можно сделать из него все что захотите, но гораздо проще этого добиться с Zsh. Почему?
Настройка Zsh
Для начала, установим Zsh (если он уже установлен, например, как в Manjaro, можете пропустить этот пункт):
Когда вам предложат установить Zsh как оболочка по-умолчанию, нажмите Y , чтоб подтвердить.
Oh-My-Zsh — популярный и активно развивающийся фреймворк Zsh, который позволяет гибко настроить оболочку терминала. Установим его:
Подсветка синтаксиса. Гораздо проще ориентироваться по содержимому терминала, когда разные части команд подсвечены разными цветами. Например, директории будут подчеркиваться, а команды — выделяться цветом, отличным от обычного текста. Установим плагин zsh-syntax-highlighting :
Чтоб плагин заработал, его надо подключить.
/.zshrc меняем строку с plugins= :
Если такой строки нет — добавьте её.
Готово! Получаем удобный и функциональный терминал. Теперь сделаем его визуально приятным.
Настраиваем внешний вид
Устанавливаем тему PowerLevel10K:
Скачиваем и добавляем в систему шрифт JetBrains Mono Nerd (c иконками):
Выберитеодин из списка, в папке шрифт/complete выберите шрифт без «Windows Compatible», с окончанием «Mono».
Подключаем шрифт и тему.
Если в файле эти строки уже есть — замените их.
Цвета. Важная часть оформления терминала — цветовая схема. Я перебрал много разных схем, редактировал их, остановился на Monokai Dark. Не режет глаза, но при этом приятная и яркая. Список цветов:
В разных терминалах по-разному меняется цветовая схема (обычно, это делается через настройки терминала), но порядок цветов везде одинаковый. Вы можете импортировать этот шаблон в формате Termite и экспортировать его для вашего терминала через terminal.sexy
Запускаем конфигурацию темы: p10k configure .
Настройте тему, выбирая варианты отображения, которые вам больше нравятся.
Финальный штрих — меняем конфиг темы и заменяем встроенные цвета.
Если в файле эти строки уже есть — замените их. Коды цветов можно получить командой
- Отображение только текущей директории:
Источник
Делаем Linux терминал красивым и удобным
Добавляем функциональность
Командная оболочка
Большинство дистрибутивов поставляется со встроенным Bash. Используя дополнения можно сделать из него все что захотите, но гораздо проще этого добиться с Zsh. Почему?
Настройка Zsh
Для начала, установим Zsh (если он уже установлен, например, как в Manjaro, можете пропустить этот пункт):
Когда вам предложат установить Zsh как оболочка по-умолчанию, нажмите Y , чтоб подтвердить.
Oh-My-Zsh — популярный и активно развивающийся фреймворк Zsh, который позволяет гибко настроить оболочку терминала. Установим его:
Подсветка синтаксиса. Гораздо проще ориентироваться по содержимому терминала, когда разные части команд подсвечены разными цветами. Например, директории будут подчеркиваться, а команды — выделяться цветом, отличным от обычного текста. Установим плагин zsh-syntax-highlighting :
Чтоб плагин заработал, его надо подключить.
/.zshrc меняем строку с plugins= :
Если такой строки нет — добавьте её.
Готово! Получаем удобный и функциональный терминал. Теперь сделаем его визуально приятным.
Настраиваем внешний вид
Скачиваем и добавляем в систему шрифт JetBrains Mono Nerd (c иконками):
Выберитеодин из списка, в папке шрифт/complete выберите шрифт без «Windows Compatible», с окончанием «Mono».
Подключаем шрифт и тему.
Если в файле эти строки уже есть — замените их.
Цвета. Важная часть оформления терминала — цветовая схема. Я перебрал много разных схем, редактировал их, остановился на Monokai Dark. Не режет глаза, но при этом приятная и яркая. Список цветов:
В разных терминалах по-разному меняется цветовая схема (обычно, это делается через настройки терминала), но порядок цветов везде одинаковый. Вы можете импортировать этот шаблон в формате Termite и экспортировать его для вашего терминала через terminal.sexy
Запускаем конфигурацию темы: p10k configure .
Настройте тему, выбирая варианты отображения, которые вам больше нравятся.
Финальный штрих — меняем конфиг темы и заменяем встроенные цвета.
Если в файле эти строки уже есть — замените их. Коды цветов можно получить командой
- Отображение только текущей директории:
Источник
Разноцветные терминалы
В этой публикации я расскажу о некоторых трюках, которые украсят будни любого системного администратора Linux (и не только). Все они связаны с переменной PS1 оболочки bash. Переменная PS1 определяет, как будет выглядеть приглашение для ввода новых команд. И каждый пользователь может переопределять её как пожелает, например, в файле
/.bashrc (который выполняется при запуске bash и используется для в том числе для конфигурации).
Для начала рассмотрим простой вариант, мой любимый формат командной строки.
Результат будет вот такой:
Это обычное использование переменной PS1, но если бы я не начал с этого — рассказ был бы неполным. Обычно в переменной PS1 с помощью специальных последовательностей символов определяют формат приглашения для ввода команд. Подробный список этих последовательностей можно почитать в документации к bash, в данном примере:
- \t — вывод «текущего времени», на самом деле это получается время завершения выполнения предыдущей команды, удобно когда перед глазами.
- j\j — выводит символ j и после него количество запущенных job, т.е. процессов в фоне. Это тоже удобно иметь перед глазами чтобы случаем про них не забыть когда соберешься закрыть терминал.
- \u@\h — имя пользователя и название сервера. Если работаете с несколькими серверами через удаленные терминалы — чтобы не путаться.
- \w — после двоеточия — рабочая директория.
- \n — поскольку строка получилась хоть и информативной (что-то вроде статус бара), но длинной, то приглашаем вводить команды с новой строки, а эта верхняя строка будет наглядно отделять от результата работы предыдущей команды.
- \$ — на новой строке будет выводится символ либо $ для обычного пользователя либо # для root’а и отделив его пробелом можно приглашать вводить новую команду.
Казалось бы, чего еще желать… Но дальше будет интереснее. Дело в том, что с помощью специальных управляющих символов можно задавать цвет выводимого текста, цвет курсора и даже переопределять title bar у таких графических терминалов, как Gnome2. И, на мой взгляд, довольно удобно когда цветом отделяются терминалы запущенные на различных серверах. Для меня каждый сервер ассоциируется с каким-то цветом и в этот цвет мы будем красить командную строку и курсор на каждом сервере.
У меня .bashrc разделен на два файла, в самом .bashrc содержится общий код для всех серверов, а в .bash_local — уникальные для этого сервера настройки командной строки. .bash_local я буду вставлять в .bashrc специальной директивой. Начнем с .bash_local. В контексте данной статьи там у меня будут две строчки, которые определяют цвет этого сервера:
Просто заношу коды цвета в переменные. Но, как вы заметили, что способ задания цвета для курсора и для текста командной строки — разный. Почему-то так исторический получилось. Чтобы понять, какой цвет каким кодом кодируется, есть подходящая картинка.
Посредине — обозначение цвета для цвета курсора, снизу — обозначение цвета для текста. Как вы можете увидеть, что я для текста и курсора использую цвет морской волны. Т.к. название сервера petrel («буревестник»), то он ассоциируется у меня с этим цветом.
Теперь .bashrc, тоже показываю его не полностью, а только то что имеет отношение к теме:
Тут я вставляю код из .bash_local в общий файл. Таким образом определяться ранее описанные переменные с цветом сервера.
Еще две переменные определяю с чисто красным цветом, он будет использоваться для маркировки терминалов привелигированного пользователя (root’а).
Тут проверяется какой используется терминал. Для любого неизвестного или неподдерживающего цвета будет использоваться приглашение без цвета (PS1=’\t j\j \u@\h:\w\n\$ ‘) так, как я это описал в начале статьи. Но если имя терминала начинается на xterm или rxvt, например, так себя позиционирует терминал Gnome, начинаем кудесить с цветом. Первая строчка — задаем цвет текста — цвет сервера и выводим первую строку приглашения ввода команд. Она всегда будет окрашена в цвет сервера. Вторая строчка — проверяем, работаем ли мы под непривелигированным или привелигированным пользователем (root’ом). Если root — то переопределяем цвета на красный. Третья строчка — формируем вторую строчку приглашения и определяем цвет курсора в терминале. Т.е. там у нас получится либо $ и через пробел курсор, оба покрашенные в цвет сервера, если пользователь обычный. Либо красный # и через пробел красный курсор, если это root.
А это, если честно, один в один скопированно из первоначального .bashrc от Дебиана. Знаю, что этот код видоизменяет title bar у окна, размещает там информацию об пользователе, сервере и домашней директории. Но поскольку этот код придумал не я, комментировать его не буду.
В результате у нас должно получится так, как на картинке в самом начале публикации.
Источник
Разукрашиваем вывод в консоли: теория и практика
Консоль привлекает многих своей минималистичностью и эстетикой, но даже в ней иногда хочется выделить определённый фрагмент, чтобы показать его роль или значимость. Например, отметить зелёным текстом сообщение об успешном выполнении операции или обозначить длинный текст ошибки курсивом. О том, как это делать, а также о реализации на питоне — читайте далее.
Управляющие последовательности ANSI
ANSI escape sequences или Управляющие последовательности ANSI — это стандарт, дающий возможность управлять курсором, цветами, начертание в текстовых консолях. Такие последовательности воспринимаются отрисовщиком терминала, как команды отображать последующий текст в определенном формате. Есть также последовательность, которая сбрасывает предыдущие команды, и отображение текста становиться обычным. Существует несколько форматов управляющих последовательностей, различающихся возможностями и появившимися в разных версиях кодировок. Поговорим об этих форматах подробнее.
8 основных цветов и стили
Для обычного пользователя разнообразия цветов этого формата будет более чем исчерпывающим. Но прежде чем задумываться о том, что терракотовый цвет гораздо круче красного, и он вам уж точно нужен, давайте разберемся, как устроена самая простая версия управляющей последовательности ANSI для форматирования текста.
Чтобы изменить текущий цвет шрифта или фона можно использовать следущий синтаксис:
- Начинается управляющая последовательность с любого из этих трёх представлений: \x1b[ (hex) или \u001b[ (Unicode) или \033[ (oct)
- Далее следуют аргументы, разделённые между собой ; (можно указывать в любом порядке)
- В конце ставится буква m
Возможные аргументы
Модификатор | Код |
---|---|
1 | Жирный |
2 | Блеклый |
3 | Курсив |
4 | Подчёркнутый |
5 | Мигание |
9 | Зачёркнутый |
Изменения цвета шрифта
Цвет | Код |
---|---|
30 | Чёрный |
31 | Красный |
32 | Зелёный |
33 | Жёлтый |
34 | Синий |
35 | Фиолетовый |
36 | Бирюзовый |
37 | Белый |
Изменения цвета фона
Цвет | Код |
---|---|
40 | Чёрный |
41 | Красный |
42 | Зелёный |
43 | Жёлтый |
44 | Синий |
45 | Фиолетовый |
46 | Бирюзовый |
47 | Белый |
Бонус: другие интересные модификаторы, которые могут поддерживаться не всеми платформами
Модификатор | Код |
---|---|
38 | RGB цвет (см. раздел «Совсем много цветов») |
21 | Двойное подчёркивание |
51 | Обрамлённый |
52 | Окружённый |
53 | Надчёркнутый |
Пример корректного синтаксиса: \033[3;36;44m . После вывода этой конструкции стиль будет изменён для всего последующего текста. Чтобы вернуться к изначальному состоянию можно использовать \033[0m , тогда весь текст с этого места вернётся к изначальному форматированию.
Давайте поэкспементируем. Для примеров я буду использовать Python.
Важно заметить, что форматирование повлияло и на консоль питона, а не только на ее вывод. Именно поэтому очень важно закрывать все «тэги» изменения форматирования.
Часто используемые сочетания (copy-paste-able)
Код | Описание |
---|---|
\033[0m | вернуться к начальному стилю |
\033[31m \033[0m | красный текст — для обозначения ошибок |
\033[1;31m \033[0m | жирный красный текст — для обозначения критических ошибок |
\033[32m \033[0m | зеленый текст — успешное выполнение |
\033[3;31m \033[0m | красный курсив — текст ошибки |
\033[43m \033[0m | выделение основного, как будто жёлтым маркером |
Больше цветов: аж целых 256
Некоторые терминалы поддерживают вывод целых 256 цветов. Если команда echo $TERM выводит xterm-256color , то ваш терминал всё корректно обработает.
В этом формате синтаксис немного другой:
Для генерации кодов цветов можно использовать генератор.
А палитру доступных цветов можно увидеть на картинке ниже.
Совсем много цветов
Этот формат не всегда поддерживается стандартными консолями.
Некотрые будут негодовать: «256 цветов и нет моего любимого терракотового, какой ужас!». Для таких ценителей существует формат, который уже поддерживает 24 битные цвета (3 канала RGB по 256 градаций).
Для не ценителей поясню, что терракотовый кодируется как — (201, 100, 59) или #c9643b.
Синтаксис в этом формате выглядит вот так:
Python: Использование библиотеки Colorama
Библиотека Colorama позволяет форматировать текст, не запоминая коды цветов. Рассмотрим её использование на примере:
Style позволяет изменить стиль, Fore — цвет шрифта, Back — цвет фона. Использовать переменные из colorama нужно также, как и коды изменения стиля. Но плюс использования библиотеки в том, что Fore.RED более читаем, чем \033[0;31m
Если в colorama.init() указать параметр autoreset=True , то стиль будет автоматически сбрасываться (в конец каждого print будут добавлены сбрасывающие стили последовательности), поэтому вам не придётся об этом каждый раз вспоминать.
А что не так с Windows?
Просто так синтаксис, описанный в начале статьи, не работает в командной строке Windows. Поддержка цветов появлялась постепенно, причём в странном варианте. В начале программы надо сделать системный вызов, активирующий отрисовку цветов. А в более старых версиях необходимо заменить все ANSI последовательности на системные вызовы.
Но colorama.init() сделает всё за вас в большинстве версий Windows. Однако если вы используете другую операционную систему, то функцию init() вызывать в начале программы не обязательно. Также некоторые IDE на Windows (например, PyCharm) тоже поддерживают цвета без каких-либо махинаций.
А еще Windows не поддерживает многие модификаторы, такие как жирный текст. Подробнее можно почитать на странице Colorama
Termcolor
Ещё одна библиотека для вывода цветного текста с более удачным, на мой взлгяд, синтаксисом.
Кстати, проблему с Windows всё ещё можно починить с помощью colorama.init()
Выводы
Стандартные 8 цветов позволяют разнообразить вывод в консоль и расставить акценты. 256 цветов намного расширяют возможности, хотя и поддерживаются не всеми консолями. Windows, к сожалению, не поддерживает многие основные модификаторы, например, курсив. Также есть некоторые цвета, которые не прописаны в стандартах, но могут поддерживаться вашей операционной системой. Если вы хотите больше цветов, то вы можете поискать их в Гугле.
Пока что не любой терминал поддерживает 24-битные цвета и все модификаторы, но мы вряд ли увидим сильные изменения в этой сфере. Так что пока нам остаётся выбирать самые красивые варианты из тех, что доступны в любимом терминале.
Источники
Облачные серверы от Маклауд быстрые и безопасные.
Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации!
Источник