Prima di cominciare...

07 Feb 2015

… con Ruby, dobbiamo prendere confidenza con quelli che sono gli strumenti che utilizzeremo per sviluppare i nostri algoritmi. In questo post parleremo della console e dell’interprete irb, che ci accompagneranno nell’arco di questo corso.

Questo blog…

… contiene parte di quello che verra’ detto a lezione. Non abbiamo tempo di fornire tutto qui, essendo una completa perdita di tempo. Su internet troverete tantissime guide e riferimenti che sono sicuramente piu’ completi e formali di quanto possiate trovare qui dentro. Nelle pagine saranno presentati alcuni degli script, e avete la possibilita’ (limitata) di eseguirli all’interno del browser.

Alcuni riferimenti consigliabili sono:

Ruby (in italiano)

Ruby (in inglese)

Il punto di riferimento del linguaggio rimane la documentazione ufficiale del linguaggio Ruby (in inglese), che vi invito a consultare (e ad imparare a consultare).

Linux

Il teminale

Il terminale e’ uno strumento di altissima utilita’, lo useremo per creare file, navigare tra le directory ed eseguire i file .rb che conterranno gli script Ruby.

Imparare ad utilizzare questo strumento puo’ velocizzare il vostro lavoro ordinario. Per motivi di praticita’, ci concentriamo sulla console di un sistema Unix, in particolare Linux Ubuntu, distribuzione installata nelle postazioni di laboratorio.

Potete aprire un terminale tramite il menu Accessori → Terminale. Vi si presentera’ una schermata attraverso la quale inserire i comandi. La linea di inserimento (linea di comando, preceduta dal prompt dei comandi) contiene alcune informazioni utili, se si sanno leggere. Potreste trovare ad esempio:

nome.cognome@hostname:~$

Ci sono almeno quattro informazioni molto importanti nel prompt:

I comandi sono case-sensitive. Fate attenzione a Maiuscole e minuscole.

Anche gli spazi possono essere problematici, quindi cercate di utilizzare nomi per i file e per le directory senza spazi.

All’interno dei posts, la linea di comando e’ preceduta dal carattere:

questi caratteri non devono essere digitati, ma li troverete gia’ a schermo, e vi aiuteranno a capire con che tipo di utente state lavorando.

I comandi che utilizzeremo sono:

cd: change directory

Ci permette di spostarci da una directory all’altra (le directory sono assimilabili alle cartelle dei sistemi operativi Windows). La sintassi del comando e’ molto semplice:

$ cd /home/$USER/Documents/Books

Il primo (e unico) argomento rapppresenta la posizione della directory in cui ci vogliamo spostare. Le directory hanno una struttura ad albero, e ogni nodo e’ identificato dal carattere /.

Nel comando precedente ci siamo spostati dalla directory in cui ci trovavamo alla directory /home/$USER/Documents. Questo tipo di spostamento e’ detto a path assoluta, perche’ comincia dalla radice dell’albero, che e’ il primo / all’inizio della path.

Esistono spostamenti di tipo relativo, ovvero aventi come base di spostamento la directory nella quale ci troviamo. Se ad esempio ci troviamo nella directory /home/$USER e volessimo spostarci nella directory /home/$USER/Documents/Books con uno spostamento relativo potremmo usare il comando:

$ cd Documents/Books

Fate caso alla assenza della / a sinistra della path: questo indica alla console che stiamo effettuando uno spostamento relativo.

Esistono due directory particolari, che troviamo definite ovunque nell’albero delle directory:

Se ci troviamo nella directory /home/$USER/Documents/Books e vogliamo andare nella directory /home/$USER/Documents mediante uno spostamento relativo, possiamo utilizzare il comando:

$ cd ..

Il comando cd senza argomenti effettua sempre uno spostamento nella directory /home/$USER, ovvero vi riporta sempre a casa…

Non potete spostarvi in tutte le directory a vostro piacimento! Ad esempio non potete andare dentro le home di altri utenti.

ls: list

Mostra la lista dei file e delle directory contenuti nella directory specificata come argomento (o nella directory corrente, come nell’esempio qui sotto).

$ ls

cp e mv: copy e move

Sono comandi molto simili, e a livello logico l’equivalente di copia e incolla della interfaccia grafica di ogni moderno sistema operativo:

$ cp origine.txt /home/$USER/Documents/destinazione.txt

esegue la copia di un file, origine.txt, presente nella directory corrente (specificato mediante una path relativa) nella posizione /home/$USER/Documents/destinazione.txt (quindi specificato mediante path assoluta). Ovviamente, il nuovo file copiato avra’ come nome destinazione.txt.

Per poter copiare intere directory e’ necessiaro utilizzare la opzione -r

$ mv origine.txt /home/$USER/Documents/destinazione.txt

sposta origine.txt, presente nella directory corrente (specificato mediante una path relativa) nella posizione /home/$USER/Documents/destinazione.txt (quindi specificato mediante path assoluta). Ovviamente, il nuovo file avra’ come nome destinazione.txt.

Per poter spostare intere directory e’ necessiaro utilizzare la opzione -r, ad esempio

$ mv -r $HOME/origine $HOME/destinazione

mv puo’ essere utilizzato anche per rinominare i file, ad esempio: mv old.rb new.rb.

Per copiare o spostare file/directory

rm: remove

rm rimuove un file, sempre che l’utente abbia i permessi per poterlo fare. Per poter rimuovere intere directory e tutto il loro contenuto e’ necessario usare la opzione -rf.

Ad esempio per rimuovere la directory bad_directory:

$ rm -rf ./bad_directory

chmod: change mode

Questo comando ci servira’ per rendere i nostri script eseguibili, ad esempio:

$ chmod +x primo_script.rb

In questo modo potremmo avviare direttamente lo script (se correttamente scritto) senza doverlo specificare come argomento dell’interprete Ruby.

Non approfondiamo ulteriormente lo scopo del comando chmod.

man: manual

Uno dei comandi piu’ importanti della lista. Specificare man seguito da un comando (o da un programma) apre una pagina del manuale, nel quale e’ spiegato, in modo dettagliato:

La maggior parte dei comandi espone delle flag specifiche per ottenere un aiuto rapido (e piu’ conciso del manuale), specificando -h e --help. Ad esempio:

$ rm -h

stampa a schermo una descrizione e l’uso del comando remove.

L’interprete interattivo di Ruby irb

Il pacchetto di installazione di Ruby mette a disposizione un interprete interattivo. L’inserimento del codice avviene una riga alla volta, e l’interprete restituisce a schermo la rappresentazione interna di tale inserimento. Per avviarlo:

$ irb

il prompt dovrebbe cambiare in:

irb(main):001:1>