mybash-tools проект, полностью написанный ИИ (Qwen3-Max) в соавторстве с человеком. Человек — автор идеи, инициатор, тестировщик и вдохновитель. ИИ — автор всего кода, архитектор и реализатор.
🎯 Цель проекта: создать лёгкое, переносимое, понятное и полностью рабочее окружение для терминала Linux, которое можно легко восстановить после переустановки системы.
💡 Философия: минимализм, прозрачность и обучение через практику.
👶 Для кого это: для новичков в Linux, вроде меня, которые хотят иметь удобный терминал, при этом в процессе познакомится с кодом. Основная идея была поближе познакомится с возможностями ИИ на практике. Попытка написать работающий инструмент при этом не написав ни одной строчки кода самостоятельно, только описание того что я хочу и как я это вижу. Для этого я решил написать что нибудь простое и полезное. Сейчас это модно называть "Вайб-кодинг" или что-то вроде этого. По сути этот проект оно и есть. Основная "изюминка" данного проекта это внедрение "контекста" для ИИ в сам файл с кодом. Поэтому я и считаю данный проект "партнёрским". И именно по этой причине он выложен здесь на Github. Смысл такого внедрения заключается в простоте входа и решении проблем текущих моделей ИИ при "разработке без кода". Вы в любой момент можете взять любой файл из этого проекта, отправить любой современной ИИ и попросить добавить какую либо новую функцию. При этом вам не приёдётся долго описывать контекст того что это за файл и что вы от него хотите. Всё уже есть в Base64 в конце файла. Так же этот подход позволяется избавится от "тормозов" при увеличении окна контекста общения с LLM и накоплении ошибок и фантазий. Достаточно сохранить последний удачный вариант файла и запустить новый чат повторив запрос с этим файлом. Вы так же можете менять содержимое Base64 просто сообщив ИИ внести ваше предложение в эту строку и в дальнейшем ИИ будет этим руководствоваться. Если вам интересно что в данным момент записано в Base64 вы можете просто попросить LLM рассказать об этом. Либо самостоятельно используя терминал расшифровать этот файл для просмотра содержимого. Никакого секрета или магии в нём нет. Это просто удобный способ компактно хранить контекст проекта. Под контекстом тут понимается: описание проекта, роль ИИ, ваша роль, манера общения, договорённости о порядке взаимодействия при анализе информации и выводе результатов. а так же всё то что вы посчитаете нужным. Единственное чего не стоит вносить в контекст так это жёстких условий по самому коду. названий переменных, файлов, мест хранения и какой либо логики. т.к. это только ограничит ИИ и может запутать вас и ии. Это не волшебный ключ. но удобный инструмент помогающий в работе.
Я не призываю вас отказаться от изучения языков програмирования или изучении знаний об администрировании. Не в этом цель. Цель помочь простым пользователям получить больше свобод в изменение своего окружения через код не тратя много времени на изучение как это работает. Поверьте, далеко не всем это нужно, иногда хочется чтобы что-то просто работало как микроволновка или тостер. А ещё это довольно весело. Уверен что не укаждого есть друг програмист который готов вас выслушать и написать что-то для вас. ИИ же готов вам помочь в любое время. Главное не требовать от него слишком многого. Двигаться маленькими шагами постепенно приближаясь к своему иделаьному терминалу например как в этом примере.
Возможно этот пример вдохновит вас написать что-то своё и возможно на других языках. Думаю что когда этот проект станет более или менее наполнен всеми моими "хотелками" я переключусь на новый проект по изучению python, уверен на нём можно сделать ещё более класные штуки и уже для графического интерфеса.
📦 Что это за проект на практике? mybash-tools — это набор модулей для оформления своего bash окружения. Созавая "уют" и индивидуальный внешний вид. Это не полное готовое к работе решение. Это некоторый каркас того как я это вижу. Все файлы будут со временем наполнятся более практичными вещами по мере моего продвижения в это проекте. Возможно что-то будет работать не правильно или не так как задуманно. Но важно здесь то что проект собран так, чтобы любая ошибка не сломала систему.
📦 Сам проект состоит из модулей которые можно: подключать все сразу через главный файл .mybashrc; Таким образом достигается простота редактирования, расширяемость и переносимость между машинами. Проект не является фреймворком — он не пытается сделать всё. Он даёт только то что вы в него положите, то чем вы реально пользуетесь. Как я уже говорил ранее, это больше каркас который я буду наполнять под свои задачи и привычки, вы же можете убрать всё лишнее и использовать то чем пользуетесь сами. Все блоки в коде хорошо документированы.
🗂️ Структура проекта
mybash-tools/
├── install.sh # Установщик (разворачивает проект в ~/mybash)
├── mybashrc.sh # Шаблон главного конфига
├── prompt.sh # Цветное приглашение с иконками
├── aliases.sh # Удобные алиасы (e, mc, t, update и др.)
├── typos.sh # Исправление опечаток (sl → ls, cls → clear и т.д.)
├── functions.sh # Полезные функции (info, extract, mycmd, alias_check)
├── completion.sh # Автодополнение (systemctl и др.)
├── tools/ # Автономные утилиты-помощники
│ ├── install-fonts.sh # Установка шрифтов (Nerd Fonts, Inter, PT Sans и др.)
│ ├── install-smb-share.sh # Установка и быстрая настройка SMB-шары (Debian, Ubuntu)
│ ├── install-syncthing-mint.sh # Установка Syncthing + Syncthing-Gtk (linux mint, Ubuntu)
│ └── install-syncthingtray.sh # Установка SyncthingTray для KDE Plasma (ALT Linux)
└── data/
├── help.txt # База знаний для `help`
├── TerminessNerdFont-Bold # Отличный моноширный шрифт с интегрированными иконками
├── distros.db # База знаний по ключевым особенностям разных дистрибутивов
└── nerd-fonts.txt # База иконок Nerd Fonts
📄 Ключевые файлы
🔧 install.sh - Установочный скрипт. задача развернуть проект или удалить проект. клонирует репозиторий в ~/mybash-tool в директорию из которой запущен, но если модули рядом то использует их. такой подход позволяет развернуть проект без интернета. копирует mybashrc.sh в ~/.mybashrc и подключает его к ~/.bashrc копирует найденые рядом модули (любые файлы с расширением .sh) в директорию ~/mybash при этом удаляет расширение .sh сохраняется под именем uninstal.sh в ~/mybash (для возможности удаления проекта)
🔧 .mybashrc - по сути заменяет всё то что можно было бы записать напрямую в .bashrc но вынесен в отдельный файл с целью защиты терминала от падения на случай внесения ошибок при неумелом кодировании. Так же этот файл используется для подключения модулей имеющих узконаправленные функции. Почему так? А всё просто. мне не нравятся длинные простыни кода где нужно искать нужный тебе блок для того чтобы поправить пару строк. Так же такой подход позволяет легко использовать любой из этих блоков не используя весх файлов, для этого достаточно вручную прописать этот блок в .bashrc. Ещё такой подход позволяет проще развивать каждый модуль с ИИ. Чем меньше код тем проще ии в нём ориентироваться. чем уже функциональность кода тем проще ИИ понять что от неё требуется.
🧩 Модули (подключаются через ~/.mybashrc)
prompt.sh - Красивое приглашение с датой, хостом, путём и иконками (требуется Nerd Fonts). Место где можно менять свой промт и цвета оболочки.
aliases.sh - Всем известные алиасы, кто-то их любит и активно использует, кто-то нет. Сейчас тут для примера: e для редактора, mc для файлового менеджера, t для мониторинга, u для обновления системы. Возможно в будущем что то тут поменяется.
typos.sh -Больше для фана. Дружелюбные исправления опечаток, например sl, cls, gerp, mkae → правильные команды.
functions.sh - Небольшие или большие пользовательские функции которые я не захотел вносить в mybashrc сейчас это: info -информация о системе, extract -распаковка любых архивов, mycmd -список всех команд которые реализованы в этом файле, alias_check проверка установленных программ для редактирования алиасов. скорее всего в будущем большая часть функции в этом файле изменится. а возможно и разделится на большее количество модулей.
completion.sh - Автодополнение для команд и их ключей. Эта штука появилась здесь в виду того что не всегда и не на всех системах существует автодополнение. и не всегда это можно исправить установкой из репозиториев. этот модуль можно настроить самому на те команды которые используешь сам. Для примера здесь сейчас systemctl. Основное условие тут в том чтобы не мешать фуекции автодополнения которая может быть в системе а только дополнять её. т.е. если какая либо команда описанная в этом файле уже имеет автодополнение в системе то будет использоваться "системная версия" автодополнения.
myhelp - Персональная справка, по сути упрощённый аналог man для начинающих. Мне так удобнее запоминать некоторые ключи или примеры использования для различных команд в линукс. Конечно можно использовать man но есть много но. вопервых большинство команд всё ещё описаны на англиском, мой английский не так хорош что бы быть уверенным что я всё понял правильно, да и не всегда есть время и желание разбираться что там написано. мне проще иметь свою справку для редко используемых ситуаций и случаев к определённым командам. но для примера тут просто первое что пришло в голову: ls, vi, key. для вызова подсказки достаточно набрать myhelp ls и получить список ключей или готовых шаблонов для применения команды ls (понятно что для ls быстрее и проще набрать ls --help но вопрвых в таком выводе ключей будет очень много, на практике же я использую три-четыре ключа не более. а вовторых как я уже и сказал ls тут больше для примера. Есть куда болле сложные в применении и понимании тот же sed или awk напимер).
🛠️ Утилиты (tools/) Это узкоспециализированные скрипты, каждый скрипт решает ровно одну задачу. Они не подключаются через .bashrc и не относятся к проекту mybash-tool. Просто решил хранить их в этом репозитории для удобства доступа из одного места.
install-fonts.sh — установка моих любимых шрифтов. скачивает, очищает от мусора, устанавливает в систему, создаёт локальные архивы для offline-работы.
curl -fsSL -o install-fonts.sh https://raw.githubusercontent.com/lincooln/mybash-tools/main/tools/install-fonts.sh && chmod +x install-fonts.sh && sudo ./install-fonts.shinstall-syncthingtray.sh — установка SyncthingTray на ALT Linux и производные с поддержкой резервных URL и проверкой зависимостей.
curl -fsSL -o install-syncthingtray.sh https://raw.githubusercontent.com/lincooln/mybash-tools/main/tools/install-syncthingtray.sh && chmod +x install-syncthingtray.sh && sudo ./install-syncthingtray.shinstall-syncthing-mint.sh - Установка Syncthing + Syncthing-Gtk (linux mint, Ubuntu) из оффициального репозитория разработчика либо из репозитория дистрибутива. два режима интерактивный (по умолчанию) с подтверждением каждого шага, не интеракивный молча ставит последние версии и добавляет запись в автозагрузку. Режим меняется прямо в скрипте одним ключём.
curl -fsSL -o install-syncthing-mint.sh https://raw.githubusercontent.com/lincooln/mybash-tools/main/tools/install-syncthing-mint.sh && chmod +x install-syncthing-mint.sh && sudo ./install-syncthing-mint.shinstall-smb-share.sh - установка samba и расшаривание директории одним скриптом. Все необходимые настройки в начале скрипта можно изменить перед запуском, в том числе и вернуть всё обратно.
curl -fsSL -o install-smb-share.sh https://raw.githubusercontent.com/lincooln/mybash-tools/main/tools/install-smb-share.sh && chmod +x install-smb-share.sh && sudo ./install-smb-share.sh📚 Базы данных (data/) нужна для хранения данных таким модулям как help и nerdicons без этих данных модули создадут пустую базу. help.txt — простой текстовый файл с подсказками вызывается из модуля myhelp Формат: тема команда # пояснение Пример: vi :q! # выйти без сохранения
nerd-fonts.txt — база иконок Nerd Fonts. вызывается из модуля nerdicons Формат: U+XXXX;имя;тег1 тег2 ... Пример: U+F09B;git;гит репозиторий
✏️ Оба файла можно редактировать через help edit и icons add.
🚀 Установка
Если у вас установлен git:
git clone https://github.com/lincooln/mybash-tools ~/mybash-tools && ~/mybash-tools/install.shЕсли Git недоступен:
curl -L https://github.com/lincooln/mybash-tools/archive/refs/heads/main.tar.gz | tar xz -C ~ && mv ~/mybash-tools-main ~/mybash-tools && ~/mybash-tools/install.shили
wget -qO- https://github.com/lincooln/mybash-tools/archive/refs/heads/main.tar.gz | tar xz -C ~ && mv ~/mybash-tools-main ~/mybash-tools && ~/mybash-tools/install.shЛибо скачайте всё однм архивом при помощи браузера и разархивируйте. перейдите в разархивированную директорию и запустите install.sh следуйте подсказкам.
После установки перезапустите терминал или выполните:
source ~/.bashrcдля применения настроек.
🔐 Важно: При использовании или модификации этого проекта сохраняйте упоминание соавторства. Это не просто вежливость — это признание новой парадигмы: человек + ИИ = команда.
📜 Лицензия Проект распространяется «как есть», без гарантий. Используйте на свой страх и риск.
Проект включает шрифт Terminess Nerd Font, который является комбинацией:
- Terminus Font (SIL Open Font License)
- Nerd Fonts (MIT License) Полные тексты лицензий доступны на соответствующих сайтах.
💬 «Я не изобретаю велосипед — я строю свой первый велосипед, чтобы понять, как он едет» — Lincooln