I comandi Linux che gli utenti Raspberry Pi devono conoscere

I comandi che possono aiutare chi si avvicina al mondo del Raspberry Pi.

Avatar di Les Pounder

a cura di Les Pounder

Nel corso degli ultimi giorni abbiamo avuto modo di parlare ampiamente del nuovo Raspberry Pi 4, delle sue caratteristiche tecniche e delle sue prestazioni che hanno visto un notevole incremento rispetto al suo predecessore.

Forse non tutti sapranno che sono in molti ad eseguire una distro Linux sul proprio Raspberry e soprattutto che il suo sistema operativo "ufficiale", Raspbian, altro non è che una versione di Debian modificata esclusivamente per essere eseguita su Raspberry.

Raspbian ha una interfaccia utente desktop che ricorda molto Windows, con il suo menu principale, la barra delle applicazioni e le icone sul desktop ma, essendo basata su Linux, gode anche di una potente interfaccia a riga di comando che rispetto alla GUI consente di avere un controllo superiore sul computer, rendendo in tanti casi l'esecuzione di funzioni importanti molto più semplice.

In questa guida elencheremo alcuni tra i comandi più importanti per navigare nel filesystem, installare software, modificare file e monitorare le prestazioni.

Sicuramente molti tra i più esperti in campo linux li conosceranno già ma potrebbero risultare molto utili per i neofiti o per chi si approccia per la prima volta al mondo Raspberry.

Aprire una finestra del Terminale

Per iniziare andremo ovviamente ad aprire una finestra del Terminale. Per aprirla dalla GUI bisognerà fare clic sull'icona del Terminale (sembra un piccolo monitor), o premere CTRL + ALT + T. Una volta aperto, ci apparirà una schermata nera con un prompt lampeggiante e la scritta:

pi@raspberrypi:~ $

Questo prompt ci dice che siamo loggati come utente chiamato pi e che la nostra macchina si chiama raspberry pi. $ indica le nostre autorizzazioni, in quanto abbiamo il permesso di modificare qualsiasi file o cartella nella nostra home directory, che in questo caso è /home/pi/.

Nella home directory sarà possibile archiviare il nostro lavoro, progetti, qualsiasi tipo di file, ecc. ma non possiamo andare a toccare il filesystem sottostante poiché non ne abbiamo il permesso. Per effettuare modifiche a livello di sistema bisogna utilizzare l'account "root", che altro non è che il corrispettivo dell'amministratore di Windows, oppure utilizzare "sudo" (ne parleremo tra poco) per garantirci temporaneamente permessi extra.

Bene, ora siamo pronti per iniziare con la carrellata di comandi.

sudo - Super user Do

Di default Raspbian, così come Linux in tutte le sue forme, non offre all'utente i privilegi di amministratore necessari per eseguire alcuna attività principale, come può essere l'installazione di un software.

Tuttavia ogni comando eseguito con "sudo" come prefisso avrà garantiti i diritti di amministratore per la sua esecuzione.

Piccola nota: per usare "sudo", devi essere nel gruppo di autorizzazioni "subdoers", ma la buona notizia è che l'utente predefinito di Raspberry Pi è già in questo gruppo. Facciamo un esempio, se volessimo aggiornare il sistema operativo non dovremo che digitare:

sudo apt upgrade

Configurare il Rasberry Pi

Il Raspberry Pi è dotato di uno strumento di configurazione in grado di permettere azioni come cambiare la nostra password, abilitare VNC, overcloccare lo stesso Raspverry Pi o impostare la rete Wi-Fi dal terminale. Per avviarlo non basterà che digitare:

sudo raspi-config

Spostarsi nel filesystem è qualcosa che diamo per scontato in un ambiente con interfaccia grafica utente (GUI). Tramite terminale possiamo fare ancora di più e con grande velocità e precisione. Bisogna solo conoscere i comandi corretti come vi mostreremo più sotto. Ricordate che se non disponete dell'autorizzazione per eseguire nessuna di queste azioni su un determinato file o directory, non basterà che precedere il comando con "sudo".

pwd - mostra la directory di lavoro

Questo comando, molto semplicemente, mostrerà il percorso completo alla directory in cui ci troviamo e stiamo agendo, ad esempio / home / pi /.

pwd

ls - elenca il contenuto di una directory

Questo comando è usato per elencare il contenuto di una directory. Per elencare i file nella tua directory corrente:

ls

Per elencare i file in una determinata directory, ad esempio /var/log:

ls /var/log

Per visualizzare file e directory nascosti, in una lunga lista ben dettagliata:

io -lha

Per elencare tutti i file di un certo tipo, ad esempio i file Python con estensione .py:

ls * py

cd - cambia directory

Usando questo comando possiamo muoverci nel filesystem in lungo e in largo. Ad esempio per muoverci dalla nostra home a Downloads:

