giovedì 21 febbraio 2013

Termimecum #01
Intro.1 - Propositi, convenzioni tipografiche, sintassi usata


TM#01@Intro.1_Convenzioni
Prende il via Termimecum. Piccolissima introduzione generale, spiegazione della "tipografia" del vademecum, della sintassi e della colorazione utilizzate per (spero) rendere più chiare le cose.


Termimecum è, almeno nelle mie intenzioni, un vademecum del terminale Linux. L'idea è quella di avere un qualcosa che ci aiuti nell'uso del terminale, strumento importantissimo ma un po' ostico se non si è abituati al suo uso.
La presente "pagina", indicizzata come 'Intro.1', è un'introduzione generica sia a questa rubrica che al mezzo di cui tratta.


Ripeto, perchè credo sia importante, quanto scritto nel post 'Post-it sulle prossime "uscite"':
Il fatto è che l'uso del terminale non solo a volte è indispensabile, ma quasi sempre è conveniente: infatti l'esecuzione dei comandi è spesso più leggera, veloce, controllabile (se si sa usare il terminale, ovviamente), versatile e, ultima voce ma forse più importante, sicura.

E poi, cosa che viene (giustamente) sempre tirata in ballo quando si affronta l'argomento, succede a volte che il terminale sia la nostra "ultima risorsa".Ci si può infatti ritrovare infatti in situazioni di impallamento - effettivo oppure temporaneo - instabilità del sistema, intasamento della memoria, ecc... insomma situazioni nelle quali l'interfaccia grafica non solo non è d'aiuto, ma anzi è, con la sua pesantezza e nonostante la sua intuitività, d'intralcio - quando non la causa prima del casino in corso :|

Allora credo sia giusto e utile avere una sorta di vademecum sui comandi del terminale. Un qualcosa che possa aiutarci sia nelle normali operazioni quotidiane, sia per compiti meno usuali e sia, come si diceva sopra, in situazioni di emergenza; andando a recuperare dati prima che sia troppo tardi, o chiudere i programmi che causano instabilità prima che mandino in crash l'intero sistema, ecc...


  • Etichette
Le etichette di ricerca per questa serie di appunti saranno: bash, comandi, shell, termimecum, terminale


  • Propositi
Il contenuto di Termimecum deriva da una serie di note che ho preso nel momento in cui trovavo la soluzione, attraverso l'uso del terminale, a qualche piccolo (ma a volte anche meno piccolo) problema.
Per questo motivo chiedo venia in anticipo per due mancanze:
  1. non è una guida, ma una serie di appunti, quindi non contiene comandi basilari, nè spiegazioni esaurienti
  2. cercherò di generalizzare, ma sicuramente vi saranno varianti dipendenti dal sistema, dalla distribuzione e da altri fattori personali che non saprò/potrò eliminare; ciò che scrivo si basa sull'esperienza diretta e pertanto limitata
In linea di massima, quindi, i comandi verranno indicati con parametri (se presenti) ed altre opzioni (idem) già impostate per un determinato uso/layout. Per i comandi più utili ed usati è possibile qualche approfondimento.

Tenete SEMPRE a mente che, nella maggior parte dei casi, esiste una Bibbia per i comandi della shell: il comando man.
Anticipando un po' uno degli argomenti successivi (le convenzioni e la sintassi), ecco la sintassi (semplificata) di 'man':

$ man [SEZ] { NOME_COMANDO }



  • La Pagina: indice, sezioni, indicizzazione dei comandi
Con lo svilupparsi del progetto nascerà e si accrescera anche la Pagina dedicata.
In essa potrete trova l'indice generale, la cui struttura è causa della nomenclatura degli articoli.
Ogni articolo, infatti, presenterà in prima riga, con un rientro e scritto in questo colore, il "codice" dell'articolo stesso, che servirà come riferimento e per meglio individuarlo all'interno dell'indice generale.
La struttura è la seguente:

TM#<numero_pagina>@<sigla_sezione>.<numero_articolo>_<nome_articolo>
TM = TermiMecum
numero_pagina = numero progressivo generale degli articoli
sigla_sezione = sigla della sezione a cui appartiene l'articolo (vedere la Pagina)
numero_articolo = numero dell'articolo all'interno della sezione
nome_articolo = nome indicativo dell'articolo, il contenuto può essere più ampio
Le sezioni servono per identificare le categorie degli articoli: di introduzione (come questo), su comandi per la manipolazione di file, per la gestione del sistema, ecc...
L'elenco completo delle sezioni, con le loro rispettive sigle, potete trovarlo QUI.

L'indicizzazione dei comandi è una perversa trovata che mi fa accapponare la pelle per il lavoro iniziale, ma credo che con l'aumentare dei comandi trattati darà i suoi frutti.
Si tratta "semplicemente" di assegnare un codicillo ('indice' del comando) ad ogni comando analizzato, cosicchè lo si possa riferire/ritrovare più semplicemente. La struttura del codice sarà molto banale:

