Sito per neoutenti GNU/Linux
Avviso per una corretta visualizzazione del sito
scritta new animata
Last updated: June 02 2015 10:39:07.
Esegui il Login, oppure Registrati,Hai dimenticato la password?
My GPG Public Key logo GnuPG
Scarica direttamente la mia chiave pubblica GPG
Gli utenti online sono ora: 1

Thu, 23 Nov 2017 19:24:28

gif
Questo sito ha avuto 15860 visite!
Il tuo indrizzo IP è 162.158.79.147.
Il tuo browser è unrecognized in esecuzione su unrecognized

foto in spiaggia del sottoscritto e chicchetta

lola e minnie abbracciate
immagine della shellTerminale-Lezione n.3


Come vi ho accennato precedentemente vedremo ora come costruire blocchi, ovvero come ottenere utili funzionalità con una serie di comandi eseguiti in sequenza: inizierei con il simbolo ; che permette di eseguire una serie di comandi sequenzialmente ottenendo così un buon risparmio di tempo.

Poniamo il caso di dover scompattare un file .zip (che chiameremo Pearl_Jam.zip faccina_che_ride_di_colore_viola, per gli amanti della buona musica) di magari notevoli dimensioni che si trova nella nostra Home, creando così una cartella contenente i file estratti, spostare la cartella in un'altra che chiameremo Musica, ed eliminare infine il file .zip originario; i comandi da dare in sequenza sarebbero:

  1. unzip Pearl_Jam.zip
  2. mv Pearl_Jam Musica/
  3. rm Pearl_Jam.zip

Ora possiamo risparmiarci un pò di tempo (soprattutto nel caso che la directory dei Pearl Jam sia bella piena di canzoni e perchè no? pure di video faccine_che_ride_con_i_dentoni_in_bella_vista!) dando i suddetti comandi uno dopo l'altro separandoli con ; (punto e virgola) su un'unica riga della shell, in altri termini accodiamo i comandi creando una pila o stack con un semplice punto e virgola.
Riprendendo l'esempio di prima allora daremo dal terminale i comandi in questa forma:

  1. unzip Pearl_Jam.zip ; mv Pearl_Jam Musica/ ; rm Pearl_Jam.zip

Così facendo ogni comando verrà eseguito in ordine rigorosamente sequenziale, ma indipendentemente dall'esito di quello precedente. Così si possono ottenere notevoli risparmi di tempo, ma attenzione ad impilare i comandi: infatti si tratta di un'operazione delicata se, come in questo caso, vogliamo spostare e cancellare qualcosa. Non è raro andare incontro a spiacevoli sorprese anche semplicemente sbagliando un comando, ed è un attimo poi ritrovarsi senza la nostra bella cartella dei Pearl Jam, che era piena zeppa di canzoni e video di concerti!faccina_stupita

Infatti se scrivessimo:

   unzip/Documenti/Pearl_Jam.zip

invece del corretto:

    unzip Pearl_Jam.zip

ecco che la shell non trovando la cartella in Documenti andrebbe avanti e passerebbe al comando successivo ed anche qui non potrebbe ovviamente spostare nulla perchè non avrebbe nulla da spostare, esaminerebbe l'ultimo comando ovvero il: rm Pearl_Jam.zip, che invece troverebbe, ed ecco allora che il file verrebbe eliminato inesorabilmente!!!

Questo per dimostrare quanto sia facile commettere errori; ed ecco il motivo per cui preferisco usare il comando && che esegue i comandi ugualmente uno dopo l'altro, ma solo se quello precedente non ha avuto problemi, ovvero ha avuto esito positivo. In sintesi se un comando fallisce si fermano tutti i successivi. Ecco che se allora riprendiamo l'esempio di prima:

    unzip Documenti/Pearl_Jam.zip && mv Pearl_Jam Musica/ && rm Pearl_Jam.zip

La shell si bloccherà subito segnalando quanto segue:

   unzip: cannot find or open Documenti/Pearl_Jam.zip, Documenti/Pearl_Jam.zip.zip or Documenti/Pearl_Jam.zip.ZIP.

Ecco perciò risolto il problema.rana_sorridente
Infatti ora si può tranquillamente riprovare dato che il file .zip esiste ancora (chiaramente nella nostra Home) e non è stato cancellato come nell'esempio sopra.

Dove sicuramente questo comando risulta in assoluto più utile è quando vogliamo aggiornare il nostro Ubuntu da shell, dove dobbiamo prima aggiornare l'elenco dei pacchetti software presenti nei nostri repository e poi si cercano eventuali aggiornamenti. In sintesi bisogna dare i seguenti due comandi, che possiamo accodare essendo certi che il secondo verrà eseguito solo dopo il buon esito del primo:

    sudo apt-get update && sudo apt-get upgrade

Ora mi pare chiaro che && è sicuramente una soluzione migliore rispetto a ; soprattutto se uno dei comandi è rm , dove c'è il rischio di cancellazioni accidentali; con && si può stare tranquilli e tornare sempre indietro.

Direi di fermarci qui per il momento, poichè in seguito dovremo analizzare i flussi di input/output per capire bene cosa vuol dire creare una stack.



Potete anche, se volete,

icona standard per feed rss



Questo sito è prodotto da Jam1, autore e curatore di testi e immagini. Questo sito fa uso dei CSS ed è conforme alla specifica XHTML 1.0, secondo le direttive del W3C.