Files

18 KiB

Modular Bashrc Manager

Un sistema moderno, modulare e velocissimo per organizzare, gestire e scalare la configurazione di Bash su Linux e macOS.

Lingua: Italiano Language: English Shell Script Licenza: GPL v3 Piattaforma: Linux / macOS Gitea

🇬🇧 English🇮🇹 Italiano


📑 Indice dei Contenuti


🔍 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 o cat da terminale (brc-script -p / -v)

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 e Cat Immediato del Codice (-p / -v)
    Ispeziona il codice di uno script direttamente nel terminale senza dover aprire editor esterni. Usa brc-script -p <id|nome> per l'anteprima numerata con intestazioni a colori, oppure brc-script -v <id|nome> (o --cat) per visualizzare il codice pulito senza numeri di riga.

  • 🖥️ 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:

~/.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:

    git clone https://gitea.sld-server.org/sld-admin/Modular-Bashrc-Manager.git
    cd Modular-Bashrc-Manager/installer
    
  2. Avvia lo script di installazione:

    chmod +x brc-script-install.sh
    ./brc-script-install.sh
    
  3. Ricarica la sessione della shell:

    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 (Numerata) -p, --preview, preview <id|nome ...> Stampa il codice con numeri di riga e intestazione informativa
Cat / Vista (Semplice) -v, --cat, --view, --show, cat, view <id|nome ...> Stampa il codice pulito dello script senza numeri di riga
Abilita -e, --enable, enable <id|nome ...> Attiva uno o più script creando il symlink in scripts-enabled/
Disabilita -d, --disable, disable <id|nome ...> 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 <id|nome> Apre lo script nell'editor ($EDITOR o vim) con possibilità di rinominarlo
Rimuovi Script -r, --remove, remove <id|nome ...> 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

brc-script -l

Esempio di output:

------------------------------------
            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):

# 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

# Disabilita per ID
brc-script -d 2 4 5

# Disabilita per nome
brc-script -d 03_bashboard 04_aliases

4. Visualizzare l'Anteprima o Eseguire il Cat del Codice nel Terminale

Esamina cosa fa uno script prima di attivarlo:

# Anteprima con numeri di riga e intestazione formattata
brc-script -p 4
brc-script --preview 03_bashboard

# Stampa (cat) del codice pulito senza numeri di riga (ideale per copia-incolla)
brc-script -v 4
brc-script --cat 03_bashboard

5. Creare un Nuovo Script Personalizzato

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

# 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:
    brc-script -c
    
  2. Inserisci il nome desiderato (es. mie-funzioni-docker).
  3. Scrivi i tuoi alias, funzioni o variabili:
#!/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!"
}
  1. Salva ed esci dall'editor.
  2. Abilita il nuovo modulo e ricarica:
    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:

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:

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:

cp ~/bashrc-backup-* ~/.bashrc

3. Dove finiscono gli script che elimino?

Quando elimini uno script con brc-script -r <id|nome>, il file non viene perso in modo irreversibile, ma viene archiviato con marcatura oraria nella cartella:

~/.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:

export EDITOR="nano"   # oppure "code", "vim", "nvim", "micro"

📄 Licenza e Autore


Sviluppato con ❤️ da Simone Cusano. Se trovi utile questo progetto, lascia una stella sul repository!