Uso della Shell
La shell è l'interprete di comandi per l'interfaccia CLI.
La shell possiede anche un linguaggio di programmazione suo proprio - shells diverse hanno linguaggi con sintassi in generale simile, ma co molte differenze nei dettagli.

Vi sono state più shell storicamente notevoli:
sh- 'Bourne' shell (1971)- un dipendente della AT&T, non Jason Bourne dei romanzi
- molto di base, se si vuole rilanciare il comand precedente, occorre ridigitarlo
- il linguaggio di scripting associato è basilare, un poco 'strano'
csh- C shell di Berkeley (circa 1981)- l'idea era di far assomigliare lo scripting al linguaggio C - non è riuscito molto bene
- il linguaggio di scripting C shell è completamente incompatibile con quello della Bourne shell
- l'interattività è migliore, ma ancora molto ostica
ksh- 'Korn' shell, nome dell'autore (AT&T, 1986)- più interattiva, con comandi tratti dall'editor 'vi'
- lo scripting è un superinsieme della Bourne shell
- è la shell di default dello Unix IBM - AIX
bash- 'Bourne' again shell.- gioco di parole, rifacimento della shell di Bourne
- l'interattività è molto migliorata
- lo scripting è un superinsieme di quello della Bourne shell ma diverso da quello della Korn shell
Fino a non tanti anni fa' il suggerimento era:
- usare la bash per comandi interattivi
- programmare i Bourne shell per la massima portabilità
Non è più vero. Tutti i Linux e anche gli Unix moderni hanno la Bourne shell: meglio usare questa sia per il comportamento interattivo che per le procedure (scripts).
Codice colore
Quando si listano dei file col comando ls, sia in Ubuntu che in Red Hat, in realtà si invoca un alias, definito come:
alias ls='ls --color=auto'
Provare a dare il comando alias e lo si vede.
Questo fa sì che i file vengano colorati diversi a seconda del loro tipo.

Struttura dei comandi

Il comando è il primo elemento della linea di comando.
Le opzioni sono precedute dal trattino:
-a -b -c = -abc = -bc -a
Le opzioni indicano un comportamento variante rispetto al comando principale.
Il trattino indicante l'opzione è stato inventato dallo Unix System V, Lo Unix di Berkeley non ce l'aveva.
Teoricamente le opzioni sono indipendenti e possono essere date in qualsiasi ordine. Non è sempre vero però, a volte le opzioni devono essere date in un ordine prestabilito e possono esserci opzioni che dipendono dalla presenza di altre, precedenti, opzioni.
A volte si hanno opzioni diverse logicamente incompatibili tra loro.
In qualche comando vi è un insieme di opzioni alternative tra cui occorre necessariamente usarne una e una sola: si chiamano opzioni chiave.
Le opzioni sono decise dai programmatori e diverse per comandi diversi: non esistono opzioni comuni a tutti i programmi.
L'unico modo è di leggere il manuale.
Da qualche anno a questa parte si è affermato un nuovo stile di opzioni, precedute da due trattini, in cui l'intera parola a seguire rappresenta l'opzione, non ogni singolo carattere.
Per esempio:
-bar = -b -a -rsono tre opzioni--barè una singola opzione
Non tutti i programmatori usano questa convenzione, però.
Esempio. Opzioni di ls
| Comando | Azione |
|---|---|
ls |
solo nomi files, multicolonna verticale |
ls -l |
tutti i principali attributi dei file |
ls -lh |
colonna dimensione in unità più 'umane' |
ls -a |
anche i file nascosti - sono nascosti i files il cui nome inizia con punto |
ls -F |
segnalini finali per indicare il tipo di file |
ls -x |
solo nomi files, multicolonna orizzontale |
ls -S |
sortizza per dimensione file |
ls -t |
sortizza per data di aggiornamento |
ls -X |
sortizza per estensione |
ls -? |
paginata di aiuto |
- Non necessariamente i nomi dei file hanno un'estensione
- L'estensione viene utilizzata dai programmi, non dal sistema operativo, oppure è per chiarezza umana
- L'estensione non è necessariamente di tre caratteri
Contenuto di un File
Mandare tutto il contenuto di un file ad output:cat file
Paginare il file:
more file- (vecchio e deprecato)less file- (il meno è meglio del più)
Principali comandi interni di less:
SPAZIO ^F PgGiu- giù di una paginab ^B PgSu- su di una paginar ^R- ridisegna il videog- va a inizio fileG- va a fine file/stringa | ?stringa- ricerca in avanti | all'indietron | N- prosegue la ricerca in avanti | all'indietro!comando- esegue un comando shell esternov- entra in editazione del file corrente- Secondo la variabile d'ambiente EDITOR
- Al termine dell'editazione si torna in less
q ZZ- esce dalla visualizzazione
Il Comando date
Il comando date ha un feature che non è una opzione, ma una stringa di formattazione: questa è racchiusa tra singoli apici e preceduta dal carattere + (più).
date- visualizza stringa di data e oradate +'%H:%M:%S'- dà ore, minuti e secondidate +'%T'- stesso effettodate +'%d/%m/%y'- dà giorno, mese e annodate +'%D'- stile americano
E' possibile, per il superuser usare il comando 'date' per settare la data e l'ura corrente:
date MMDDhhmmYYYY.ss
Esempio: date 073114352017.00
- 31 luglio 2017 alle 14:35:00
Nota
In ambiente enterprise non è una buona idea settare la data a mano.
Tutte le varianti moderne di Unix devono avere l'ora sincronizzata mondialmente a meno di mezzo secondo di scarto. Questo è possibile soltanto usando il Network Time Protocol (NTP).
Nella precedente 'arte di amministrazione di sistema', c'era la raccomandazione di compiere un reboot immediato se si cambiavano i seguenti parametri:
- ora di sistema
- nome del computer
- indirizzo IP
La ragione era che molti servizi mettono questi parametri in cache quando sono attivati, e l'unico modo di garantire la sanità del sistema era di farlo ripartire dall'inizio.
Chi non lo faceva si accorgeva che a distanza di tempo, minuti a giorni a mesi, si verificavano 'strane' inconsistenze, sempre al momento meno opportuno per un restart.
I server di oggi non devono MAI essere spenti. Devono essere installati, configurati, e lasciati da soli per anni. Qualora si verificassero dei crash dovuti a condizioni ambientali (mancanza di corrente, ecc. - che pure non devono verificarsi se c'è un'unità di continuità appropriata), i sistemi devono ristartare da soli e tornare in produzione piena da soli.
Il target di RHEL è proprio questo: si autoamministra.
Occorre comunque adottare avvedutezze:
- avere un'aggiornamento automatico della release, con opportuno contratto
- usare solo hardware approvato
- usare solo software previsto dalla distribuzione, o software approvato dalla Red Hat (Java, DB Oracle, ecc.)
- monitorare automaticamente da remoto lo stato del server con utilities che forniscano allerte automatiche
Red Hat Enterprise Server possiede ambienti che informano i servizi all'atto dei cambiamenti dei parametri principali di sistema, consentendo il loro aggiornamento senza bisogno di un reboot.