Linux Beginner 20 мин • 30.10.2026 г.

Алиас мениджър — за Bash и Zsh

Един файл за всичките ви shell псевдоними (aliases) — етикети и категории, автоматични резервни копия, реална проверка на синтаксиса и цветно двуезично меню.

Алиас мениджър — за Bash и Zsh

Спрете да пазите алиасите си като в буркан — срещнете aliashub 🎨

Ако си като мен, ~/.bashrc ти се е превърнал в музей на shell историята: 200 реда алиаси, половината счупени, три различни с името g и поне един, който наистина не смееш да пипнеш, защото не си спомняш какво зависи от него.

После идва и истинският ужас. При мен се случи — в деня, в който добавих алиас с един апостроф. Дребна грешка в кавичките, един echo с незатворен ' и целият ми файл с алиаси спря да се зарежда. Всеки нов терминал се отваряше със синтактична грешка, а аз възстановявах файла от памет. 🙃

Затова написах aliashub — малък, но маниакален мениджър за алиаси, който ги третира като граждани от първи клас, а не като текстови редове. В тази статия ще ти покажа какво прави, защо е безопасен и как един терминален инструмент се оказа, че говори български.

🔗 Репото: https://github.com/fedya-dev/aliashub

🧠 Идеята: един файл, два интерфейса

aliashub пази всичките ти алиаси в един файл (по подразбиране ~/.fedya_aliases) и дава два начина за работа с тях:

  • цветно интерактивно меню за ежедневния живот в терминала, и
  • пълноцен CLI (aliashub add, aliashub rm, aliashub list…) с предвидими имена и exit кодове — за скриптове и за мускулната памет „като git“.

Файлът си остава 100% твой. Това е обикновен shell код — в него могат да живеят твои собствени функции (и с имена на кирилица), if блокове, export-и и коментари. aliashub управлява само алиас-редовете и не пипа нищо друго. Всичко, което записва, е валиден код за Bash и Zsh.

Интерактивното меню на aliashub

🚀 Стартиране за 30 секунди

git clone https://github.com/fedya-dev/aliashub.git
cd aliashub
./install.sh        # → ~/.local/bin, авто-зареждане в .bashrc/.zshrc, doctor проверка

Няма зависимости освен Bash 3.2+ (Linux, macOS, WSL). fzf е опционален — ако го има, търсенето става интерактивен избор.

aliashub                        # интерактивното меню
aliashub add gs 'git status -sb'
aliashub add psgrep 'ps aux | grep -i '   # тръби? без проблем
aliashub add .. 'cd ..'                   # точки и тирета също
aliashub add списък 'ls -la'              # да, кирилските имена работят
aliashub list                             # преглед на всичко

След add алиасът е жив във всеки нов терминал. В текущия просто: source ~/.fedya_aliases.

🏷️ Тагове и категории — любимата ми част

Всеки алиас може да има една категория и много тагове. Метаданните се пазят като коментар-ред точно над алиаса, така че файлът остава чист, валиден shell код, който можеш да cat-неш във всяка обвивка:

# @aliashub tags=ssh,server category=админ
alias srv='ssh root@srv'

А CLI-то говори свободно този език:

aliashub add srv 'ssh root@srv' --category админ --tags ssh,server
aliashub tag srv net,tunnel        # смени таговете
aliashub list --tag ssh            # само алиасите с таг ssh
aliashub list --category админ     # само една категория
aliashub list -g                   # групиран преглед
aliashub stats                     # статистика по категории
aliashub search ssh                # търси в имена, команди И тагове

Групиран списък по категории с тагове

В менюто има и отделен екран [10] Категории и тагове — избираш таг, виждаш съвпадащите алиаси, избираш действие. Така един dotfile добива таг-система, без да се превръща в база данни.

🛡️ Параноичната секция: няма да ти остави да счупиш файла

Помниш ли историята с апострофа? Тази част е построена в отговор на нея:

  • Автоматичен backup преди всяка промяна — add, rm, rename, tag, restore… всичко. Пази последните 50, най-старите се изчистват.
  • Реална синтактична валидация — check пуска bash -n върху файла, хваща дубликати, нецитирани стойности и счупени метаданни. Без фалшиви тревоги: твоите функции и коментари не са „проблеми“.
  • Безопасно цитиране — команди с ', ", |, $, обратни кавички се записват коректно. Файлът не може да се повреди от неудобна команда, защото записващата функция отказва да напише невалиден ред.
  • doctor — здравна проверка на цялата среда: файл с алиаси, синтаксис, зареждане в .bashrc/.zshrc, редактор, fzf, backup папка, език.

doctor — всичко е наред

aliashub check      # валидира файла
aliashub doctor     # валидира цялата среда
aliashub backup && aliashub backups && aliashub restore last   # пълен контрол

Exit кодовете са скучни нарочно: 0 успех, 1 грешка при операция, 2 грешна употреба. Идеално за скриптове.

🇧🇬 Терминален инструмент, който говори твоя език

Исках инструментът да се усеща роден за хора, които мислят на български — затова целият интерфейс е двуезичен (bg/en) и се сменя без рестарт:

aliashub lang        # текущият език
aliashub lang en     # смяна, запазва се в ~/.config/aliashub/config
LANG=en aliashub list   # еднократна промяна

Оттук идва и едно дизайнерско решение: имена като .., ..., git-status или списък са напълно валидни алиаси — всичко, което Bash приема, приема и aliashub. Валидаторът отхвърля само знаци, които наистина чупят реда.

⌨️ Под капака

Няколко неща, за които се грижа повече, отколкото за функциите:

  • Нула зависимости — един Bash скрипт, ~2000 реда, четим и подправяем. Без Python, без Node, без база данни.
  • NO_COLOR се уважава (стандартът no-color.org), плюс флаг --no-color.
  • Винаги работи под Bash — ако го стартираш от sh/zsh/dash, сам се рестартира под Bash, така че поведението е еднакво навсякъде.
  • Безболезнена миграция — ъпгрейдваш от предишния ми инструмент aliasctl? ./install.sh надгражда блоковете в rc файловете, пренася backup-ите и продължава да уважава старите променливи ALIASCTL_*.

🗺️ Пробвай го и ми кажи какво липсва

Репото има пълен двуезичен README (🇬🇧 + 🇧🇬), скрийншоти и ръководство стъпка по стъпка, ако искаш да погледнеш кода:

👉 https://github.com/fedya-dev/aliashub

Още инструменти и статии на български публикувам на fedia.eu.

А как ти поддържаш алиасите си? В .bashrc, в отделен файл, или използваш нещо по-извънредно (zoxide, atuin, fzf-tab…)? И биха ли таговете/категориите променили начина, по който ги организираш? Пиши в коментарите — и bug доклади, и PR-и са добре дошли. 🚀