Linux Application Manager – Bash скрипт за управление на приложения
Интерактивен Bash скрипт за инсталиране, премахване и управление на приложения и системни инструменти в Debian, Ubuntu и Linux Mint.
Зависимости
bashsudoapt-getcurl Употреба
Стартира се от обикновен потребител чрез ./linux-app-manager.sh Какво представлява Linux Application Manager?
Linux Application Manager е интерактивен Bash скрипт, предназначен да улесни инсталирането, премахването и основното управление на приложения и системни инструменти в Linux.
Скриптът е разработен с основен фокус върху Debian, Ubuntu и Linux Mint и използва стандартния apt пакетен мениджър за работа със системните пакети.
Вместо администраторът всеки път да въвежда множество отделни команди в терминала, скриптът предоставя меню, от което могат да бъдат избрани предварително дефинирани групи приложения.
Това го прави особено удобен при:
- нова Linux инсталация;
- настройване на работна станция;
- подготовка на система за web development;
- конфигуриране на административна машина;
- инсталиране на инструменти за backup;
- бързо възстановяване на позната работна среда.
Скриптът съдържа отделни функции за всяка основна операция, а резултатите се записват и в log файл.
Какво може да прави скриптът?
Основното меню предоставя няколко операции:
- Инсталиране на програми
- Деинсталиране на програми
- Обновяване на системата
- Почистване на временни файлове
- Информация за системата
- Изход
Тази структура превръща Bash скрипта в малък терминален Application Manager, без да е необходимо използването на графичен интерфейс.
Проверка на Linux средата
Преди да стартира основното меню, скриптът проверява дали системата е подходяща за работа.
Проверява се:
- дали скриптът не е стартиран директно като
root; - дали съществува
/etc/os-release; - каква Linux дистрибуция е инсталирана;
- дали е налична командата
sudo; - дали е наличен
apt-get.
Скриптът е ориентиран към Debian-базирани системи. При друга дистрибуция потребителят получава предупреждение и може да прекрати или продължи по собствена преценка.
Това е важна защита, защото командите за инсталиране и премахване са базирани на apt и dpkg.
Проверка на интернет връзката
Част от операциите изискват достъп до интернет.
Скриптът проверява връзката чрез:
curl -fsS --connect-timeout 5 https://www.google.com
Ако проверката не успее, потребителят получава предупреждение и може да избере дали да продължи.
Това е полезно при операции, които изтеглят пакети или външни файлове.
Организация на файловете
Скриптът използва няколко директории:
SCRIPT_DIR="/home/fedia/skript"
LOG_DIR="${SCRIPT_DIR}/logs"
LOG_FILE="${LOG_DIR}/install.log"
TEMP_DIR="${HOME}/temp-install"
APP_DIR="${HOME}/Applications"
В тях се съхраняват съответно:
- самите скриптове;
- log файловете;
- временните файлове за изтегляния;
- самостоятелните AppImage приложения.
Особено важно е, че AppImage файловете не се инсталират чрез apt, а се съхраняват в:
~/Applications
Logging
Една от полезните части на скрипта е вграденото logging.
Основната функция е:
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" >> "$LOG_FILE"
}
Тя записва извършените операции във файл.
Освен обикновени съобщения се записват и изпълнените команди, включително sudo командите.
Например:
[2026-09-23 10:15:32] Стартиран Linux Application Manager
Това позволява след време да се провери какво е извършил скриптът.
Цветен интерфейс в терминала
Скриптът използва ANSI escape sequences за оцветяване на интерфейса.
Използвани са различни цветове за:
- информация;
- успешна операция;
- предупреждение;
- грешка;
- заглавия;
- вторична информация.
Интересна подробност е проверката:
if [[ -t 1 ]]; then
Така цветовете се активират само когато стандартният изход е терминал. При пренасочване към файл цветовите escape sequences не се използват.
Това е по-добър подход от безусловното добавяне на ANSI кодове към всеки изход.
Инсталиране на основни инструменти
Първата голяма група съдържа разнообразни Linux инструменти.
Сред тях са:
vimgitneovimkategeditcurlwgetrsynczipunzipp7zip-fullmctmuxhtopbtopncdutreejqripgrepfd-findnmapansiblewhoisdnsutilstraceroutefilezillavlcffmpeggimpimagemagicksynapticgpartedtimeshifttelegram-desktop
Това не е минимален набор. По-скоро представлява цялостен набор за Linux workstation.
Инструменти за web development
Отделна функция инсталира инструменти за web development:
git
curl
wget
jq
tree
rsync
unzip
zip
apache2-utils
shellcheck
nodejs
npm
Особено полезен е shellcheck, който позволява статичен анализ на Bash скриптове и откриване на потенциални проблеми.
Наличието на nodejs и npm прави групата подходяща и за JavaScript/Node.js базирани проекти.
Инструменти за backup
Скриптът предлага отделна група за архивиране:
rsync
timeshift
deja-dup
borgbackup
restic
rclone
unzip
zip
p7zip-full
tar
mc
ncdu
Тук са включени различни подходи за backup.
Например rsync е подходящ за директно синхронизиране на файлове, BorgBackup и Restic са ориентирани към backup системи, а rclone позволява работа с различни cloud storage услуги.
Мултимедийни приложения
Мултимедийната група включва:
vlc
ffmpeg
gimp
imagemagick
handbrake
audacity
Това покрива възпроизвеждане, обработка и конвертиране на аудио и видео, както и работа с изображения.
Инструменти за системна администрация
Отделна категория е предназначена за системни администратори.
Тя включва:
htop
btop
ncdu
iotop
lsof
strace
net-tools
nmap
whois
dnsutils
traceroute
tmux
screen
Това е една от най-практичните групи при диагностика на Linux система.
Например:
htopиbtopпоказват натоварването;iotopпозволява наблюдение на disk I/O;lsofпоказва отворените файлове и network connections;straceпроследява системните извиквания;nmapсе използва за network диагностика;ssне е включен директно, но други network инструменти са налични;tmuxиscreenпозволяват устойчиви terminal sessions.
AppImage приложения
Скриптът има отделна логика за AppImage.
Основната функция:
install_appimage()
приема име, URL и име на файла.
Изтегленият файл се поставя в:
~/Applications
След това получава execute permission:
chmod +x "$app_path"
Ако е наличен ail-cli, скриптът опитва да интегрира приложението чрез AppImageLauncher.
В момента са включени:
- Nextcloud Desktop;
- Viber.
Това е различно от стандартната инсталация чрез apt, тъй като AppImage приложенията представляват самостоятелни executable файлове.
Brave и Google Chrome
Скриптът поддържа два популярни браузъра.
Brave
При Brave се използва официалното repository и GPG key.
Скриптът:
- създава директория за keyrings;
- изтегля GPG ключа;
- добавя repository;
- изпълнява
apt update; - инсталира
brave-browser.
Този подход е по-подходящ от изтеглянето на произволен .deb пакет, защото позволява бъдещи актуализации чрез APT.
Google Chrome
Chrome се изтегля като официален .deb пакет:
google-chrome-stable_current_amd64.deb
Файлът се записва във временната директория и след това се инсталира чрез:
apt-get install -y
Тук трябва да се отбележи, че този метод е ориентиран към amd64 системи.
AnyDesk
AnyDesk също се инсталира чрез външно APT repository.
Скриптът:
- добавя GPG key;
- създава repository configuration;
- изпълнява
apt update; - инсталира
anydesk.
Това показва, че скриптът не е ограничен само до пакетите от стандартните Debian/Ubuntu repositories.
Деинсталиране
Освен инсталиране, Linux Application Manager предлага и премахване.
За APT пакетите се използва:
apt-get remove --purge -y
след което:
apt-get autoremove -y
За AppImage приложенията подходът е различен — просто се изтрива съответният файл от ~/Applications.
При Brave и AnyDesk скриптът премахва и repository конфигурацията и съответния key.
Обновяване на системата
От главното меню може да бъде стартирано системно обновяване.
Изпълняват се:
apt-get update
apt-get upgrade -y
apt-get autoremove -y
Това е удобен начин за извършване на стандартното пакетно обновяване без въвеждане на отделните команди.
Почистване на временните файлове
Скриптът използва:
~/temp-install
като временна директория.
От менюто може да бъде извършено почистване чрез:
rm -rf "${TEMP_DIR:?}"/*
Използването на ${TEMP_DIR:?} е важна защитна конструкция. Тя предотвратява изпълнението на rm -rf с празна стойност на променливата.
Информация за системата
Скриптът може да показва основна системна информация:
- hostname и информация за системата;
- disk space;
- RAM;
- CPU architecture;
- Bash version.
Използват се стандартни команди като:
hostnamectl
df -h
free -h
dpkg --print-architecture
bash --version
Тази функция е полезна при бърза проверка на машината преди инсталация или диагностика.
Как се използва?
Първо трябва да бъде записан скриптът например като:
linux-app-manager.sh
След това се дава право за изпълнение:
chmod +x linux-app-manager.sh
Стартирането се извършва като обикновен потребител:
./linux-app-manager.sh
Не е необходимо да се стартира директно с:
sudo ./linux-app-manager.sh
Скриптът сам използва sudo само за операциите, които изискват административни права.
След стартиране се показва главното меню:
1) Инсталиране на програми
2) Деинсталиране на програми
3) Обновяване на системата
4) Почистване на временни файлове
5) Информация за системата
0) Изход
Оттам потребителят избира необходимата операция.
Важна забележка за деинсталирането
Функциите за премахване трябва да се използват внимателно.
Например изборът:
Премахване на всички
не означава само премахване на приложенията, които потребителят е инсталирал чрез скрипта.
Командата:
apt-get remove --purge
се изпълнява върху предварително зададен списък, а след това се стартира:
apt-get autoremove
Затова тази операция не трябва да се използва механично на вече конфигурирана Linux система.
По-безопасният подход е да се премахват отделните категории само когато е ясно какви пакети съдържат.
Какво бих подобрил в следваща версия?
Скриптът работи като практичен инструмент, но има няколко области, които могат да бъдат подобрени.
1. Премахване на твърдо зададения потребителски път
В момента:
SCRIPT_DIR="/home/fedia/skript"
е специфичен за една конкретна система.
По-универсално би било:
SCRIPT_DIR="${HOME}/skript"
Така скриптът ще работи и при друг потребител.
2. По-строг режим на Bash
В момента е активиран:
set -o pipefail
В бъдеща версия може да се обмисли:
set -Eeuo pipefail
Това обаче трябва да бъде направено внимателно, защото ще промени поведението на целия скрипт и изисква преглед на всички функции.
3. По-добра обработка на грешки при „Инсталиране на всички“
При инсталиране на всички категории функциите се изпълняват последователно.
Ако една операция се провали, следващите могат да продължат.
За по-голям скрипт би било полезно да има обобщение накрая:
Успешни операции: 8
Неуспешни операции: 2
Пропуснати операции: 1
4. Проверка преди масово премахване
Опцията за премахване на всички пакети заслужава допълнителна защита.
Добра бъдеща версия би могла първо да покаже списъка:
Следните пакети ще бъдат премахнати:
git
vim
...
и чак след второ потвърждение да изпълни операцията.
5. По-пълно почистване на външните repositories
При деинсталиране на Chrome например не е предвидена специална функция за премахване на repository configuration.
При Brave и AnyDesk това е направено изрично.
Това е добра посока, която може да бъде уеднаквена в бъдеща версия.
Заключение
Linux Application Manager представлява голям, но практичен Bash скрипт, който обединява множество рутинни Linux административни операции в един интерактивен интерфейс.
Основната му сила не е в това, че прави нещо, което apt не може да направи, а в автоматизацията и организацията.
Вместо десетки отделни команди потребителят получава централизирано меню за:
- инсталиране на инструменти;
- настройване на web development среда;
- инсталиране на backup инструменти;
- добавяне на multimedia приложения;
- системна администрация;
- работа с AppImage;
- инсталиране на Brave, Chrome и AnyDesk;
- деинсталиране;
- system update;
- почистване;
- системна информация.
Скриптът е особено подходящ като личен workstation setup tool, когато една и съща Linux среда трябва периодично да бъде инсталирана или възстановена.
Свали скрипта
Или го клонирай с Git:
git clone [https://github.com/fedya-dev/Linux-Application-Manager.git](https://github.com/fedya-dev/Linux-Application-Manager.git)