//I cinque comandi da shell più usati

I cinque comandi da shell più usati

0 votes
Share on FacebookShare on Google+Tweet about this on TwitterEmail this to someonePrint this page

This post has already been read 1278 times!

Quando si è alle prime armi siamo portati ad osservare il cursore della shell Linux che lampeggia con paura, senza capirne le vere potenzialità, in questo articolo vi presenterò alcuni utili comandi

1) Backup

Tutti abbiamo dati che non vogliamo perdere e periodicamente facciamo dei backup (o meglio sarebbe buona norma farli) ma come? Abbiamo due strade o fare copie di intere cartelle su un dispositivo esterno disorganizzando il tutto o comprire le cartelle che ci interessando e archiviarle in modo organizzato. Il terminale mette a disposizione lo storico tar. Tar non effettua compressione ma si limita a creare un file omnicomprensivo, per la compressione possiamo appoggiarci o a gz o al più potente bz2. Ovviamente da terminale basta una solo comando:

 

tar -czvf nomefile.tar.gz nome_cartella

per i tar.gz e:

tar -cjvf file.tar.bz2 nome_cartella

per i tar.bz2

Vediamo il significato degli argomenti:

  • c: crea
  • z: comprimi in gz
  • j: comprimi in bz2
  • v: verbose mostra quello che stai facendo
  • f: non chiedere conferma

Per estrarre l’archivio ci basta sostituire l’argomento c con una x (estrai):

tar -xzvf nomefile.tar.gz

oppure:

tar -xjvf nomefile.tar.bz

 2) Di che tipo è questo file?

Diversamente da altri sistemi operativi in ambienti Unix Like l’estenzione dei file non è vincolante, anche se è buona norma usarla sempre  nel modo corretto, quindi il comando seguente viene accettato anche se sconsigliatissimo:

tar -czvf nomefile.tar cartella/

Quindi come possiamo capire che tipo di file abbiamo davanti? Ci verrebbe da pensare a un tar quindi potremmo estrarre l’archivio come visto sopra omettendo il paramentro z o j ricevendo un errore un errore come fare quindi? Ci viene in aiuto il comando file:

file nomefile.tar

nomefile.tar: gzip compressed data, from Unix, last modified: Tue Nov 15 14:06:22 2016

Che ci restituisce il tipo di file. Perchè non tar compressed data? Perchè con il comando precedente abbiamo prima creato un archivio tar e poi lo abbiamo compresso in gz. Infatti se apriamo i file tar.gz con alcuni programmi di compressione per  Windows (ad esempio 7zip) scegliendo decomprimi abbiamo un file tar, che dobbiamo “decomprimere” separatamente.

3) Grep ricerca all’interno dell’output

Grep è uno dei comandi più utilizzati in ambiente Unix Like, infatti permette di parzializzare molto facilmente un output. Gli esempi d’uso sono molteplici, riporto i primi 3 che mi vengono in mente:

  1. in un file log vogliamo vedere solo le registrazioni del giorno
  2. quali pacchetti relativi a apache ho installato?
  3. tempo fa ho lanciato un comando complesso ma me ne ricordo solo una parte

Vediamo l’esempio numero due:

$ sudo dpkg -l | grep apache

[sudo] password for fabrizio:
ii  apache2                            2.2.22-13+deb7u6             amd64        Apache HTTP Server metapackage
ii  apache2-mpm-prefork                2.2.22-13+deb7u6             amd64        Apache HTTP Server - traditional non-threaded model
ii  apache2-utils                      2.2.22-13+deb7u6             amd64        utility programs for webservers
ii  apache2.2-bin                      2.2.22-13+deb7u6             amd64        Apache HTTP Server common binary files
ii  apache2.2-common                   2.2.22-13+deb7u6             amd64        Apache HTTP Server common files
ii  libapache2-mod-php5                5.4.45-0+deb7u2              amd64        server-side, HTML-embedded scripting language (Apache 2 module)

e tre:

$ history | grep convert

 1479  sudo apt-get install convert
 1480  sudo apt-cache search convert
 1481  sudo apt-cache search convert | image
 1482  sudo apt-cache search convert | grep image
 1483  sudo apt-cache search convert | grep imagema
 1605  convert -strip -interlace Plane -gaussian-blur 0.05 -quality 20
 1690  history | grep convert
 1691  for i in *.jpg ; do echo "$i" ; convert -strip -interlace Plane -gaussian-blur 0.05 -quality 40 "$i" "$i" ; done
 1698  for i in *.jpg ; do echo "$i" ; convert -strip -interlace Plane -gaussian-blur 0.05 -quality 40 "$i" "$i" ; done
 1699  sudo for i in *.jpg ; do echo "$i" ; convert -strip -interlace Plane -gaussian-blur 0.05 -quality 40 "$i" "$i" ; done
 2005  history | grep convert

Senza grep avrei dovuto lanciare i comandi dpkg -l (list) e history e perdere la vista (che già ha i suoi problemi).

4) I miei comandi

Nel punto precedente ho usato il comando history a che serve e come si usa?
Come si vede dall’output precedente l’utente fabrizio ha lanciato ben 2005 comandi e spesso ha lanciato sempre gli stessi (fondamentalmente i comandi di questo articolo), con history posso vederli e riutilizzarli così come sono. Se nell’esempio precedente volessi rilanciare il comando numero 1479 mi basterebbe un semplice:

!1479

Bash (la shell di default di molte distribuzioni Linux) memorizza i comandi eseguiti nel file nascosto .bash_history all’intenrno della home dell’utente. Se vogliamo fare pulizia o abbiamo qualcosa da nascondere, possiamo tranquillamente vuotare o cancellare il file

5) Aggiornamento sistema e/o installazione pacchetti su distribuzioni derivate da debian (Debian, Ubuntu, LinuxMint, ecc.)

I tool grafici per gestire i pacchetti sono comodi ma in alcuni casi il tool testuale è preferibile (io sono un purista il primo programma che apro è sempre il terminale).

Aggiornamento lista pacchetti

sudo apt-get update

 Aggiornamento pacchetti

sudo apt-get dist-upgrade

Ricerca pacchetti

sudo apt-cache seach nome_software

 Installazione pacchetti

sudo apt-get install nome_pacchetto

Disinstallazione pacchetti

sudo apt-get purge nome_pacchetto

 Pulizia dipendenze non più necessarie

sudo apt-get autoremove

 Pulizia pacchetti scaricati

Tutti i pacchetti scaricati durante gli aggiornamenti vengono scritti su disco e lasciati li. Ogni tanto è buona norma pulire la cartella.

sudo apt-get clean

 Pacchetti installati

sudo dpkg -l