Comandi base shell (bash) in Linux

Prima di iniziare a vedere i comandi base voglio darti un primo comando utilizzimo, ovvero: man <comando>. Sta per manuale del comando specificato. In questo modo accedi alle informazioni deli'istruzione che vuoi eseguire. Altra utilità è digitare -h o --help dopo il comando per vedere tutte le opzioni. Passo ora ai comandi principali che userai quotidianamente.

pwd (Print Working Directory)

Tutto in Linux è un file. Ogni file è organizzato in un albero di directory gerarchico.

Filesystem in LInux
Filesystem in LInux
$ pwd

cd (Change Directory)

Ci sono due modi diversi per specificare un percorso, con percorsi assoluti e relativi.

  • Percorso assoluto: questo è il percorso dalla directory principale. root è l'inizio. La directory root è comunemente mostrata come una barra. Ogni volta che il tuo percorso inizia con / significa che stai partendo dalla root directory. Per esempio, /home/tuttofaredigitale/Desktop.
  • Percorso relativo: questo è il percorso da dove sei attualmente nel filesystem.
$ cd /home/tuttofaredigitale/prova

Nell'esempio sopra ho cambiato la mia directory a /home/tuttofaredigitale/prova.

Se da questa posizione voglio entrare nella directory testo devo fare:

$ cd testo

Può diventare piuttosto faticoso navigare sempre con percorsi assoluti e relativi, per fortuna ci sono delle scorciatoie per aiutarti.

  • . (directory corrente). Questa è la directory in cui ti trovi attualmente.
  • .. (directory dei genitori). Ti porta alla directory sopra la tua attuale.
  • ~ (directory home). Questa directory è predefinita alla tua "home directory". Come /home/tuttofaredigitale.
  • - (directory precedente). Questo ti porterà alla directory precedente in cui sei appena stato.

Per ottenere la tilde premere la combinazione di tasti Alt Gr + ì oppure Alt + 126.

$ cd .

$ cd ..

$ cd ~

$ cd -

ls (List Directories)

Come puoi vedere cosa c'è in una directory? Usando il comando ls per elencare i contenuti delle directory. Il comando ls elencherà le directory e i file nella directory corrente per impostazione predefinita, tuttavia è possibile specificare il percorso di cui si desidera elencare le directory.

$ ls

$ ls /home/pete

Come puoi immaginare non tutti i file in una directory sono visibili. I nomi dei file che iniziano con il punto sono nascosti, ed è possibile visualizzarli comunque con il comando ls e passargli il flag -a (a per tutti).

$ ls -l
Comando ls
Comando ls

touch

Un modo molto semplice per creare dei file è quello di usare il comando touch. Touch permette di creare nuovi file vuoti.

Il touch viene utilizzato anche per modificare i timestamp su file e directory esistenti. Prova una ls -l su un file e annota il timestamp, poi touch quel file ed il timestamp verrà aggiornato.

$ touch mio_file

file

Hai notato che il nome del file non è conforme alla denominazione standard come probabilmente hai visto con Windows? Normalmente ti aspetti un file chiamato foto.jpeg e ti aspetti un file immagine JPEG.

In Linux i nomi dei file non sono necessari per rappresentare il contenuto del file. Puoi creare un file chiamato tuttofaredigitale.gif che non è in realtà un GIF.

Per scoprire che tipo di file è un file usa il comando file. Ti mostrerà una descrizione del contenuto del file.

$ file macchina.gif

cat

Come leggere un file? Con il comando cat, abbreviazione di concatenato. Non solo visualizza il contenuto del file ma può combinare più file e mostrarne l'output.

$ cat file1 file2

Non è ottimo per la visualizzazione di file di grandi dimensioni ed è pensato solo per contenuti brevi.

less

Se stai visualizzando file di testo più grandi di un semplice output con il comando less il testo viene visualizzato in maniera paginata, in modo da poter navigare attraverso un file pagina per pagina.

Una volta che sei nel comando less puoi effettivamente usare altri comandi da tastiera per navigare nel file.

$ less /home/alessio/Scrivania/macchina

Usa le seguenti opzioni per navigare in less:

  • d: usato per uscire da less.
  • Pag su, pag giù, freccia su e giù: naviga usando i tasti freccia e i tasti pag.
  • g: si sposta all'inizio del file di testo.
  • G: si sposta alla fine del file di testo.
  • /search: si può cercare un testo specifico all'interno del documento di testo. Affianca le parole che si desidera cercare con /
  • h: se hai bisogno di un piccolo aiuto su come usare less.

history

Nella tua shell c'è una cronologia dei comandi che hai inserito in precedenza, puoi guardare questi comandi. Questo è molto utile quando si vuole trovare ed eseguire un comando che si è usato in precedenza senza digitarlo di nuovo.

$ history

Vuoi eseguire il comando precedente senza digitarlo di nuovo? Usa !! .

Un'altra scorciatoia della cronologia è ctrl-R, questo è il comando di ricerca inversa, se premi ctrl-R e si inizia a digitare parti del comando che si desidera ti mostrerà le corrispondenze, si può navigare attraverso di loro premendo nuovamente il tasto ctrl-R. Una volta trovato il comando che si vuole usare di nuovo, basta premere il tasto Invio.

Se il tuo terminale si sta riempiendo troppo fai pulizia con clear.

$ clear

cp (Copy)

Proprio come copiare e incollare file in altri sistemi operativi, la shell offre un modo ancora più semplice per farlo.

$ cp miofile /home/mario/Documenti/

miofile è il file che vuoi copiare e la directory è la destinazione.

