Lavorare da riga di comando non è un’impresa così spaventosa come si potrebbe pensare. Non c’è alcuna conoscenza speciale necessaria per digitare comandi e per usare la riga di comando come se fosse un programma come tutti gli altri. La maggior parte delle cose in Linux vengono fatte usando la riga di comando.
Per prima cosa vediamo come aprire il terminale.
Basta osservare la barra superiore e cliccare sulla icona nera, per capire di cosa si tratta guarda l’immagine sottostante:
Una volta aperto il terminale vediamo quali sono i comandi principali
Configurazione:
sudo raspi-config |
Permette di entrare nel menu configurazione della Raspberry (non funziona su altri S.O.)
Riprodurre un file audio o video con il riproduttore integrato:
omxplayer -o hdmi "Desktop/Sample.mkv"
Eseguire uno script Python:
sudo python Desktop/helloworld.py
Eseguire uno script con versione Python 3.x:
sudo python3 Desktop/helloworld.py
Muoversi fra i file
Comando | Descrizione |
---|---|
ls | Elenca i file nella directory corrente (list) |
cd | Cambia Directory. |
pwd | Directory corrente |
Manipolazione del testo
Comando | Descrizione |
---|---|
cat | Concatena i file e ne manda il contenuto nello standard output |
less | Visualizza il contenuto di un file |
nano | Editor testuale |
Gestione di file e directory
Comando | Descrizione |
---|---|
mkdir
rmdir |
Crea una directory, una cartella
Eliminare una cartella |
touch | Crea un file |
cp | Copia un file o una directory |
mv | Sposta un file o una directory |
rm | Rimuove un file o una directory |
Sistema
Comando | Descrizione |
---|---|
shutdown | Inizia la procedura di spegnimento |
reboot | Riavvia il sistema |
Utilities
Comando | Descrizione |
---|---|
history | Elenca la cronologia dei comandi digitati |
man | Apre il manuale richiesto |
ALTRI COMANDI
- head [nome file] : legge le prime righe di un testo o output
- tail [nome file] : legge le ultime righe di un file, fondamentale per i log
- grep : fondamentale per cercare un testo in un file o output , utilissimo l’articolo sulle espressioni regolari
- ps -aux | grep [nome programma]: visualizza e cerca il nome di un processo attivo
- top o htop : visualizzano l’utilizzo delle risorse dei vari processi
- killall [nome processo] : uccide tutti i task attivi con quel nome
- kill [pid] : uccide solo un processo preciso in base al suo pid
- chown [utente:gruppo] [file o cartella] : cambia il proprietario di file e cartelle
- chmod +x [file] : rende eseguibile uno script
- chmod : cambia i permessi di file e cartelle
- ssh utente@computer : si connette tramite ssh ad un computer che abbia il server ssh attivo
- ufw limit [porta] : apre una porta sul firewall software limitandone l’uso in caso di attacchi
- ssh-copy-id utente@computer : aggiunge la chiave personale all’host remoto, cosi da poter fare il login senza password
- rsync : copia i file e cartelle utile per i backup, usando ssh-copy-id si eseguono backup in remoto con semplicità
- hostname -I : visualizza tutti gli ip del RaspberryPi
- lsusb : visualizza tutti i dispositivi USB, utile per controllare le chiavette wifi
- iwconfig e ifconfig : per controllare lo stato delle schede di rete
- tar -zxvf [file.tar.gz] : estrare gli archivi
- du e df : visualizzano lo spazio usato
- ping [ip o host] : invia pacchetti per vedere se un host risponde
- nmap : scansiona la rete
- cat /proc/cpuinfo: Mostra le informazioni sulla CPU, oltre al numero della revisione e numero seriale del Raspberry Pi
- curl e wget : invia e scarica dati
- ctrl + l : svuota il terminale
- pag. giu: scrive la tilde ~
- ctrl + r : cerca nell’elenco dei comandi lanciati in precedenza
- pip e pip3 : gestiscono i moduli Python 2 e Python 3, rispettivamente
- openssl rand -base64 10 : genera un valore casuale
- certbot : abilita i certificati per i siti web locali
- netstat -lt Ci mostra quali porte sono attualmente aperte sul sistema.
- netstat -lnptu Ci mostra quali porte sono aperte sul sistema, lo stato e i processi a cui appartengono.
- netstat -plant | grep :[porta] Utile per sapere se una porta è aperta e quali processi la stanno usando
- sudo iwlist wlan0 scan Effettua una scansione delle reti wifi raggiungibili dall’interfaccia wlan0.
- sudo nano /etc/wpa_supplicant/wpa_supplicant.conf File di configurazione per le reti wireless.
- ifdown wlan0 Chiude l’interfaccia di rete specificata.
- ifup wlan0 Attiva l’interfaccia di rete specificata
- service –status-all Elenca tutti i servizi sul sistema.
- service [nome] status Mostra lo status e gli eventuali log di quel servizio.
- service [nome] start/restart/stop Avvia, riavvia o stoppa il servizio specificato.
- sudo halt: spegne il computer
- clear: Pulisce la videata bash: utile quando è piena di righe di testo
- tvservise -s: Mostra le impostazioni e modalità di uso dello schermo collegato
- help: mostrare la lista di tutti i comandi shell
- date: stampa la data corrente.
-
dpkg – -get-selections | grep XXX: mostra tutti i pacchetti installati relativi a XXX
-
vcgencmd measure_temp: mostra la temperatura della CPU.
-
vcgencmd get_mem arm && vcgencmd get_mem gpu: mostra la suddivisione della memoria tra CPU e GPU.
uptime
Se volete scoprire da quanto tempo Linux è in funzione e altre informazioni utili, vi basta utilizzare il comando uptime. In particolare, visualizzate in ordine l’ora corrente, da quanto tempo il sistema è in funzione (dato espresso in giorni, ore e minuti), quanti sono gli utenti collegati al sistema, il carico medio del sistema dell’ultimo minuto, il carico medio degli ultimi 5 minuti e il carico medio degli ultimi 15 minuti. Ecco un esempio di risultato dopo aver inviato il comando uptime: 22:21:45 up 9 days, 11:50, 12 users, load average: 0.19, 0.17, 0.15.
uname
Fra i migliori comandi da conoscere assolutamente e da utilizzare nel Terminale Linux abbiamo incluso anche uname (abbreviazione di unix name – nome unix). Grazie a questo comando è possibile avere informazioni sul computer utilizzato e sul sistema operativo installato (il tipo e la versione, l’architettura del computer e il nome di quest’ultimo in rete).
Al comando uname è possibile aggiungere anche diverse opzioni. Tramite quella -a, potete vedere tutte le informazioni conosciute, con -m il tipo di hardware, con -n il nome di rete del computer, con -r la versione del sistema operativo, con -s il tipo di sistema operativo e con -v la sub-versione dell’OS.
whereis
Fra i migliori comandi da conoscere assolutamente abbiamo deciso di riportare anche whereis. Esso consente di rintracciare la posizione esatta di un oggetto presente nella riga di comando. Ad esempio, per trovare la posizione del file binari di Firefox sul sistema operativo, utilizzate il comando whereis firefox.
locate
locate è un ottimo comando per cercare file o directory in maniera semplice e veloce. Basta semplicemente aggiungere dopo il comando il nome di ciò che si vuole cercare. Il risultato restituito sarà l’elenco di file e directory contenenti il termine cercato nel loro nome e percorso (es. locate nomefile).
free
Il comando free consente di tenere sempre sotto controllo lo spazio disponibile in RAM. Oltre a questo, esso mostra dettagli sulla memoria libera nella partizione di swap. Il comando free può essere abbinato anche a delle opzioni come -b per mostrare il risultato in byte, -k per vedere il risultato in kilobyte, -l per avere dettagli maggiori sullo stato della memoria, -t per vedere i totali di ogni colonna aggiungendo due righe alla volta e -s per ricevere, ad intervalli regolari, informazioni sulla memoria senza lanciare manualmente il comando ogni volta che si vuole. Da precisare che il parametro -s deve essere seguito dal numero di secondi (es. free -s 10).
echo
Il comando echo viene utilizzato per stampare il testo passato come argomento. Viene utilizzato principalmente nello scripting della shell e nell’elaborazione di file batch. Stampa l’output sul terminale, ma se usato con l’argomento ‘>>’, può stampare l’output in un file.
Sintassi:
1 |
echo [-option] [text/string] |
History
Quando viene eseguito nel terminale, il comando history mostra tutti i comandi che sono stati precedentemente eseguiti dall’utente.
Sintassi:
1 |
history |
Exit
Il comando exit viene utilizzato per uscire dalla shell in cui è attualmente in esecuzione. Può essere utilizzato anche per chiudere la finestra Terminale.
Sintassi:
1 |
exit |
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
Rimozione di utenti (comando userdel)
In Linux, è possibile eliminare un account utente utilizzando il comando userdel
.
Per eliminare un account utente utilizzare il comando userdel
seguito dal nome dell’utente:
Utilizzare l’opzione -r
(–remove
) per rimuovere la home directory dell’utente e lo spool di posta:
Gestione dei gruppi (comando groupadd e groupdel)
Per creare un nuovo gruppo usa il comando groupadd
seguito dal nome del gruppo:
Per rimuovere un gruppo utilizzare il comando groupdel
con il nome del gruppo come argomento:
Per aggiungere un utente esistente a un gruppo, utilizzare il comando usermod
seguito dall’opzione -G
e dal nome del gruppo:
Cancellare definitivamente un file
shred
è un comando shell che sovrascrive ripetutamente i FILE specificati in modo da rendere più difficile recuperare i dati, e opzionalmente li cancella. La sintassi del comando è:
1 |
shred [OPZIONI] FILE [...] |
Le opzioni che possiamo passare al comando sono:
-f, --force
: change permissions to allow writing if necessary-n, --iterations=N
: Overwrite N times instead of the default (25)--random-source=FILE
: get random bytes from FILE (default /dev/urandom)-s, --size=N
: shred this many bytes (suffixes like K, M, G accepted)-u, --remove
: truncate and remove file after overwriting-v, --verbose
: show progress-x, --exact
: do not round file sizes up to the next full block; this is the default for non-regular files-z, --zero
: add a final overwrite with zeros to hide shredding
Confrontare due file
diff
è un comando shell che trova la differenza tra due file. La sintassi del comando è:
1 |
diff [opzioni] da-file verso-file |
Alcune delle opzioni che possiamo passare al comando sono:
-righe
: Mostra “righe” (un intero) righe di contesto. Questa opzione non specifica da sola un formato di output; non ha nessun effetto a meno che venga combinata con-c
o-u
. Questa opzione è obsoleta. Per operare correttamente, diff ha, di solito, bisogno di almeno due righe di contesto.-a
: Tratta tutti i file come testo confrontandoli riga per riga, anche se non sembrano essere testo.-b
: Ignora differenza nella quantità di spazi bianchi.-B
: Ignora differenze che consistono solo in righe vuote (eccedenti o mancanti).--brief
: Riferisce solo se i file sono diversi, e non i particolari della differenza.-c
: Usa il formato «a contesto» (context output, in inglese).-d
: Usa un algoritmo diverso per trovare un, probabilmente, minore insieme di modifiche da fare. Questo rende diff più lento (a volte molto più lento).
alias
Il comando alias viene utilizzato per impostare nomi alternativi per i comandi. Il formato del comando è:
alias newcmdname='normalcmdname -args'
Find
Supponiamo che vogliate cercare un file realizzato tempo addietro e non vi ricordate in quale cartella sia memorizzato.
Per trovarlo è possibile utilizzare il comando find il quale trova velocemente un file (o cartella) in qualsiasi punto del sistema operativo. Per trovare un file o cartella digitate:
1 |
find <percorso> -name <nomefile> |
Per esempio:
1 |
find ~/ -name blink.c |
Ovvero, ricerca a partire dalla cartella pi un file con il nome blink.
1 2 3 4 |
pi@raspberrypi:~ $ find ~/ -name blink.c /home/pi/c/GPIO/blink.c /home/pi/blink.c pi@raspberry:~ $ |
Si osserva dal risultato che sono stati trovati due file chiamati blink dentro due cartelle diverse.
Delimitate il campo di ricerca nella vostra cartella home o pi, difficilmente salverete un file nella root. Questo velocizzerà notevolmente la ricerca.
Cercare un file con nome non definito
Il più delle volte, il nome del file da cercare non vi torna in mente e , se la sintassi del nome non è completa. find non restituirà nessun risultato.
Per superare il limite nel nome incognito, è sufficiente digitare almeno una parte ed abbinarlo con l’opzione jolly *, il quale rende più flessibile la ricerca elencando tutti i risultati che contengono i caratteri immessi nella stringa di ricerca. Digitiamo:
1 |
find <percorso> -name <nomefile*> |
Ipotizziamo di voler cercare un programma C il cui nome contiene la parola pulsante e residente nella cartella pi:
Per esempio:
1 |
find ~/ -name pul* |
Il risultato di ricerca potrebbe essere:
1 2 3 4 |
pi@raspberrypi:~ $ find ~/ -name puls* /home/pi/c/GPIO/pulsanteperprogetto.o /home/pi/basic/pulsanti.c pi@raspberry:~ $ |
si osserva dal risultato della ricerca che sono stati individuati più file che corrispondono alle tre lettere utilizzate nella stringa.
Pipe
Per leggere l’interno di una cartella il quale contenuto non entra in un’unica schermata, scrivete quanto segue:
1 |
ls -l | more |
Questo comando permette con il tasto invio\ di scorrere una riga per volta. il simbolo “|” detto pipe.
il comando pipie permette la re-direzione dell’uscita di un programma verso l’ingresso di un altro: il comando ls -l elenca una prima parte della lista in funzione della dimensione del terminale, e lo indirizza verso more attraverso il comando pipe.
IL COMANDO APT
L” Advanced Packaging Tool (conosciuto con l’acronimo APT) è il gestore standard di pacchetti software della distribuzione Debian e di tutte le sue derivate. In particolare vale la pena di ricordare Ubuntu e Raspberry come derivate di punta.
Vediamo via via le opzioni di APT più importanti:
1 |
$ sudo apt update |
Scarica la lista aggiornata dei pacchetti e delle nuove versioni disponibili nei repository. Questo comando si limita a recuperare informazioni, ma, in concreto, non installa nulla
1 |
$ sudo apt upgrade |
E’ il comando principale, poiché scarica ed installa le ultime versioni dei pacchetti, delle dipendenze ed, eventualmente, il kernel più recente. In ogni caso, non esegue mai l’avanzamento di versione.
1 |
$ sudo apt search package |
Cerca il termine «package» fra i pacchetti software disponibili nel repository. Funziona anche senza sudo.
1 |
$ sudo apt install package |
Scarica «package» e lo installa nel sistema, rendendolo disponibile all’utente.
1 |
$ sudo apt remove package |
Rimuove «package» dal sistema.
1 |
sudo apt-get dist-upgrade |
Questo comando gestisce in maniera intelligente l’update delle dipendenze, scaricando e rimuovendo in modo più aggressivo i pacchetti al fine di garantire un aggiornamento in profondità.
1 |
sudo do-release-upgrade |
Esegue l’avanzamento della versione del sistema operativo, passando quindi alla release di Raspbian più recente
1 |
sudo apt-get clean |
Rimuove dalla cache di APT ogni file .deb, anche quelli relativi ai pacchetti correntemente installati o aggiornati.
1 |
sudo apt-get autoremove |
Rimuove tutti i pacchetti che sono stati automaticamente installati per soddisfare le dipendenze di altri pacchetti, ma che ora non sono più richiesti. Questo può essere dovuto ad un cambio di dipendenze, oppure perché i pacchetti che li richiedevano sono stati rimossi. Prima di procedere con le modifiche, controllare che la lista di pacchetti indicata per la rimozione non contenga applicazioni importanti e/o che si desidera mantenere.
Installazione e disinstallazione software
Grazie provo a stamparmi il testo alcuni comandi li conosco ,a davvero pochi ho deciso di approfondire ciao
Grazie a te per averci letto 🙂 Buon lavoro, e se hai domande scrivi pure.