28.05.2013 Views

LOA HackLab - Autistici

LOA HackLab - Autistici

LOA HackLab - Autistici

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

40 C1 La Shell<br />

produrrà una sua versione potenziata e migliorata di sh chiamata bash (Bourne Again<br />

SHell, come sempre un acronimo che è più una scusa per se stesso che non per un reale<br />

significato, ma questo è il nostro mondo e i nomi li diamo noi :-). bash è migliore di sh<br />

perché offre un ambiente migliorato ed un prompt molto più estensibile, recupera nuove<br />

caratteristiche da altre shell e ne introduce di nuove.<br />

sh richiama con la sua sintassi di programmazione il Pascal. Decisamente lontano<br />

dall’amato C degli hacker di UNIX. Per questo venne creata csh, ossia la shell C.<br />

Intendiamoci: csh non è diversa da sh solo nel suo linguaggio di programmazione, ma<br />

anche in molte altre caratteristiche.<br />

In tempi recenti (ossia una decina di anni fa), è comparsa tcsh, versione rinnovata<br />

ed espansa di csh. Riportata così può sembrare una rincorsa alla shell perfetta. In realtà<br />

sh e csh sono così profondamente diverse che il loro sviluppo raramente si incrocia, salvo<br />

quando qualcuno esterno fa sì che questo succeda.<br />

È il caso di zsh e di pdksh, shell ibride che fondono elementi da bash e tcsh e ne<br />

aggiungono di propri. Il panorama è insomma vasto: per darne una panoramica generale<br />

ma non faziosa, descriviamo la sintassi e il funzionamento delle shell sh e csh in generale.<br />

Elementi di una shell 4.1.1<br />

Qualsiasi shell ha comunque alcuni elementi in comune. Ogni shell presenta all’utente una<br />

sequenza di caratteri chiamata prompt all’inizio di ogni nuova linea. Questa sequenza (a<br />

seconda di come è stata configurata) può fornire all’utente informazioni circa il suo userid,<br />

il nome della workstation sulla quale si trova (molto utile in caso di connessioni remote<br />

come vedremo più avanti) e la directory corrente.<br />

Un’altro elemento comune è il linguaggio di programmazione della shell. Ogni shell è<br />

prima di tutto un interprete di comandi. Quando richiediamo interattivamente l’esecuzione<br />

di un comando come ls -la è quasi come se stessimo scrivendo un programma di una<br />

sola linea di codice. La shell tuttavia provvede meccanismi più evoluti di programmazione<br />

come i cicli condizionali e i costrutti logici.<br />

Altre caratteristiche ormai presenti in molte shell (se non in tutte) sono caratteristiche<br />

di assistenza alla scrittura dei comandi, come la completazione automatica dei comandi<br />

o la possibilità di editing della linea di comando.<br />

4.2 sh e derivate<br />

Esaminiamo per prime la Bourne Shell e le sue derivate. . .<br />

Il Prompt 4.2.1<br />

Le Bourne Shell utilizzano la variabile PS1. Esiste poi la variabile PS2 che definisce una<br />

altro prompt usato quando la shell si aspetta ulteriore input dentro un contesto che non<br />

è quello normale (maggiori chiarimenti in seguito).<br />

Il contenuto del prompt è costituito di lettere e numeri e di caratteri speciali con<br />

significati speciali. Li riassumiamo nella tabella seguente:<br />

Carattere Significato<br />

\a il carattere ASCII del segnale acustico<br />

\d la data in formato ”Giorno/sett. Mese Giorno/mese” (es. ”Tue May 26”)<br />

\e un carattere escape ASCII (033)<br />

\h l’hostname fino al primo punto<br />

\H l’hostname completo

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!