# โšก Modular Bashrc Manager **Un sistema moderno, modulare e velocissimo per organizzare, gestire e scalare la configurazione di Bash su Linux e macOS.** [![Lingua: Italiano](https://img.shields.io/badge/Lingua-Italiano-green.svg)](#) [![Language: English](https://img.shields.io/badge/Language-English-blue.svg)](README.md) [![Shell Script](https://img.shields.io/badge/Shell_Script-Bash_%3E=_4.0-4EAA25?logo=gnu-bash&logoColor=white)](https://www.gnu.org/software/bash/) [![Licenza: GPL v3](https://img.shields.io/badge/Licenza-GPLv3-blue.svg)](LICENSE) [![Piattaforma: Linux / macOS](https://img.shields.io/badge/Piattaforma-Linux%20%7C%20macOS-E95420?logo=linux&logoColor=white)](https://www.kernel.org/) [![Gitea](https://img.shields.io/badge/Repository-Gitea-fc6d26?logo=gitea&logoColor=white)](https://gitea.sld-server.org/sld-admin/Modular-Bashrc-Manager) [๐Ÿ‡ฌ๐Ÿ‡ง **English**](README.md) โ€ข [๐Ÿ‡ฎ๐Ÿ‡น **Italiano**](README.it.md)
--- ## ๐Ÿ“‘ Indice dei Contenuti - [Panoramica](#-panoramica) - [Perchรฉ Modular Bashrc Manager?](#-perch%C3%A9-modular-bashrc-manager) - [Caratteristiche Principali](#-caratteristiche-principali) - [Architettura e Flusso di Caricamento](#-architettura-e-flusso-di-caricamento) - [Installazione e Avvio Rapido](#-installazione-e-avvio-rapido) - [Installazione Automatica](#installazione-automatica) - [Cosa fa l'Installer](#cosa-fa-linstaller) - [Guida ai Comandi CLI (`brc-script`)](#-guida-ai-comandi-cli-brc-script) - [Tabella Rapida dei Comandi](#tabella-rapida-dei-comandi) - [Esempi di Utilizzo Pratico](#esempi-di-utilizzo-pratico) - [Moduli Predefiniti Inclusi](#-moduli-predefiniti-inclusi) - [Creazione di Moduli Personalizzati](#-creazione-di-moduli-personalizzati) - [Utility Integrate (`ccecho`)](#-utility-integrate-ccecho) - [Distribuzioni Supportate](#-distribuzioni-supportate) - [Risoluzione Problemi e FAQ](#-risoluzione-problemi-e-faq) - [Licenza e Autore](#-licenza-e-autore) --- ## ๐Ÿ” Panoramica **Modular Bashrc Manager** sostituisce il tradizionale file unico e disordinato `~/.bashrc` con un'architettura pulita, modulare e disaccoppiata, ispirata al paradigma `available`/`enabled` utilizzato da Debian, Apache e Nginx. Invece di accumulare centinaia di alias, funzioni, variabili d'ambiente e prompt in un unico file monolitico, la configurazione della shell viene suddivisa in script indipendenti che possono essere abilitati, disabilitati, visualizzati in anteprima, creati o aggiornati in modo sicuro con un solo comando. ``` ~/.bashrc โ”€โ”€โ–ถ Loader โ”€โ”€โ–ถ ~/.bashrc.d/scripts-needed/ (Motore e utility di base) โ”€โ”€โ–ถ ~/.bashrc.d/scripts-enabled/ (Personalizzazioni attive) ``` --- ## ๐Ÿ’ก Perchรฉ Modular Bashrc Manager? | `~/.bashrc` Monolitico Tradizionale | Con Modular Bashrc Manager | | :--- | :--- | | โŒ Centinaia di righe confuse in un solo file | โœ… Script modulari, ordinati e dedicati a compiti specifici | | โŒ Difficile isolare bug e testare modifiche | โœ… Attiva o disattiva i moduli all'istante (`brc-script -e` / `-d`) | | โŒ Rischio di rompere l'intera shell per un errore | โœ… Attivazione sicura tramite symlink e backup automatici | | โŒ Complesso condividere o sincronizzare snippet | โœ… File modulari pronti per essere condivisi o versionati | | โŒ Necessitร  di aprire editor di testo per leggere i file | โœ… Anteprima immediata da terminale con numeri di riga (`brc-script -p`) | --- ## โœจ Caratteristiche Principali - ๐Ÿš€ **Installer Intelligente Multi-Distribuzione** Riconosce automaticamente il gestore di pacchetti del sistema (`apt`, `dnf`, `yum`, `pacman`, `zypper`, `apk`, `brew`) e installa in autonomia le dipendenze necessarie (`jq`, `curl`). - ๐Ÿ”„ **Migrazione Sicura a Rischio Zero** Crea un backup con data/ora del `~/.bashrc` attuale e trasferisce automaticamente tutte le tue impostazioni pregresse in `00_default.sh`: **non perderai nessuna configurazione**. - โšก **Gestione Massiva Multi-Script** Abilita, disabilita, visualizza o rimuovi piรน script simultaneamente passando gli ID numerici o i nomi dei file (es. `brc-script -e 1 3 4` oppure `brc-script -d 03_bashboard 04_aliases`). - ๐Ÿ‘๏ธ **Anteprima Rapida del Codice (`cat`)** Ispeziona il contenuto e la sintassi di uno script direttamente nel terminale con intestazioni colorate e numerazione delle righe senza dover aprire editor esterni (`brc-script -p `). - ๐Ÿ–ฅ๏ธ **Bashboard di Sistema Intelligente** Include `03_bashboard.sh`, una dashboard stile MOTD veloce che mostra CPU, RAM, dischi, temperatura, IP locali/pubblici, aggiornamenti di sistema e il **rilevamento dinamico automatico della Web UI di Cockpit**. - ๐ŸŒฟ **Evidenziazione Git nel Prompt della CLI** Include hook per il prompt dinamico (`01_git-cli-highlitgh.sh` e `02_git-cli-highlitgh-root.sh`) per mostrare branch Git, file indicizzati (`+`), modificati (`M:`), non tracciati (`N:`) e stato di sincronizzazione remota (`โ†‘`/`โ†“`). - ๐Ÿ”„ **Aggiornamenti Gitea e Upgrade Sicuro** Verifica la presenza di aggiornamenti sul repository con `brc-script -u` ed effettua l'aggiornamento sicuro del motore con `brc-script --upgrade` senza toccare `00_default.sh` o i tuoi script personali. - ๐ŸŽจ **Utility Integrata di Stile `ccecho`** Libreria leggera per stampare testi colorati e formattati su terminale (grassetto, sottolineato, lampeggiante, colori di testo e sfondo). --- ## ๐Ÿ—๏ธ Architettura e Flusso di Caricamento All'avvio della shell, `~/.bashrc` esegue un loader leggero che carica i moduli in ordine deterministico: ```text ~/.bashrc.d/ โ”œโ”€โ”€ .version # Hash di commit/versione installata โ”œโ”€โ”€ .update_cache # Cache per i controlli passivi di update da Gitea โ”œโ”€โ”€ scripts-needed/ # Script fondamentali del motore (caricati SEMPRE per primi) โ”‚ โ”œโ”€โ”€ brc-script.sh # Logica centrale e funzioni della CLI โ”‚ โ””โ”€โ”€ ccecho.sh # Libreria di output a colori โ”‚ โ”œโ”€โ”€ scripts-available/ # Tutti gli script installati (Libreria dei moduli) โ”‚ โ”œโ”€โ”€ 00_default.sh # La tua configurazione migrata (Protetta da modifiche) โ”‚ โ”œโ”€โ”€ 01_git-cli-highlitgh.sh # Prompt Git per utenti standard โ”‚ โ”œโ”€โ”€ 02_git-cli-highlitgh-root.sh # Prompt Git con distinzione cromatica Root/User โ”‚ โ”œโ”€โ”€ 03_bashboard.sh # Dashboard metriche e rilevamento Cockpit โ”‚ โ””โ”€โ”€ 04_aliases.sh # Alias e scorciatoie di uso comune โ”‚ โ”œโ”€โ”€ scripts-enabled/ # Symlink agli script attivi in scripts-available/ โ”‚ โ”œโ”€โ”€ 00_default.sh -> ../scripts-available/00_default.sh โ”‚ โ””โ”€โ”€ 03_bashboard.sh -> ../scripts-available/03_bashboard.sh โ”‚ โ””โ”€โ”€ scripts-removed/ # Cestino con backup marcati con timestamp degli script eliminati ``` ### Ordine di Esecuzione: 1. Vengono caricati sequenzialmente tutti i file presenti in `scripts-needed/*.sh`. 2. Vengono caricati in ordine alfabetico tutti i symlink attivi in `scripts-enabled/*.sh`. --- ## ๐Ÿ“ฅ Installazione e Avvio Rapido ### Installazione Automatica 1. **Clona il repository ufficiale:** ```bash git clone https://gitea.sld-server.org/sld-admin/Modular-Bashrc-Manager.git cd Modular-Bashrc-Manager/installer ``` 2. **Avvia lo script di installazione:** ```bash chmod +x brc-script-install.sh ./brc-script-install.sh ``` 3. **Ricarica la sessione della shell:** ```bash refresh-brc # oppure: source ~/.bashrc ``` > [!TIP] > Puoi eseguire l'installer sia come utente normale che come `root` per configurare qualsiasi utente presente sul sistema. ### Cosa fa l'Installer: - ๐Ÿ” Rileva la distribuzione Linux/macOS e installa `jq` e `curl` se mancanti. - ๐Ÿ’พ Crea un backup con data e ora del tuo `~/.bashrc` originale (es. `~/bashrc-backup-2026-08-26_16-00-00`). - ๐Ÿšš Migra il contenuto del vecchio `.bashrc` in `~/.bashrc.d/scripts-available/00_default.sh` e lo abilita immediatamente. - ๐Ÿงน Sostituisce `~/.bashrc` con il blocco loader minimale e pulito. - ๐Ÿ“ฆ Copia i file essenziali in `scripts-needed/` e i moduli standard in `scripts-available/`. - ๐Ÿท๏ธ Crea il file `.version` con il commit hash di riferimento. --- ## ๐Ÿ’ป Guida ai Comandi CLI (`brc-script`) Il comando principale per gestire l'intero ambiente รจ `brc-script`. ### Tabella Rapida dei Comandi | Azione | Flag / Alias | Argomenti | Descrizione | | :--- | :--- | :--- | :--- | | **Elenco Script** | `-l`, `--list`, `list` | *nessuno* | Mostra tutti gli script, l'ID numerico e lo stato di attivazione (`-` blu) | | **Anteprima / Cat** | `-p`, `-v`, `--cat`, `--show`, `cat` | `` | Stampa a terminale il codice con numeri di riga senza aprire editor | | **Abilita** | `-e`, `--enable`, `enable` | `` | Attiva uno o piรน script creando il symlink in `scripts-enabled/` | | **Disabilita** | `-d`, `--disable`, `disable` | `` | Disattiva uno o piรน script rimuovendo il symlink | | **Abilita Tutti** | `-ea`, `--enable-all`, `enable-all` | *nessuno* | Attiva contemporaneamente tutti gli script disponibili | | **Disabilita Tutti**| `-da`, `--disable-all`, `disable-all` | *nessuno* | Disattiva contemporaneamente tutti gli script abilitati | | **Crea Script** | `-c`, `--create`, `create` | *nessuno* | Procedura guidata per creare un nuovo script da template e aprirlo nell'editor | | **Modifica Script** | `-m`, `--modify`, `modify` | `` | Apre lo script nell'editor (`$EDITOR` o `vim`) con possibilitร  di rinominarlo | | **Rimuovi Script** | `-r`, `--remove`, `remove` | `` | Sposta in modo sicuro lo script nel cestino `scripts-removed/` con timestamp | | **Verifica Update** | `-u`, `--update`, `update` | *nessuno* | Interroga il repository Gitea per rilevare nuovi commit e versioni | | **Aggiorna Sistema**| `--upgrade`, `upgrade` | *nessuno* | Aggiorna il motore e i moduli predefiniti senza toccare il tuo codice personale | | **Ricarica Shell** | `refresh-brc` | *nessuno* | Ricarica istantaneamente la configurazione `.bashrc` nella sessione corrente | --- ### Esempi di Utilizzo Pratico #### 1. Elencare i Moduli Disponibili ```bash brc-script -l ``` *Esempio di output:* ```text ------------------------------------ Scripts List ------------------------------------ 1) 00_default.sh - 2) 01_git-cli-highlitgh.sh 3) 02_git-cli-highlitgh-root.sh 4) 03_bashboard.sh - 5) 04_aliases.sh ------------------------------------ '-' (blue) = Active / Enabled ------------------------------------ ``` #### 2. Abilitare Piรน Script in un Solo Comando Puoi specificare gli ID numerici o i nomi (con o senza estensione `.sh`): ```bash # Abilita tramite ID numerici brc-script -e 2 5 # Abilita tramite nomi degli script brc-script -e 01_git-cli-highlitgh 04_aliases ``` #### 3. Disabilitare Piรน Script Contemporaneamente ```bash # Disabilita per ID brc-script -d 2 4 5 # Disabilita per nome brc-script -d 03_bashboard 04_aliases ``` #### 4. Visualizzare l'Anteprima del Codice Direttamente nel Terminale Esamina cosa fa uno script prima di attivarlo: ```bash # Anteprima tramite ID numerico brc-script -p 4 # Anteprima tramite nome script brc-script --cat 03_bashboard ``` #### 5. Creare un Nuovo Script Personalizzato ```bash brc-script -c ``` Verrร  richiesto il nome del file (es. `scorciatoie-docker`), verrร  generato un template pronto e aperto direttamente nel tuo `$EDITOR` (o `vim`). #### 6. Verificare e Applicare gli Aggiornamenti ```bash # Controlla la presenza di novitร  su Gitea brc-script -u # Effettua l'aggiornamento sicuro del motore brc-script --upgrade ``` > [!NOTE] > `brc-script --upgrade` non sovrascrive **mai** il tuo file `00_default.sh` o i tuoi moduli creati manualmente. Vengono aggiornati solo i moduli ufficiali e i componenti di sistema in `scripts-needed/`. --- ## ๐Ÿ“ฆ Moduli Predefiniti Inclusi ### `00_default.sh` โ€” Configurazione Personale Migrata - **Scopo:** Contiene tutti i tuoi alias, funzioni pregresse, variabili d'ambiente ed esportazioni `PATH` migrate durante l'installazione. - **Sicurezza:** **Strettamente protetto**. Gli aggiornamenti non modificheranno o sovrascriveranno mai questo file. ### `01_git-cli-highlitgh.sh` โ€” Prompt Git Interattivo (Utente) - **Scopo:** Mostra nel prompt del terminale lo stato del repository Git corrente: - Nome del branch in **Verde** (clean) o **Viola** (file modificati). - `+N`: Numero di file in stage (Verde). - `M:N`: Numero di file modificati (Giallo). - `N:N`: Numero di file non tracciati (Rosso). - `โ†‘N` / `โ†“N`: Commit in anticipo o ritardo rispetto al remote (Ciano). ### `02_git-cli-highlitgh-root.sh` โ€” Prompt Git con Evidenziazione Root - **Scopo:** Versione del prompt Git avanzata con colorazione ad alta visibilitร  (rosso acceso `#` per l'utente `root`, verde/blu `>` per gli utenti normali). ### `03_bashboard.sh` โ€” Bashboard di Sistema & Rilevamento Cockpit - **Scopo:** Mostra un riepilogo grafico all'apertura del terminale: - Dati della distribuzione e Hostname - Indirizzi IP locali e IP pubblico (con sistema di caching per non rallentare l'avvio) - Uptime di sistema e Carico - Utilizzo di RAM e Disco con soglie di allarme colorate - Temperatura CPU (con riconoscimento automatico delle macchine virtuali) - Pacchetti di aggiornamento disponibili (`apt`, `dnf`, `yum`, `pacman`, `zypper`, `apk`) - **Rilevamento Dinamico di Cockpit:** Riconosce se Cockpit Web UI รจ attivo sul sistema, ne individua la porta d'ascolto e stampa l'URL diretto di accesso. ### `04_aliases.sh` โ€” Alias Comuni - **Scopo:** Raccolta di alias pratici (ad esempio `ls --color`). --- ## ๐Ÿ› ๏ธ Creazione di Moduli Personalizzati Aggiungere un nuovo modulo personalizzato รจ estremamente semplice: 1. Avvia la procedura guidata: ```bash brc-script -c ``` 2. Inserisci il nome desiderato (es. `mie-funzioni-docker`). 3. Scrivi i tuoi alias, funzioni o variabili: ```bash #!/bin/bash # ============================================================ # Modular Bashrc - mie-funzioni-docker.sh # ============================================================ # Alias personalizzati alias dps="docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'" alias dlogs="docker logs -f --tail=100" # Funzione personalizzata con feedback a colori dclean() { ccecho -t byellow "Pulizia dei container e immagini inutilizzate..." docker system prune -af --volumes ccecho -t bgreen "Docker pulito con successo!" } ``` 4. Salva ed esci dall'editor. 5. Abilita il nuovo modulo e ricarica: ```bash brc-script -e mie-funzioni-docker refresh-brc ``` --- ## ๐ŸŽจ Utility Integrate (`ccecho`) Modular Bashrc Manager include l'utility `ccecho` in `scripts-needed/ccecho.sh`, utilizzabile in qualsiasi script per formattare testo e colori ANSI nel terminale: ```bash ccecho -t green -s bold "Operazione completata con successo!" ccecho -t red -b black -s underline "Errore Fatale: Connessione rifiutata" ``` ### Parametri Supportati: - **Colori Testo (`-t` / `--text`):** `black`, `red`, `green`, `yellow`, `blue`, `magenta`, `cyan`, `white` *Varianti brillanti:* `bblack`, `bred`, `bgreen`, `byellow`, `bblue`, `bmagenta`, `bcyan`, `bwhite` - **Colori Sfondo (`-b` / `--bg`):** `black`, `red`, `green`, `yellow`, `blue`, `magenta`, `cyan`, `white` *Varianti brillanti:* `bblack`, `bred`, `bgreen`, `byellow`, `bblue`, `bmagenta`, `bcyan`, `bwhite` - **Stili del Testo (`-s` / `--style`):** `bold`, `dim`, `italic`, `underline`, `blink`, `reverse`, `hidden`, `strike` --- ## ๐Ÿง Distribuzioni Supportate Modular Bashrc Manager รจ compatibile e testato con: | Famiglia | Distribuzioni / Sistemi Operativi | Gestore Pacchetti | | :--- | :--- | :--- | | **Debian** | Debian, Ubuntu, Linux Mint, Pop!_OS, Raspberry Pi OS | `apt` / `apt-get` | | **Red Hat** | Fedora, RHEL, CentOS, Rocky Linux, AlmaLinux | `dnf` / `yum` | | **Arch** | Arch Linux, Manjaro, EndeavourOS | `pacman` | | **SUSE** | openSUSE Leap, openSUSE Tumbleweed | `zypper` | | **Alpine** | Alpine Linux (server e container) | `apk` | | **macOS** | Apple macOS (Intel e Apple Silicon) | `brew` (Homebrew) | --- ## โ“ Risoluzione Problemi e FAQ ### 1. Ho abilitato uno script ma i nuovi comandi non funzionano ancora! Esegui il comando di ricarica rapida nel terminale: ```bash refresh-brc ``` *(Oppure riapri una nuova scheda del terminale).* ### 2. Come ripristino il mio vecchio `.bashrc` originale? L'installer crea automaticamente una copia di backup prima di qualsiasi modifica. Per ripristinarlo: ```bash cp ~/bashrc-backup-* ~/.bashrc ``` ### 3. Dove finiscono gli script che elimino? Quando elimini uno script con `brc-script -r `, il file non viene perso in modo irreversibile, ma viene archiviato con marcatura oraria nella cartella: ```text ~/.bashrc.d/scripts-removed/ ``` ### 4. Come posso cambiare l'editor predefinito di `brc-script`? Imposta la variabile d'ambiente `EDITOR` all'interno di `00_default.sh`: ```bash export EDITOR="nano" # oppure "code", "vim", "nvim", "micro" ``` --- ## ๐Ÿ“„ Licenza e Autore - **Autore:** Simone Cusano ([sld-server.org](https://sld-server.org)) - **Repository Ufficiale:** [https://gitea.sld-server.org/sld-admin/Modular-Bashrc-Manager](https://gitea.sld-server.org/sld-admin/Modular-Bashrc-Manager) - **Licenza:** GNU General Public License v3.0 ([GPL-3.0](LICENSE)) ---
Sviluppato con โค๏ธ da Simone Cusano. Se trovi utile questo progetto, lascia una stella sul repository!