(<lettera_indice><xx>)
lettera_indice = l'iniziale minuscola della sezione cui appartiene il comando
xx = numero progressivo (di due cifre)
Le parentesi sono parte vera e propria del codice, per cui verranno sempre indicate, anche nel testo semplice. Spero che questo aiuti alla loro evidenziazione e ad evitare ambiguità.


  • Sintassi, sintassi "interna" e colorazione
Per la spiegazione dei comandi ho cercato di istituire un'highlighting che fosse semplice ma esplicativa; soprattutto spero davvero non dia addito ad ambiguità.
Per l'illustrazione di una sintassi, l'esempio di scrittura di un comando e di un output userò una "cornicetta terminale", all'interno della quale vi sarà il testo. All'interno di questo 'HTML-terminal' la colorazione, sia che si tratti di sintassi, esempio o output, sarà la seguente:

(i1) /bin$ ls -al t*
//di seguito l'output
-rwxr-xr-x 1 root root 14672 mar 30 2012 tailf
-rwxr-xr-x 1 root root 307760 mar 31 2012 tar
-rwxr-xr-x 1 root root 10304 mar 29 2012 tempfile
-rwxr-xr-x 1 root root 60112 nov 19 23:25 touch
-rwxr-xr-x 1 root root 22896 nov 19 23:25 true
/* ovviamente è solo un esempio
il contenuto potrebbe essere diverso */

GRIGIO - indice del comando
BIANCO - locazione (se specificamente richiesta) e carattere utente ($=user | #=root)
VERDE - scrittura del comando, con eventuali parametri ed opzioni
ARANCIO - output e commenti (con sintassi 'C')

Per quel che concerne la sintassi, preciso innanzitutto che NON illustrerò la sintassi vera e propria del comando - ricordo che per questo è certamente meglio l'uso di 'man' - ma quella inerente all'uso specifico che se ne fa in Termimecum o qualche piccola estensione; sarà dunque una sintassi semplificata.
Corrisponde in gran parte alla sintassi standard, usata anche da 'man'...

$ cp [-abdblr] [OPTION & OPTION2] {IN_FILE | IN_PATHFILE} {OUT_FILE}

In grassetto ciò che va scritto letteralmente
Tra parentesi quadre '[...]' comandi opzionali; le opzioni più utili/usate in Terminecum possono essere esplicitate (prima parentesi dell'esempio)
Tra parentesi graffe '{...}' comandi/espressioni obbligatorie
Il segno '&' (and) indica parametri/espressioni accoppiabili
Il segno '|' (or) indica parametri/espressioni mutuamente esclusive
Le espressioni da interpretare (variabili) vengono sempre scritte tutte in maiuscolo
Le espressioni ripetibili vengono scritte, oltre che in grassetto, tutte in minuscolo, a meno che non sia espressamente richiesta la lettera maiuscola
Nel caso di opzioni accoppiabili in modo separato o raggruppate indifferentemente (com'è tipico dei parametri Linux) il segno '&' sarà omesso. In caso di variabili obbligatorie che siano collegate ad espressioni fisse (ad esempio: if=FILE del comando 'dd') le parentesi graffe saranno omesse.
Il segno '&' indica in effetti 'and/or'; nel caso di parametri opzionali che implichino, se usati, obbligatoriamente altri parametri, i secondi saranno indicati all'interno di parentesi graffe, in questo modo: [OPTION {OPTION2}].
Viceversa, ovvero parametri obbligatori che siano collegati ad altri opzionali, implicheranno sempre l'uso appropriato delle parentesi: {OPTION [OPTION]}.
Ad ogni modo mi sembra tutto molto semplice; più semplice da usare che da spiegare :)

Infine, la sintassi interna.
Utilizzo qui questo termine (e forse mai più) per identificare quelle brevissime spiegazioni sintattiche riguardo ad un contesto parziale. Cioè, nella descrizione della sintassi generale di un comando, per quanto come detto si avrà una descrizione parziale, cercherò di essere rigoroso.
Per spiegare invece l'uso di un singolo parametro, esplicitare i casi di un'opzione, definire una sintassi del testo di Termimecum (come fatto poco sopra), userò questa 'sintassi interna' già vista, che si avvale del testo centrato per l'evidenziazione:

ls <percorso>/<nome_file>
ciò che va scritto letteralmente rimane scritto in grassetto
le espressioni da interpretare vengono racchiuse da parentesi angolari '<...>'


Come avrete notato, le spiegazioni della sintassi (sia reale che interna), ovvero come interpretare le variabili ed altre descrizioni, si trovano subito sotto, in carattere più piccolo e con rientro.
Quando la sintassi interna dovesse venire utilizzata all'interno del testo, sarà delimitata dalle virgolette di etichetta '...' e scritta interamente in corsivo.
Che sia in-line, nell'HTML-terminal o nella sintassi interna, la pressione di un tasto (o una combinazione di tasti) sarà indicata in colore ciano e tra parentesi quadre [...] 

Bene, non c'è altro da dire per ora. Anche perchè è più lungo quest'articolo di tutto il resto XD
In realtà credo sia tutto molto intuitivo, per cui...

...alla prossima!

Nessun commento:

Posta un commento