Что, если ваш Bash заговорит на языке Zsh? Обзор ble.sh

18 Jun, 2026
4,423
🔱 132
👥 32

Начнем с проблемы. Стандартный Bash, хоть и надежен, часто кажется устаревшим по сравнению с более "навороченными" оболочками вроде Zsh или Fish. Знакома ситуация, когда вы набираете длинную команду, а потом понимаете, что где-то ошиблись в синтаксисе, и приходится перепроверять все вручную? Или когда хочется, чтобы терминал сам подсказывал вам варианты автодополнения, как в современной IDE? Именно эти болевые точки и призван решить проект, о котором мы сегодня поговорим – ble.sh.

Что такое ble.sh и зачем он нужен?

ble.sh (произносится как "блеш" или просто "би-эл-и") — это не просто очередная обертка для Bash. Это полноценный редактор командной строки, написанный целиком на Bash, который заменяет стандартный GNU Readline. Представьте, что ваш Bash вдруг обрел суперспособности Zsh или Fish: умную подсветку синтаксиса, продвинутое автодополнение, полноценный Vim-режим и множество других фишек, которые сделают вашу работу в терминале в разы эффективнее и приятнее. Кому это нужно? Каждому, кто проводит много времени в Bash и хочет выжать из него максимум, не переходя на другие оболочки.

Ключевые особенности, которые изменят вашу консоль

Синтаксическая подсветка нового уровня

Забудьте о монотонном черном тексте! ble.sh подсвечивает команды, аргументы, переменные, кавычки и даже ошибки. Но это не просто "раскраска", как в некоторых других решениях. ble.sh проводит полноценный синтаксический анализ, что позволяет ему корректно подсвечивать даже сложные конструкции с вложенными подстановками команд или несколькими here-документами. Это как иметь встроенный линтер прямо в командной строке – сразу видите, где опечатка или синтаксическая ошибка. Цвета и стили, кстати, полностью настраиваются, так что вы можете адаптировать их под свой любимый цветовой профиль терминала.

Интеллектуальное автодополнение и меню

Это, пожалуй, одна из самых впечатляющих фич. ble.sh расширяет стандартное автодополнение Bash, делая его по-настоящему умным:

  • Syntax-aware completion: Подсказки зависят от контекста команды.
  • Автоматические предложения (auto-complete): Как в Fish или zsh-autosuggestions, ble.sh предлагает завершение команды "на лету", основываясь на истории и доступных командах. Просто нажмите Shift+Enter (или , Ctrl+f, End), чтобы принять предложение.
  • Меню выбора (menu-complete): При нажатии Tab вы получаете не просто список, а интерактивное меню, по которому можно перемещаться стрелками, Tab и Shift+Tab.
  • Фильтрация кандидатов (menu-filter): Начните печатать, и список предложений будет автоматически фильтроваться.
  • Сокращения (dabbrev/sabbrev): Можно настроить свои сокращения. Например, ble-sabbrev L='| less' позволит вам набрать command L и получить command | less после пробела. Удобно для часто используемых цепочек команд!

Vim-режим для ценителей

Если вы фанат Vim, то ble.sh вас порадует. Он значительно расширяет встроенный в Readline vi режим, предлагая полноценную эмуляцию Vim прямо в командной строке. Здесь есть все: различные режимы (char/line/block visual/select, replace, command, operator pending), операторы, текстовые объекты, регистры, макросы, метки и даже опциональный vim-surround. Это позволяет использовать привычные Vim-команды для навигации и редактирования вводимых команд, что значительно ускоряет работу для тех, кто привык к этой парадигме.

Реклама

Мелкие, но приятные улучшения

Помимо основных фич, ble.sh добавляет множество полезных мелочей:

  • Строка состояния (status line): Отображает полезную информацию.
  • Общая история команд (history share): Синхронизация истории между несколькими сессиями Bash.
  • Правый промпт (right prompt): Дополнительная информация справа от курсора.
  • Настраиваемые звуковые сигналы (bell): Визуальные или звуковые оповещения.
  • Интеграция с FZF: Для тех, кто использует fzf, есть специальная интеграция, чтобы избежать конфликтов и получить максимум пользы.

Вот как это выглядит в действии:

ble.sh demo gif

Под капотом: как это работает на чистом Bash?

Интересно, что ble.sh написан исключительно на Bash. Возникает резонный вопрос: как же он достигает такой функциональности без компиляции? Разработчик объясняет, что "чистый Bash" означает, что ядро редактора написано на Bash. Конечно, для некоторых операций, таких как установка TTY-состояний или обработка больших данных в автодополнении, используются стандартные POSIX-утилиты (stty, awk, tar, xz), но это сделано для оптимизации производительности, а не из-за невозможности реализовать это на Bash.

Кстати, проект использует make для сборки. И это тоже вызывает вопросы у некоторых, кто привык ассоциировать make только с компиляцией C/C++ кода. Но здесь make используется для объединения множества мелких Bash-скриптов в один большой ble.sh, что значительно сокращает время запуска оболочки, так как не нужно открывать и читать десятки файлов при каждом запуске. Это продуманное инженерное решение, направленное на повышение удобства использования.

Как начать пользоваться? (Практическое применение)

Установка ble.sh достаточно проста. Есть несколько способов:

  1. Из исходников с git и make:

git clone --recursive --depth 1 --shallow-submodules https://github.com/akinomyoga/ble.sh.git make -C ble.sh source ble.sh/out/ble.sh # Для пробного запуска

Или для установки:

make -C ble.sh install PREFIX=~/.local echo 'source -- ~/.local/share/blesh/ble.sh' >> ~/.bashrc ```

  1. Загрузка ночной сборки с curl или wget:

curl -L https://github.com/akinomyoga/ble.sh/releases/download/nightly/ble-nightly.tar.xz | tar xJf - source ble-nightly/ble.sh # Для пробного запуска

Или для установки:

bash ble-nightly/ble.sh --install ~/.local/share echo 'source -- ~/.local/share/blesh/ble.sh' >> ~/.bashrc ```

  1. Через пакетные менеджеры: Для Arch Linux (AUR), NixOS, Guix доступны готовые пакеты.

После установки не забудьте добавить строчки для активации в ваш ~/.bashrc. А для тонкой настройки всех фич ble.sh используйте файл ~/.blerc (или ~/.config/blesh/init.sh), где вы можете задать свои цвета, привязки клавиш и отключить ненужные функции. Например, отключить автодополнение по истории:

# В ~/.blerc
bleopt complete_auto_history=

Или настроить привязку клавиш:

# В ~/.blerc
ble-bind -f 'C-x h' 'insert-string "Hello, world!"'

Это лишь верхушка айсберга, полный список опций и настроек можно найти в подробном Manual проекта.

ble.sh — это по-настоящему впечатляющий проект, который доказывает, что Bash может быть не менее функциональным и удобным, чем его более "молодые" конкуренты. Если вы разработчик, который ценит производительность, проводит много времени в терминале и не хочет менять свою любимую оболочку Bash, но при этом мечтает о современных фичах вроде умной подсветки и автодополнения, то ble.sh — это именно то, что вам нужно попробовать. Он вдохнет новую жизнь в вашу консоль и, возможно, сделает вас еще продуктивнее. Дайте ему шанс, и вы удивитесь, насколько комфортной может быть работа в Bash!

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.