È possibile copiare più file e directory e utilizzare i caratteri jolly (chiamati in gergo wildcards). Un carattere jolly è un carattere che può essere sostituito da una selezione basata su un modello, offrendo una maggiore flessibilità con le ricerche. È possibile utilizzare i caratteri jolly in ogni comando per una maggiore flessibilità.

  • * viene utilizzato per rappresentare tutti i singoli caratteri o qualsiasi stringa.
  • ? utilizzato per rappresentare un carattere.
  • [] utilizzato per rappresentare qualsiasi carattere tra parentesi.
$ cp *.jpg /home/mario/Scrivania

Un comando utile è quello di usare il flag -r, questo copierà ricorsivamente i file e le directory all'interno di una directory.

Se provi a fare cp su una directory che contiene un paio di file nella tua directory Documenti non funziona. Questo perché devi copiare i file e le directory all'interno con il comando -r.

Una cosa da notare è che se si copia un file in una directory che ha lo stesso nome del file, il file verrà sovrascritto con qualsiasi cosa si stia copiando. Se hai un file che non vuoi far sovrascrivere accidentalmente puoi usare il flag -i (interattivo) per chiedere se vuoi far sovrascrivere un file prima di effettivamente sovrascriverlo.

mv (Move)

Utilizzato per spostare i file e anche per rinominarli. Molto simile al comando cp in termini di flag e funzionalità.

È possibile rinominare i file in questo modo:

$ mv vecchio_file nuovo_file

Oppure puoi spostare un file in un'altra directory:

$ mv mio_file /home/alessio/Documenti

E spostare più di un file:

$ mv file_1 file_2 /mia-directory

È possibile rinominare anche le directory:

$ mv directory1 directory2

Come cp, se si esegue mv un file o una directory, sovrascriverà qualsiasi cosa nella stessa directory. Quindi si può usare il flag -i per chiedere prima di sovrascrivere qualsiasi cosa.

$ mv -i directory1 directory2

Puoi anche creare una copia di backup del file che stai per sovrascrivere con -b. Questo si limiterà a rinominare la vecchia versione con un ~.

$ mv -b directory1 directory2

mkdir (Make Directory)

Sicuramente avrai bisogno di creare delle cartelle (directory) per memorizzare i file su cui lavoi. Il comando mkdir (Make Directory) è utile a questo, creerà una directory se non esiste già. Si possono anche creare più directory contemporaneamente.

$ mkdir mia_cartella

È possibile creare contemporaneamente anche sottodirectory con il flag -p (parent flag).

$ mkdir -p mia_cartella/mia_pagina

rm (Remove)

Il comando rm (remove) è usato per cancellare file e directory.

$ rm file1

Fai attenzione quando utilizzi rm, non c'è nessun cestino dove si possono recuperare i file rimossi. Una volta che sono cancellati, sono andati via per sempre.

Fortunatamente ci sono alcune misure di sicurezza messe in atto, per evitare che l'utente principiante rimuova file importanti. I file protetti da scrittura ti chiederà una conferma prima di cancellarli. Stessa cosa per le directory.

Ora, se sei impavido e non ti interessa nulla di tutto ciò, -f istruisce a rm di rimuovere tutti i file, siano essi protetti da scrittura o meno, senza chiedere all'utente (a patto che abbia i permessi appropriati).

$ rm -f file1

Aggiungendo il flag -i, come molti altri comandi, ti verrà chiesto se vuoi effettivamente rimuovere i file o le directory.

$ rm -i file1

Non si può semplicemente utilizzare rm per una directory per impostazione predefinita, è necessario aggiungere il flag -r (ricorsivo) per rimuovere tutti i file e tutte le sottodirectory che può avere.

$ rm -r directory

È possibile rimuovere una directory con il comando rmdir.

$ rmdir directory

find

Avendo un bel po' di file nel tuo computer può diventare difficile cercare di trovarne uno specifico. C'è un comando che possiamo usare per questo, ovvero find.

$ find /home -name joshua.jpg

Devi specificare la directory che cerchi, cosa cerchi, in questo caso stiamo cercando di trovare un file con il nome di joshua.jpg.

Puoi specificare il tipo di file che stai cercando.

$ find /home -type d -name mia_cartella

Come puoi vedere sopra ho impostato il tipo di file (-type)che sto cercando, d per directory, ed il nome mia_cartella.

Una cosa interessante da notare è che la ricerca non si ferma alla directory che si sta cercando, ma cerca anche all'interno di qualsiasi sottodirectory che la directory può avere.

help

Linux ha alcuni ottimi strumenti integrati per aiutarti ad usare un comando o a controllare quali flag sono disponibili per un comando. Uno strumento, help, è un comando bash integrato che fornisce aiuto per altri comandi bash.

$ help pwd

Questo ti darà una descrizione e le opzioni che puoi usare. Lo stesso aiuto lo puoi avere digitando nel tuo terminale --h.

$ pwd --h

man

Rimanendo sempre in ambito aiuti, un altro comando utile è man. Ti fornisce il manuale disponibile per un determinato comando e altre informazioni.

$ man pwd

whatis

Finora hai imparato un bel po' di comandi, se hai un dubbio su ciò che fa un comando, puoi usare il comando whatis. Il comando whatis fornisce una breve descrizione dei programmi a riga di comando. Un versione ridotta di man.

$ whatis cat

alias

A volte i comandi possono diventare ripetitivi, o se hai bisogno di digitare un comando lungo molte volte, è meglio avere un alias che tu possa usare. Per creare un alias per un comando è sufficiente specificare un nome alias e impostarlo sul comando in questo modo:

$ alias joshua='ls -la'

Tieni presente che questo comando non salverà il tuo alias dopo il riavvio, quindi dovrai aggiungere un alias permanente qui ~/.bashrc . Puoi rimuovere gli alias con unalias.

exit

Per uscire dalla shell puoi usare il comando di uscita exit o logout.

$ exit