Linux bash подсветка синтаксиса

Подсветка синтаксиса в mcedit и bash

Jan 2, 2017 18:07 · 202 words · 1 minute read console

«Как включить подсветку синтаксиса в mcedit и bash?» — ответ на этот несложный вопрос настолько прост, что я сам постоянно забываю как это делается… Давайте разберемся!

Итак, сначала разберемся с mcedit . Чтобы включить подсветку синтаксиса в этом популярном редакторе необходимо открыть любой имеющийся файл в режиме редактирования (начать F4 или в консоли выполнить mcedit somefile.inc ) и нажать комбинацию клавиш Ctrl+S.

Это срабатывает в 99% случаев, но если подсветка синтаксиса в mcedit не включилась, то нужно немного подправить конфигурационный файл /usr/share/mc/syntax/Syntax :

Находим строку include unknown.syntax и изменяем ее на include sh.syntax и после проделанных действий появится подсветка синтаксиса.

Чтобы включить подсветку синтаксиса bash для всех пользователей в системе следует в конфигурационном файле /etc/skel/.bashrc найти и раскомментировать строку force_color_prompt=yes , после чего перелогиниться в системе.

Также можно изменить стандартные цвета по своему вкусу, делается это также в конфиге /etc/skel/.bashrc в строке PS1=’$\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ‘ .

Вот список цветов, которые можно применять для подсветки синтаксиса в bash :

Индивидуальные настройки подсветки синтаксиса для каждого пользователя можно настраивать в конфигурационном файле /home/$USER/.bashrc

Еще один пример «раскраски» консоли в Linux, а также изменение приветствия мы рассматривали ранее.

Источник

Делаем 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 .
Настройте тему, выбирая варианты отображения, которые вам больше нравятся.

Финальный штрих — меняем конфиг темы и заменяем встроенные цвета.

Если в файле эти строки уже есть — замените их. Коды цветов можно получить командой

Читайте также:  Скайрим для mac os последней версии

    Отображение только текущей директории:

Источник

Цветной man или как разукрасить вывод echo

Когда пишешь даже минимальный скриптик, часто используешь echo — подсказки.
Согласитесь «цветной man» ведь намного приятнее читать, так почему бы не раскрасить вывод echo?
это достаточно легко.
Итак…

Задача:
Раскрасить текстовую строку выводимую на экран через команду echo
т.е. раскрасить эти самые подсказки

Что нужно:
1) man echo
www.opennet.ru/man.shtml?topic=echo&category=1

Из него нам пригодится точно

echo -e # ключ -e в комманде echo включает отображение «backslash escapes» ; например \n — переход на следующую строку, \t -табуляция
echo -n # ключ -n в команде echo сигнализирует, что после вывода информации не нужно переходить на следующую строку.
echo -en # в нашем случае поможет раскрасить вывод текста.

2) Хорошая статья с примерами «Управление консолью Linux» RUS
c-reaction.net/content/204

Для начала одним глазом хотябы посмотрим на man echo rus, а потом рассмотрим как использовать цвет
www.opennet.ru/man.shtml?topic=echo&category=1

Переходим к Управлению цветом:

tput sgr0 Возврат цвета в «нормальное» состояние

