Как получить графический BASH prompt?

Вопрос или проблема

Я хочу что-то, что выглядит так:

Можно ли этого достичь?
Если да, то как это сделать?

ПРИМЕЧАНИЕ: я использую Kubuntu Disco, если это важно.

Для Kubuntu 19.04 установите пакет fonts-powerline, используя sudo apt install fonts-powerline. В вашей системе также должны быть установлены fonts-hack.

Посетите этот сайт и скопируйте весь скрипт, все 348 строк по состоянию на 20190906, в ~/bin и сохраните как powerline.sh или любое другое имя. Используйте диспетчер файлов, чтобы сделать скрипт исполняемым.

(Обратите внимание, что ~/bin по умолчанию в системном пути, так что вам не нужно что-то вроде $HOME/bin/.powerline.sh.)

Откройте Konsole и из своей домашней папки выполните

echo "source powerline.sh" >> ~/.bashrc

Это добавит

source powerline.sh

как последнюю строку вашего ~/.bashrc.

В открытом окне Konsole выполните

source .bashrc

чтобы перезагрузить .bashrc и использовать powerline.sh в текущем окне Konsole.

Если вы хотите вернуться к стандартной подсказке, закомментируйте строку source powerline.sh в ~/.bashrc, добавив знак # в начале строки.

Прочитайте содержимое ~/bin/powerline.sh, если вы хотите изменить некоторые аспекты подсказки.

konsole prompt using powerline fonts


Консоль, будь то в Kubuntu 19.04 или Kubuntu 18.04, не требует установки fonts-powerline. Но другие терминалы, такие как lxterminal и gnome-terminal, нуждаются в этом пакете, чтобы треугольники и подсказка отображались корректно.

Внешний вид командной подсказки Bash контролируется переменной окружения $PS1. Изменяя эту переменную, вы изменяете внешний вид подсказки.

Вы можете увидеть текущее значение этой переменной с помощью команды:

echo $PS1

Подсказка может быть изменена командой

PS1="<строка, представляющая новый формат>"

Чтобы изменить её навсегда, измените определение PS1 в файле .bashrc в вашей домашней папке. Этот скрипт запускается автоматически, когда вы открываете терминал, и содержит раздел, где определяется PS1.

man bash может дать вам инструкции о синтаксисе строки, которая определяет формат подсказки. Однако, может быть проще начать с некоторых руководств, как, например, здесь на How-To Geek или nixcraft.

Чтобы реализовать эффекты, как на вашем снимке экрана, вы можете рассмотреть Powerline, набор скриптов, разработанных для более стильного вида редактора vim, но включая скрипты для изменения, среди прочего, bash терминала. Powerline можно установить с помощью sudo apt install powerline и использовать согласно документации.

Для получения более подробной информации об установке и использовании обратитесь к вопросу How can I install and use powerline plugin?, и в частности к ответу Schycken, так как более ранние ответы устарели.

Вот одно из решений – оно создает графическую подсказку из двух сегментов, используя стандартные escape-последовательности ANSI и escape-последовательности Unicode (без использования буквенной стрелки). Эта версия использует ваш обновленный цвет первого сегмента (светло-желтый на темносером фоне) и второй сегмент, как раньше. Добавьте это в ваш ~/.bashrc и перезагрузите оболочку:

# Установить заголовок терминала (необязательно)
PS1="\[\e]0;\u@\h: \w\a\]"

# Сегмент 1: темносерый фон (100) со светло-желтым текстом (93)
PS1+=$'\[\e[100;93m\] \u@\h '

# Стрелка из сегмента 1 → сегмент 2:
#   Цвет переднего плана стрелки установлен в темносерый (90)
#   Цвет фона стрелки установлен в светло-голубой (104)
PS1+=$'\[\e[90;104m\]\uE0B0'

# Сегмент 2: светло-голубой фон (104) с черным текстом (30)
PS1+=$'\[\e[104;30m\] \w '

# Стрелка из сегмента 2 → фоновый фон:
#   Цвет переднего плана стрелки ярко-голубой (94), а фон сбрасывается по умолчанию (49)
PS1+=$'\[\e[94;49m\]\uE0B0'

# Сброс форматирования (без символа подсказки)
PS1+=$'\[\e[0m\] '

