Алиас мениджър — за Bash и Zsh
Един файл за всичките ви shell псевдоними (aliases) — етикети и категории, автоматични резервни копия, реална проверка на синтаксиса и цветно двуезично меню.
Спрете да пазите алиасите си като в буркан — срещнете 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.

🚀 Стартиране за 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 папка, език.

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-и са добре дошли. 🚀