Monthly Archives: Giugno 2025

Cos’è una Shell Unix e perché dovresti imparare Bash

Nel mondo Unix e Linux, la shell è uno strumento fondamentale. A prima vista, può sembrare solo un’interfaccia per digitare comandi, ma in realtà è molto di più. È uno strumento potente, versatile e programmabile, che permette agli utenti di controllare e automatizzare il sistema operativo in modo efficiente.

Una shell senza modificare il sistema

Una delle caratteristiche più interessanti delle shell Unix è che possono essere installate come normali programmi, senza bisogno di modificare il sistema operativo. Questo ha permesso negli anni la nascita di molte shell alternative, ognuna con caratteristiche specifiche, spesso focalizzate su comodità d’uso e potenza di scripting.

Comodità per l’utente e potenza per il programmatore

Le shell moderne non si limitano a eseguire comandi. Offrono funzionalità avanzate come:

  • Storico dei comandi e possibilità di riutilizzarli

  • Modifica rapida dei comandi già scritti

  • Scorciatoie personalizzabili

  • Completamento automatico

Per un utente esperto, scrivere comandi a mano risulta spesso più rapido ed efficace rispetto a interagire con interfacce grafiche.

La shell è anche un linguaggio di programmazione

Ogni volta che svolgi un’attività ripetitiva, ti dovresti chiedere: posso automatizzarla con uno script? Con una shell Unix, la risposta è quasi sempre sì. Le shell sono veri e propri linguaggi di scripting, pensati per interagire con i comandi del sistema.

Puoi ad esempio:

  • Convertire file WAV in MP3 in blocco

  • Comprimere tutti i log di sistema

  • Automatizzare task quotidiani o di amministrazione

Sebbene esistano linguaggi più potenti come Python o Perl, la shell rimane il punto di partenza ideale: se sai già usare i comandi, puoi iniziare a scrivere script subito.


Perché imparare Bash?

Tra tutte le shell disponibili, bash (Bourne Again SHell) è la più diffusa. È presente in quasi tutte le distribuzioni Linux, su macOS, e anche su Windows (tramite WSL o Cygwin). È open source, potente, versatile e… praticamente ovunque.

Un po’ di storia

Nei primi anni, le shell avevano o una buona programmabilità (come la Bourne shell), o una buona interazione utente (come la C shell), ma raramente entrambe. Negli anni ’80 arrivò la Korn shell (ksh), che combinava potenza e facilità d’uso, ma era inizialmente proprietaria.

Con la nascita del progetto POSIX, si cercò una standardizzazione delle shell. Bash nacque come parte del progetto GNU proprio per fornire una shell libera conforme agli standard POSIX.

Bash oggi

Con il tempo, bash è diventata la shell di default su:

  • Tutte le principali distribuzioni Linux

  • macOS e le sue versioni precedenti (OS X)

  • Unix come BSD, Solaris, ecc.

  • Windows (tramite WSL o ambienti compatibili)

È una shell che unisce efficienza per l’utente e potenza per il programmatore. Impararla significa avere uno strumento universale per l’automazione e la gestione del sistema, senza compromessi.


Conclusione

Imparare bash è una delle competenze più utili che puoi acquisire se lavori o smanetti con Linux, Unix, server o semplicemente con terminali. È semplice da iniziare, ma al tempo stesso potente e flessibile. E soprattutto, è ovunque: se impari bash, sei pronto a lavorare su qualsiasi sistema Unix-like moderno.

Come usare Ansible Navigator ed Execution Environment su RHEL 9 per prepararti all’RHCE EX294

Introduzione

Se stai studiando per l’esame RHCE EX294 su RHEL 9, una delle novità principali è l’uso di Ansible Navigator insieme agli Execution Environment (EE). In questo articolo vedremo come:

  • Installare Ansible Navigator su RHEL 9
  • Configurare un Execution Environment Docker
  • Eseguire un playbook sicuro al 100%
  • Fornire riferimenti a documentazione ufficiale e approfondimenti

Installazione

sudo dnf install ansible-core podman
pip3 install --user ansible-navigator

Se vuoi usare Docker invece di Podman:

# ~/.ansible-navigator.yml
execution-environment:
  enabled: true
  container-engine: docker
  image: quay.io/ansible/creator-ee:latest

Playbook compatibile con EE

- name: Playbook test compatibile con Execution Environment
  hosts: localhost
  gather_facts: false
  become: false

  vars:
    test_file: "/tmp/esempio.txt"
    file_content: "Questo è un file generato da Ansible nel container."
    pacchetto_demo: "nano"

  tasks:
    - name: Scrittura file su /tmp
      copy:
        dest: "{{ test_file }}"
        content: "{{ file_content }}"
        mode: '0644'

    - name: Installazione pacchetto simulata
      block:
        - name: Verifica comando di installazione
          shell: "echo installazione di {{ pacchetto_demo }} simulata"
          register: risultato

        - name: Mostra risultato simulato
          debug:
            var: risultato.stdout

      rescue:
        - name: Log errori (mai eseguito)
          debug:
            msg: "Errore durante installazione"

      always:
        - name: Log finale
          debug:
            msg: "Blocco terminato"

    - name: Creazione file JSON simulato
      copy:
        dest: /tmp/dati.json
        content: |
          {
            "utente": "demo",
            "ambiente": "execution-environment",
            "successo": true
          }
        mode: '0644'

Inventory

all:
  hosts:
    localhost:
      ansible_connection: local

Comando di esecuzione

ansible-navigator run site.yml \
  --eei quay.io/ansible/creator-ee:latest \
  --ce docker \
  --mode stdout \
  -i inventory.yml

Verifica finale

cat /tmp/esempio.txt
cat /tmp/dati.json

Risorse utili