Убедитесь, что ваш терминал использует шрифт, поддерживающий кодовую точку Unicode U+E0B0. Эта подсказка работает в любой сессии Bash.

Prompt Example

Посетите synth-shell и следуйте инструкциям

в Ubuntu:

mkdir ~/bin
chmod +x ~/bin
cd ~/bin
sudo apt install fonts-powerline
git clone --recursive https://github.com/andresgongora/synth-shell.git
chmod +x synth-shell/setup.sh
cd synth-shell
./setup.sh

затем следуйте инструкциям в вашем терминале. Перезапустите эмулятор терминала. Если вы не видите цветных стрелок в подсказке, возможно, вам нужно изменить шрифт терминала на что-то вроде hack-ttf и проверить, что ваша локаль использует UTF-8.

Самый простой способ: https://ohmyz.sh/

И выберите тему, например, такую: https://github.com/robbyrussell/oh-my-zsh/wiki/Themes#agnoster

ZSH theme

.

Ответ или решение

Для изменения внешнего вида BASH-промпта на графический, вам потребуется понимание работы с переменной окружения $PS1, использование шрифтов, поддерживающих специальные символы, и, возможно, использование готовых решений, таких как Powerline или даже переход на zsh с Oh My Zsh. Давайте рассмотрим эти варианты более подробно.

Теоретическая часть

BASH-промпт определяется переменной $PS1. Эта переменная может хранить некоторые специальные символы и ANSI escape-последовательности, которые позволяют изменять цвет, формат и содержимое командной строки. Например, следующий код устанавливает простой BASH-промпт:

PS1="\u@\h:\w\$ "

Здесь:

  • \u — имя пользователя;
  • \h — имя хоста;
  • \w — текущий рабочий каталог;
  • \$ — знак доллара (или решетка для суперпользователя).

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

Пример

Для получения графического промпта в стиле Powerline BASH необходимо установить шрифты fonts-powerline и использовать специальные символы для отрисовки стрелок и других элементов интерфейса. Вот пример процесса:

  1. Установка шрифтов:
    Из командной строки установите Powerline шрифты, которые содержат необходимые глифы:

    sudo apt install fonts-powerline
  2. Использование Powerline:
    Далее необходимо скачать и подключить Powerline script для BASH. Примерный скрипт и действия следующие:

    • Скачивание и подготовка Powerline:

      mkdir -p ~/bin
      cd ~/bin
      wget -O powerline.sh https://github.com/yourusername/repo/raw/branch/powerline.sh # замените на реальный URL скрипта
      chmod +x powerline.sh
    • Изменение файла ~/.bashrc для включения Powerline:

      echo "source ~/bin/powerline.sh" >> ~/.bashrc
      source ~/.bashrc
  3. Кастомизация PS1:
    Если вы хотите кастомизировать PS1 без использования Powerline, вам нужно вручную модифицировать строку:

    PS1='\[\e[0;36m\]\u@\h\[\e[0m\]:\[\e[1;34m\]\w\[\e[0m\]\$ '

    Здесь используются ANSI escape-последовательности для цвета текста и фона.

Применение и дополнительные решения

Для значительно более гибкого и кастомизируемого интерфейса, рекомендуется рассмотреть установку oh-my-zsh и использование терминала zsh:

  1. Установка Oh My Zsh:
    Перейдите на сайт Oh My Zsh и установите его с помощью предложенной команды. Это обеспечит установку готовых тем, включая agnoster, которые создают красивый графический интерфейс.

  2. Выбор темы:
    Для изменения темы откройте файл ~/.zshrc и измените значение переменной ZSH_THEME на agnoster или другую предпочитаемую тему, например:

    ZSH_THEME="agnoster"
  3. Шрифты и обработка символов:
    Убедитесь, что ваш терминал использует шрифт, поддерживающий специальные символы Powerline, и что установлена правильная локаль с поддержкой UTF-8.

Заключение

Таким образом, вы можете создать графический BASH-промпт с использованием различных подходов: от простого изменения переменной $PS1 до использования пользовательских скриптов и шрифтов или перехода на более мощный инструмент zsh с Oh My Zsh. Ключом к успеху является корректная установка шрифтов и возможность отображения специальных символов, а также внимательное редактирование конфигурационных файлов оболочки.

Оцените материал
Добавить комментарий

Капча загружается...