CAPITOLO 1 L’essenza di UNIX Dominion Consulting è una società specializzata in sistemi di gestione per grandi alberghi e strutture turistiche. I suoi fondatori, Eli Addison e Carmen Scott, a un certo punto si rendono conto che sarebbe necessario un sistema informatico interno che permetta ai dipendenti di svolgere il lavoro come gruppo. UNIX è un sistema operativo concepito per lo sviluppo di software in collaborazione e per consentire ai vari utenti di lavorare insieme e condividere informazioni in modo controllato. Dominion vi ha chiesto di imparare a utilizzare il sistema UNIX, cercando in particolare di apprendere le nozioni di base relative ai sistemi operativi in generale e di UNIX in modo più specifico. Essi quindi vi chiedono di accedere a UNIX e di imparare a utilizzare alcuni comandi fondamentali. Cap01d.p65 1 Caso 15/12/00, 9.55 2 CAPITOLO 1 SEZIONE A Primi passi Obiettivi • • • • • • • • • • Definizione dei sistemi operativi in generale e di UNIX in particolare Descrizione di Linux e del suo rapporto con UNIX Spiegazione della funzione della shell di UNIX Descrizione delle opzioni per la connessione a un sistema UNIX Definizione della sintassi usata per l’immissione di comandi UNIX Uso dei comandi date, cal, who, man, whatis e clear Esecuzione di alcune operazioni di base di editing sulla linea di comando Immissione di più comandi sulla stessa linea di comando Richiamo di un comando dalla cronologia dei comandi Connessione e disconnessione da UNIX Questo capitolo offre un’introduzione a UNIX e ad alcuni suoi comandi di base, spiegando inoltre come utilizzare Linux per imparare UNIX. Linux è una variante di UNIX che è possibile eseguire su PC con processore Intel e che utilizza il medesimo file system e gli stessi comandi di UNIX, che in genere viene eseguito su una rete. Dopo aver analizzato le informazioni di fondo essenziali di questo capitolo, inizierete a lavorare con UNIX; se avete già una certa dimestichezza con i sistemi operativi in generale, parte di questo discorso introduttivo allora potrebbe rappresentare un’occasione di rivedere quanto già conoscete. Questo capitolo offre anche molte opportunità di fare pratica sul campo con i comandi UNIX, principalmente nel contesto del caso descritto in apertura, che rispecchia una situazione realistica per le attività di questo capitolo. Imparerete pertanto a utilizzare diversi comandi di base in modo da raggiungere gli obiettivi richiesti in questo caso di studio. Introduzione ai sistemi operativi Un sistema operativo (SO) è il programma più importante che viene eseguito su un computer. I sistemi operativi permettono di memorizzare informazioni, elaborare dati grezzi, utilizzare software applicativo, compilare programmi e accedere all’hardware collegato al computer, come una stampante o la tastiera. In breve il sistema operativo è il programma più importante ed essenziale del computer, in quanto ne controlla tutte le risorse e fornisce la base sulla quale è possibile eseguire programmi applicativi o scriverne di propri. La Figura 1.1 mostra un modello di sistema operativo. Cap01d.p65 2 15/12/00, 9.55 3 L’ESSENZA DI UNIX programmatori programmi applicativi utenti Sistema operativo monitor tastiera mouse stampante disco Hardware Figura 1.1 Modello di sistema operativo. Diversi sistemi di computer possono avere diversi sistemi operativi. Per esempio, i sistemi operativi più noti per i personal computer sono DOS, OS/2 e Windows, mentre i mainframe possono utilizzare il sistema operativo VAX di Digital Equipment o il System 370 di IBM. Anche per le reti esistono sistemi operativi specifici, come Linux e Windows NT. UNIX è il sistema operativo più importante per workstation, ossia potenti computer monoutente interconnessi attraverso una rete locale. Sistemi operativi per PC Un personal computer o PC è in genere una macchina indipendente, come un computer desktop o portatile. Il sistema operativo del PC quindi svolge tutte le operazioni di input, output, elaborazione e memorizzazione su un singolo computer. La Figura 1.2 identifica alcuni dei più noti sistemi operativi per PC. Sistemi operativi per mainframe Un sistema operativo per mainframe controlla un sistema mainframe, ossia un grande sistema con più processori che svolgono operazioni di input, output, elaborazione e memorizzazione per molti utenti. Storicamente i mainframe sono sempre stati diffusi nelle grandi aziende e per l’elaborazione a livello industriale. La Figura 1.3 mostra alcuni dei più diffusi sistemi operativi per mainframe. Sistemi operativi di rete Un rete di computer combina la praticità e la familiarità dei personal computer con la potenza di elaborazione dei mainframe; una rete infatti permette a più utenti di condividere risorse e file. Un sistema operativo di rete controlla le operazioni di un computer server, a volte chiamato anche computer host, che accetta richieste dai programmi degli utenti in Cap01d.p65 3 15/12/00, 9.55 4 CAPITOLO 1 Figura 1.2 Alcuni dei più noti sistemi operativi per PC. Figura 1.3 Sistemi operativi per mainframe. esecuzione su altre macchine, chiamate client. La Figura 1.4 illustra il rapporto esistente tra server e client di una rete. In un approccio centralizzato tutti i dati e le applicazioni degli utenti si trovano sul server, pertanto questa rete prende il nome di rete con server. L’amministratore del sistema protegge tutte le informazioni della rete proteggendo il server e può eseguire facilmente le operazioni di manutenzione delle applicazioni degli utenti e il backup agendo direttamente sul server. Se però il server si guasta, tutta la rete è bloccata. Le reti peer-to-peer, più adatte alle reti di piccole dimensioni, sono più distribuite rispetto alle reti con server. In una configurazione peer-to-peer ogni sistema della rete si comporta sia come server sia come client e i dati e le applicazioni non sono poste su un’unità centrale, bensì sono dislocate sui singoli sistemi della rete. Gli aggiornamenti del software e le operazioni di backup devono avvenire localmente su ciascun computer. La Cap01d.p65 4 15/12/00, 9.55 L’ESSENZA DI UNIX Figura 1.4 5 Rapporto tra server e client su una rete. protezione viene implementata su ciascun computer e pertanto non è uniforme, perché ogni utente della rete è in una certa misura responsabile dell’amministrazione del proprio sistema. Nonostante gli svantaggi che una rete peer-to-peer rappresenta per l’amministratore del sistema, i singoli utenti non dipendono da un server centrale, quindi se un computer della rete si guasta, gli altri sistemi continuano a funzionare senza problemi. Introduzione al sistema operativo UNIX UNIX è un sistema operativo multiutente e multitasking con funzioni di rete integrate e può essere utilizzato su sistemi che hanno diverse funzioni. • Come server dedicati in una rete con server. • Come workstation client collegate a una rete con server. • Come workstation client/server collegate a una rete peer-to-peer. • Come workstation indipendenti non collegate a una rete. UNIX è un sistema multiutente che permette a più persone di accedere contemporaneamente e condividere le risorse di un server. Gli utenti devono connettersi digitando il loro nome utente e una password prima di poter usare un sistema multiutente; questa procedura di convalida protegge la riservatezza di ogni utente e salvaguarda il sistema dagli usi non autorizzati. Nel caso di UNIX si parla anche di sistema multitasking perché consente di eseguire più di un programma allo stesso tempo; per esempio, è possibile aggiornare i record di un database mentre la stampa del documento avviene in background. UNIX è anche un sistema operativo portabile, il che significa che può essere utilizzato su diversi ambienti di elaborazione. UNIX viene infatti eseguito con una varietà di computer maggiore rispetto alle possibilità offerte da altri sistemi operativi. Viene anche eseguito su Internet per regolare programmi molti diffusi come File Transfer Protocol (FTP), un protocollo Internet utilizzato per l’invio di file, e Telnet, un programma Internet di emulazione di terminale. Dominion Consulting ha scelto UNIX come sistema operativo per il proprio sistema informatico perché molti dei suoi dipendenti devono lavorare su più computer che svolgono contemporaneamente attività diverse. Cap01d.p65 5 15/12/00, 9.55 6 CAPITOLO 1 Breve storia di UNIX Lo sviluppo originale di UNIX all’inizio degli anni Settanta si deve a un gruppo di programmatori dei Bell Labs, che distribuirono il sistema operativo sotto forma di codice sorgente in modo che chiunque utilizzasse UNIX potesse personalizzarlo in base alle proprie esigenze. Attratte dalla sua portabilità e dal basso costo, le università iniziarono a modificare il codice di UNIX per farlo funzionare su computer diversi, il che alla fine portò a due versioni standard del sistema: AT&T produsse il System V mentre la University of California di Berkeley sviluppò il BSD. Dato che sfrutta caratteristiche di entrambe le versioni, Linux può essere considerato una versione più integrata di UNIX rispetto ai suoi predecessori. Attualmente il progetto POSIX, uno sforzo combinato di esperti del mondo dell’industria, dell’ambiente accademico e del governo, sta lavorando alla standardizzazione di UNIX. Concetti di UNIX UNIX è stato un pioniere nella diffusione di concetti che poi sono stati applicati ad altri sistemi operativi. Per esempio, i sistemi DOS e Windows di Microsoft hanno adottato dei concetti del progetto originale di UNIX, come l’idea di shell, un’interfaccia tra l’utente e il sistema operativo, e la struttura gerarchica di directory e sottodirectory. Anche il concetto di componenti stratificati che costituiscono un sistema operativo ha avuto origine con UNIX. Gli strati di software circondano il nucleo interno del computer per proteggere i suoi componenti hardware e software vitali e per isolare il nucleo del sistema dai suoi utenti. La Figura 1.5 illustra la struttura piramidale formata dagli strati del sistema UNIX. Alla base della piramide troviamo l’hardware, al vertice gli utenti; gli strati forniscono isolamento, garantendo la sicurezza del sistema e la riservatezza dell’utente. Il kernel è il Utenti accesso in modalità utente Shell accesso in modalità kernel Sistema operativo UNIX (kernel) Hardware Figura 1.5 Cap01d.p65 Strati di un sistema UNIX. 6 15/12/00, 9.55 L’ESSENZA DI UNIX 7 sistema operativo di base, che interagisce direttamente con l’hardware e fornisce servizi ai programmi degli utenti: è accessibile solo tramite la modalità kernel, che è riservata all’amministratore di sistema. Ciò impedisce a comandi non autorizzati di passare allo strato di fondazione o all’hardware che sostiene l’intera struttura di UNIX. La modalità utente fornice l’accesso agli strati superiori, nei quali si trova tutto il software applicativo. Questo approccio stratificato, come tutte le altre caratteristiche di UNIX, è stato concepito da programmatori in modo che i programmatori lo utilizzassero nello sviluppo di software complesso. Dato che UNIX è stato scritto nel linguaggio di programmazione C, esso può essere installato su qualunque computer che disponga di un compilatore C. La sua portabilità, flessibilità e potenza fanno di UNIX una scelta logica per i sistemi operativi di rete. E grazie all’emergere di una nuova versione per PC chiamata Linux, la popolarità di UNIX è in aumento. Linux e UNIX Linux è un sistema operativo di tipo UNIX che venne rilasciato al pubblico gratuitamente nel 1991 da parte di Linus Torvalds, il suo ideatore originale. Attualmente invece esistono molte società che distribuiscono versioni professionali di Linux. Linux offre tutta la complessità di UNIX a costo zero: è abbastanza robusto da gestire attività impegnative con tutte le funzionalità di rete delle versioni commerciali di UNIX. Potete installare Linux su un PC, dove può coesistere con altri sistemi operativi, e mettere alla prova la vostra capacità di utilizzare UNIX. Tutte queste caratteristiche rendono Linux un modo eccellente per imparare UNIX, anche quando si ha accesso ad altri computer che eseguono UNIX. Introduzione alle shell di UNIX La shell è un programma UNIX che interpreta i comandi immessi dalla tastiera. UNIX offre diverse shell, tra le quali citiamo la shell Bourne, la shell Korn e la shell C. Fu Steve Bourne agli AT&T Bell Laboratories a sviluppare la shell Bourne come primo elaboratore di comandi per UNIX. Un altro dipendente dei Bell Labs, David Korn, sviluppò invece la shell Korn: quest’ultima, compatibile con la shell Bourne, include molte estensioni, come una funzione cronologica che permette di utilizzare una combinazione rapida di tasti per rieseguire comandi immessi in precedenza. La shell C invece è concepita per i programmatori C. Linux utilizza la shell Bash freeware come interprete dei comandi predefinito; il suo nome è l’acronimo di “Bourne Again Shell” e include le caratteristiche migliori delle shell Korn e Bourne. Indipendentemente dalla shell utilizzata, la vostra comunicazione con UNIX avverrà sempre tramite l’interprete shell. La Figura 1.6 mostra il ruolo della shell nel sistema operativo UNIX. Scelta della shell Prima di lavorare con un sistema UNIX dovete determinare quale shell utilizzerete come interprete dei comandi. Le shell fanno molto di più che interpretare comandi: ciascuna di esse è dotata di una serie completa di comandi integrati che in pratica la trasformano in un linguaggio di programmazione di prima classe (questo argomento verrà trattato in modo approfondito nei Capitoli 6 e 7). La scelta della shell avviene quando l’amministratore del sistema configura l’account utente. La maggior parte degli utenti sceglie la shell Bash, sebbene sia possibile scegliere una delle seguenti: Cap01d.p65 7 15/12/00, 9.55 8 CAPITOLO 1 Shell Sistema operativo UNIX input utenti Figura 1.6 • • • • • • output Rapporto della shell con l’utente e l’hardware. Bourne Korn Shell C Bash tcsh (una shell freeware derivata dalla shell C) zsh (una shell freeware derivata dalla shell Korn) Passaggio da una shell all’altra Dopo aver scelto la shell, l’amministratore del sistema memorizza la vostra scelta nel record del vostro account ed essa diventa la shell a voi assegnata: UNIX la utilizzerà ogni volta che accedete al sistema. Tuttavia potete passare da una shell a un’altra digitando il nome della shell (come tcsh, bash o zsh) sulla linea di comando e continuando a lavorare in essa fino al prossimo accesso o fin quando digitate un altro nome di shell sulla linea di comando. Molti utenti usano una shell per la realizzazione degli script di shell (programmi) e un’altra per interagire con i programmi. Scelta di nome utente e password Prima di poter lavorare con UNIX e i suoi programmi è necessario accedere al sistema fornendo un nome utente e una password unici. Dovete pertanto decidere un nome che desiderate utilizzare per identificarvi al sistema UNIX, come per esempio “aquinn”. Questo è il lo stesso nome che gli altri utenti del sistema UNIX useranno per inviarvi posta Cap01d.p65 8 15/12/00, 9.55 L’ESSENZA DI UNIX 9 elettronica. UNIX riconosce solo i primi otto caratteri di un nome utente, pertanto occorre scegliere un nome che rientri in questa lunghezza massima. Dovete anche scegliere una password, che deve contenere un minimo di cinque caratteri e deve risultare facile da ricordare per voi ma difficile per gli altri da indovinare, come la vostra data di nascita scritta in un misto di lettere maiuscole e minuscole, cifre e trattini. La password può contenere lettere, numeri, simboli di punteggiatura ma non caratteri di controllo. Potete accedere a qualunque sistema UNIX o Linux a patto di disporre di un account utente e di una password sul computer host (server). L’amministratore di un sistema UNIX crea il vostro account aggiungendo il vostro nome utente (chiamato anche nome di login o user id) e la password. Per utilizzare questo libro e le esercitazioni pratiche, dovete connettervi e stabilire un account su un sistema UNIX o Linux utilizzando uno dei metodi seguenti: • Tramite una connessione Telnet a un computer remoto. • Come client su una rete UNIX client/server. • Come peer su una rete locale peer-to-peer in cui ogni computer utilizza il sistema operativo Linux. • Su un PC indipendente che utilizza il sistema operativo Linux. • Tramite un terminale di accesso, come un terminale Wyse, collegato a una porta di comunicazione di un host UNIX. I passi da compiere per connettersi a un sistema UNIX variano in relazione al tipo di connessione utilizzata. La più semplice è quella di un terminale utente che presenta il prompt di accesso non appena lo si accende. Potete anche accedere a Internet tramite un provider di accesso (ISP, Internet Service Provider) e connettervi a un host UNIX remoto. Connessione a UNIX con Telnet Telnet è un programma di emulazione terminale per Internet che viene eseguito sul proprio computer e connette il PC a un server, o host, UNIX sulla rete, al quale è possibile accedere per iniziare a lavorare con UNIX. Ogni computer su Internet ha un indirizzo Internet Protocol (IP), un set di quattro numeri separati da punti, come 172.16.1.61. La maggior parte dei sistemi su Internet ha anche un nome di dominio, come Lunar.campus.edu. Sia l’indirizzo IP sia il nome di dominio identificano un sistema sulla rete e i programmi come Telnet utilizzano entrambe le informazioni per accedere a sistemi remoti. Accesso a un host UNIX tramite Telnet 1 Trovate l’indirizzo IP o il nome di dominio dell’host remoto. 2 Connettetevi a Internet, se necessario. Se utilizzate una connessione PPP per l’accesso a un ISP, stabilite la connessione. Se invece al lavoro o a scuola disponete di una connessione a Internet permanente, ignorate questo passaggio. 3 Avviate il programma Telnet e connettetevi al sistema UNIX. (continua) Cap01d.p65 9 15/12/00, 9.55 10 CAPITOLO 1 Seguite le istruzioni del programma Telnet per connettervi a un host remoto. In genere occorre fornire il nome dell’host per connettersi a un sistema UNIX. Per esempio, è possibile digitare il comando seguente dopo il prompt di una finestra MS-DOS di Windows 95/98 per accedere al sistema Lunar.campus.edu. telnet Lunar.campus.edu Accesso a UNIX Una volta connessi a un sistema UNIX, è necessario accedere fornendo il nome utente e la password. Apparirà un prompt che richiede il login o il nome utente e la password; per motivi di sicurezza quest’ultima non è visibile su schermo mentre la digitate. Non potrete accedere senza un account utente autorizzato, se la password non è valida o se aspettate troppo prima di immettere il nome e la password. In tal caso contattate l’amministratore del sistema per ottenere aiuto. Una volta avvenuto l’accesso, siete pronti per iniziare a usare il sistema. Inserimento di comandi Per interagire con UNIX si inserisce un comando, ossia del testo digitato dopo il prompt dei comandi e seguito dalla pressione del testo Invio. UNIX è un sistema case-sensitive, ossia distingue tra lettere maiuscole e minuscole, pertanto John è diverso da john: la maggior parte dei comandi UNIX è in minuscolo. I comandi sono suddivisi in due categorie: comandi di livello utente digitati per svolgere un’operazione, come il recupero di informazioni o la comunicazione con altri utenti, e comandi di amministrazione del sistema, utilizzati dall’amministratore per la gestione del sistema. Dovete conoscere la sintassi di un comando per inserirlo correttamente, ossia il formato e le parole che contiene, così come gli argomenti e le opzioni utilizzabili per estendere e modificare le sue funzioni. La maggior parte dei comandi è costituito da una sola parola, come clear. Se inserite un comando con la sintassi corretta, UNIX lo esegue, altrimenti ricevete un messaggio che indica che il sistema non è in grado di interpretarlo. ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ L’Appendice B presenta l’elenco alfabetico di tutti i comandi di questo libro e indica come inserirli e utilizzare le loro diverse opzioni. ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ Il punto dello schermo in cui digitate il comando prende il nome di linea di comando. Ecco la sintassi generale dei comandi: Sintassi nome_comando [-opzioni] [argomenti] Analisi • • Cap01d.p65 10 nome_comando specifica quale operazione eseguire. Nelle illustrazioni di sintassi di questo libro il nome dei comandi appare in grassetto. Le opzioni sono modi per richiedere a UNIX di eseguire un comando in uno stile o secondo una variante specifici. Le opzioni seguono i nomi dei comandi separati da uno spazio e iniziano sempre con un trattino (-). Anche le opzioni distinguono tra maiuscolo e minuscolo, quindi -R è diverso da –r. 15/12/00, 9.55 L’ESSENZA DI UNIX • 11 Non è obbligatorio digitare un’opzione dopo ogni comando: alcuni però non funzionano a meno di specificare un’opzione. Nelle illustrazioni di sintassi di questo libro le opzioni sono indicate tra parentesi quadre ([]) quando il comando non le richiede. Gli argomenti seguono le opzioni dei comandi separate da uno spazio: in genere si tratta di nomi di file e di directory. Nelle illustrazioni di sintassi di questo libro gli argomenti sono indicati in corsivo e sono racchiusi tra parentesi quadre se l’argomento non li richiede. Il comando date Il comando date dì UNIX può essere usato per visualizzare la data di sistema, mantenuta dall’amministratore. Dato che la data e l’ora su un sistema multiutente sono fondamentali per un’elaborazione il più possibile fluida, solo l’amministratore del sistema può modificare la data. Il vostro addestramento alla Dominion Consulting inizia con un controllo della data di sistema. Visualizzazione della data di sistema 1 Digitate date sulla linea di comando e premete Invio; apparirà una data come quella indicata sotto: dom ott 15 17:24:09 EDT 2000 Osservate che UNIX utilizza un orologio a 24 ore. 2 Digitate Date sulla linea di comando e premete Invio; apparirà il seguente messaggio di errore generato dal sistema: bash: Date: command not found Il messaggio di errore di sistema appare perché il comando date, come la maggior parte dei comandi UNIX, dev’essere digitato in minuscolo. Il comando date ha un’opzione, -u, che visualizza la data del meridiano di Greenwich. Visualizzazione della data di sistema • Digitate date -u sulla linea di comando e premete Invio; apparirà un data come quella riportata sotto: dom ott 15 21:29:50 UTC 2000 Il comando cal Il comando cal visualizza il calendario del sistema. Il vostro manager alla Dominion Consulting, Rolfe Williams, vi avverte che questo è il comando normalmente utilizzato per pianificare attività ed eventi. Cap01d.p65 11 15/12/00, 9.55 12 CAPITOLO 1 Visualizzazione del calendario di sistema predefinito 1 Digitate cal sulla linea di comando e premete Invio; senza alcuna opzione, il comando cal mostra un calendario del mese corrente: supponendo che il mese corrente sia luglio 2000, apparirà il calendario predefinito della Figura 1.7. Figura 1.7 Esempio di comando cal (mese corrente). 2 Digitate cal –j 2000 sulla linea di comando e premete Invio; l’opzione –j visualizza il formato di data giuliano, ossia mostra i giorni numerandoli da 1 a 366, come mostrato nella Figura 1.8. Figura 1.8 Cap01d.p65 12 Esempio di comando cal (anno completo, date in formato giuliano). 15/12/00, 9.55 13 L’ESSENZA DI UNIX 3 Per determinare il giorno della settimana in cui è stata firmata la Dichiarazione di indipendenza degli Stati Uniti, digitate cal 7 1776 sulla linea di comando e premete Invio. Apparirà un calendario simile a quello della Figura 1.9. In questo caso gli argomenti sulla linea di comando sono il mese e l’anno. ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ Se digitate cal may 1998 apparirà un messaggio di errore perché dovete utilizzare i numeri per indicare i mesi, per esempio 5 per maggio. ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ cal: illegal month value: use Figura 1.9 ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ 1-12 Esempio di comando cal (luglio 1776). Il comando who In un sistema multiutente può essere utile sapere chi è connesso al sistema. Il comando who permette di sapere chi sta utilizzando il sistema e la relativa posizione. Alla Dominion Consulting who è un comando utile per conoscere i colleghi. Uso del comando who per determinare chi è connesso al sistema 1 Digitate who sulla linea di comando e premete Invio. 2 Apparirà un elenco che riporta i nomi degli utenti, i terminali che stanno usando e le date e ore in cui sono avvenute le connessioni. root tty1 Aug 12 07:56 ellen tty1 Aug 12 08:15 john tty2 Aug 12 08:15 jerry tty3 Aug 12 08:21 (continua) Cap01d.p65 13 15/12/00, 9.55 14 CAPITOLO 1 3 Per visualizzare una linea di intestazioni di colonna con l’output del comando who, digitate who –H e premete Invio. Apparirà un elenco come il seguente: USER LINE LOGIN-TIME root tty1 Aug 12 07:56 ellen tty1 Aug 12 08:15 john tty2 Aug 12 08:15 jerry tty3 Aug 12 08:21 FROM Se qualche utente è connesso da un host remoto, la colonna FROM mostra il nome dell’host. 4 Il tempo di inattività (idle time) è la quantità di tempo trascorsa senza alcuna attività in una sessione utente. Digitate who –i e premete Invio per vedere il tempo di inattività di ogni utente. Apparirà un elenco simile al seguente: root tty1 Aug 12 07:56 00:29 ellen tty1 Aug 12 08:15 . john tty2 Aug 12 08:15 00:01 jerry tty3 Aug 12 08:21 old L’output mostra che la persona connessa come root non ha eseguito alcuna attività negli ultimi 29 minuti e che la sessione di John è inattiva da un minuto. Il punto sulla linea corrispondente a Ellen indica che la sua sessione è stata attiva nell’ultimo minuto, mentre la parola old sulla linea di Jerry segnala l’assenza di attività nelle ultime 24 ore. 5 Se desiderate utilizzare più opzioni sulla stessa linea di comando, dovete digitarle tutte dopo un solo trattino. Per esempio, digitate who –iH e premete Invio per vedere un elenco di utenti con i tempi di inattività e le intestazioni di colonna, come mostrato nell’esempio seguente: USER LINE LOGIN-TIME IDLE root tty1 Aug 12 07:56 00:29 ellen tty1 Aug 12 08:15 . john tty2 Aug 12 08:15 00:01 jerry tty3 Aug 12 08:21 old FROM 6 Digitate who –q e premete Invio per visualizzare un elenco rapido degli utenti correnti. Appare un elenco come quello mostrato sotto, che mostra solo i nomi di accesso e il numero totale di utenti presenti sul sistema. root ellen john jerry # users=4 7 Per determinare quale terminale state utilizzando o a quale ora vi siete connessi, digitate who am I sulla linea di comando e premete Invio. Apparirà una linea simile alla seguente, che mostra il vostro nome utente, il terminale e la data e l’ora di connessione. Cap01d.p65 14 15/12/00, 9.55 15 L’ESSENZA DI UNIX lucky.campus.edu!ellen tty1 Aug 12 08:15 Questo output mostra che siete connessi al sistema lucky.campus.edu come utente ellen. ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ Tutte le volte che fornite due argomenti al comando who, vedrete l’output descritto al punto 7. Per esempio, potreste digitate who sono io oppure who x x per vedere le stesse informazioni. Tradizionalmente però gli utenti UNIX digitano who am I per vedere informazioni che descrivono la loro sessione. ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ Editing sulla linea di comando Le shell permettono l’uso di certi tasti per eseguire l’editing sulla linea di comando. Per esempio, Bash, la shell predefinita di Linux, riconosce l’uso dei tasti freccia destra e sinistra, che spostano il cursore sulla linea di comando. Altri tasti, usati in combinazione con Ctrl o Alt, possono attivare altre operazioni di editing. ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ Le varie shell non permettono l’editing sulla linea di comando allo stesso modo. I passaggi che seguono sono validi per la shell Bash. ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ Editing di un comando digitato sulla linea di comando 1 Per determinare quale shell è in uso, digitate echo $SHELL e premete Invio. Se state utilizzando la shell Bash, apparirà l’output seguente: /bin/bash 2 3 4 5 6 7 8 9 10 11 Cap01d.p65 Se non state usando la shell Bash, digitate bash e premete Invio. Digitate who am I ma non premete Invio. Premete il tasto freccia sinistra per spostare il cursore sulla lettera a della parola am. Premete Alt+D per cancellare la parola “am”. Premete Ctrl+K per cancellare la linea di comando dalla posizione corrente del cursore. Premete Ctrl+A per spostare il cursore all’inizio della linea di comando. Premete nuovamente Ctrl+K per cancellare la linea di comando . Digitate nuovamente who am I ma non premete Invio. Premete Alt+B tre volte. Osservate il cursore spostarsi al primo carattere della parola precedente a ogni pressione della combinazione di tasti. Il cursore dovrebbe posizionarsi all’inizio della linea. Premete Alt+F tre volte. Ogni volta il cursore si sposta alla posizione appena precedente al primo carattere della parola successiva. Premete Ctrl+A e poi Ctrl+K per cancellare la linea di comando. 15 15/12/00, 9.55 ○ ○ 16 CAPITOLO 1 Inserimento di più comandi È possibile digitare più di un comando sulla linea di comando utilizzando il punto e virgola (;) come separatore. Quando premete Invio, UNIX esegue i comandi nell’ordine di inserimento. Inserimento di più comandi sulla linea di comando • Digitate date ; who –iH e premete Invio. Appariranno delle informazioni simili a quelle riportate sotto: lun apr 20 21:35:09 EDT 2000 USER LINE LOGIN-TIME IDLE root tty1 Apr 20 07:56 00:29 ellen tty1 Apr 20 08:15 . john tty2 Apr 20 08:15 00:01 jerry tty3 Apr 18 08:21 old FROM Il comando date produce la prima linea dell’output, mentre il resto è il risultato del comando who. Il comando clear Continuando a inserire comandi uno dopo l’altro, lo schermo diventa sempre più affollato. A meno che non abbiate bisogno di fare riferimento ai comandi immessi in precedenza e al loro output, potete utilizzare il comando clear, che non ha né opzioni né argomenti, per cancellare lo schermo. È sufficiente digitare clear sulla linea di comando e premere Invio per fare in modo che il prompt dei comandi si posizioni nell’angolo superiore sinistro dello schermo. Cronologia della linea di comando Spesso ci si ritrova a inserire lo stesso comando diverse volte in un breve lasso di tempo. La maggior parte delle shell mantiene un elenco dei comandi più recenti e permette di richiamare un comando senza digitarlo nuovamente. L’accesso alla cronologia dei comandi avviene con i tasti freccia su e freccia giù. Premendo il tasto freccia su una volta si richiama l’ultimo comando usato, premendolo due volte richiamate il penultimo e così via. Con il tasto freccia giù invece lo spostamento nella cronologia avviene in senso inverso. Una volta individuato il comando da eseguire, è sufficiente premere Invio. Uso della cronologia sulla linea di comando 1 2 3 4 Cap01d.p65 Digitate date e premete Invio. Digitate who e premete Invio. Digitate who -iH e premete Invio. Digitate clear e premete Invio. 16 15/12/00, 9.55 L’ESSENZA DI UNIX 17 5 Premete il tasto freccia su quattro volte; viene richiamato il comando date sulla linea di comando. Non premete Invio. 6 Premete il tasto freccia giù due volte; viene richiamato il comando who -iH sulla linea di comando. Premete Invio per eseguirlo. Il comando man Come riferimento UNIX include un manuale in linea che contiene tutti i comandi con tanto di opzioni e argomenti. Il programma man di UNIX visualizza questo manuale in linea, che prende il nome di pagine di manuale, per offrire una sorta di assistenza sulla linea di comando. Anche se le pagine di manuale di alcuni comandi contengano più informazioni di altre, la maggior parte di esse elenca gli elementi seguenti. • Name: il nome del comando e una breve frase di descrizione del suo scopo. • Synopsis: un diagramma sintattico che mostra l’uso del comando. • Description: una descrizione del comando più dettagliata rispetto a quella fornita con il nome. • Options: un elenco delle opzioni del comando e della loro finalità. • See Also: altri comandi o pagine di manuale che offrono informazioni correlate. • Bugs: un elenco degli errori noti del comando. Visualizzazione della guida in linea per i comandi 1 Digitate man who sulla linea di comando e premete Invio. Apparirà la spiegazione del comando who illustrata nella Figura 1.10. Figura 1.10 Pagina di manuale. (continua) Cap01d.p65 17 15/12/00, 9.55 18 CAPITOLO 1 2 Digitate q per uscire dal programma man. 3 Digitate man man e premete Invio. Apparirà la pagina di manuale di descrizione del comando man. 4 Digitate q per uscire dal programma man. Il comando whatis A volte potreste accorgervi che le pagine di manuale contengono più informazioni di quelle che vi occorrono. Per visualizzare un breve riepilogo di un comando, utilizzate il comando whatis, che mostra solo il nome e la breve descrizione che appare in testa alla pagina di manuale del comando in questione. Visualizzazione di una breve descrizione di un comando con whatis 1 Digitate whatis who e premete Invio. 2 Apparirà un riepilogo del comando who, come mostrato qui sotto. who (1) - show who is logged on 3 Digitate q per uscire dal programma man. ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ Il comando whatis si affida a informazioni memorizzate in un database. L’amministratore del sistema deve eseguire il comando makewhatis per creare il database prima che il comando whatis funzioni correttamente. Se il comando whatis non visualizza le informazioni riepilogative sui comandi, è probabile che l’amministratore del sistema non abbia eseguito il comando makewhatis. ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ Disconnessione da UNIX Al termine della giornata di lavoro o quando lasciate il terminale per qualche ragione, dovete disconnettervi dal sistema UNIX. La disconnessione termina il vostro processo corrente e indica a UNIX che avete finito. Le modalità di disconnessione dipendono dalla shell in uso. Nel caso delle shell Bourne, Korn e Bash, digitate exit sulla linea di comando o premete Ctrl+D. Con la shell C invece dovete digitare logout. Disconnessione da UNIX • Sulla linea di comando digitate exit e premete Invio. Cap01d.p65 18 15/12/00, 9.55 L’ESSENZA DI UNIX 19 SEZIONE B Ruoli dell’amministratore di sistema e degli utenti normali Obiettivi • • • • • Analisi del ruolo dell’amministratore di sistema Identificazione del prompt dei comandi dell’amministratore e degli utenti normali Modifica della password personale Visualizzazione dei file sullo schermo con i comandi cat, more, less, head e tail Reindirizzamento dell’output a un file Introduzione al ruolo dell’amministratore di sistema di UNIX Esistono due tipi di utenti su un sistema UNIX: l’amministratore di sistema e gli utenti normali. Come si può intuire dal nome, l’amministratore di sistema gestisce il sistema aggiungendo nuovi utenti, eliminando vecchi account e garantendo che il sistema svolga i servizi per tutti gli utenti in modo efficiente. Con utenti normali invece si intendono tutti gli altri utenti. L’amministratore di sistema prende anche il nome di superutente perché dispone di autorizzazioni illimitate per alterare il sistema. UNIX assegna questa autorizzazione al momento dell’installazione iniziale del sistema, mentre l’amministratore assegna privilegi e autorizzazioni agli utenti normali. L’amministratore di sistema ha un nome utente unico, root, del quale è proprietario: ciò significa che questo nome non può essere assegnato a nessun altro. La password dell’account root è riservata e in quanto tale è nota solo all’amministratore e ad una persona sostitutiva; se questa password viene persa o dimenticata, l’amministratore di sistema deve ricorrere a una procedura di emergenza per reimpostarla. La linea di comando dell’amministratore di sistema Mentre gli utenti normali digitano i comandi al prompt dei comandi rappresentato dal simbolo del dollaro ($), il prompt dell’amministratore è il simbolo del cancelletto, o diesis (#). Il sistema UNIX genera un’impostazione predefinita per il prompt dei comandi dell’amministratore nel formato seguente: [root@nomehost]# dove nomehost è il nome del computer cui l’amministratore di sistema è connesso. Cap01d.p65 19 15/12/00, 9.55 20 CAPITOLO 1 La linea di comando degli utenti normali Il segno del dollaro $ viene tradizionalmente associato agli utenti normali. Il sistema UNIX genera un’impostazione predefinita per il prompt dei comandi degli utenti normali nel formato seguente: [nome utente@nomehost]$ dove nome utente è il nome di accesso dell’utente, come jean, e nomehost è il nome del computer cui l’utente è connesso. Modifica delle password Il nome utente vi identifica al sistema e potete sceglierlo e comunicarlo all’amministratore, che vi aggiungerà come nuovo utente. Come abbiamo accennato in precedenza, UNIX riconosce al massimo otto caratteri in un nome utente, che in genere è formato dal proprio nome proprio o dal soprannome. Il nome utente è unico, ma non riservato, e può essere comunicato ad altri utenti; la password invece è riservata e proteggere il vostro lavoro sul sistema. Se necessario, potete cambiare la password ricorrendo al comando passwd, che permette anche di crearne una se non l’avete ancora. UNIX permette di cambiare la password solo se la nuova è diversa da quella precedente per almeno tre caratteri, se contiene più di cinque caratteri, che comprendono almeno due lettere e un numero, e se è diversa dal nome utente. La password che avete scelto per il sistema della Dominion, Gscott956, è troppo simile a un’altra password già in uso nel sistema, pertanto l’amministratore di sistema vi chiede di cambiarla. Modifica della password 1 Digitate passwd al prompt dei comandi e premete Invio. 2 Digitate la nuova password e premete Invio: la password non appare sullo schermo durante la digitazione. 3 Digitate nuovamente la password e premete Invio in modo che UNIX possa confermarla. ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ Se la password che digitate per conferma non corrisponde alla nuova password UNIX, il sistema chiede di inserirla nuovamente. UNIX potrebbe anche chiedervi di scegliere un’altra password perché ne avete scelta una troppo breve o troppo facilmente individuabile. ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ Dopo aver modificato la password, dovete disconnettervi e connettervi nuovamente per essere certi che UNIX riconosca la nuova password. Cap01d.p65 20 15/12/00, 9.55 21 L’ESSENZA DI UNIX ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ Scrivete la password e conservatela in un posto sicuro: ne avrete bisogno ogni volta che vi connettete a UNIX. ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ Visualizzazione dei file con i comandi cat, more, less, head e tail Sono tre i comandi UNIX che permettono di visualizzazione il contenuto dei file: cat, more e less. Gli ultimi due visualizzano un file una schermata alla volta, mentre il comando cat mostra l’intero file in una sola volta. Esistono poi altri due comandi, head e tail, che consentono di visualizzare le prime o le ultime linee di un file. Il nome del comando cat deriva dalla parola concatenate, che significa collegare. Potete visualizzare più file inserendone il nome dopo il comando cat e separandoli con uno spazio. A questo punto UNIX visualizza il loro contenuto nell’ordine di inserimento. L’amministratore di sistema della Dominion accenna al fatto che potete utilizzare cat per visualizzare un file chiamato shells situato nella directory /etc, che contiene un elenco dei programmi shell validi presenti nel sistema. Visualizzazione del file shells 1 Digitate cat /etc/shells al prompt dei comandi e premete Invio. Dovete utilizzare la barra trasversale (/) per indicare un cambio di directory o di cartella. Apparirà un elenco delle shell disponibili, tra cui /bin/bash, /bin/sh, /bin/bsh, /bin/tcsh, /bin/csh e /bin/zsh. A volte è utile vedere visualizzato il contenuto di un file con i numeri di linea. L’opzione –n fa sì che il comando cat visualizzi un numero all’inizio di ogni linea di output. 2 Digitate cat –n /etc/shells e premete Invio. Apparirà lo stesso elenco di shell di prima, tuttavia questa volta all’inizio di ogni linea compare un numero. Potete anche visualizzare un altro file presente nella stessa directory /etc chiamato questo file a più pagine contiene molte specifiche relative ai terminali riconosciuti dal sistema Linux. Il comando cat non è pratico per la visualizzazione di questo file, che è più lungo di una schermata (23 linee), tuttavia potete usare i comandi more e less per leggerlo una schermata alla volta. termcap: Visualizzazione su schermo dei file lunghi con il comando more 1 Digitate more /etc/termcap al prompt dei comandi e premete Invio. 2 Premete la barra spaziatrice per passare alla schermata successiva. Non è possibile usare il comando more per tornare a una schermata visualizzata in precedenza. 3 Terminate la visualizzazione digitando q (per quit). Cap01d.p65 21 15/12/00, 9.55 22 CAPITOLO 1 Visualizzazione su schermo dei file lunghi con il comando less 1 Digitate less /etc/termcap al prompt dei comandi e premete Invio. Apparirà un lungo file di testo sullo schermo. 2 Premete la freccia giù diverse volte per scorrere in avanti nel file una riga alla volta. 3 Premete la freccia su diverse volte per scorrere indietro nel file una riga alla volta. 4 Premete PgGiù¸Spazio, z o f per scorrere in avanti di una schermata. 5 Premete PgSu o b per tornare a una schermata precedente., 6 Terminate la visualizzazione digitando q (per quit) quando appare un due punti (:) in fondo a una schermata. A volte occorre soltanto vedere una parte del contenuto di un file per determinare ciò che è visualizzato al suo interno. Il comando head mostra le prime linee di un file, per default le prime dieci. Visualizzazione delle prime o ultime linee di un file 1 Digitate head /etc/termcap e premete Invio per vedere le prime dieci linee del file /etc/termcap. 2 L’opzione –n permette di specificare il numero di linee visualizzate dal comando head: digitate head –5 /etc/termcap e premete Invio. Appariranno le prime cinque linee del file /etc/termcap. 3 Il comando tail visualizza le ultime linee di un file, per default dieci come nel caso del comando head. Digitate tail /etc/termcap e premete Invio per vedere le ultime dieci linee del file /etc/termcap. 4 L’opzione –n permette di specificare il numero di linee visualizzate dal comando tail: digitate tail –5 /etc/termcap e premete Invio. Appariranno le ultime cinque linee del file /etc/termcap. Reindirizzamento dell’output In UNIX il segno di maggiore (>) prende il nome di simbolo di reindirizzamento, utilizzabile per creare un nuovo file o per sovrascrivere un file esistente allegandolo a un comando che produce output. In realtà in questo modo “reindirizzate” l’output a un file su disco invece che al monitor. Avete già utilizzato il comando who per scoprire chi è connesso al sistema della Dominion. Ora potete usare lo stesso comando con il simbolo di reindirizzamento per salvare queste informazioni in un file di testo. Salvataggio in un file che elenca gli utenti connessi al sistema 1 Digitate who > current_users al prompt dei comandi e premete Invio. L’output del comando who non appare sullo schermo, bensì viene reindirizzato in un nuovo file su disco chiamato current_users. UNIX colloca il file di testo nel- Cap01d.p65 22 15/12/00, 9.55 L’ESSENZA DI UNIX 23 la directory attiva, ossia la cartella del disco dalla quale state attualmente utilizzando il sistema. 2 Digitate cat > current_users al prompt dei comandi e premete Invio per vedere un elenco simile al seguente che visualizza gli utenti che attualmente stanno usando il sistema: jean tty Feb 7 07:15 joseph tty Feb 7 beckytty Feb 7 07:15 08:05 Potete anche utilizzare il simbolo di reindirizzamento con il comando cal per salvare un calendario in un file di testo. Per esempio, dato che alla Dominion sarete coinvolti in un progetto di sviluppo con una data di scadenza prevista nell’anno 2001, potete salvare il calendario in un file di testo. Salvataggio del calendario dell’anno 2001 in un file 1 Digitate cal 2001 > anno_2001 al prompt dei comandi e premete Invio per creare un file di testo chiamato anno_2001. 2 Digitate less anno_2001 e premete Invio per visualizzare il calendario creato dal comando precedente. Utilizzate i tasti freccia, PgGiù e PgSu e gli altri tasti per spostarvi nel file. 3 Terminate la visualizzazione digitando q (per quit). Potete anche usare il comando cat per creare file con le informazioni che digitate sulla tastiera. Digitate cat > nomefile al prompt dei comandi, dove nomefile è il nome del file che state creando. Poi premete Ctrl+D per terminare l’introduzione di dati dalla tastiera. Utilizzate il simbolo di reindirizzamento > per inviare l’output a un file già esistente solo se desiderate sovrascrivere il file indicato. Se invece desiderate aggiungere l’output a un file, utilizzate due simboli di reindirizzamento (>>): in tal modo le informazioni vengono aggiunte alla fine del file esistente senza sovrascriverlo. Mentre lavorate con UNIX, vi ricordate che Rolfe Williams, il vostro supervisore, vi ha chiesto di completare alcune attività entro la fine della settimana. Decidete pertanto di creare un file note contenente dei promemoria sulle attività. Creazione di un nuovo file 1 Digitate cat > note al prompt dei comandi e premete Invio. 2 Digitate Ricordarsi di ordinare un nuovo CD-ROM e inviare il rapporto entro martedì e premete Invio. 3 Premete Ctrl+D. 4 Per rivedere il file appena creato, digitate cat note al prompt dei comandi e premete Invio. La frase digitata nel passaggio 2 appare sullo schermo. (continua) Cap01d.p65 23 15/12/00, 9.55 24 CAPITOLO 1 Dopo aver creato il file note, vi ricordate che Rolfe Williams vi ha chiesto di fare un’altra cosa. In questo caso volete aggiungere il promemoria al file esistente, includendo nel file anche il calendario mensile appropriato come riferimento. Aggiunta di informazioni a un file esistente 1 Digitate cat >> note al prompt dei comandi e premete Invio. 2 Digitate Ricordarsi anche di fare le prenotazioni per il congresso di settembre e premete Invio. 3 Premete Ctrl+D. 4 Per aggiungere il calendario al file dei promemoria digitate cal 9 2000 >> note. 5 Digitate less note per rivedere il file. Riepilogo • • • • • • • • • Cap01d.p65 Il sistema operativo è il programma più importante di un computer. Esso controlla tutte le risorse del computer e offre la base sulla quale è possibile utilizzare o scrivere i programmi applicativi. Una rete con server è centralizzata; tutti i dati degli utenti e le applicazioni si trovano sul server, che è protetto, riceve una manutenzione ed è sottoposto a backup da parte dell’amministratore del sistema. Ogni computer in una rete con server si affida a quest’ultimo. Tutti i sistemi di una rete peer-to-peer invece funzionano sia come server sia come client e la sicurezza e la manutenzione della rete sono distribuite a ogni sistema. Se uno dei sistemi della rete peer-to-peer si guasta, gli altri continuano a funzionare. Il sistema operativo UNIX è un sistema multiutente che permette a molte persone di accedere e condividere contemporaneamente il computer; è anche un sistema operativo multitasking in quanto può eseguire più operazioni alla volta. I sistemi UNIX possono essere configurati come server dedicati in una rete con server, workstation client in una rete basata su server, workstation client/server in una rete peer-to-peer o workstation indipendenti non connesse ad alcuna rete. Il concetto dei componenti stratificati che costituiscono un sistema operativo ha avuto origine con UNIX. Gli strati di software che circondano il nucleo centrale del computer proteggono i componenti hardware e software vitali e isolano il nucleo centrale dagli utenti. Linux è un sistema operativo tipo UNIX che è possibile installare sul PC e può coesistere con altri sistemi operativi come Windows o MS-DOS. In UNIX potete comunicare con i programmi del sistema operativo tramite un interprete chiamato shell, che interpreta i comandi immessi dalla tastiera. UNIX fornisce diversi programmi shell, tra cui le shell Bourne, Korn e C. La shell Bash, che è quella più diffusa sui sistemi Linux, offre le caratteristiche avanzate delle shell Borne e Korn. In UNIX l’amministratore di sistema imposta gli account per gli utenti normali. Per impostare gli account e proteggere la riservatezza e la sicurezza del sistema, selezionate e comunicate il nome utente e la password all’amministratore del sistema. Potete connettervi a qualunque sistema UNIX o Linux ovunque si trovi, a patto di avere un nome utente e una password validi sul computer host (server). Potete anche usare il programma Telnet di Microsoft Windows per accedere a un sistema UNIX remoto. I comandi che digitate per lavorare con UNIX hanno una sintassi rigida che potete imparare facendo riferimento al manuale in linea, chiamato pagine di manuale. Utilizzate il programma man per visualizzare le regole di sintassi di un comando. Utilizzate il comando whatis per vedere una breve descrizione di un comando. Usate il comando who per visualizzare un elenco degli utenti connessi e vedere da che terminale sono collegati. Utilizzate il comando cal per visua- 24 15/12/00, 9.55 L’ESSENZA DI UNIX • • 25 lizzare il calendario di sistema per tutti i mesi o solo di quelli selezionati. Per disconnettervi quando decidete di smettere di usare UNIX, utilizzate i comandi exit o logout. La maggior parte delle shell fornisce capacità di base di editing sulla linea di comando e mantiene una cronologia dei comandi utilizzati più di recente. Usate i tasti freccia su e giù per spostarvi in avanti o indietro nell’elenco dei comandi recenti. Potete inserire più comandi un una sola linea di comando, a patto che li separiate con un punto e virgola. UNIX esegue i comandi nell’ordine in cui li inserite. Potete utilizzare i comandi di visualizzazione per vedere il contenuto dei file. Utilizzate il comando cat per creare un file digitando informazioni dalla tastiera. Usate i comandi more e less per visualizzare documenti a più pagine. Usate head e tail per visualizzare le prime o le ultime linee di un file. Riepilogo dei comandi Comando Scopo Opzioni trattate in questo capitolo cal cat clear date Mostra il calendario di sistema Visualizza più file Pulisce lo schermo Visualizza la data di sistema -j visualizza il formato di data giuliano -n visualizza i numeri di linea exit o logout head Disconnette da UNIX Visualizza le prime linee di un file less Visualizza un file lungo una schermata alla volta e scorre in avanti e indietro Visualizza il manuale in linea per il comando specificato Visualizza un file lungo una schermata alla volta e scorre in avanti Cambia la password di UNIX Visualizza le ultime linee di un file man more passwd tail whatis who Visualizza una breve descrizione di un comando Visualizza chi è connesso a UNIX -u visualizza l’ora secondo il Greenwich Mean Time -n visualizza le prime n linee del file specificato -n visualizza le ultime n linee del file specificato -H visualizza le intestazioni di colonna -i visualizza i tempi di inattività delle sessioni q visualizza un elenco rapido degli utenti Domande 1. I comandi di UNIX distinguono tra maiuscolo e minuscolo: come devono essere digitati? a. Tutti maiuscoli b. Tutti minuscoli c. Con la prima lettera maiuscola e le altre minuscole d. Con qualunque combinazione di maiuscolo e minuscolo Cap01d.p65 25 15/12/00, 9.55 26 CAPITOLO 1 2. In quale ordine vengono impartiti i comandi UNIX? a. nome, argomenti, opzioni b. nome, opzioni, argomenti c. opzioni, nome, argomenti d. argomenti, opzioni, nome 3. Quale di queste affermazioni è falsa? a. Linux è compatibile con UNIX b. Gli utenti normali non possono cambiare la data di sistema. c. Il sistema operativo UNIX è chiamato kernel d. Non è possibile cambiare la shell dopo averla selezionata 4. In una rete __________ tutti i dati degli utenti sono collocati centralmente su un sistema. a. peer-to-peer b. con server c. indipendente d. workstation 5. UNIX può essere configurato per essere eseguito come __________. a. server in una rete con server b. workstation client in una rete con server c. workstation client/server in una rete peer-to-peer d. tutte le opzioni precedenti 6. Cosa è necessario per accedere al sistema? a. Un nome utente e una password b. Solo una password c. Un kernel d. Una shell 7. Il comando date di UNIX serve per __________. a. visualizzare il calendario di sistema b. visualizzare qualunque data nel futuro c. ripristinare la data di sistema d. visualizzare la data di sistema 8. Il programma man fornisce __________. a. una guida alla programmazione b. un riferimento in linea per la sintassi dei comandi c. un modello di file d. una versione del sistema operativo 9. Il comando whatis fornisce __________. a. una breve descrizione di un comando b. una descrizione di un comando più dettagliata rispetto a quella fornita da man c. una descrizione di un dispositivo hardware collegato al sistema d. un’esercitazione in linea sul sistema operativo UNIX 10. Per default il comando cal visualizza __________. a. la data di sistema corrente b. un elenco delle shell c. il mese e l’anno correnti d. il contenuto del file cal Cap01d.p65 26 15/12/00, 9.55 L’ESSENZA DI UNIX 27 11. Qual è la definizione migliore per UNIX come sistema operativo? a. Sistema operativo multiutente e multitasking b. Un sistema operativo che conduce tutte le sue operazioni su un PC indipendente c. Un sistema operativo con interfaccia utente grafica d. Uno sistema operativo monoutente portabile 12. Perché il sistema UNIX è progettato a strati? a. Per migliorare la velocità b. Per permettere la connessione in rete c. Per consentire agli altri sistemi operativi di comunicare con esso d. Per isolare il nucleo del sistema dall’ambiente degli utenti 13. Quando visualizzate un file con il comando cat, potete __________. a. modificare il file b. solo visualizzare il file c. eseguire il controllo ortografico sul file d. cancellare il file 14. Dopo aver creato un file con il comando cat > nomefile, se utilizzate nuovamente il comando con lo stesso nome di file, __________. a. aggiungete le nuove informazioni al file b. sovrascrivete il file c. create un nuovo file d. cancellate il file 15. Il comando less risolve le limitazioni di scorrimento del comando __________. a. cat b. more c. clear d. date 16. UNIX riconosce i primi __________ caratteri in un nome utente. a. quattro b. sei c. otto d. dodici 17. L’opzione –i utilizzata con il comando who visualizza __________. a. il proprio nome utente b. le intestazioni di colonna. c. informazioni sul tempo di inattività degli utenti d. il numero di utenti attualmente connessi 18. La password non deve contenere __________. a. numeri b. lettere maiuscole c. caratteri di controllo d. il carattere di sottolineatura 19. Il simbolo > può essere combinato __________ per creare output. a. solo con il comando cat b. con qualunque comando che produca output c. solo con il comando who d. solo con il comando cal Cap01d.p65 27 15/12/00, 9.55 28 CAPITOLO 1 20. I comandi __________ visualizzano solo le prime o le ultime linee di un file. a. first e last b. cat-first e cat-last c. viewhead e viewtail d. head e tail 21. Se inserite più comandi sulla linea di comando, dovete separarli con __________. a. uno spazio b. un punto e virgola (;) c. i due punti (:) d. una virgola (,) 22. Una delle principali differenze tra l’amministratore di sistema e gli utenti normali è che __________. a. l’amministratore di sistema ha autorizzazioni illimitate per alterare il sistema. b. l’amministratore di sistema non deve eseguire la procedura di accesso al sistema c. l’amministratore di sistema deve inserire i comandi in lettere maiuscole. d. gli utenti normali possono modificare alcune impostazioni del sistema, ma non tutte. 23. Il simbolo usato dagli utenti normali come prompt dei comandi è il __________. a. due punti (:) b. segno del cancelletto (#) c. carattere barra trasversale (/) d. segno del dollaro ($) 24. Vero o falso? Se dimenticate la password, potete utilizzare il comando passwd per visualizzarla sullo schermo. 25. Vero o falso? La password dev’essere diversa dal nome utente. 26. La password deve contenere almeno __________ caratteri. a. cinque b. otto c. dodici d. uno 27. Il comando passwd chiede di digitare la password ____________ volte. a. una b. due c. tre d. zero 28. Quando utilizzate il comando cat > nomefile, dovete inserire __________ per interrompere l’input da tastiera. a. * b. Ctrl+D c. q d. exit 29. Il simbolo ______________ indirizza l’output di un comando a un file. a. * b. $ c. > d. < Cap01d.p65 28 15/12/00, 9.55 L’ESSENZA DI UNIX 29 Esercizi 1. Utilizzate il comando cal per determinare in quale giorno della settimana siete nati. 2. Utilizzate il comando cal per scoprire in quale giorno della settimana è stata firmata la Dichiarazione di indipendenza degli Stati Uniti. 3. Utilizzate il comando cal per scoprire cos’ha di insolito l’anno 1752. 4. Pulite lo schermo e visualizzate il manuale in linea del comando cal. Qual è la spiegazione per l’anno 1752? 5. Create un file chiamato oggi contenente la data odierna. 6. Create un file chiamato manuale_per_date contenente il manuale in linea del comando date. 7. Utilizzate il comando who per aggiungere un elenco rapido di utenti al file date. 8. Visualizzate i file oggi e manuale_per_date: a. singolarmente b. in sequenza 9. Visualizzate i file oggi e manuale_per_date in sequenza utilizzando: a. il comando less b. il comando more 10. Create un file contenente il calendario dell’anno prossimo e utilizzate il comando more per visualizzare il file e spostarvi in esso. 11. Utilizzate il comando less per visualizzare il file creato nell’esercizio 10 e farlo scorrere all’indietro. 12. Utilizzate il comando tail per visualizzare le ultime dieci linee del file creato nell’esercizio 10. 13. Create un file che elenchi i promemoria di due attività. 14. Aggiungete un’altra attività all’elenco del file creato nell’esercizio 11. Esercizi di approfondimento 1. Utilizzate il comando who per determinare quanti utenti sono connessi al sistema. 2. Utilizzate l’opzione del comando who che visualizza un’intestazione per le informazioni visualizzate. 3. Combinate i comandi cat e cal per creare un file contenente un promemoria relativo a un meeting per l’analisi di un nuovo programma gestionale per alberghi. Allegate un calendario di novembre 2000 al promemoria e ricordate ai destinatari le date del meeting per mercoledì, giovedì e venerdì della terza settimana del mese. 4. Utilizzate il comando head per visualizzare le prime sei linee del file creato al punto 3. 5. Ripetete il comando usato al punto precedente reindirizzando l’output a un altro file. Cosa contiene il file creato? 6. Il vostro amministratore di sistema alla Dominion accenna alla possibilità di specificare il numero di byte che si desidera visualizzare con i comandi head e tail. Utilizzate il comando man per scoprire come fare, poi immettete il comando corretto per visualizzare i primi e gli ultimi dieci caratteri del file creato al punto 3. Cap01d.p65 29 15/12/00, 9.55