\033[0m все атрибуты по умолчанию
\033[1m жирный шрифт (интенсивный цвет)
\033[2m полу яркий цвет (тёмно-серый, независимо от цвета)
\033[4m подчеркивание
\033[5m мигающий
\033[7m реверсия (знаки приобретают цвет фона, а фон — цвет знаков)

\033[22m установить нормальную интенсивность
\033[24m отменить подчеркивание
\033[25m отменить мигание
\033[27m отменить реверсию

\033[30 чёрный цвет знаков
\033[31 красный цвет знаков
\033[32 зелёный цвет знаков
\033[33 желтый цвет знаков
\033[34 синий цвет знаков
\033[35 фиолетовый цвет знаков
\033[36 цвет морской волны знаков
\033[37 серый цвет знаков

\033[40 чёрный цвет фона
\033[41 красный цвет фона
\033[42 зелёный цвет фона
\033[43 желтый цвет фона
\033[44 синий цвет фона
\033[45 фиолетовый цвет фона
\033[46 цвет морской волны фона
\033[47 серый цвет фона

Таблица цветов и фонов:

black 30 40 \033[30m \033[40m
red 31 41 \033[31m \033[41m
green 32 42 \033[32m \033[42m
yellow 33 43 \033[33m \033[43m
blue 34 44 \033[34m \033[44m
magenta 35 45 \033[35m \033[45m
cyan 36 46 \033[36m \033[46m
grey 37 47 \033[37m \033[47m

Допускается объединение этих управляющих последовательностей.
Например \033[1m\033[5m\033[36m может быть заменено эквивалентной последовательностью \033[1;5;36m.

#!/bin/sh
#
# скрипт выводит на экран сообщение с использованием цвета
#
echo -en «\033[37;1;41m Внимание \033[0m»

#!/bin/sh
#
# скрипт запускает копию командного интерпретатора sh
# с цветным приглашением
#
export PS1= «\[\033[1;30m\][\[\033[0m\]\t\[\033[1;30m\];\
\[\033[0m\]\W\[\033[1;30m\]]\[\033[36;1m\]|\[\033[0m\] »
echo «Now runing a new copy of shell width color prompt»
echo -en «use \033[1;36mexit\033[0m command or»
echo -e «\033[1;36m^D\033[0m to return back»
sh
#
# обратите внимание на то, что управляющие последовательности
# заключены в скобки «\[» и «\]»
# Это сделано для того, чтобы shell не учитывал их при
# оценке длины строки.
# В противном случае длинные строки будут переноситься неверно.
#

Для удобства пользвания можно цвет и доп. свойства назначить переменным:

Файл .sh должен быть в формате UNIX и с кодировкой UTF-8

Ну и напоследок — один хороший пример со всеми плюшками:

#!/bin/sh
# echo подсветка
# echo color
# Скрипт выводит на экран список меню

clear # Очистка экрана

#Памятка, Таблица цветов и фонов
#Цвет код код фона

#black 30 40 \033[30m \033[40m
#red 31 41 \033[31m \033[41m
#green 32 42 \033[32m \033[42m
#yellow 33 43 \033[33m \033[43m
#blue 34 44 \033[34m \033[44m
#magenta 35 45 \033[35m \033[45m
#cyan 36 46 \033[36m \033[46m
#white 37 47 \033[37m \033[47m

# Дополнительные свойства для текта:
BOLD= ‘\033[1m’ # $ # жирный шрифт (интенсивный цвет)
DBOLD= ‘\033[2m’ # $ # полу яркий цвет (тёмно-серый, независимо от цвета)
NBOLD= ‘\033[22m’ # $ # установить нормальную интенсивность
UNDERLINE= ‘\033[4m’ # $ # подчеркивание
NUNDERLINE= ‘\033[4m’ # $ # отменить подчеркивание
BLINK= ‘\033[5m’ # $ # мигающий
NBLINK= ‘\033[5m’ # $ # отменить мигание
INVERSE= ‘\033[7m’ # $ # реверсия (знаки приобретают цвет фона, а фон — цвет знаков)
NINVERSE= ‘\033[7m’ # $ # отменить реверсию
BREAK= ‘\033[m’ # $ # все атрибуты по умолчанию
NORMAL= ‘\033[0m’ # $ # все атрибуты по умолчанию

Читайте также:  Компас не запускается windows 10

# Цвет текста:
BLACK= ‘\033[0;30m’ # $ # чёрный цвет знаков
RED= ‘\033[0;31m’ # $ # красный цвет знаков
GREEN= ‘\033[0;32m’ # $ # зелёный цвет знаков
YELLOW= ‘\033[0;33m’ # $ # желтый цвет знаков
BLUE= ‘\033[0;34m’ # $ # синий цвет знаков
MAGENTA= ‘\033[0;35m’ # $ # фиолетовый цвет знаков
CYAN= ‘\033[0;36m’ # $ # цвет морской волны знаков
GRAY= ‘\033[0;37m’ # $ # серый цвет знаков

# Цветом текста (жирным) (bold) :
DEF= ‘\033[0;39m’ # $
DGRAY= ‘\033[1;30m’ # $
LRED= ‘\033[1;31m’ # $
LGREEN= ‘\033[1;32m’ # $
LYELLOW= ‘\033[1;33m’ # $
LBLUE= ‘\033[1;34m’ # $
LMAGENTA= ‘\033[1;35m’ # $
LCYAN= ‘\033[1;36m’ # $
WHITE= ‘\033[1;37m’ # $

# Цвет фона
BGBLACK= ‘\033[40m’ # $
BGRED= ‘\033[41m’ # $
BGGREEN= ‘\033[42m’ # $
BGBROWN= ‘\033[43m’ # $
BGBLUE= ‘\033[44m’ # $
BGMAGENTA= ‘\033[45m’ # $
BGCYAN= ‘\033[46m’ # $
BGGRAY= ‘\033[47m’ # $
BGDEF= ‘\033[49m’ # $

tput sgr0 # Возврат цвета в «нормальное» состояние

#Начало меню
echo «»
echo -n » »
echo -e «$$$ Меню DNS323 $»
echo «»
echo -en «$ 1 $ Комманды для удобной работы в telnet $(Выполнить?)$\n»
echo «»
echo -en «$ 2 $ Пути к папкам & Изменение прав доступа $(Комманды)$\n»
echo «»
echo -en «$ 3 $ Transmission ($Start$, $Stop$, $Upgrade$) $(Меню)$\n»
echo «»
echo -en «$ 4 $ Копирование (cp & rsync) $(Комманды)$\n»
echo «»
echo -en «$ 5 $ Создание ссылки на файл или папку $(Комманды)$\n»
echo «»
echo -en «$ 6 $ Установка из fun-plug & IPKG $(Комманды)$\n»
echo «»
echo -en «$ 7 $ Показать Трафик ($ n$load) $(Выполнить?)$\n»
echo «»
echo -en «$ 8 $ Диспетчер задач ($ h$top) $(Выполнить?)$\n»
echo «»
echo -en «$ 9 $ Midnight Commander ($ m$c) $(Выполнить?)$\n»
echo «»
echo -en «$ q $ Выход $\n»
echo «»
echo «(Введите пожалуйта номер пункта, чтобы выполнить комманды этого пункта, любой другой ввод, Выход)»
echo «»
tput sgr0

ps: Подскажите, пожалуйста, в какой блог лучше опубликовать?

UPD1: перенес в Linux для всех, т.к. это наиболее близкий блог по тематике, как мне кажется.
UPD2: Спасибо aco за картинку, кратко и наглядно =)

Источник

Разноцветные терминалы

В этой публикации я расскажу о некоторых трюках, которые украсят будни любого системного администратора Linux (и не только). Все они связаны с переменной PS1 оболочки bash. Переменная PS1 определяет, как будет выглядеть приглашение для ввода новых команд. И каждый пользователь может переопределять её как пожелает, например, в файле

/.bashrc (который выполняется при запуске bash и используется для в том числе для конфигурации).

Для начала рассмотрим простой вариант, мой любимый формат командной строки.

Результат будет вот такой:

Это обычное использование переменной PS1, но если бы я не начал с этого — рассказ был бы неполным. Обычно в переменной PS1 с помощью специальных последовательностей символов определяют формат приглашения для ввода команд. Подробный список этих последовательностей можно почитать в документации к bash, в данном примере:

  • \t — вывод «текущего времени», на самом деле это получается время завершения выполнения предыдущей команды, удобно когда перед глазами.
  • j\j — выводит символ j и после него количество запущенных job, т.е. процессов в фоне. Это тоже удобно иметь перед глазами чтобы случаем про них не забыть когда соберешься закрыть терминал.
  • \u@\h — имя пользователя и название сервера. Если работаете с несколькими серверами через удаленные терминалы — чтобы не путаться.
  • \w — после двоеточия — рабочая директория.
  • \n — поскольку строка получилась хоть и информативной (что-то вроде статус бара), но длинной, то приглашаем вводить команды с новой строки, а эта верхняя строка будет наглядно отделять от результата работы предыдущей команды.
  • \$ — на новой строке будет выводится символ либо $ для обычного пользователя либо # для root’а и отделив его пробелом можно приглашать вводить новую команду.
Читайте также:  Check user and groups in linux

Казалось бы, чего еще желать… Но дальше будет интереснее. Дело в том, что с помощью специальных управляющих символов можно задавать цвет выводимого текста, цвет курсора и даже переопределять 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 у окна, размещает там информацию об пользователе, сервере и домашней директории. Но поскольку этот код придумал не я, комментировать его не буду.

В результате у нас должно получится так, как на картинке в самом начале публикации.

Источник

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