Quando un’operazione richiede precisione, automazione o accesso a funzioni poco visibili nella grafica, la riga di comando diventa spesso il modo più rapido per lavorare. In questa guida chiarisco come usare il prompt dei comandi su Windows e il terminale su Linux, con comandi essenziali, differenze pratiche, esempi e precauzioni da conoscere.
La riga di comando diventa semplice quando si parte dalle operazioni giuste
- Windows usa soprattutto CMD, PowerShell e Windows Terminal.
- Su Linux si lavora nel terminale tramite shell come Bash o Zsh.
- I comandi per file, cartelle e rete cambiano tra i due sistemi.
- WSL permette di eseguire strumenti Linux direttamente dentro Windows.
- Permessi amministrativi, percorsi e comandi di eliminazione richiedono particolare attenzione.
Che cosa sono terminale, shell e prompt
Uso spesso questi termini come se fossero sinonimi, ma indicano tre elementi diversi. Il terminale è la finestra che mostra testo e risultati, mentre la shell interpreta ciò che si digita e lo trasforma in operazioni del sistema.
Su Windows la shell tradizionale è cmd.exe, conosciuta come CMD. PowerShell offre funzioni più avanzate per amministrazione e automazione, mentre Windows Terminal è l’applicazione che può ospitare CMD, PowerShell, Bash e distribuzioni Linux tramite WSL.
Su Linux il terminale può eseguire Bash, Zsh o altre shell. Il simbolo visualizzato prima del cursore, per esempio $ o nome@pc:~$, è il prompt: indica che il sistema è pronto a ricevere un comando.
La distinzione è utile perché cambiare finestra non significa necessariamente cambiare linguaggio. Aprire Windows Terminal e scegliere il profilo Ubuntu, per esempio, porta a un ambiente Linux, anche se la finestra appartiene a Windows.
Come aprire la riga di comando su Windows e Linux
Avviare CMD, PowerShell o Windows Terminal
In Windows posso premere Win + R, digitare cmd e confermare con Invio. Per un ambiente più moderno apro il menu Start e cerco Windows Terminal oppure PowerShell.
Alcune operazioni richiedono privilegi elevati. In quel caso apro il programma con il tasto destro e scelgo “Esegui come amministratore”. Non conviene usare sempre questo livello, perché un comando sbagliato avrebbe accesso a una parte molto più ampia del sistema.
winver
whoami
cd %USERPROFILE%
dirQuesti comandi mostrano la versione di Windows, l’utente attivo, la cartella personale e il contenuto della directory corrente. Sono un buon primo controllo quando devo capire dove mi trovo e con quali autorizzazioni sto lavorando.
Aprire il terminale in Linux
Su molte distribuzioni posso usare la scorciatoia Ctrl + Alt + T, cercare “Terminale” nel menu delle applicazioni oppure aprire una shell da un ambiente desktop. Il metodo cambia leggermente tra Ubuntu, Fedora, Debian e altre distribuzioni, ma i comandi di base restano in gran parte compatibili.
pwd
ls
whoami
uname -apwd mostra il percorso attuale, ls elenca i file, whoami indica l’utente connesso e uname -a fornisce informazioni sul kernel. Io parto quasi sempre da questi comandi, perché evitano errori banali causati da una directory o da un account diverso da quello previsto.
I comandi fondamentali per file, cartelle e rete
La tabella seguente mette a confronto CMD e Bash. Non è una traduzione perfetta comando per comando, ma una mappa pratica per chi passa da un sistema all’altro.
| Operazione | Windows CMD | Linux Bash |
|---|---|---|
| Mostrare la cartella corrente | cd |
pwd |
| Elencare i file | dir |
ls -la |
| Cambiare cartella | cd Documenti |
cd Documenti |
| Creare una cartella | mkdir Progetto |
mkdir Progetto |
| Copiare un file | copy origine.txt backup.txt |
cp origine.txt backup.txt |
| Spostare o rinominare | move vecchio.txt nuovo.txt |
mv vecchio.txt nuovo.txt |
| Eliminare un file | del file.txt |
rm file.txt |
| Leggere un file di testo | type note.txt |
cat note.txt |
| Cercare testo | findstr "errore" log.txt |
grep "errore" log.txt |
| Controllare la rete | ipconfig |
ip addr |
Il comando cd .. porta alla cartella superiore in entrambi gli ambienti, mentre cd \ porta alla radice del disco in CMD. In Linux la radice è indicata da /, quindi posso usare cd /.
La differenza più rischiosa riguarda la cancellazione. del e soprattutto rm possono eliminare dati senza passare dal cestino; con opzioni ricorsive come rm -r il danno può diventare molto ampio. Prima di confermare controllo sempre il percorso con pwd o cd e visualizzo i file presenti.
Come combinare i comandi e creare procedure utili
Il vantaggio principale della CLI non è solo eseguire un comando alla volta. È poter collegare più operazioni con pipe, filtri e reindirizzamenti, così da trasformare una serie di passaggi manuali in una procedura ripetibile.
Pipe e output su file
La pipe usa il simbolo | per inviare il risultato di un comando a quello successivo. In CMD posso filtrare i file PDF presenti nella cartella corrente con:
dir /b | findstr /i "\.pdf$"In Bash l’operazione equivalente è:
ls -1 | grep -i '\.pdf$'Il simbolo > salva l’output in un file, mentre >> lo aggiunge senza cancellare il contenuto precedente. Per esempio, ipconfig > rete.txt crea un rapporto in Windows, mentre ip addr > rete.txt svolge lo stesso compito in Linux.
Leggi anche: Linux su chiavetta USB persistente - Rufus, Ventoy e installazione
Condizioni, variabili e script
L’operatore && esegue il secondo comando solo se il primo termina correttamente. È utile per evitare che una procedura prosegua dopo un errore:
mkdir Backup && copy report.txt Backup\In Bash la sintassi del percorso cambia:
mkdir -p Backup && cp report.txt Backup/Anche le variabili d’ambiente hanno una forma diversa. In CMD uso %TEMP% o %USERPROFILE%, mentre in Bash uso $HOME o $TMPDIR. Quando un percorso contiene spazi, lo racchiudo tra virgolette, per esempio cd "C:\Program Files" in Windows.
Per procedure ricorrenti salvo i comandi in un file .bat su Windows oppure in uno script .sh su Linux. Prima di automatizzare cancellazioni, spostamenti o modifiche di sistema faccio una prova su una cartella temporanea: risparmiare trenta secondi non giustifica il rischio di perdere dati.
Quale ambiente scegliere tra CMD, PowerShell, Linux e WSL
Non esiste un vincitore assoluto. La scelta dipende dal tipo di lavoro, dal software disponibile e dal livello di controllo necessario.
| Ambiente | È adatto soprattutto a | Limite principale |
|---|---|---|
| CMD | Comandi Windows classici, file batch e interventi rapidi | Scripting meno ricco e gestione dati più limitata |
| PowerShell | Amministrazione Windows, automazione e gestione di oggetti | Sintassi inizialmente meno intuitiva per chi conosce solo CMD |
| Bash su Linux | Server, sviluppo, automazione e strumenti open source | Comandi e permessi richiedono un periodo di adattamento |
| WSL | Usare strumenti Linux senza abbandonare Windows | Non sostituisce ogni scenario di una macchina Linux completa |
PowerShell è la mia scelta per gestire molti computer Windows o elaborare risultati strutturati. CMD resta pratico per compatibilità e operazioni veloci, mentre Bash è spesso più naturale per sviluppo software, container e server cloud.
Con WSL posso aprire una distribuzione Linux dentro Windows ed eseguire, per esempio:
wsl
wsl --list --verbose
wsl ls -la
wsl sudo apt updateIl comando wsl avvia l’ambiente Linux, wsl --list --verbose mostra le distribuzioni installate e wsl ls -la esegue un comando Linux dalla console Windows. Per progetti Linux tengo normalmente il codice nel filesystem della distribuzione, come /home/nome/progetto, perché l’accesso ripetuto ai file montati dall’ambiente Windows può essere meno adatto a determinati flussi di sviluppo.
Errori comuni e regole di sicurezza da non ignorare
Il primo errore è confondere una shell con un’altra. Un comando Bash copiato in CMD può produrre un errore, così come una variabile scritta con %NOME% non funzionerà in Bash.
Il secondo riguarda i permessi. In Linux sudo esegue un comando con privilegi amministrativi, ma non dovrebbe diventare un riflesso automatico. In Windows l’elevazione tramite account amministratore ha lo stesso effetto pratico: consente modifiche profonde, ma aumenta il costo di un errore.
- Controlla sempre il percorso corrente prima di copiare o cancellare.
- Usa le virgolette quando nomi di file e cartelle contengono spazi.
- Non incollare comandi trovati online senza capirne almeno l’effetto principale.
- Fai attenzione a
rm -rf,del /se agli script eseguiti come amministratore. - Per diagnosticare un problema, conserva l’output in un file invece di affidarti solo alla memoria della console.
Quando un comando fallisce, leggo il messaggio completo e controllo il codice di uscita. In Bash posso usare echo $?, mentre in CMD trovo il risultato precedente con echo %ERRORLEVEL%. È un dettaglio piccolo, ma fa la differenza tra una diagnosi reale e un tentativo casuale.
Un metodo pratico per imparare senza mandare tutto in confusione
Imparerei la riga di comando per livelli. Prima navigazione e gestione di file, poi pipe e reindirizzamenti, infine script e amministrazione. Con comando /? in CMD e man comando in Linux posso consultare la sintassi direttamente dall’ambiente.
Per lavorare bene bastano inizialmente dieci o quindici comandi usati con consapevolezza. La velocità arriva dopo, quando si comprendono percorsi, permessi, output e codici di errore, non quando si memorizzano lunghe liste di istruzioni.
La CLI non serve a sostituire sempre l’interfaccia grafica. Serve quando occorrono controllo, ripetibilità e automazione, qualità particolarmente preziose nello sviluppo, nella gestione dei server e nei progetti cloud. Partire da operazioni innocue e verificabili è il modo più solido per trasformare una console apparentemente austera in uno strumento davvero utile.