cd Downloads

Per passare a un'altra directory in un'altra parte del filesystem, ad esempio /var/log:

cd /var/log

Per tornare alla precedente directory in cui ci trovavamo:

cd -

Per tornare indietro alla directory home:

cd ~

Lavorare con i file

A volte potremmo aver bisogno di dover dare uno sguardo all'interno di un file, cercare uno specifico comando, un errore o un bug. Con questi comandi potremo fare tutto questo tramite il terminale.

cat - stampa il file sul terminale

Per stampare a schermo (sul terinale) il contenuto di un file, ad esempio un file Python:

cat test.py

Per stampare i contenuti di un file su un terminale con righe numerate:

cat -n test.py

less - stampa il file sul terminale

Questo comando stamperà il contenuto di un file in sezioni che potremo scorrere usando i tasti freccia, Page up, Page Down, Home e End:

less /var/log/syslog

grep - cercare all'interno di un file

Questo è un comando per cercare una parola o una sezione di testo specifica all'interno di un file. Generalmente viene usto con i file di registro quando si cercano errori. In questo esempio andremo ad use lscpu per stampare i dettagli della CPU tramite un "grep" al quale abbiamo chiesto di cercare "MHz"

lscpu | grep “MHz”

Modificare un file

Comando utile per quando si necessita di modificare velocemente un file di configurazione, codice Python o semplicemente scrivere una lista di cose da fare.

nano

Nano è il più semplice editor da linea di comando per i principianti. Per creare un nuovo file, ad esempio newfile.txt:

nano newfile.txt

Per modificare un file esistente, ad esempio test.py:

nano test.py

All'interno di nano possiamo navigare con i tasti freccia e funziona esattamente come un comune editor di testo. Per salvare il lavoro svolto:

CTRL + OConfermare il nome del file, premere Invio

Per uscire da nano:

CTRL + X

Risorse di sistema e gestione

Di seguito alcuni utili comandi per operazioni standard di gestione e controllo del sistema.

htop - mostra i processi di sistema

Il comando permette di monitorare il carico attuale della CPU, l'utilizzo della RAM e i processi del sistema in esecuzione. Questo sistema è installato di default Raspbian ed è utile per chiudere applicazioni non reattive.

hptop

free - mostra la RAM libera e quella in uso

Questo comandò ci permette di conoscere la quantità di RAM attualmente in uso e quella libera per poter aprire ulteriori applicazioni. Usando l'opzione -m possiamo impostare i valori in MB.

free -m

dmesg - Controlla gli eventi del kernel

Il kernel è il cuore del sistema operativo, e dmesg ci permette di vedere quali eventi stanno accadendo in background. Utile per il debug di problemi con i dispositivi:

dmesg

Gestione dei file

Spostare, eliminare, copiare e creare nuovi file e directory sono solo alcune delle azioni più basilari che facciamo ogni giorno. Dal terminale possiamo fare tutto questo e molto altro.

mv - Sposta / rinomina un file

Questo comando offre due funzioni. La prima è semplicemente quella di sostare un file da una posizione ad un'altra. Ad esempio, qui sposteremo test.py nella directory Documents:

mv test.py Documents/

Il comando può anche essere usato per rinominare il file o la directory. Ad esempio, qui rinominiamo test.py in test2.py:

mv test.py test2.py

rm - Elimina un file

Con questo comando possiamo eliminare file e directory. Ad esempio per eliminare test.py:

rm test.py

cp - Copiare un file

Per copiare un file, ad esempio test.py nella directory Documents:

cp test.py Documents/

Per copiare una directory, ad esempio /home/pi/test2 in /home/pi/Documents/ dobbiamo usare l'opzione -r per copiare tutto.

cp -r test2/ Documents/

mkdir - Crea una directory

Crea una nuova directory per archiviare il lavoro svolto o file di qualsiasi tipo. Ad esempio, creiamo una directory chiamata Work nella nostra home directory:

mkdir Work

Installazione di software

Come su qualsiasi altro computer, dobbiamo assicurarci che il nostro Raspberry Pi sia sempre aggiornato. Lo strumento che ci viene incontro per farlo è apt.

apt - installare e gestire software

Apt (advanced packaging tool), non è altro che l'app store di Linux. Per poterlo utilizzare è necessario "sudo" poiché apt apporta delle modifiche al sistema operativo.

Per prima cosa aggiorniamo l'elenco dei software installabili digitando:

sudo apt update

Poi installiamo un'app specifica, ad esempio vlc:

sudo apt install vlc

Possiamo anche aggiornare tutti i software installati sul nostro Raspberry Pi. Per velocizzare la procedura, per questo comando abbiamo aggiunto l'opzione -y per accettare automaticamente l'installazione di ogni singolo pacchetto. Ovviamente è opzionale ma sicuramente rende il tutto più veloce:

