Делаем красивую консоль в Windows

Командная строка в Windows – это уныло. Я решил потратить вечер, но настроить себе такую консоль, с которой приятно работать. Бонусом – оказалось, что в выбранном мной решении можно логиниться и по SSH на сервера Linux и там тоже устроить красоту. ### Стек для Windows – Устанавливаем **Терминал Windows** с Microsoft Store. Это официальная тулза от Microsoft, которая станет нашей главной оболочкой. – Устанавливаем Git для Windows. От него нам понадобится **Git Bash**. При установке лучше выбрать оболочку не MinTTY, а cmd, иначе вы рискуете получить визуальные косяки на Windows. Но вроде это поправимо, так что если сильно хочется MinTTY, то можно и его. Ещё при установке можно сразу выбрать интеграцию с Windows Terminal. Зачем нам вообще Git Bash? Дело в том, что кастомизировать промпт-строку в cmd нельзя, а трогать PowerShell я не хотел, поэтому я решил использовать Git Bash как полную замену для cmd. – Ставим **Oh My Posh**. Это не самостоятельная тулза, а как раз кастомизатор промпта, который будет украшать консоль. Темы для Oh My Posh обычно устанавливаются в папку `C:/Users/пользователь/AppData/Local/Programs/oh-my-posh/themes/` После того как всё установлено, можно сразу создать конфиг `C:/Users/пользователь/.bashrc`. Мой конфиг выглядит так: “`bash Запоминаем последний открытый путь cd “$(cat /tmp/last_dir 2>/dev/null || echo “$HOME”)” PROMPT_COMMAND=’pwd > /tmp/last_dir’ # Заменяем синий цвет в терминале на бирюзовый (синий я не вижу) # Цвета ANSI: # 31 — красный # 32 — зелёный # 33 — жёлтый # 34 — синий # 35 — фиолетовый # 36 — бирюзовый # 37 — белый export LS_COLORS=”di=36″ # Подключаем Oh My Posh с желаемой темой eval “$(oh-my-posh init bash –config ‘C:/Users/пользователь/AppData/Local/Programs/oh-my-posh/themes/sim-web.omp.json’)” “`

Если вы всё-таки выбрали MinTTY при установке Git Bash, то можно ещё создать конфиг C:/Users/пользователь/.inputrc, где прописать set bell-style none. Эта опция уберёт один неприятный визуальный баг с мерцанием.

После этого остаётся только настроить Терминал Windows. Здесь всё просто – есть визуальный GUI для настройки всего. Ставим Git Bash нашей консолью по умолчанию. Потом в профиле Git Bash задаём фон, убавляем ему непрозрачность, выбираем шрифт с поддержкой Nerd Fonts (я выбрал Cascadia Mono NF). Можно ещё скачать более интересную иконку в PNG с techicons. Профит.

Сетап для Ubuntu

Здесь начинается самое интересное, потому что Oh My Posh на Linux даёт не только визуальную красоту, но и функциональность. Естественно, кастомизация промпта настраивается на сервере. Так что, если у вас несколько VDS, то эту настройку надо будет провести на каждом сервере.

  • Заливаем файл oh-my-posh в /usr/local/bin (этот путь по-умолчанию прописан в $PATH, поэтому oh-my-posh будет доступен сразу всем пользователям).
  • Заливаем темы в /etc/oh-my-posh/themes (конфиги принято хранить в etc).
  • Далее идём в файл /etc/bash.bashrc и подключаем в конце Oh My Posh. У меня конфиг такой:
# Oh My Posh global init
if command -v oh-my-posh >/dev/null 2>&1; then
    if [ "$USER" = "root" ]; then
        eval "$(oh-my-posh init bash --config '/etc/oh-my-posh/themes/sim-web.omp.json')"
    else
        eval "$(oh-my-posh init bash --config '/etc/oh-my-posh/themes/amro.omp.json')"
    fi
fi

Из моего конфига сразу становится понятен профит. Я поставил разные темы на root и на других пользователей. Это даёт визуальное различие, в итоге я перестал ошибаться под каким я сейчас пользователем.

Терминал Windows вместо Putty

Как это работает. В Терминале Windows можно добавлять профили для ваших VDS-серверов. Вот только SHH-ключи не будут тянуться из Pageant, как в случае с Putty или WinSCP. Pageant не работает для OpenSSH. Поэтому, ключи придётся либо хранить в папке C:/Users/пользователь/.ssh/, либо настраивать конфиг C:/Users/пользователь/.ssh/config, где прописывать путь к SSH-ключу для каждого VDS-сервера. Пример:

Host myserver
    HostName 192.168.1.10
    User root
    IdentityFile D:/Work/SSH keys/heavylogic/id_rsa

После этого можно будет использовать псевданим при запуске, например ssh myserver. Но, я нашёл вариант лучше, чтобы не переносить SSH-ключи и не возиться с конфигами – просто прописать путь к ключам прямо в командной строке профиля в терминале Windows:

"D:/Work/Git/bin/bash.exe" -c "ssh -i '/d/Work/SSH keys/heavylogic/id_rsa' root@192.168.1.10"

Итог моей возни:

Img 2025 07 28 20 05 39
Img 2025 07 28 20 01 49
Img 2025 07 28 22 30 03