sudo apt upgrade -y

Connettività di rete e Internet

In questa sezione parleremo di comandi per controllare lo stato della connessione a Internet.

ping - Controlla che siamo connessi

Il comando ping è usato per verificare che il nostro Raspberry Pi sia connesso a internet o alla rete domestica. Possiamo mandare un ping ad un sito web digitando:

ping google.com

O possiamo inviarlo a un indirizzo IP, ad esempio al DNS di Google:

ping 8.8.8.8

O per controllare la connettività sulla propria rete locale possiamo inviare un ping ai dispositivi della nostra rete. Questo esempio assume che il vostro range IP sia 192.168.1.1 ma il vostro potrebbe essere differente.

ping 192.168.1.1

hostname - Ottieni l'indirizzo IP del tuo Raspberry Pi

Il modo più semplice per trovare l'indirizzo IP del Raspberry Pi è usando il comando hostname con la funzione -I (i maiuscola) che ci mostrerà tutti gli indirizzi IP (Wi-Fi e Ethernet):

hostname -I

curl - Trasferisce i dati su una rete

Con questo comando è possibile trasferire un file da e verso il nostro Raspberry Pi. Ad esempio, grazie a curl, con l'opzione -o, possiamo scaricare un'immagine da un sito web per creare un file denominato image.jpg:

curl http://link-to-theimage.com/image.jpg -o image.jpg

Il comando curl è molto utile per scaricare script di installazione per installare automaticamente schede aggiuntive. Ma ricordatevi di usarlo con cautela e soprattutto di rivedere qualsiasi codice prima di usarlo.

Comandi salvatempo

Il terminale di linux è pieno di segreti e trucchi, progettati per farti risparmiare tempo e diventare un mago delle scorciatoie da tastiera.

history - cronologia dei comandi digitati

Il comando history, se utilizzato, mostrerà sul terminale tutti i comandi digitati precedentemente sotto forma di lista:

history

Ogni riga della lista è numerata ed è possibile utilizzare il numero per eseguire nuovamente il comando corrispondente. L'unica cosa da fare è farlo precedere da un punto esclamativo:

!117

history con grep

Utilizzando una pipe "|" insieme al comando history possiamo inviare l'output di history a grep dove potremo poi cercare comandi specifici. Ad esempio qui cerchiamo nella cronologia tutti i comandi dove è presente "apt":

history | grep “apt”

CTRL+R - Ricerca

Usando questa combinazione di tasti possiamo cercare uno specifico comando all'interno della nostra cronologia dei comandi. Basterà premere CTRL+R contemporaneamente e digitare parte del comando. Ad esempio: abbiamo appena utilizzato il comando history | grep "apt" ottenendo una lunga lista, per tornare all'inizio, al punto in cui abbiamo digitato il comando, non dobbiamo far altro che premere CTRL+R e cominciare a digitare "history" e la funzione di ricerca troverà quel comando.

TAB - Completamento

Possiamo pensare a questa funzione come al "completamento automatico" per il terminale. Possiamo premere il tasto TAB per far sì che ci aiuti a completare lunghi comandi o elenchi di directory. Se digitiamo le prime lettere di un comando, ad esempio "his" e poi premiamo TAB, lui completerà automaticamente il comando "history".

Se volessimo invece completare un lungo percorso di directory, come ad esempio /usr/lib/python3/dist-packages allora dovremmo cominciare a digitare /usr/lib/ e poi premere TAB per far sì che ci mostri tutte le directory disponibili in quel percorso. Potremmo quindi iniziare a digitare python3 e, premendo TAB ancora qualche volta, il comando restringerà le opzioni che possiamo usare.

Tasti freccia

In ultimo, i tasti freccia su e giù sono un'altra delle opzioni da utilizzare per scorrere la cronologia. Con questi tasti possiamo andare avanti e indietro lungo la cronologia dei comandi fino a quando non giungiamo al comando che ci interessa per poi premere Invio per eseguirlo di nuovo.

alias

Usando questo comando possiamo creare scorciatoie/comandi brevi a quelli molto più lunghi. In questo esempio creiamo un alias denominato updater e lo usiamo per chiamare due comandi. Il primo comando aggiornerà la nostra lista di software installabili, e se va a buon fine, concatenato grazie a "&&" eseguirà il successivo comando per l'aggiornamento sul nostro Raspberry Pi.

Digitiamo quindi:

alias updater = "sudo apt update && sudo apt upgrade -y"

Ora sarà possibile eseguire questo comando di aggiornamento che abbiamo creato ogni qualvolta vorremo semplicemente digitando "updater" nel terminale. Bisogna però ricordare che gli alias creati vengono cancellati ogni volta che si spegne il Raspberry Pi.