Anda di halaman 1dari 127

Debian Tutorial

Havoc Pennington <hp@debian.org>

30 settembre 2007

Estratto
Questo il Debian Tutorial. Esso rivolto ai nuovi utenti di Debian GNU/Linux. Non richiede precedenti conoscenze su GNU/Linux o altri sistemi simili a Unix, ma presume conoscenze molto generiche riguardo i computer e lhardware. Traduzione e adattamenti in italiano a cura di Beatrice Torracca <beatricet(at)libero(dot)it>, Hugh Hartmann <hhartmann(at)libero(dot)it>, Vieri Giugni <v.giugni(at)gmail(dot) com>. Revisione a cura di Beatrice Torracca <beatricet(at)libero(dot)it>.

Avviso di Copyright
1998 Software in the Public Interest and individual contributors. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modied versions of this manual under the conditions for verbatim copying, provided also that the sections that reprint The GNU General Public License, The GNU Library General Public License, and other clearly marked sections held under separate copyright are reproduced under the conditions given within them, and provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language under the conditions for modied versions. The GNU General Public License and The GNU Library General Public License may be included in a translation approved by the Free Software Foundation instead of in the original English. At your option, you may distribute verbatim and modied versions of this document under the terms of the GNU General Public License, excepting the clearly marked sections held under separate copyright.

Indice
1 Riguardo il Tutorial 1.1 2 Ringraziamenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 3 3 3 4 4 5 6 7 7 8 9 9

Introduzione 2.1 Che cosa Debian? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 2.1.2 2.2 2.3 2.4 Cos un sistema operativo e che tipo di sistema operativo Debian? . . . Chi crea Debian? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Cos il software libero? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Come leggere questo Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Il Linux Documentation Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Incominciare 3.1 3.2 3.3 3.4 3.5 3.6 3.7 Un sistema operativo multiutente e multitasking . . . . . . . . . . . . . . . . . . . Fare il login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tasti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Storico dei comandi e modica della riga di comando . . . . . . . . . . . . . . . .

Fare il login come utente root . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Console virtuali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Spegnere il sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 15

I fondamenti 4.1

La riga di comando e le pagine man . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.1.1 Descrizione della riga di comando . . . . . . . . . . . . . . . . . . . . . . . 16

4.2

File e directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.2.1 Introduzione ai le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

INDICE

ii

4.2.2 4.3 4.4 4.5 4.6

Usare i le: un tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

Processi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 La shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Gestire i processi con Bash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Alcune caratteristiche della Bash . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.6.1 Completamento dei comandi con Tab . . . . . . . . . . . . . . . . . . . . . 27

4.7 5

Gestire la propria identit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 29

Leggere la documentazione e ottenere aiuto 5.1 5.2 5.3 5.4 5.5

Tipi di documentazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Usare info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Visualizzare le di testo con more e less . . . . . . . . . . . . . . . . . . . . . . . . 30 Gli HOWTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Ottenere aiuto da una persona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.5.1 Cosa fare e cosa no, quando si pone una domanda . . . . . . . . . . . . . . 31

5.6 6

Ottenere informazioni dal sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 33

Usare la shell 6.1

Variabili dambiente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 6.1.1 Processi genitori e gli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

6.2 6.3 6.4 6.5 6.6 6.7

Dove abitano i comandi: la variabile PATH . . . . . . . . . . . . . . . . . . . . . 36 Alias e funzioni della shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Controllare input e output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Specicare come e quando avviare i comandi . . . . . . . . . . . . . . . . . . . . . 40 Espansione dei nomi di le (Metacaratteri) . . . . . . . . . . . . . . . . . . . . . 40 Interattiva/non-interattiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 6.7.1 Shell interattive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 43

Di pi sui le 7.1

I permessi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 7.1.1 7.1.2 La propriet dei le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Modalit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

INDICE

iii

7.1.3 7.2 7.3 8

I permessi in pratica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

Quali le ci sono sul proprio sistema? Dove si possono mettere i propri le? . . . 48 Usare un le manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 51

Creare e modicare le di testo 8.1 8.2 8.3

Che cos un le di testo? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Editor di testo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Creare e modicare un le di testo con vi . . . . . . . . . . . . . . . . . . . . . . . 52 8.3.1 8.3.2 Creare un le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Modicare un le esistente . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 61

Personalizzare la shell 9.1 9.2

le .rc e ls -a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Congurazioni a livello di sistema e speciche dellutente . . . . . . . . . . . . . 61 63

10 Il sistema X Window

10.1 Avviare lambiente X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 10.2 Introduzione: cos X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 10.3 Operazioni di base di X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 10.3.1 Il mouse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 10.3.2 Client X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 10.3.3 Risoluzione dei problemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 10.3.4 Abbandonare lambiente X . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 10.4 Personalizzare lavvio di X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 11 Strumenti per il testo 69

11.1 Espressioni regolari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 12 Strumenti per gestione le 73

12.1 Strumenti di backup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 12.2 Compressione di le con gzip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 12.3 Dividere le in parti pi piccole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 12.4 Trovare le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 12.5 Determinare il contenuto di un le . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

INDICE

iv

13 Usare i dischi

77

13.1 Concetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 13.2 mount e il le /etc/fstab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 13.2.1 Montare un lesystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 13.2.2 Esempio: montare un CD-ROM . . . . . . . . . . . . . . . . . . . . . . . . . 80 13.2.3 /etc/fstab: Automatizzare il processo di mount . . . . . . . . . . . . . 81 13.2.4 Dischi rimovibili (oppy, Zip disk, etc.) . . . . . . . . . . . . . . . . . . . . 83 14 PPP 85

14.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 14.2 Preparazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 14.3 Il modo semplice: wvdial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 14.4 Congurazione manuale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 15 Rimuovere e installare software 89

15.1 dpkg lutilit per i pacchetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 15.2 Che cosa fa unutilit per la manutenzione dei pacchetti . . . . . . . . . . . . . . . 89 15.3 Apt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 15.3.1 Congurare Apt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 15.3.2 Usare apt-get . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 15.4 Usare dselect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 15.5 Usare dpkg manualmente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 15.6 Compilare software da se stessi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 15.7 Software proprietario non in formato .deb. . . . . . . . . . . . . . . . . . . . . . . 93 16 Risoluzione di problemi 95

16.1 Debian si bloccata o andata in crash . . . . . . . . . . . . . . . . . . . . . . . . 95 16.2 Il terminale non funziona correttamente . . . . . . . . . . . . . . . . . . . . . . . . 95 16.3 Il computer emette un avviso sonoro quando si preme un tasto e il video mostra un le di testo o molti simboli ~. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

INDICE

17 Concetti avanzati

97

17.1 Introduzione allo scripting di shell . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 17.1.1 Cosa e perch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 17.1.2 Un semplice esempio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 17.2 File avanzati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 17.2.1 La vera natura dei le: hard link e inode . . . . . . . . . . . . . . . . . . . 97 17.2.2 Tipi di le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 17.2.3 Il lesystem proc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 17.2.4 Aspetti avanzati dei permessi sui le . . . . . . . . . . . . . . . . . . . . . 103 17.2.5 chattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 17.2.6 Copiare su larga scala . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 17.2.7 Altri concetti non ancora affrontati, ma che dovrebbero esserlo. . . . . . . 104 17.3 Compilare il kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 17.4 Alcune parole riguardo la sicurezza . . . . . . . . . . . . . . . . . . . . . . . . . . 105 17.5 Programmazione su Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 18 E ora con cosaltro leggere? 107

18.1 Altri manuali Debian da leggere . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 18.2 Alre risorse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 19 Contribuire a Debian: come si pu aiutare? 109

19.1 Segnalare un bug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 19.2 Altre cose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 A Un breve esame delle applicazioni disponibili 111

A.1 (Le sottosezioni potrebbero copiare la struttura del sistema di menu). . . . . . . . 111 B Sommario dei componenti di un sistema GNU/Linux C Appendice C: Avviamento del sistema D Miscellanea 113 115 117

D.1 Storia di Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 D.2 La storia di GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 D.3 La numerazione delle versioni del kernel Linux . . . . . . . . . . . . . . . . . . . . 119

INDICE

vi

Capitolo 1

Riguardo il Tutorial
Questo il Debian Tutorial. Esso rivolto ai nuovi utenti di Debian GNU/Linux. Non richiede precedenti conoscenze su GNU/Linux o altri sistemi simili a Unix, ma presume conoscenze molto generiche riguardo i computer e lhardware (si dovrebbe conoscere quali siano le componenti principali di un PC e per cosa venga utilizzato un computer). Questo manuale scritto per essere letto ordinatamente; ciascun capitolo presume la conoscenza dei precedenti, comunque pu risultare utile anche se letto senza seguire un ordine preciso. in previsione anche una Guida di riferimento Debian, che sar pi completa ma meno introduttiva. Il tutorial richiede che si abbia gi installato e congurato Debian GNU/Linux in accordo con il manuale di installazione (che al momento di questa stesura ancora incompleto). Tuttavia si potrebbe voler dare uno sguardo al tutorial prima di procedere con linstallazione in modo da imparare qualcosa su Debian. In generale il tutorial prova a spiegare il perch delle cose e aiuta a capire cosa succeda nel sistema. Lidea quella di potenziare le proprie capacit nella risoluzione di nuovi problemi e ottenere il massimo dal proprio computer. Cos il tutorial abbonder di teoria, di storia e di cose divertenti alternate alla parte esplicativa in stile How-To del manuale. Per cortesia, inviare commenti riguardo il tutorial alla mailing list del Debian Documentation Project <debian-doc@lists.debian.org>. Siamo particolarmente interessati a sapere se il tutorial stato di aiuto e a come possiamo migliorarci. Se si confusi durante la lettura o si nota che usiamo un termine senza prima spiegarlo, inviare una e-mail. Per cortesia NON si inviino allautore richieste tecniche riguardanti Debian: ci sono altri forum per questo. Vedere Ottenere aiuto da una persona a pagina 31. Allindirizzo succitato inviare solo e-mail riguardanti il manuale. Per trovare lultima versione di questo manuale andare su: http://www.debian.org/doc/ e seguire i link.

Capitolo 1. Riguardo il Tutorial

1.1

Ringraziamenti

Molte persone hanno dato il loro aiuto per la redazione di questo manuale. Il ringraziamento pi grande va a Larry Greeneld e alla sua Linux Users Guide, che ha costituito la base di partenza per il manuale. La Linux Users Guide parte del Linux Documentation Project. Molti ringraziamenti vanno a tutti coloro che mi hanno aiutato nella stesura del manuale rendendolo di gran lunga migliore. Se questo manuale risultato di piacevole lettura, si mandino i ringraziamenti a Thalia Hooker e Day Irmiter. Grazie a Richard Stallman della Free Software Foundation per i consigli, le correzioni e lofferta di pubblicare il testo. Grazie a James Treacy per avermi permesso di utilizzare alcuni suoi scritti dal sito Debian. Grazie a tutti quelli che hanno scritto parti del manuale: Craig Sawyer ha scritto sulla shell, Ole Tetlie sta scrivendo riguardo la programmazione, Oliver Elphick ha contribuito con spiegazioni di alcune utilit di base, Ivan E. Moore II ha contribuito con la spiegazione su PPP. Molte persone hanno inviato correzioni e commenti, inclusi Eric Fischer and Mike Touloumtzis. Molte grazie ad Ardo van Rangelrooij per avere ideato e per mantenere il DebianDoc DTD utilizzato per scrivere il manuale. Naturalmente, impossibile ringraziare le centinaia di sviluppatori Debian e le migliaia di autori di software libero che ci hanno fornito qualcosa da usare e un argomento su cui scrivere. Grazie anche a tutti coloro che ho dimenticato, poich sicuramente avr fatto qualche pasticcio. Spero che nessuno si offender; per piacere inviare una e-mail se si pensa che il proprio nome avrebbe dovuto apparire qui.

Capitolo 2

Introduzione
2.1 Che cosa Debian?

Debian un sistema operativo (OS) libero per il proprio computer. Un sistema operativo linsieme di programmi e utilit di base che rendono il proprio computer utilizzabile. Al cuore del sistema operativo c il kernel. Il kernel il programma fondamentale del computer: esso svolge tutte le funzioni di gestione di base e permette di avviare altri programmi. Debian utilizza il kernel Linux, un software completamente libero ideato da Linus Torvalds e sviluppato da (probabilmente oltre 1000) programmatori in tutto il mondo. Una larga parte degli strumenti di base che completano il sistema operativo provengono dal (progetto GNU (http://www.gnu.org)) e anche questi strumenti sono liberi. Naturalmente la gente ha bisogno di software applicativo: programmi che la aiutino a fare ci di cui ha bisogno, dallediting di documenti, alla gestione di unattivit, ai giochi elettronici e alla scrittura di altro software. Debian viene distribuito con oltre 1000 pacchetti (software precompilato confezionato in un pratico formato per una facile installazione sulla propria macchina); tutto software libero. un po come una torre. Alla base c Linux. Poi ci sono gli strumenti di base, per lo pi di provenienza GNU. Inne c tutto il software applicativo che si pu eseguire sul computer: molto del quale ancora GNU. Gli sviluppatori Debian agiscono come architetti e coordinatori: organizzano con cura il sistema e confezionano il tutto in un sistema operativo integrato e stabile: Debian GNU/Linux.

2.1.1

Cos un sistema operativo e che tipo di sistema operativo Debian?

Un sistema operativo linsieme del software che rende un computer utilizzabile. Esso gestisce i dispositivi hardware e fornisce utilit e applicativi. Debian GNU/Linux si basa sul sistema operativo Unix che ha una lunga storia (vedere Storia di Unix a pagina 117). Debian sostanzialmente compatibile con Unix, ma aggiunge un signicativo numero di ulteriori caratteristiche. La losoa progettuale di GNU/Linux (e Unix) quella di dividere le sue funzionalit in piccole parti polifunzionali. In questo modo si possono facilmente aggiungere nuove funzionalit e

Capitolo 2. Introduzione

nuove caratteristiche combinando le piccole parti (programmi) in modi nuovi. Debian simile a un kit di costruzioni; si pu realizzare qualsiasi tipo di cosa con esso. Quando si utilizza un sistema operativo, si vuole minimizzare il lavoro necessario per portare a termine il proprio compito. Debian fornisce molti strumenti che possono aiutare in questo, ma solo se si sa cosa essi siano in grado di fare. Perdere unora provando a fare qualcosa e alla ne rinunciarci non molto produttivo. Questo manuale insegner luso degli strumenti fondamentali disponibili in Debian: quale strumento usare e in quale situazione e come concatenare i vari strumenti tra loro.

2.1.2

Chi crea Debian?

Debian un progetto di sviluppo internet composto solo da volontari. Ci sono centinaia di volontari che ci lavorano. Molti sono incaricati di un piccolo numero di pacchetti software e sono intimi conoscitori del software di cui creano i pacchetti. Questi volontari lavorano insieme seguendo un rigido insieme di linee guida che stabiliscono come debbano essere assemblati i pacchetti. Queste linee guida sono sviluppate cooperativamente con discussioni in mailing-list internet e su forum internet relay chat (IRC).

2.2

Cos il software libero?

Quando gli sviluppatori e gli utenti Debian parlano di software libero, si riferiscono alla libert piuttosto che al prezzo. Debian libero in questo senso: si liberi di modicarlo e ridistribuirlo e a tale scopo si pu sempre avere accesso al codice sorgente. Le Debian Free Software Guidelines (http://www.debian.org/social_contract#guidelines) (Linee guida per il software libero Debian) descrivono in maggior dettaglio cosa si intenda esattamente per libero. La Free Software Foundation (http://www.fsf.org), fondatrice del progetto GNU, unaltra fonte di informazioni. Si pu trovare una pi dettagliata discussione sul software libero sul sito web Debian (http://www.debian.org/intro/free). Il software libero viene talvolta chiamato software Open Source (R); Open Source un marchio certicato. Siccome Open Source (R) un marchio commerciale, solo il software realmente libero pu chiamarsi Open Source (R). Si possono incontrare venditori che provano a ingannare affermando che il loro software libero, mentre in realt ha dei vincoli signicativi. Il marchio Open Source (R) d assicurazioni che il software realmente software libero. Software Open Source occasionalmente abbreviato OSS. Ci si pu domandare: perch qualcuno dovrebbe spendere ore del suo tempo a scrivere software, assemblarlo con cura e poi renderlo disponibile a tutti? Le risposte sono tanto variabili come la gente che vi contribuisce. Molti credono nello scambio di informazioni e nellavere la libert di collaborare lun con laltro, e sentono che il software libero incoraggia tutto ci. C una lunga tradizione iniziata negli anni 50 che sostiene questi valori, alle volte chiamata Etica Hacker. (Si pu leggere altro in merito nel piacevole libro di Steven Levys, Hackers: Heroes of the Computer Revolution.)

Capitolo 2. Introduzione

Altri vogliono imparare qualcosa sui computer. Sempre pi persone sono alla ricerca di modi per evitare i prezzi gonati del software commerciale. Una crescente massa di persone contribuisce come ringraziamento per tutto il grandioso software libero che ha ricevuto da altri. Molti in ambiente accademico creano software libero per facilitare un pi ampio uso dei risultati delle loro ricerche. Imprese aiutano nel mantenimento di software libero cos possono avere voce in capitolo su come viene sviluppato: non c via pi veloce per avere una nuova caratteristica che quella di implementarla da s o pagare un consulente per farlo! Le imprese sono anche interessate alla maggiore afdabilit e allabilit di scegliere fra fornitori di assistenza. Ancora, altri vedono il software libero come un bene sociale che rende democratico laccesso alle informazioni, previene la eccessiva centralizzazione dellinfrastruttura mondiale dellinformazione. Naturalmente, molti di noi lo trovano semplicemente molto divertente. Debian cos impegnato sul fronte del software libero che abbiamo pensato fosse utile che ci fosse formalizzato in un documento di qualche tipo. Il nostro Social Contract (http://www. debian.org/social_contract) promette che Debian sar sempre software libero al 100%. Quando si scarica un pacchetto dalla distribuzione Debian, sezione main, si sicuri che esso rispetti le nostre linee guida sul software libero. Sebbene Debian creda nel software libero, ci sono casi in cui la gente vuole o necessita di avere software proprietario sulla propria macchina. Ogni qualvolta sia possibile Debian supporta ci; sebbene il software proprietario non sia incluso nella sezione main, esso talvolta disponibile nei siti ftp nella directory non-free e c un numero crescente di pacchetti il cui unico compito quello di installare software proprietario che noi non siamo autorizzati a distribuire direttamente. importante distinguere il software commerciale dal software proprietario. Il software proprietario software non-libero, mentre il software commerciale software venduto per denaro. Debian ammette che il software commerciale faccia parte della sezione main, ma non cos per il software proprietario. Ci si ricordi che lespressione software libero non si riferisce al prezzo; infatti possibile vendere software libero. Per maggiori chiarimenti sulla terminologia, vedere: http://www.opensource.org o http://www.fsf.org/philosophy/ categories.html.

2.3

Come leggere questo Tutorial

Il modo migliore per imparare quasi qualsiasi programma per computer st nel proprio computer. La maggior parte delle persone trova che leggere un libro senza usare il programma non apporti beneci. Il modo migliore per imparare Unix e GNU/Linux quello di usarli. Si usi GNU/Linux per tutto ci che si pu. Si sperimenti. Non si abbia paura: possibile fare pasticci, ma si pu comunque sempre reinstallare. Si facciano i backup e ci si diverta! Debian non cos intuitivamente comprensibile come alcuni altri sistemi operativi. Perci probabilmente nirete per leggere almeno i primi capitoli. GNU/Linux assomiglia a una macchina da corsa, alla cucina di un grande chef o a un romanzo classico; la sua potenza e complessit rendono difcile il primo approccio, ma poi, nel tempo, molto pi graticante.

Capitolo 2. Introduzione

Il metodo suggerito per imparare quello di leggere un poco, poi provare un altro poco. Si continui a provare no a che non si presa condenza con i concetti, poi si inizi a saltare tra le varie parti del libro. Troverete che viene affrontata una variet di argomenti, alcuni dei quali saranno interessanti e altri risulteranno noiosi. Dopo un po si dovrebbe avere sufciente condenza da iniziare a usare i comandi senza sapere esattamente cosa essi facciano. Questa una buona cosa. Una cosa utile da sapere: se si scrive un comando per sbaglio, o non si sa come uscire da un programma, la sequenza C-c (il tasto Ctrl e la lettera c minuscola premuti contemporaneamente) spesso interromper il programma.

2.4

Il Linux Documentation Project

Questo manuale basato grandemente sulla Linux Users Guide del Linux Documentation Project, scritta da Larry Greeneld. Grazie Larry! Questo progetto ha numerosi altri eccellenti manuali, molti dei quali destinati a utenti pi esperti ed amministratori di sistema. Il LDP mantiene anche gli HOWTO di Linux, unimpareggiabile risorsa con la quale si dovrebbe avere familiarit. Potete trovare LDP sulla loro pagina web (http://sunsite.unc.edu/LDP/).

Capitolo 3

Incominciare
Cos si nito di installare Debian! Congratulazioni. Allora immergiamoci e iniziamo a imparare ad usarlo. Come parte del processo di installazione, si dovrebbe aver capito come fare il boot del sistema Debian (con uno speciale disco oppy, semplicemente accendendo il computer oppure premendo il tasto Alt al prompt di LILO e selezionando Linux).

3.1

Un sistema operativo multiutente e multitasking

Come ricordato precedentemente (Che cosa Debian? a pagina 3), il progetto di Debian GNU/Linux discende dal sistema operativo Unix. Diversamente dai comuni sistemi operativi desktop come il DOS, Windows e MacOS, Unix si trova abitualmente su grossi server e sistemi multiutente. Ci signica che Debian ha caratteristiche che mancano in questi altri sistemi operativi. Permette a tantissime persone di utilizzare il medesimo computer contemporanemamente, purch ogni utente abbia il proprio terminale 1 . Per permettere a pi utenti di lavorare nello stesso momento, Debian deve permettere a molti programmi e applicazioni di essere eseguiti contemporaneamente. Questa caratteristica chiamata multitasking. Molta della complessit (e potenza) dei sistemi simili a Unix deriva da queste due caratteristiche. Per esempio, il sistema deve avere un modo per impedire agli utenti di cancellare accidentalmente i le degli altri, e deve coordinare tutti i programmi che sono eseguiti contemporaneamente, per esempio per assicurarsi che non utilizzino tutti il disco sso nello stesso momento. Se si tiene presente ci per cui Debian fu progettato originariamente, molti aspetti di esso parranno pi sensati. Si imparer ad avvantaggiarsi della potenza di queste caratteristiche.
(Un terminale composto solamente da una tastiera e un monitor connessi al computer attraverso la rete, mediante un modem o direttamente. La tastiera e il monitor costituiscono un terminale che risulta direttamente collegato al computer: questo terminale speciale chiamato spesso console.)
1

Capitolo 3. Incominciare

3.2

Fare il login

Per usare Debian necessario farsi riconoscere dal sistema. Solo cos esso sa chi siamo, quali permessi abbiamo e quali siano le nostre preferenze. A tale scopo, si ha un nome utente o login; se si ha installato Debian da soli, dovrebbe essere stato chiesto di fornire tale nome durante linstallazione. Se si sta facendo il login su un sistema amministrato da qualcun altro, si deve richiedere un account sul sistema con un nome utente corrispondente. Si ha anche una password, cos nessuno pu ngere di essere qualcun altro. Se non si ha una password, chiunque pu fare il login da Internet sul computer e fare cose brutte (vedere Alcune parole riguardo la sicurezza a pagina 105). Se si preoccupati della propria sicurezza, si dovrebbe avere una password. Molte persone preferiscono aver ducia nel fatto che gli altri non utilizzino in modo malevolo il loro account; si spera che il proprio ambiente di lavoro non incoraggi la paranoia. Questo un atteggiamento perfettamente ragionevole; dipende dalle proprie personali priorit e dal proprio ambiente. Ovviamente un sistema casalingo non necessita della sicurezza di una installazione militare. Debian rende possibile essere pi o meno sicuri a propria scelta. Quando si avvia Debian, si vedr il prompt; una richiesta da parte del computer di alcune informazioni. In questo caso il prompt login:. Si deve digitare il proprio nome utente e, quando richiesta, la propria password. La password non appare sullo schermo mentre la si digita, cosicch nessuno possa vedere, da dietro le spalle dellutente, quale essa sia. Premere Enter dopo aver digitato sia nome utente, sia password. Se si digita il proprio nome utente e password non correttamente, si deve ricominciare. Se si fa tutto correttamente, si vedr un breve messaggio e poi un prompt col simbolo $. Il simbolo $ viene stampato a video da uno speciale programma chiamato shell ed quindi chiamato prompt della shell: qui dove si danno i comandi al sistema. Provare ora a digitare il comando whoami. C un cursore alla destra del prompt di shell. Il cursore un piccolo simbolo di sottolineatura o un rettangolo che indica dove si sta digitando; dovrebbe muoversi mentre si digita. Premere sempre RET (il tasto Invio o Return) quando si nito di scrivere un comando di shell. whoami fornisce il proprio nome utente. Verr poi riproposto il prompt della shell. Per il resto del tutorial, quando viene detto di digitare un comando, si dovr scriverlo nel prompt della shell e premere il tasto INVIO. Su alcune tastiere, questo tasto indicato con Enter e su altre con Return (N.d.T.: sulle tastiere italiane anche con Invio). Stesso tasto, nomi diversi. Quando si sar nito di lavorare, si vorr effettuare il logout dal sistema. Per uscire dalla shell, digitare il comando exit. Si tenga a mente che se si rimane autenticati sul sistema, potrebbe arrivare qualcuno ad utilizzare laccount. Se si ha fortuna si pu avere ducia che coloro che sono nel proprio ufcio o a casa non facciano queste cose; ma se non si ha ducia in chi nello stesso ambiente, ci si dovrebbe assicurare di effettuare il logout quando ci si allontana.

Capitolo 3. Incominciare

3.3

Tasti

Prima di proseguire, importante prendere condenza con le convenzioni presenti nel tutorial riguardo i tasti usati nei comandi. Quando si devono premere simultaneamente pi tasti, sar utilizzata una indicazione tipo C-a. Ci signica premere il tasto control, e battere la lettera minuscola a. Altre abbreviazioni includono il tasto Alt, A, e il tasto Meta M. Alcune tastiere possiedono sia Alt che Meta; molti computer hanno solo il tasto Alt ma esso funziona come il tasto Meta. Cos se non si ha il tasto Meta, si provi Alt al suo posto. Tasti come Alt e Meta sono chiamati tasti modicatori perch cambiano il signicato dei tasti standard tipo la lettera A. Alcune volte si ha bisogno di premere pi di un modicatore; per esempio, M-C-a signica premere simultaneamente Meta, Ctrl e la lettera minuscola a. Alcuni tasti hanno una notazione speciale; per esempio, RET (Return/Enter/Invio), DEL (Delete o alcune volte Backspace), ESC (Escape). Questi dovrebbero essere sufcientemente comprensibili da soli. Lo spazio al posto del trattino - signica premere i tasti in sequenza. Cos per esempio, C-a x RET signica premere contemporaneamente Ctrl e la lettera a minuscola, seguita dalla lettera x, seguita dalla pressione di Invio.

3.4

Storico dei comandi e modica della riga di comando

Qualsiasi cosa si scriva dopo il prompt di shell prima della pressione del tasto Invio chiamata riga di comando: essa una riga di testo che ordina al computer di fare qualcosa. La shell predenita di Debian offre molteplici caratteristiche per facilitare linserimento di righe di comando. Si pu ritornare ai comandi precedenti per eseguirli nuovamente o per modicarli leggermente e poi rieseguirli. Si provi a fare questo: digitare un comando qualsiasi, tipo whoami; poi premere il tasto freccia su. Il comando whoami riappare dopo il prompt. Si pu allora premere Invio per eseguire whoami una seconda volta. Se si sono inseriti diversi comandi, si pu continuare a premere il tasto freccia su per andare indietro a rivederli. Questa caratteristica utile se si fa la stessa cosa per pi volte o se si digita un comando non correttamente e si vuole tornare indietro per correggerlo. Si pu premere il tasto freccia gi per muoversi nellaltra direzione, verso i comandi pi recenti. Se non ci sono pi comandi oltre, il computer emetter un avviso sonoro. Ci si pu anche muovere dentro la riga di comando per effettuare delle modiche. La via pi semplice con le frecce destra e sinistra; provare digitando whoasmi invece di whoami, poi usare il tasto freccia sinistra per muoversi indietro no alla lettera s. Si pu cancellare la lettera s con i tasti Backspace o Canc. Ci sono anche caratteristiche pi avanzate (tuttavia non necessario memorizzarle tutte adesso). Provare a digitare C-a. Questo porta allinizio della riga. C-k (la k sta per kill, uccidi)

Capitolo 3. Incominciare

10

cancella no alla ne della riga; provarlo dal mezzo della riga di comando. Utilizzando C-a seguito da C-k, si pu cancellare lintera riga di comando. C-y incolla lultima cosa che stata uccisa, inserendola alla posizione attuale del cursore (y sta per yank, come in yank it back, tirare indietro violentemente). C-e muover il cursore alla ne della riga di comando. Si continui a fare prove sulla riga di comando modicandola per prendervi condenza. Si sperimenti.

3.5

Fare il login come utente root

Poich Debian un sistema multiutente, progettato per impedire ad un utente o programma qualunque di danneggiare lintero sistema. Il kernel non permetter agli utenti normali di modicare le di sistema importanti. Ci signica che le cose rimangono dove si presuppone che siano, sicure da problemi, virus e persino da scherzi malevoli. Diversamente da altri sistemi operativi, Debian al sicuro da queste minacce: non si avr bisogno di un programma antivirus. Tuttavia, qualche volta si ha bisogno di modicare dei le di sistema importanti; per esempio, si potrebbe voler installare nuovo software o congurare la propria connessione di rete. Per farlo si dovr avere pi poteri di un utente normale; si dovr diventare lutente root (anche chiamato superutente). Per diventare root, fare semplicemente il login con il nome utente root e con la relativa password se disponibile. Si spera che ci si ricordi la password introdotta quando si installato il sistema; altrimenti, un problema. 2 In molti casi, solo lamministratore del sistema ha la password di root, e solo lamministratore del sistema pu svolgere i compiti che devono essere fatti dallutente root. Se si sta usando il proprio computer, voi siete naturalmente lamministratore del sistema. Se non si hanno i privilegi di root, si dovr ricorrere al proprio amministratore di sistema per svolgere i compiti che richiedono i privilegi di root. Qualche volta si avr la password di root anche su un server condiviso di un ente o di unistituzione scolastica, perch lamministratore di sistema ha ducia che sar usata correttamente. In questo caso, si potr aiutare ad amministrare il sistema e ad adattarlo per le proprie necessit. Si dovr per essere sicuri di usare la password responsabilmente, rispettando allo stesso tempo gli altri utenti. Adesso, se si ha la password, si provi a fare il login come root. Si digiti il comando whoami per vericare la propria identit. Poi fare il logout immediatamente. Quando si root il kernel non protegger lutente da se stesso, perch root ha i permessi per fare qualunque cosa sul sistema. Per esempio, si potrebbe digitare rm -rf / e cancellare il proprio intero sistema con poche battute. ( superuo dire che NON si deve digitare questo comando.) Non fare esperimenti
La soluzione a questo problema piuttosto tecnica. Si deve avviare con un disco di recupero, montare la propria normale partizione di root e modicare il le /etc/passwd per rimuovere la vecchia password di root. Si chieda aiuto se ci risulta incomprensibile (vedere Ottenere aiuto da una persona a pagina 31).
2

Capitolo 3. Incominciare

11

mentre si root. In realt, non fare nulla come root che non sia assolutamente necessario. Questa non una questione di sicurezza, ma piuttosto di stabilit. Il proprio sistema funzioner molto meglio se pu impedire di commettere stupidi errori. Si pu trovare il comando su pi conveniente che fare il login come root. su permette di assumere lidentit di un altro utente, solitamente root a meno che non si specichi qualcun altro. (Si ricordi che su sta per Super User, anche se alcuni dicono che stia per Set UserID.) Provare questo: 1 Fare il login come utente, cio non come root. 2 whoami Conferma il proprio nome utente. 3 su Inserire il comando su. Esso richieder una password; si digiti la password di root. Se si d la password corretta, si dovrebbe vedere un nuovo prompt di shell. In modo predenito, il prompt di shell di root # invece che $. 4 whoami Questo restituir root come proprio nuovo nome utente. 5 exit Uscire dalla shell di root. Il proprio prompt ritorner $. 6 exit Uscire dalla propria shell. Quando si sta svolgendo attivit di amministrazione del sistema, si dovrebbe fare il pi possibile da utente normale. Poi usare su, svolgere quelle mansioni che richiedono i privilegi di root e poi usare exit per disattivare i privilegi, cos da non potere pi danneggiare niente. Si pu utilizzare su per assumere lidentit di qualsiasi utente sul sistema, non solo root. Per fare questo, digitare su utente dove utente lutente che si vuole diventare. Si dovr naturalmente conoscere la sua password, a meno che non si sia root in quel momento oppure che lutente non abbia una password.

3.6

Console virtuali

Il kernel Linux supporta le console virtuali. Questo un modo di rendere il proprio singolo schermo e la tastiera simili a molteplici terminali, tutti connessi al medesimo sistema. Fortunatamente, utilizzare le console virtuali una delle cose pi semplici di Debian: ci sono delle scorciatoie da tastiera per spostarsi fra le console velocemente. Per provare, fare il login sul proprio sistema, e digitare A-F2 (premere insieme i tasti Alt e F2, che il tasto funzione numero 2).

Capitolo 3. Incominciare

12

Ci si ritrover a un nuovo prompt di login. Non ci si spaventi: adesso si sulla console virtuale (VC) numero 2! Fare il login qui e dare qualche comando, ancora whoami o qualsiasi altro, per confermare che questa veramente una shell di login. Ora si pu ritornare alla console virtuale numero 1, con A-F1. Oppure possibile spostarsi sulla terza console virtuale, in modo ovvio (A-F3). Debian dotato di sei console virtuali abilitate in modo predenito, accessibili con il tasto Alt e i tasti funzione F1-F6 (tecnicamente ci sono pi console virtuali abilitate, ma solo 6 di loro permettono di fare il login. Le altre sono utilizzate per il sistema X Window o altri scopi particolari). Se si sta utilizzando il sistema X Window, esso generalmente si avvier sulla prima console virtuale inutilizzata, probabilmente VC 7. Inoltre per spostarsi dalla console virtuale X a una delle prime sei, si dovr aggiungere il tasto Ctrl alla sequenza. Cos C-A-F1 sposta sulla VC 1. Ma si pu andare da una VC di testo alla console virtuale di X usando solo Alt. Se non si lascia mai X non ci si dovr preoccupare di questo; X automaticamente passa sulla sua console virtuale quando si avvia. Una volta che ci si sar abituati ad esse, le console virtuali diventeranno probabilmente uno strumento indispensabile per fare pi cose nello stesso momento. (Il sistema X Window serve allo stesso scopo fornendo nestre multiple piuttosto che console multiple.) Si pu avviare un programma differente in ogni VC o fare il login come root su una VC e come utente normale in unaltra. Oppure tutti in famiglia possono usare la propria VC; ci specialmente comodo se si usa X, in tale caso si possono avviare numerose sessioni di X contemporaneamente, su differenti console virtuali.

3.7

Spegnere il sistema

Non si deve solo spegnere il computer! Si rischia di perdere dati importanti! Se si lunico utilizzatore del proprio computer si potrebbe volere spegnere il computer quando si nito di usarlo. 3 Diversamente dalla maggior parte delle versioni del DOS, una cattiva pratica quella di spegnere semplicemente il computer quando si nito di usarlo. anche male riavviare la macchina (con il pulsante di reset) senza prima prendere adeguate precauzioni. Il kernel Linux, al ne di aumentare le prestazioni, possiede una cache su disco. Ci signica che immagazzina temporaneamente le informazioni destinate alla memorizzazione permanente, nella RAM; siccome la memoria migliaia di volte pi veloce di un disco, ci rende molte operazioni su le assai pi veloci. Periodicamente, le informazioni che Linux tiene in memoria vengono di fatto scritte sul disco. Ci chiamato sincronizzazione. Per potere spegnere o riavviare il computer, si dovr permettere al computer di spostare ogni cosa dalla memoria e di salvarla denitivamente.
Per evitare la possibilit di indebolire alcuni componenti hardware, si spenga il computer solo quando si ha nito di utilizzarlo per tutto il giorno. Accensione e spegnimento sono le due maggiori cause di logoramento dei componenti del computer. Accendere e spegnere il computer solo una volta al giorno probabilmente il miglior compromesso tra il proprio conto dellelettricit e la longevit del computer.
3

Capitolo 3. Incominciare

13

Per riavviare, digitare semplicemente reboot o premere C-A-DEL (cio Control, Alt, e Delete). Per spegnere il PC, si dovr essere root. Come utente root, si digiti semplicemente il comando shutdown -h now. Questo avvier lintera procedura di spegnimento, incluso il comando sync che pulisce la cache del disco come descritto sopra. Quando si vede la scritta System halted, si pu spegnere il computer in sicurezza. Se si dispone del supporto per (APM) Advanced Power Management nel proprio kernel e BIOS, il computer potr spegnersi da solo risolvendo il problema. APM comune sui laptop ed presente su certe schede madri di PC desktop. Alcuni trovano pi semplice spegnere il computer digitando C-A-DEL come per il reboot, spegnendo poi il computer prima che il kernel Linux cominci a ricaricarsi. Tuttavia una volta che il kernel comincia a caricarsi, si dovr aspettare che nisca e poi ricominciare nuovamente la corretta procedura di riavvio o spegnimento.

Capitolo 3. Incominciare

14

15

Capitolo 4

I fondamenti
4.1 La riga di comando e le pagine man

Abbiamo gi discusso la riga di comando, che costituita dai comandi che si inseriscono dopo il prompt della shell. Questa sezione descrive la struttura di righe di comando pi complesse. Una riga di comando minimale contiene solo un nome di un comando, come whoami; ma sono possibili altre cose. Per esempio si potrebbe digitare: man whoami Questo comando richiama il manuale in linea per il programma whoami (per scorrere attraverso la documentazione premere la barra spaziatrice o premere il tasto q per uscire). Un esempio pi complesso: man -k Postscript Questa riga di comando composta da tre parti. Inizia con il nome del comando, man. Poi ha una opzione o switch, -k, seguita da un argomento, Postscript. Alcune persone si riferiscono ad ogni cosa eccetto al nome del comando come parametri del comando. Cos le opzioni e gli argomenti sono entrambi parametri. Le opzioni cambiano il comportamento di un comando, attivando particolari caratteristiche o funzionalit. Di solito le opzioni sono precedute da un -. Le utilit di GNU hanno anche una forma estesa per le opzioni; la forma estesa di -k --apropos. Digitare man -h o man --help per ottenere una lista completa di opzioni per il comando man. Ogni comando avr il proprio insieme di opzioni, comunque la maggior parte dei comandi avr le opzioni --help e --version. Alcuni comandi sono bizzarri; tar, per esempio, non richiede il - prima delle sue opzioni, per motivi storici. Ogni cosa che non una opzione e non un nome di un comando un argomento. In questo caso, largomento Postscript. Gli argomenti possono servire a vari scopi; nella maggior

Capitolo 4. I fondamenti

16

parte dei casi, sono nomi di le su cui il comando dovrebbe svolgere delle operazioni. In questo caso, Postscript la parola che il programma man ricercher. Nel caso del comando man whoami, largomento era il comando su cui si volevano delle informazioni. Sezionando la riga di comando man -k Postscript: man, il nome del comando, comunica al computer di vedere le pagine di manuale. Queste forniscono la documentazione per i comandi. Per esempio, man whoami fornir la documentazione sul comando whoami. -k, lopzione, cambia il comportamento di man. Normalmente man si aspetta un nome di comando per argomento, come whoami, e cerca la documentazione di quel comando. Invece con lopzione -k o --apropos man si aspetta come argomento una parola chiave. Esso poi fornisce una lista di tutte le pagine di manuale che hanno la parola chiave nella loro descrizione. Postscript largomento; dato che stata usata lopzione -k, la parola chiave da cercare. -k e Postscript sono entrambi parametri. Procedere digitando man -k Postscript; si vedr una lista di tutte le pagine di manuale presenti sul proprio sistema che hanno qualcosa a che fare con Postscript. Se non c molto software installato, si potrebbe invece vedere Postscript: nothing appropriate.

4.1.1

Descrizione della riga di comando

Nota: Questa una sezione che si pu saltare, se si vuole proseguire. C un modo tradizionale e conciso di descrivere la sintassi di un comando 1 che si dovrebbe conoscere. Per esempio, se si digita man man si ottiene la pagina di manuale riguardo man, si vedono diverse descrizioni di sintassi che iniziano con il nome del comando man. Una di queste appare come segue: man -k [-M path] keyword ... Ogni cosa racchiusa tra le parentesi ([]) una unit opzionale. Cos non si obbligati ad usare lopzione -M, ma se lo si fa, si deve usare un argomento path, percorso. Si deve usare lopzione -k e largomento keyword, parola chiave. I tre punti, ..., signicano che si pu ripetere pi volte qualsiasi cosa che li precede; perci si potrebbero cercare diverse parole chiave. Si osservi una delle descrizioni pi complesse dalla pagina di manuale di man: man [-c|-w|-tZT device] [-adhu7V] [-m system[,...]] [-L locale] [-p string] [-M path] [-P pager] [-r prompt] list] [-e extension] [[section] page ...] ...

[-S

Sintassi signica il modo corretto di combinare varie opzioni e argomenti.

Capitolo 4. I fondamenti

17

Non necessario spiegare tutto (e non c da preoccuparsi del signicato di ogni cosa), ma si faccia attenzione allorganizzazione della descrizione. Primo, usualmente insiemi di opzioni signicano che si pu usare una o pi di esse in differenti combinazioni; perci -adhu7V signica che si pu usare anche -h. Comunque, non si pu sempre usare tutte le combinazioni; questa descrizione non molto chiara in merito. Per esempio, -h incompatibile con altre opzioni, ma si potrebbe digitare il comando man -du. Sfortunatamente il formato della descrizione non chiarisce questo punto. Secondo, il simbolo | signica o. Cos si pu usare o lopzione -c o -w o le opzioni -tZT, seguite dallargomento device. Terzo, si noti che possibile nidicare le parentesi dato che indicano ununit opzionale. Cos se si ha una sezione, si deve anche avere una pagina, dato che la pagina non opzionale allinterno della unit [[section] page]. Non necessario memorizzare tutto questo, basta riferirsi a questa sezione quando si legge la documentazione.

4.2
4.2.1

File e directory
Introduzione ai le

I le rappresentano un mezzo per memorizzare ed organizzare informazioni, analogamente ai documenti di carta. I le sono organizzati dentro directory, che sono anche chiamate cartelle su alcuni altri sistemi operativi. Guardiamo lorganizzazione dei le in un sistema Debian: / Un semplice / rappresenta la directory root. Tutti gli altri le e directory sono contenuti nella directory root. Se si proviene dal mondo DOS/Windows, / molto simile a quello che C: per il DOS, cio la radice (root) del lesystem. Tuttavia c una notevole differenza tra il DOS e Linux: il DOS mantiene diversi lesystem: C: (primo hard disk), A: (primo oppy disk), D: (CD-ROM o secondo hard disk) mentre Linux ha tutti i suoi le organizzati sotto la stessa radice /. Per ulteriori dettagli vedere mount e il le /etc/fstab a pagina 78. /home/janeq Questa la directory home dellutente janeq. Per ottenere questa directory, leggendo da sinistra verso destra, si inizia nella directory root, si entra nella directory home, poi si entra nella directory janeq. /etc/X11/XF86Config Questo il le di congurazione per il sistema X Window. Esso localizzato nella sottodirectory X11 della directory /etc; /etc , a sua volta, una sottodirectory della directory root, /. Cose da notare: I nomi dei le sono sensibili alle minuscole/maiuscole. Questo signica che MIOFILE e MioFile sono le differenti.

Capitolo 4. I fondamenti

18

La directory root chiamata semplicemente /. Non si deve confondere questa root con lutente root, lutente nel proprio sistema con i super poteri. Ogni directory ha un nome che pu contenere ogni lettera o simbolo eccetto /. La directory root uneccezione; il suo nome / (che si pronuncia slash o la directory root) e non pu essere rinominata. 2 Ogni le o directory individuato da un nome pienamente qualicato, nome le assoluto o da un percorso che fornisce la sequenza di directory che devono essere attraversate per trovarlo. I tre termini sono sinonimi. Tutti i nomi di le assoluti iniziano con la directory / e c un carattere / tra ogni directory o le nel nome del le. Il primo / il nome di una directory, ma gli altri sono semplicemente dei separatori per distinguere le parti del nome del le. Le parole usate in questo contesto possono creare confusione. Prendiamo il seguente esempio: /usr/share/keytables/us.map.gz Questo un nome di le pienamente qualicato; alcune persone lo chiamano percorso. Tuttavia, le persone si riferiscono a us.map.gz da solo come un nome di le. 3 Le directory sono disposte in una struttura ad albero. Tutti i nomi dei le assoluti partono con la directory root. La directory root ha un certo numero di rami, come /etc e /usr. Queste sottodirectory hanno a loro volta dei rami, costituiti da ulteriori sottodirectory, come /etc/init.d e /usr/local. Lintero insieme chiamato albero delle directory. Si pu pensare a un nome le assoluto come a una rotta dalla base dellalbero (/) alla ne di un qualche ramo (un le). Si sentono anche persone che parlano dellalbero delle directory come se fosse un albero genealogico: cos le sottodirectory hanno genitori e un percorso mostra tutti gli antenati di un le. Ci sono anche i percorsi relativi che iniziano da qualche parte che non la directory root. In seguito ci saranno altre informazioni su questo argomento. Non c alcuna directory che corrisponde a un dispositivo sico, come il proprio hard disk. Questo a differenza del DOS e Windows, dove tutti i percorsi iniziano con un nome di dispositivo come C:\. Lalbero delle directory pensato per essere una astrazione dellhardware sico, cos da poter usare il sistema senza alcuna conoscenza dellhardware. Tutti i propri le potrebbero essere su di un disco oppure si potrebbero avere 20 dischi, alcuni di questi connessi a un computer differente altrove nella rete. Non si pu sapere solo osservando lalbero delle directory e quasi tutti i comandi funzionano esattamente
2 Sebbene si possa usare quasi ogni lettera o simbolo in un nome di le, in pratica una cattiva idea. meglio evitare ogni carattere che spesso ha un signicato speciale nella riga di comando, inclusi: { } ( ) [ ] \ / > < | ; ! # & ^ * % @ Evitare anche di mettere spazi nei nomi dei le. Se si vuole separare le parole in un nome, una buona scelta sono il punto, il trattino, e il trattino basso (_). possibile anche usare la maiuscola per ogni parola, InQuestoModo. 3 C anche un altro uso per la parola percorso. Il signicato designato usualmente chiaro dal contesto.

Capitolo 4. I fondamenti

19

nello stesso modo indipendentemente da quale sia il dispositivo sico su cui si trovano realmente i propri le. Non c da preopcupparsi se tutto questo non ancora completamente chiaro. Ci sono molti esempi che verranno forniti successivamente.

4.2.2

Usare i le: un tutorial

Per usare il proprio sistema si deve sapere come creare, muovere, rinominare e rimuovere le e directory. Questa sezione descrive come svolgere queste operazioni con i comandi standard Debian. Il miglior modo per imparare quello di provare le cose. Fintanto che non si root (e non si sono ancora creati le personali importanti), non c niente che si possa rovinare seriamente. Buttiamoci: digitare ognuno di questi comandi al prompt e premere Invio: 1 pwd C sempre una directory considerata la directory di lavoro attuale per la shell che si sta usando. Si pu vedere questa directory con il comando pwd, il cui nome deriva da Print Working Directory (stampa la directory di lavoro). pwd stampa il nome della directory in cui si sta lavorando: probabilmente /home/proprionome. 2 ls ls sta per list (elenca), come in elenca i le. Quando si digita ls, il sistema mostra una lista di tutti i le nella propria directory di lavoro attuale. Se Debian stata appena installata, la propria directory home potrebbe essere vuota. Se la propria directory di lavoro vuota, ls non produce alcun output, dato che non ci sono le da elencare. 3 cd / cd signica Change Directory (cambia directory). In questo caso, si chiesto di cambiare directory alla directory root. 4 pwd Vericare che si sta ora lavorando nella directory root. 5 ls Vedere cosa c in /. 6 cd Digitando cd senza alcun argomento si seleziona la propria directory home come directory di lavoro attuale: /home/proprionome. Provare pwd per vericarlo. Prima di continuare, si dovrebbe sapere che ci sono in effetti due tipi differenti di nome di le. Alcuni di questi iniziano con il carattere /, la directory root, come /etc/profile. Questi

Capitolo 4. I fondamenti

20

sono chiamati nomi di le assoluti perch si riferiscono allo stesso le, indipendentemente dalla propria directory attuale. Laltro tipo di nome di le quello relativo. Le due directory che si chiamano . e .. sono usate solo nei nomi di le relativi. La directory . si riferisce alla directory attuale e .. la directory genitrice. Queste sono delle directory scorciatoia. Esistono in ogni directory. Anche la directory root ha una directory genitrice: essa genitrice di se stessa! Cos nomi di le che includono un . o .. sono relativi, perch il loro signicato dipende dalla directory attuale. Se ci si trova in /usr/bin e si digita ../etc, allora ci si riferisce alla directory /usr/etc. Se ci si trova in /var e si digita ../etc, allora ci si riferisce alla directory /etc. Si noti che un nome di le senza la directory root allinizio implicitamente ha un ./ allinizio. Perci si pu digitare local/bin o ./local/bin ed la stessa cosa. Un utile consiglio nale: la tilde ~ equivalente alla propria directory home. Cos, digitare cd ~ la stessa cosa che digitare cd senza nessun argomento. Inoltre, si pu digitare qualcosa come cd ~/pratica/miasottodirectory per spostarsi alla directory /home/proprionome/pratica/miasottodirectory. In un modo analogo, ~vincent equivalente alla directory home dellutente vincent, che probabilmente qualcosa come /home/vincent; perci ~vincent/docs/debian.ps equivalente a /home/vincent/docs/debian.ps. Di seguito ci sono altri comandi per i le da provare, ora che si conoscono i nome di le relativi. Digitare cd per spostarsi alla propria directory home prima di iniziare. 1 mkdir pratica Crea, nella propria directory home, una directory chiamata pratica. Questa directory verr usata per provare alcuni altri comandi. Si pu digitare ls per vericare che la propria nuova directory esiste. 2 cd pratica Cambia la directory in pratica. 3 mkdir miasottodirectory Crea una sottodirectory di pratica. 4 cp /etc/profile . cp labbreviazione di copy (copia). /etc/profile solamente un le sul proprio sistema scelto casualmente, per ora non ci si preoccupi di che le esso sia. stato copiato nella directory .; ci si ricordi che . signica solamente la directory in cui ci si trova al momento o directory di lavoro attuale. Cos stata creata una copia del le /etc/profile ed stata messa nella propria directory pratica. Provare a digitare ls per vericare che c veramente un le chiamato profile nella propria directory di lavoro, insieme alla nuova miasottodirectory. 5 more profile Vedere il contenuto del le profile. more usato per vedere il contenuto di le di testo. chiamato more (di pi, ancora) perch mostra il le una schermata alla volta e

Capitolo 4. I fondamenti

21

premendo la barra spaziatrice si vede ancora unaltra schermata. more uscir quando si arriva alla ne del le o quando si digita q (quit, esci). 6 more /etc/profile Vericare che il le originale proprio come la copia appena fatta. 7 mv profile miasottodirectory mv signica move (muovere). Con questo comando si muove il le profile dalla directory attuale allinterno della sottodirectory creata precedentemente. 8 ls Vericare che il le profile non si trova pi nella directory attuale. 9 ls miasottodirectory Vericare che il le profile stato spostato in miasottodirectory. 10 cd miasottodirectory Spostarsi nella sottodirectory. 11 mv profile mioprofile Si noti che, diversamente da alcuni sistemi operativi, non c alcuna differenza tra muovere un le e rinominarlo. Cos non esiste un comando rename separato. Si noti che il secondo argomento di mv pu essere una directory in cui muovere il le o la directory oppure un nuovo nome di le. cp funziona nello stesso modo. Come al solito, si pu digitare ls per vedere il risultato di mv. 12 mv mioprofile .. Proprio come . signica la directory in cui ci si trova al momento, .. signica il genitore della directory attuale, in questo caso la directory pratica creata precedentemente. Usare ls per vericare che quella la directory dove si trova il le mioprofile in questo momento. 13 cd .. Cambiare la directory alla directory genitrice, in questo caso pratica, dove si appena messo il le mioprofile. 14 rm mioprofile rm signica remove (rimuovere): questo cancella il le mioprofile. Fare attenzione! Cancellare un le su un sistema GNU/Linux denitivo: non esiste un comando undelete. Se si esegue rm su un le, esso andato, per sempre. Ripeto, fare attenzione! Cancellare un le su un sistema GNU/Linux denitivo: non esiste un comando undelete. Se si esegue rm su un le, esso andato, per sempre. 15 rmdir miasottodirectory rmdir esattamente come rm, solo che un comando per le directory. Si noti che rmdir funziona solo su directory vuote: se la directory contiene dei le, necessario cancellare prima questi le o, in alternativa, usare rm -r al posto di rmdir.

Capitolo 4. I fondamenti

22

16 cd .. Uscire dalla directory attuale ed entrare nella sua directory genitrice. Ora si pu digitare: 17 rmdir pratica Questo eliminer gli ultimi residui della propria sessione di pratica. Cos ora si sa come creare, copiare, muovere, rinominare e rimuovere le e directory. Si sono anche imparate alcune scorciatoie, come digitare semplicemente cd per saltare alla propria directory home e . e .. per riferirsi rispettivamente alla directory attuale e alla sua genitrice. Si dovrebbe anche ricordare il concetto della directory root, o /, e lalias ~ per la propria directory home.

4.3

Processi

Precedentemente abbiamo menzionato che GNU/Linux un sistema multitasking. Pu svolgere molti compiti nello stesso momento. Ognuno di questi compiti chiamato processo. Il modo migliore per avere unidea di ci di digitare top al prompt della shell. Si ottiene un elenco di processi, ordinati in base alla percentuale del tempo di elaborazione del computer che stanno usando. Lordine cambier continuamente davanti ai propri occhi. Nella parte pi alta dello schermo, ci sono alcune informazioni riguardo al sistema: quanti utenti sono autenticati sul sistema, quanti processi ci sono in totale, quanta memoria disponibile e quanta se ne sta usando. Nellultima colonna a sinistra, si vede il nome dellutente proprietario di ogni processo. Lultima colonna a destra mostra quale comando ha invocato il processo. Probabilmente si noter che top stesso, che si appena invocato, vicino alla parte pi alta della lista (dato che ogni volta che top verica luso della CPU, esso sar attivo e star usando la CPU per la verica). Si notino tutti i comandi che terminano con la lettera d, come kflushd e inetd, la d sta per demone4 . Un demone un processo non-interattivo, cio viene eseguito dal sistema e gli utenti non devono mai preoccuparsi al riguardo. I demoni forniscono servizi come la connettivit internet, la stampa o la posta elettronica. Ora premere u e fornire a top il proprio nome utente quando lo richiede. Il comando u chiede di vedere solo quei processi appartenenti a se stessi; esso permette di ignorare tutti i demoni e che cosa stiano facendo gli altri utenti. Si pu notare anche bash, il nome della propria shell. Praticamente sempre si avr bash in esecuzione. Si noti che la seconda colonna della schermata di top mostra il PID, o Process IDentication number (numero di identicazione del processo). A ogni processo assegnato un PID univoco. Si pu usare il PID per controllare i singoli processi; pi informazioni verranno date in seguito. Un altro trucco utile: digitare ? per ottenere un elenco dei comandi di top. possibile chiedersi che differenza ci sia tra un processo e un programma; in pratica le persone usano i termini in modo intercambiabile. Tecnicamente, il programma linsieme di
4

Originariamente demone, daemon, signicava Disks And Extensions MONitor

Capitolo 4. I fondamenti

23

istruzioni scritte da un programmatore e memorizzate sul disco. Il processo listanza funzionante del programma tenuta in memoria da Linux. Ma non cos importante mantenere i termini distinti. Molta della interazione con un computer comporta il controllo di processi. Si vorr avviarli, bloccarli e vedere che cosa stiano facendo. Lo strumento principale per questo scopo la shell.

4.4

La shell

La shell un programma che permette di interagire con il proprio computer. chiamata shell (conchiglia) perch fornisce un ambiente dentro cui lavorare: una specie di piccola casa elettronica per lutente mentre usa il computer. (Si pensi a un granchio eremita.) La funzione pi semplice della shell quella di lanciare altri programmi. Si digita il nome del programma che si vuole eseguire, seguito dagli argomenti desiderati, e la shell chieder al sistema di eseguire il programma per lutente. Naturalmente, anche i sistemi graci a nestre soddisfano questa necessit. Tecnicamente, Windows 95 fornisce una shell graca e il Sistema X Window un altro tipo di shell graca, ma il termine shell comunemente usato per indicare la shell a riga di comando. Inutile dire che gli hacker che lavorano sulle shell non si accontentano di lanciare semplicemente dei comandi. La propria shell ha un numero sconcertante di utili funzionalit se si vuole sfruttarle. Sono disponibili innumerevoli shell differenti; la maggior parte basata sulla shell Bourne o sulla shell C, due delle shell pi vecchie. Il nome del programma originale della shell Bourne sh mentre csh ` la shell C. Le varianti della shell Bourne includono la Bourne Again Shell del progetto GNU (bash, la shell predenita di Debian), la shell Korn (ksh) e la shell Z (zsh). C anche ash, una implementazione tradizionalista della shell Bourne. La variante pi comune della shell C tcsh (la t un tributo ai sistemi operativi TENEX e TOPS-20, che hanno ispirato alcuni dei miglioramenti di tcsh rispetto a csh). Bash probabilmente la scelta migliore per i nuovi utenti. la shell predenita e ha tutte le caratteristiche di cui si avr verosimilmente bisogno. Ma tutte le shell hanno seguaci fedeli; se si vuole sperimentare, installare alcuni pacchetti di shell differenti e cambiare la propria shell con il comando chsh. Digitare semplicemente chsh, fornire una password quando richiesta e scegliere una shell. Al successivo login, si user la nuova shell.

4.5

Gestire i processi con Bash

Debian un sistema multitasking, perci necessario un modo per fare pi cose alla volta. Gli ambienti graci come X forniscono un modo naturale per far questo; permettono nestre multiple nello schermo nello stesso momento. Naturalmente, Bash (o qualsiasi altra shell) fornisce possibilit analoghe.

Capitolo 4. I fondamenti

24

Precedentemente stato usato top per vedere i diversi processi sul sistema. La propria shell fornisce alcuni modi opportuni per tenere traccia solamente di quei processi che sono stati avviati dalla riga di comando. Ogni riga di comando avvia un job, compito, (chiamato anche process group) che deve essere eseguito dalla shell. Un job pu consistere di un singolo processo o di un insieme di processi in una pipeline; in seguito saranno date pi informazioni sulle pipeline. Linserimento di una riga di comando avvier un job. Provare a digitare man cp e la pagina di manuale di cp apparir sullo schermo. La shell andr in background, sullo sfondo, e ritorner quando si sar nito di leggere la pagina di manuale (o verr digitato q per uscire invece di scorrere lintero testo). Ma si potrebbe leggere la pagina di manuale e volere fare qualcosaltro per un minuto. Nessun problema. Digitare C-z mentre si sta leggendo per sospendere lattuale job in primo piano e mettere invece la shell in primo piano. Quando si sospende un job, Bash fornisce prima alcune informazioni su di esso e poi un prompt di shell. Si vedr sullo schermo qualcosa di simile a questo: NAME cp - copy files SYNOPSIS cp [options] source dest cp [options] source... directory Options: [-abdfilprsuvxPR] [-S backup-suffix] [-V {numbered,exist ing,simple}] [--backup] [--no-dereference] [--force] [--interactive] [--one-file-system] [--preserve] [--recur sive] [--update] [--verbose] [--suffix=backup-suffix] [--version-control={numbered,existing,simple}] [--archive] [--parents] [--link] [--symbolic-link] [--help] [--ver sion] DESCRIPTION --More-[1]+ Stopped $

man cp

Si notino le ultime due righe. La penultima rappresenta le informazioni sul job e poi c un prompt di shell. Bash assegna un numero di job ad ogni riga di comando che si esegue dalla shell. Questo permette di riferirsi facilmente al processo. In questo caso, man cp il job numero 1, visualizzato come [1]. Il segno + signica che questo il job che stato in primo piano per ultimo. Bash comunica anche lo stato attuale del job: Stopped (sospeso) e la riga di comando del job. Ci sono molte cose che si possono fare con i job. Con man cp ancora sospeso, provare questo:

Capitolo 4. I fondamenti

25

1 man ls Avviare un nuovo job. 2 C-z Sospendere il job man ls premendo il tasto Control e la z minuscola; si dovrebbero vedere le informazioni su questo job. 3 man mv Avviare ancora un altro job. 4 C-z Sospenderlo. 5 jobs Domandare a Bash di visualizzare gli attuali job: $ jobs [1] Stopped [2]- Stopped [3]+ Stopped $

man cp man ls man mv

Si notino i segni - e +, che denotano rispettivamente il penultimo e lultimo job in primo piano. 6 fg Mettere lultimo job in primo piano (man mv, quello con il segno +), nuovamente in primo piano. Se si preme la barra spaziatrice, la pagina di manuale continuer a scorrere. 7 C-z Sospendere nuovamente man mv. 8 fg %1 possibile riferirsi a qualsiasi job mettendo un segno % davanti al suo numero. Se si usa fg senza specicare un job, si suppone si tratti dellultimo attivo. 9 C-z Sospendere nuovamente man cp. 10 kill %1 Uccidere il job 1. Bash riporter le informazioni sul job: $ kill %1 [1]- Terminated $

man cp

Capitolo 4. I fondamenti

26

Bash sta solamente chiedendo al job di chiudersi e qualche volta un job non vorr farlo. Se il job non termina, si pu aggiungere lopzione -9 al comando kill per passare dal chiedere al pretendere. Per esempio: $ kill -9 %1 [1]- Killed $

man mv
5

Lopzione -9 uccide forzatamente e incondizionatamente il job. 11 top

Visualizzare nuovamente la schermata di top. Dare il comando u in top per vedere solo i propri processi. Cercare nella colonna di destra i comandi man ls e man mv. man cp non appare in quanto stato ucciso. top mostra i processi del sistema corrispondenti ai propri job; notare che il PID, sulla parte sinistra dello schermo non corrisponde al numero di job. Si potrebbe non riuscire a trovare i propri processi perch essi si trovano pi in basso del fondo dello schermo; se si sta usando X, si pu ridimensionare xterm per risolvere questo problema. Anche questi semplici job consistono in realt di processi multipli, incluso il processo man e il paginatore more che gestisce lo scorrimento di una pagina alla volta. Si pu notare che i processi di more sono anchessi visibili in top. Probabilmente si pu immaginare come eliminare i due rimanenti job. possibile sia ucciderli entrambi (con il comando kill) o mettere ognuno in primo piano (con fg) e uscire. Ricordarsi che il comando jobs fornisce la lista dei job esistenti e il loro stato. Una nota nale: la documentazione per Bash molto buona, ma si trova nel sistema di aiuto Info invece che nelle pagine di manuale. Per leggerla, digitare info bash. Vedere Usare info a pagina 30 per le istruzioni sulluso del programma info. Bash contiene anche un buon sommario dei suoi comandi accessibile dal comando help. help mostra una lista di argomenti disponibili; pi informazioni riguardo ad ognuno di questi sono accessibili con il comando help nomeargomento. Provare a digitare help cd per esempio. Questo fornisce i dettagli sugli argomenti -P e -L riconosciuti da cd.

4.6

Alcune caratteristiche della Bash

Questa sezione menziona solo alcune delle caratteristiche della Bash pi comunemente usate; per una analisi pi completa, vedere Usare la shell a pagina 33.
In termini tecnici, kill invia semplicemente un segnale. In modo predenito invia un segnale che richiede la terminazione (TERM, o segnale 15), ma si pu anche specicare un segnale e il segnale 9 (KILL) il segnale che forza la terminazione. Il nome del comando kill non necessariamente appropriato per il segnale inviato: per esempio, inviare il segnale TSTP (terminal stop) sospende il processo ma permette ad esso di continuare in seguito.
5

Capitolo 4. I fondamenti

27

4.6.1

Completamento dei comandi con Tab

La shell Bash pu indovinare quale nome di le o comando si sta provando a digitare e nire automaticamente di digitarlo. Digitare solo linizio di un comando o di un nome di le e premere il tasto TAB. Se la Bash trova un solo e unico completamento, allora nisce la parola mettendo uno spazio dopo di essa. Se invece trova diversi completamenti possibili, riempie la parte che tutti i completamenti hanno in comune ed emetter un avviso sonoro. Poi si possono inserire altri caratteri per rendere la parola unica e premere TAB ancora. Se la Bash non trova nessun completamento, emette semplicemente un avviso sonoro.

4.7

Gestire la propria identit

I sistemi simili a Unix sono multiutente e cos si ha la propria identit elettronica come utente del sistema. Digitare finger proprionomeutente per dare uno sguardo ad alcune informazioni riguardo se stessi che sono pubblicamente disponibili. Per cambiare il nome e la shell elencati l, si possono usare rispettivamente i comandi chfn e chsh. Solo il superutente pu cambiare i propri login (nomeutente) e directory. Si pu notare che c scritto No plan: un plan fatto solo da alcune informazioni personali che si possono rendere disponibili agli altri. Per creare un plan, mettere qualsiasi informazione che si vuole rendere visibile alle persone in un le chiamato .plan; per fare questo, si deve usare un editor di testo (vedere Creare e modicare le di testo a pagina 51). Poi, per vedere il proprio plan, eseguire nger su se stessi. Altri possono eseguire nger per vedere il plan di un utente e per vericare se ha ricevuto nuova posta o ha letto la propria posta. Si noti che le informazioni fornite da nger sono disponibili in modo predenito a tutta Internet. Se non lo si desidera, leggere come congurare inetd e il le /etc/services; alla ne il manuale di installazione descriver questa congurazione, per ora si pu provare ad usare le pagine di manuale o si metta qualcosa di non signicativo al posto delle proprie informazioni di nger.

Capitolo 4. I fondamenti

28

29

Capitolo 5

Leggere la documentazione e ottenere aiuto


5.1 Tipi di documentazione

Sfortunatamente la documentazione su sistemi tipo Unix un po disorganizzata. Su Debian, possibile trovare la documentazione almeno nei seguenti posti: Pagine di manuale, leggibili con il comando man. Pagine info, leggibili con il comando info. Le directory /usr/doc/pacchetto, dove pacchetto il nome del pacchetto Debian. La directory /usr/doc/HOWTO/ contiene i documenti HOWTO dellLDP (Linux Documentation Project), se sono stati installati i pacchetti Debian che li contengono. Molti comandi hanno unopzione -h o --help. Digitare il nome di un comando seguito da una di queste opzioni per provarlo. Il Debian Documentation Project ha scritto alcuni manuali, incluso questo. Guardare: la loro home page (http://www.debian.org/doc/ddp). La pagina di supporto Debian (http://www.debian.org/support/) ha una FAQ e altre risorse. Si pu provare anche il: sito web di Linux (http://www.linux.org). Si possono comprare molti libri proprietari con informazioni utili. Svariate persone elogiano molto vivamente la casa editrice OReilly. Tuttavia, quando possibile, si consideri di sostenere i manuali liberamente modicabili e ridistribuibili come questo. Se si desidera una copia cartacea, comprando manuali liberi dalla Free Software Foundation (disponibili presso molti negozi di libri, come Borders e direttamente dalla FSF) si sostiene la creazione di altro software libero.

Capitolo 5. Leggere la documentazione e ottenere aiuto

30

La disorientante variet di fonti di documentazione esiste per diversi motivi. Per esempio, info stato pensato per sostituire man, ma man non ancora sparito. Tuttavia, bello sapere che esiste cos tanta documentazione! Cos, dove guardare per avere aiuto? Qui ci sono alcuni suggerimenti: Usare le pagine di manuale e lopzione --help o -h per ottenere un rapido sommario della sintassi e delle opzioni di un comando. Usare man anche se un programma non dispone ancora delle pagine info. Usare info se un programma ha documentazione info. Se nessuno di questi funziona, guardare nella directory /usr/doc/nomepacchetto. /usr/doc/nomepacchetto spesso ha informazioni speciche di Debian, anche se disponibile una pagina di manuale o una pagina info. Usare gli HOWTO per le istruzioni su come impostare una particolare cosa o informazioni sul proprio particolare hardware. Per esempio, lEthernet HOWTO ha una abbondanza di informazioni sulle schede ethernet e il PPP HOWTO spiega in dettaglio come impostare il PPP. Usare i manuali del Debian Documentation Project per spiegazioni concettuali e informazioni speciche su Debian. Se non si riesce in altro modo, domandare a qualcuno. Vedere Ottenere aiuto da una persona nella pagina successiva. Luso delle pagine di manuale stato visto precedentemente in La riga di comando e le pagine man a pagina 15. ( molto semplice: premere la barra spaziatrice per andare alla pagina successiva e premere il tasto q per terminare la lettura.) info, vedere i le nella directory /usr/doc e domandare aiuto a qualcuno, sono tutti analizzati in questo capitolo.

5.2

Usare info

Un breve riassunto/tutorial sui tasti da usare, menzionare TkInfo, chiedere scusa per scelte di tasti ridicole.

5.3

Visualizzare le di testo con more e less

Usare questi strumenti per visualizzare alcuni documenti. da menzionare zless e quando si usa.

Capitolo 5. Leggere la documentazione e ottenere aiuto

31

5.4

Gli HOWTO

In aggiunta ai propri libri, il Linux Documentation Project ha creato una serie di brevi documenti che descrivono come impostare un particolare aspetto di GNU/Linux. Per esempio, lo SCSI-HOWTO descrive alcune delle complicazioni delluso di SCSI, un metodo standard di comunicare con dispositivi, con GNU/Linux. In generale, gli HOWTO hanno informazioni pi speciche riguardo particolari congurazioni dellhardware e saranno pi aggiornati di questo manuale. Ci sono dei pacchetti Debian per gli HOWTO. Il pacchetto doc-linux-text contiene i vari HOWTO nel formato testo, mentre il pacchetto doc-linux-html contiene gli HOWTO (sorpresa!) nel formato HTML navigabile. Si noti che Debian ha anche i pacchetti delle traduzioni degli HOWTO in varie lingue che si potrebbero preferire se linglese non la propria lingua madre. 1 Se si ha installato qualcuno di questi pacchetti, li si dovrebbe avere in /usr/doc/HOWTO. Tuttavia, si potrebbero trovare versioni pi recenti in rete sulla home page del LDP Project (http://sunsite.unc.edu/LDP/).

5.5

Ottenere aiuto da una persona

Il posto corretto per chiedere aiuto su Debian la mailing list debian-user <debian-user@ lists.debian.org>. Se si conosce luso di IRC (Internet Relay Chat), c un canale #debian su irc.debian.org. Si pu trovare aiuto generico su GNU/Linux anche sulla gerarchia Usenet comp.os.linux.*. Si possono cercare le domande e risposte passate con il servizio DejaNews (http://www.dejanews.com). possibile anche assumere a pagamento dei consulenti che forniscono dei servizi di supporto garantiti. Il sito web Debian (http://www.debian.org) ha altre informazioni su diverse di queste risorse. Di nuovo, per cortesia non domandare aiuto agli autori di questo tutorial. Ad ogni modo probabile che non conosciamo le risposte agli specici problemi posti; se si scrive a debian-user, si otterranno delle risposte di pi alto livello e pi rapidamente. Essere sempre cortesi e fare uno sforzo per aiutare se stessi leggendo la documentazione. Ricordare che Debian uno impegno di volontari e le persone vi stanno facendo un favore fornendo il loro tempo per aiutarvi. Molti di loro sono pagati centinaia di dollari per gli stessi servizi durante la giornata.

5.5.1

Cosa fare e cosa no, quando si pone una domanda

Prima LEGGERE ovviamente la documentazione. Cose come le opzioni di un comando e che cosa esso faccia si troveranno l. CONTROLLARE i documenti HOWTO se le proprie domande riguardano la congurazione di qualcosa, come PPP o Ethernet.
Debian ha i pacchetti per le versioni degli HOWTO in tedesco, francese, spagnolo, italiano, giapponese, coreano, polacco, svedese e cinese; usualmente disponibili nei pacchetti doc-linux-codicelingua, con codicelingua che fr per il francese, es per lo spagnolo, etc.
1

Capitolo 5. Leggere la documentazione e ottenere aiuto

32

ASSICURARSI che le risposte non si trovino in questo tutorial (anche se comprendiamo che un indice analitico sarebbe daiuto - ci stiamo lavorando!). NON si abbia paura di domandare, dopo aver fatto uno sforzo di base di cercare la soluzione. NON si abbia paura di domandare spiegazioni concettuali, suggerimenti e altre cose che spesso non si trovano nella documentazione. INCLUDERE qualsiasi informazione che sembri rilevante. Si dovr menzionare quasi sempre la versione di Debian che si sta usando. Si potrebbe menzionare anche la versione di ogni pacchetto rilevante: il comando dpkg --status nomepacchetto fornisce questa informazione. utile anche descrivere cosa si tentato no a quel momento e cosa sia successo. Includere esattamente gli eventuali messaggi di errore. NON scusarsi della propria ignoranza o giusticare il fatto di essere un novellino. Non c alcuna ragione per cui ognuno dovrebbe essere un esperto di GNU/Linux per poterlo usare, non pi di quanto ognuno dovrebbe essere un meccanico per potere usare una macchina. NON inviare messaggi o email in HTML. Alcune versioni di Netscape e Internet Explorer inviano messaggi in HTML piuttosto che in testo semplice. La maggioranza delle persone non legger nemmeno questi messaggi, perch sono difcili da leggere nella maggior parte dei programmi di posta. Ci dovrebbe essere unimpostazione da qualche parte, nelle preferenze, per disabilitare lHTML. Essere CORTESI. Ci si ricordi che Debian il risultato dello sforzo di soli volontari e chiunque dia il suo aiuto, lo sta facendo solamente perch una persona gentile. REINVIARE la propria domanda alla lista se non si ottenuta nessuna risposta dopo diversi giorni. Forse cerano molti messaggi e non stata notata. O forse nessuno conosce la risposta; se nessuno risponde la seconda volta, questa una buona scommessa. La seconda volta si potrebbe provare a includere ulteriori informazioni. RISPONDERE alle domande, quando si conosce la risposta. Debian dipende dal fatto che ognuno faccia la sua parte; se si pone una domanda e successivamente qualcun altro chiede la stessa cosa, si sapr come rispondere. Perci farlo!

5.6

Ottenere informazioni dal sistema

Quando si diagnosticano dei problemi o si chiede aiuto, necessario ottenere informazioni riguardo il proprio sistema. Qui ci sono alcuni modi per farlo. /var/log/*, dmesg, uname -a

33

Capitolo 6

Usare la shell
6.1 Variabili dambiente

Ogni processo ha un ambiente ad esso associato. Un ambiente una raccolta di variabili di ambiente. Una variabile un valore modicabile con un nome sso. Per esempio, il nome EMAIL potrebbe fare riferimento al valore joe@nowhere.com. Il valore pu cambiare: EMAIL potrebbe anche fare riferimento a jane@somewhere.com. Poich la propria shell un processo come ogni altro, ha un ambiente. Si pu vedere il proprio ambiente della shell digitando il comando printenv. Ecco un output di esempio:

PAGER=less HOSTNAME=icon MAILCHECK=60 MOZILLA_HOME=/usr/local/lib/netscape PS1=$ USER=hp MACHTYPE=i486-pc-linux-gnu EDITOR=jed DISPLAY=:0.0 LOGNAME=hp EMAIL=hp@pobox.com SHELL=/bin/bash HOSTTYPE=i486 OSTYPE=linux-gnu HISTSIZE=150 HOME=/home/hp TERM=xterm-debian TEXEDIT=jed PATH=/home/hp/local/bin:/usr/sbin:/home/hp/.bin:/home/hp/local/bin:/usr/sbin:/ _=/usr/bin/printenv

Capitolo 6. Usare la shell

34

Sul proprio sistema, loutput potr essere differente, ma similare. Le variabili di ambiente sono un modo per congurare il sistema. Per esempio, la variabile EDITOR permette di selezionare il proprio editor preferito per le news, per scrivere e-mail e cos via. La variabile HISTSIZE indica alla Bash quante righe di comando deve memorizzare nella sua cronologia; si pu ritornare a tutte queste righe di comando con il tasto freccia su. Impostare le variabili di ambiente semplice. Una volta che si imparato come fare, probabilmente si vorr impostarle automaticamente ogni volta che si fa il login; vedere Personalizzare la shell a pagina 61 per le istruzioni. Per fare pratica, si provi a personalizzare il prompt della propria shell e il proprio visualizzatore dei le di testo, utilizzando le variabili di ambiente: 1 man less Visualizzare la pagina di manuale del comando less. Al ne di mostrare il testo una schermata alla volta, man richiama un paginatore che mostra una nuova pagina di testo ogni volta che si preme la barra spaziatrice. In modo predenito utilizza il paginatore chiamato more. Continuare e dare uno sguardo alla pagina di manuale di less, che un paginatore evoluto. Premere la barra spaziatrice per scorrere a una nuova pagina; premere q per uscire. more esce anche automaticamente quando si raggiunge la ne della pagina di manuale. 2 export PAGER=less Dopo avere letto dei vantaggi di less, si potrebbe volerlo utilizzare per leggere le pagine di manuale. Per fare questo, impostare la variabile di ambiente PAGER. Il comando per impostare una variabile di ambiente allinterno di bash, ha sempre questo formato: export NOME=valore. Se capita di usare tcsh o un altro derivato della shell C, il comando equivalente setenv NOME valore. export signica spostare la variabile dalla shell dentro allambiente. Signica che anche gli altri programmi oltre alla shell stessa potranno utilizzarla. 3 echo $PAGER Questo il modo pi semplice per vedere il valore di una variabile. $PAGER indica alla shell di inserire il valore della variabile PAGER prima di invocare il comando. echo ritorna il suo argomento: in questo caso echo ritorna il valore attuale di PAGER, less. 4 man more Leggere il manuale di more. Questa volta, man dovrebbe avere richiamato il paginatore less. less ha molte caratteristiche che mancano a more. Per esempio si pu scorrere indietro con il tasto b. anche possibile muoversi su e gi (e anche lateralmente) con i tasti freccia. less non esce quando si raggiunge la ne della pagina di manuale; aspetta che si prema il tasto q.

Capitolo 6. Usare la shell

35

5 PAGER=more man more Se si vuole unimpostazione temporanea differente, si pu mettere un nuovo valore che avr effetto solo sulla riga di comando attuale. Mettere NOME=valore allinizio della riga di comando, seguito dal comando da eseguire. Assicurarsi di omettere export. Si possono provare alcuni comandi specici di less, tipo b, per vericare che non funzionano con more e che effettivamente si sta utilizzando more. 6 echo $PAGER Il valore di PAGER dovrebbe essere ancora less; limpostazione suddetta era solo temporanea. 7 unset PAGER Se non si vuole pi specicare un paginatore, si pu disimpostare la variabile con unset. man user allora more in modo predenito, proprio come faceva prima che si impostasse la variabile. 8 echo $PAGER Siccome PAGER stato disimpostato, echo non mostrer niente. 9 PS1=hello: Solo per divertimento, cambiare il prompt di shell. $ dovrebbe trasformarsi in hello:. export non necessario, perch si sta modicando il comportamento della shell stessa. Non ci sono ragioni per esportare la variabile nellambiente per essere vista da altri programmi. Tecnicamente, PS1 una variabile di shell piuttosto che una variabile di ambiente. Volendo si pu usare export sulla variabile di shell, trasformandola in una variabile di ambiente. Allora altri programmi potranno vederla: in modo particolare, i processi gli dellattuale processo shell. La prossima sezione spiega questo.

6.1.1

Processi genitori e gli

Tutti i processi derivano da un processo precedente, chiamato il loro processo genitore. 1 Il comando ps uno strumento utile per lesplorazione dei processi e pu essere utilizzato per esaminare le relazioni genitore-glio. 1 ps f Questo comando richiede di vedere una lista di processi che ci appartengono, in un formato che mostra come i processi sono correlati. ps f potrebbe generare un output simile a questo:
1 Qui si potrebbe vedere il problema delluovo e della gallina. C un processo originario che avvia tutti gli altri; il processo numero 1, init. Lo si pu vedere in esecuzione digitando ps u 1.

Capitolo 6. Usare la shell

36

$ ps f PID 7270 15980 19682 15973 15976 15977 15978 15979 $

TT p5 p5 p4 p4 p4 p4 p4 p4

STAT S R S S S S S S

TIME 0:00 bash 0:00 \_ ps f 0:00 bash 0:00 \_ man ps 0:00 \_ sh -c /bin/gzip -dc /var/catman/cat1/ps.1.gz | 0:00 \_ /bin/gzip -dc /var/catman/cat1/ps.1.gz 0:00 \_ sh -c /bin/gzip -dc /var/catman/cat1/ps.1.g 0:00 \_ less

Qui si pu vedere che si hanno un certo numero di processi in esecuzione, incluse due shell. Le shell hanno dei processi gli: il processo shell 7270 ha il processo glio 15980 (ps f) e la shell 19682 ha il processo glio 15973 (man ps). man ps ha a sua volta richiamato una serie complessa di sottoprocessi al ne di mostrare una pagina di manuale. Per adesso non ci si preoccupi di cosa facciano questi sottoprocessi. Genitori e gli hanno delle relazioni complesse. Il pi delle volte, quando un processo genitore termina, cos fa anche quello glio. Cos si pu uccidere un intero insieme di processi, per esempio tutti i gli di man ps nellesempio sopra, uccidendo il processo genitore, 15973. I processi gli ereditano le variabili di ambiente dei loro genitori e alcuni altri attributi, come la directory di lavoro attuale. Quando una shell esegue un comando, avvia il comando come un processo glio. Cos il comando man eredita lambiente di shell; se si impostata la variabile PAGER, man potr vederla. Se fallisce il tentativo di fare lexport di una variabile, solo la shell stessa la vedr e non sar passata ai processi gli come man.

6.2

Dove abitano i comandi: la variabile PATH

Quando si digita un comando nella shell, essa deve trovare il programma sullhard disk prima di eseguirlo. Se la shell dovesse cercarlo su tutto il disco, sarebbe molto lenta; invece, cerca in una lista di directory contenuta nella variabile di ambiente PATH. Questa lista di directory costituisce il percorso di ricerca della shell; quando si introduce un comando, la shell guarder a turno ognuna di esse alla ricerca del programma che si chiesto di avviare. Potrebbe essere necessario modicare la variabile PATH se si installano da soli programmi in posizioni non standard. Il valore della variabile PATH una lista di directory separate dal carattere :. Il valore predenito sui sistemi Debian : /usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games

Capitolo 6. Usare la shell

37

Questo valore denito nel le /etc/profile e viene applicato a tutti gli utenti. Si pu cambiare facilmente il valore, proprio come si pu modicare ogni altra variabile di ambiente. Se si da il comando ls, la shell prima cercher in /usr/local/bin; se ls non l, allora prover /usr/bin; quando questo fallisce, prover /bin. L trover /bin/ls, fermer la sua ricerca ed eseguir il programma /bin/ls. Se esistesse /usr/bin/X11/ls (non esiste, ma supponiamolo), esso sarebbe ignorato. Si pu vedere quale ls la shell user con il comando type. type ls risponder /bin/ls; lo si provi. Provare chiedendo dove type stesso si trovi: $ type type type is a shell builtin type non di fatto un programma; una funzione implementata dalla shell. Ci nonostante, lo si usa proprio come un programma esterno. 2 Ci sono numerosi comandi simili a questo; si digiti man builtins per leggere le pagine di manuale che li descrivono. In generale non si ha bisogno di sapere se un comando un comando interno o un vero programma; comunque, i comandi interni non saranno mostrati nelloutput di ps o top dato che non sono processi separati. Essi sono solo parte della shell.

6.3

Alias e funzioni della shell

Se si usa spesso lo stesso comando, ci si potrebbe stancare di digitarlo. bash permette di scrivere degli alias pi brevi per i propri comandi. Si possono anche scrivere delle funzioni di shell, che sono comandi personalizzati composti da numerosi altri comandi. Se per esempio si usano spesso le opzioni --almost-all e --color=auto del comando ls, ci si pu stancare presto di digitare ls --almost-all --color=auto. Cos si pu creare un alias: alias miols=ls --almost-all --color=auto Adesso si pu digitare miols invece del comando completo. Per vedere cosa sia realmente miols, si dia il comando type miols. Per vedere una lista degli alias che sono stati deniti, si digiti semplicemente alias da solo. Le funzioni di shell sono un po pi essibili degli alias. Un alias semplicemente sostituisce un comando pi lungo quando se ne digita uno pi corto. Le funzioni permettono di usare una serie di comandi per compiere alcune operazioni. Per prima cosa vediamo come una funzione di shell pu essere utilizzata al posto dellalias visto sopra:
2

Se si usa una shell derivata da C, il comando incorporato interno equivalente a type which.

Capitolo 6. Usare la shell

38

miols() { ls --almost-all --color=auto $* } Quella sopra chiamata denizione di funzione, perch fornisce un nome di funzione (miols), quindi denisce il signicato del nome (alcuni comandi da eseguire). Per denire una funzione, si scriva il suo nome, seguito da (). Poi si includano i comandi da eseguire tra parentesi graffe ({}). La porzione tra le parentesi graffe detta corpo della funzione. Ci si pu riferire agli argomenti per la funzione come $*. Cos se si digita: miols /usr /etc

$* sar /usr /etc, i due argomenti. Se non ci sono argomenti, $* sar vuoto. Ci si pu riferire agli argomenti anche tramite numeri. Cos $1 nel corpo della funzione verrebbe sostituito da /usr e $2 verrebbe sostituito da /etc. Digitare questa funzione (si pu scriverla sul prompt della shell; premere Invio dopo ciascuna riga): stampa_argomenti() { echo "Primo argomento: $1" echo "Secondo argomento: $2" echo "Argomenti completi: $*" } Si pu vericare di avere introdotto la denizione di funzione correttamente con il comando type; type stampa_argomenti restituir: stampa_argomenti is a function stampa_argomenti () { echo "Primo argomento: $1"; echo "Secondo argomento: $2"; echo "Argomenti completi: $*" } Provare la funzione. Se si digita stampa_argomenti uno due verr mostrato: Primo argomento: uno Secondo argomento: due Argomenti completi: uno due Ci sono molte cose pi complesse che si possono fare con una funzione di shell; si limitati solo dalla propria immaginazione. Per ulteriori informazioni vedere Introduzione allo scripting di shell a pagina 97.

Capitolo 6. Usare la shell

39

6.4

Controllare input e output

Stdin, stdout, pipeline e redirezione Ogni processo possiede almeno tre collegamenti con il mondo esterno. Lo standard input una delle sorgenti dei dati del processo; lo standard output il posto dove il processo invia i dati; e lo standard error il posto dove il processo pu inviare i messaggi di errore. (Sono sovente abbreviati come stdin, stdout e stderr.) Le parole sorgente e posto sono intenzionalmente generiche. Queste posizioni di standard input e standard ouput possono essere cambiate dallutente; possono essere lo schermo, la tastiera, un le, persino una connessione di rete. Lutente pu specicare quale posizione usare. Quando si avvia un programma dalla shell, solitamente lo standard input proviene dalla tastiera ed entrambi lo standard output e lo standard error conuiscono sullo schermo. Comunque, si pu chiedere alla shell di modicare questi comportamenti predeniti. Per esempio, il comando echo invia il suo output sullo standard output, solitamente lo schermo. Ma si pu invece inviarlo su un le con loperatore di redirezione delloutput, >. Per esempio, per mettere la parola Hello nel le miofile: echo Hello > miofile Si utilizzi cat o il paginatore di le di testo (more o less) per vedere il contenuto di miofile. Si pu modicare lo standard input di un comando con loperatore di redirezione dellinput, <. Per esempio, more < miofile mostrer il contenuto di miofile. In pratica non utile; per comodit, il comando more accetta un nome di le come argomento. Cos si pu dire semplicemente more miofile e il risultato sar lo stesso. In denitiva, more < miofile signica che la shell apre miofile, poi invia il suo contenuto sullo standard input di more. more miofile, senza loperatore di redirezione, signica che il comando more riceve un argomento, miofile, apre il le e poi mostra il le. Tuttavia c una ragione a questa doppia funzionalit. Per esempio, si pu collegare lo standard output di un comando con lo standard input di un altro. Questa cosa chiamata pipeline e utilizza loperatore di pipe, |. Forse si vuole vedere la GNU General Public License al contrario. Per farlo, si usi il comando tac ( cat, solo al contrario). Provare: tac /usr/doc/copyright/GPL Sfortunatamente, va troppo veloce per riuscire a leggerlo. Cos si riusciranno a vedere solo un paio di capoversi. La soluzione una pipeline: tac /usr/doc/copyright/GPL | more

Capitolo 6. Usare la shell

40

Questo comando prende lo standard output di tac, che la GPL al contrario e lo invia sullo standard input di more. Si possono concatenare tanti comandi quanti si vuole. Immaginiamo si abbia un inspiegabile desiderio di sostituire ogni G con Q; per fare questo si usa il comando tr G Q, cos: tac /usr/doc/copyright/GPL | tr G Q | more Si pu ottenere la stessa cosa utilizzando i le temporanei e la redirezione: Per esempio: tac /usr/doc/copyright/GPL > tmpfile tr G Q < tmpfile > tmpfile2 more < tmpfile2 rm tmpfile tmpfile2 Ovviamente una pipeline pi conveniente.

6.5

Specicare come e quando avviare i comandi

modicatori tipo batch, at, nohup, nice

6.6

Espansione dei nomi di le (Metacaratteri)

Spesso si desidera che un comando operi su un gruppo di le. I metacaratteri (wildcard) sono utilizzati per creare un modello di espansione dei nomi di le: una serie di caratteri e metacaratteri che si espande in una lista di nomi di le. Per esempio, il modello /etc/* si espande in una lista di tutti i le in /etc 3 . * un metacarattere che pu signicare una qualsiasi serie di caratteri, cos il modello /etc/* si espander in una lista di tutti i nomi di le che iniziano con /etc/. Questa lista di nomi di le molto utile come insieme di argomenti per un comando. Per esempio, la directory /etc contiene una serie di sottodirectory chiamate rc0.d, rc1.d, ecc. Normalmente, per vedere il contenuto di queste directory, si digiterebbe:

ls /etc/rc0.d /etc/rc1.d /etc/rc2.d /etc/rc3.d /etc/rc4.d /etc/rc5.d /etc/rc6. Ci noioso. Al suo posto si pu usare il metacarattere ?: ls /etc/rc?.d
3

In verit, i le che cominciano con . non sono inclusi nella espansione di *

Capitolo 6. Usare la shell

41

/etc/rc?.d si espande in una lista di nomi di le che iniziano con rc, seguito da un qualsiasi singolo carattere che precede .d. I metacaratteri disponibili sono: * Corrisponde a qualsiasi gruppo di zero o pi caratteri ? Corrisponde ad esattamente un carattere [...] Se si chiudono alcuni caratteri tra parentesi quadre, il risultato un metacarattere che corrisponde a questi caratteri. Per esempio, [abc] corrisponde ad a, b, o c. Se si aggiunge un ^ dopo la prima parentesi quadra, il signicato viene invertito; cos [^abc] corrisponde ad ogni carattere che non sia a, b, o c. Si pu inserire un intervallo, tipo [a-j], che corrisponde a qualsiasi cosa tra a e j. La corrispondenza sensibile alle minuscole/maiuscole, cosicch per indicare ogni lettera, si deve usare [a-zA-Z]. I modelli di espansione sono semplici, una volta che si siano visti alcuni esempi concreti: *.txt Questo fornisce una lista di ogni nome di le che nisce in .txt, dato che * corrisponde ad ogni cosa. *.[hc] Questo fornisce una lista di nomi di le che terminano in .h o .c. a?? Questo fornisce tutti i nomi di le di tre lettere che iniziano con a. [^a]?? Questo fornisce tutti i nomi di le di tre lettere che non iniziano con a. a* Questo fornisce tutti i nomi di le che iniziano con a, indipendentemente dal numero di lettere che contengono.

6.7

Interattiva/non-interattiva

Bash possiede due modalit differenti: interattiva e non-interattiva. Interattiva signica che si pu digitare verso di essa e che essa far cose per conto nostro. Le shell non-interattive interpretano script di shell, in modo simile ai le batch del DOS. Viene fornito alla shell un elenco di comandi da svolgere ed essa lo fa, ma senza intervento dellutente. Non si vedranno tutti i comandi digitati. Naturalmente ogni output sar registrato da qualche parte (lo standard output, o stdout, normalmente sullo schermo o su un le di log). Vedremo di pi sulle shell non-interattive tra poco.

6.7.1

Shell interattive

Le shell interattive richiederanno molto tempo per imparare a padroneggiarle, solo perch sono cos potenti: probabilmente non si imparer mai ogni cosa! C cos tanto che una shell pu fare e naturalmente in continuo cambiamento. Qui parleremo della bash e di alcuni

Capitolo 6. Usare la shell

42

comandi di base che renderanno pi facile la propria vita con la shell. Nella bash, si possono fare contemporaneamente molte cose, e questo pu confondere. Una shell un ambiente Line Oriented o a riga di comando. La shell si interfaccer sempre mediante un prompt, ogni volta che in attesa che si faccia qualcosa. Il prompt predenito in Debian un $. Il prompt $ dove si digitano comandi per comunicare a Linux di fare qualcosa; pu essere un nome di programma o pu essere un comando interno che la shell fornisce per comodit.

43

Capitolo 7

Di pi sui le
In File e directory a pagina 17 abbiamo spiegato come muovere e rinominare i le con mv, come copiarli con cp, rimuoverli con rm, rimuovere directory con rmdir e creare directory con mkdir. Questo capitolo affronter alcuni altri aspetti dei le.

7.1

I permessi

I sistemi GNU e Unix sono impostati per permettere a molte persone di usare lo stesso computer, mantenendo certi le inaccessibili o impedendo a certe persone di modicare certi le. Si pu vericare questo da soli: 1 Fare il login con il proprio nome utente, cio NON come root. 2 whoami Vericare di non essere root. 3 rm /etc/resolv.conf Si dovrebbe ottenere Permission denied. /etc/resolv.conf un le di congurazione essenziale al sistema: non permesso cambiare o rimuovere questo le a meno di non essere root. Questo impedisce di rovinare accidentalmente il sistema e, se il computer pubblico come in un ufcio o in una scuola, impedisce agli utenti di danneggiare il sistema di proposito. Ora digitare ls -l /etc/resolv.conf Questo fornisce un output che appare simile al seguente: -rw-r--r-- 1 root root 119 Feb 23 1997 /etc/resolv.conf

Capitolo 7. Di pi sui le

44

Lopzione -l di ls richiede tutte queste informazioni aggiuntive. Le informazioni alla destra sono facili: la dimensione del le di 119 byte, la data dellultima modica al le Feb 23 1997, il nome del le /etc/resolv.conf. Sulla parte sinistra dello schermo ci sono alcune cose un po pi complicate. Prima, una breve spiegazione tecnica: -rw-r--r-- la modalit del le, 1 il numero di hard link a questo le (o il numero dei le in una directory) e i due root sono lutente e il gruppo proprietari del le. Questo era criptico. Analizziamolo lentamente (eccetto la parte degli hard link; per quella vedere La vera natura dei le: hard link e inode a pagina 97).

7.1.1

La propriet dei le

Ogni le ha due proprietari: un utente e un gruppo. Il caso precedente crea un po di confusione, poich c un gruppo chiamato root in aggiunta allutente root. I gruppi sono solo insiemi di utenti a cui permesso collettivamente laccesso ad alcune parti del sistema. Un buon esempio rappresentato dal gruppo games. Proprio per essere cattivi, si pu impostare il proprio sistema in modo che solo le persone appartenenti al gruppo games siano abilitate a a giocare. Un esempio pi pratico: supponiamo che si stia impostando un computer per una scuola. Si potrebbe volere rendere accessibili certi le solo agli insegnanti, non agli studenti; cos si mettono tutti gli insegnanti in un singolo gruppo. Poi si pu comunicare al sistema che certi le appartengono ai membri del gruppo insegnanti e che nessun altro pu accedere a questi le. Di seguito ci sono alcune cose che si possono fare per analizzare i gruppi sul proprio sistema: 1 groups Digitando questo comando al prompt della shell si ottengono i gruppi di cui si membri. probabile che ci sia un solo gruppo di cui si membri, che identico al proprio nome utente. 2 more /etc/group Questo le fornisce una lista dei gruppi che sono presenti nel proprio sistema. Notare il gruppo root (lunico membro di questo gruppo lutente root) e il gruppo che corrisponde al proprio nome utente. Ci sono anche gruppi come dialout (utenti che sono abilitati alla connessione con il modem) e floppy (utenti che possono usare il dispositivo oppy). Tuttavia, il proprio sistema probabilmente non congurato per fare uso di questi gruppi: probabile che solo root possa usare il oppy o il modem in questo momento. Per dettagli riguardo a questo le, provare a leggere man group. 3 ls -l /home Osservare come ogni directory utente di propriet di quellutente e del suo gruppo personale. (Se si ha appena installato Debian, si potrebbe essere lunico utente.)

Capitolo 7. Di pi sui le

45

7.1.2

Modalit

Oltre ad essere di propriet di un utente e di un gruppo, ogni le e directory ha anche una modalit che determina chi abilitato a leggere, scrivere ed eseguire il le. Ci sono anche alcune altre cose determinate dalla modalit, ma sono argomenti avanzati cos, per il momento, vengono saltati. La modalit appare cos nelloutput del comando ls: -rw-r--r--. Ci sono qui dieci elementi e la modalit consiste in realt di dodici bit (si pensi ai bit come interruttori che possono essere on o off). Ma, per ora, considereremo solamente nove di questi bit: quelli che controllano i permessi di lettura, scrittura ed esecuzione per lutente proprietario del le, il gruppo proprietario del le e per gli altri (chiunque sul sistema, qualche volta chiamato mondo). Si noti che questi tre tipi di permessi (lettura, scrittura, esecuzione) per i tre insiemi di persone che possono avere i permessi (utente, gruppo, altri) fanno un totale di nove elementi. Nella riga della modalit, il primo elemento fornisce il tipo di le. Il carattere - in questo caso signica che esso un le regolare. Se esso fosse d, signicherebbe che quella mostrata una directory. Ci sono anche altre possibilit troppo complesse per approfondirle ora (vedere Aspetti avanzati dei permessi sui le a pagina 103). I nove elementi che rimangono sono usati per visualizzare i 12 bit che costituiscono la modalit del le. I 9 bit di base (lettura, scrittura ed esecuzione per utente, gruppo e altri) sono visualizzati come tre blocchi di rwx. Cos se tutti i permessi sono attivati e questo un le regolare, la modalit apparir simile a questa: -rwxrwxrwx. Se invece fosse una directory con tutti i permessi disattivati per gli altri e i permessi pienamente attivati per lutente e il gruppo, la modalit sarebbe: drwxrwx---. (I tre bit rimanenti sono visualizzati cambiando x in s, t, S o T, ma questo un argomento complesso che abbiamo tenuto per la sezione Aspetti avanzati dei permessi sui le a pagina 103.) Per i le regolari, lettura, scrittura ed esecuzione hanno il seguente signicato: Permesso di lettura, indicato da r, fornisce il permesso di esaminare il contenuto di un le. Per le directory, fornisce il permesso di elencare il contenuto della directory. Permesso di scrittura, indicato da w, fornisce il permesso di fare cambiamenti a un le. Per le directory, fornisce il permesso di creare e rimuovere le nella directory. Permesso di esecuzione, indicato da x, fornisce il permesso di eseguire il le come un comando. Chiaramente ha senso solamente impostare il permesso di esecuzione se il le veramente un comando. Dato che le directory non possono mai essere eseguite, il bit di esecuzione ha un signicato differente. Per le directory, il permesso di esecuzione signica permesso di accedere ai le nella directory. Si noti che questo interagisce con il permesso di scrittura: il permesso di esecuzione deve essere impostato per poter accedere del tutto ai le in una directory, cos senza il permesso di esecuzione su di una directory, il permesso di scrittura inutile. Il permesso di esecuzione per le directory spesso chiamato permesso di ricerca, in

Capitolo 7. Di pi sui le

46

quanto non ha in realt niente a che fare con lesecuzione. Probabilmente permesso di accesso al le sarebbe un nome ancora migliore. Le modalit per le directory creano un po di confusione, cos di seguito ci sono alcuni esempi degli effetti prodotti da varie combinazioni: r-Con questi permessi lutente, il gruppo o gli altri possono fare lelenco del contenuto della directory, ma non possono fare niente altro. I le nella directory non possono essere letti, modicati, rimossi o manipolati in alcun modo. Lunica azione permessa la lettura della directory stessa, cio, vedere quali le contiene. rwIl permesso di scrittura non ha effetto in assenza del permesso di esecuzione, cos questa modalit esattamente come quella precedente. r-x Questa modalit permette di fare la lista dei le in una directory e permette laccesso a questi le. Tuttavia, i le non possono essere creati o rimossi. Accesso signica che i le si possono vedere, modicare o eseguire come stabilito dai permessi stessi di ciascun le. --x Si pu accedere ai le in questa directory, ma non possibile fare lelenco del contenuto della directory, perci si deve conoscere gi il nome del le che si sta cercando (a meno di non essere un buon indovino). I le non possono essere creati o rimossi. rwx Si pu fare tutto ci che si vuole con i le contenuti in questa directory, nch consentito dai permessi sugli stessi le. Il permesso di scrittura di una directory determina se si possono rimuovere le nella directory: un le di sola lettura pu essere rimosso, se si ha il permesso di scrittura per la directory che lo contiene. Non si pu rimuovere un le da una directory di sola-lettura, anche se si autorizzati ad apportare cambiamenti al le. I permessi dei le non hanno niente a che fare con la rimozione dei le. Questo signica anche che se si il proprietario di una directory sempre possibile rimuovere i le che essa contiene, anche se questi le appartengono a root. Il permesso di esecuzione di una directory determina se si ha laccesso ai le e perci se i permessi del le entrano in gioco. Se si ha il permesso di esecuzione per una directory, i permessi dei le per questa directory diventano rilevanti. Altrimenti i permessi dei le non hanno alcuna importanza; non si pu accedere ai le in ogni caso. Se si ha il permesso di esecuzione per la directory, i permessi dei le determinano se si pu leggere il contenuto dei le, modicare i le o eseguire i le come comandi.

Capitolo 7. Di pi sui le

47

Inne, il permesso di cambiare i permessi su di un le o directory non condizionato dai permessi di quel le o directory. Piuttosto, si possono sempre cambiare i permessi dei le o directory di cui si proprietari, ma non dei le di propriet di qualcun altro, ntanto che si ha il permesso di accesso ai le. Cos se si pu accedere a un proprio le (cio se si ha il permesso di esecuzione per la directory contenente il le) allora si possono cambiare i suoi permessi. Questo signica che non possibile rimuovere denitivamente i permessi per se stessi perch si possono sempre ripristinare. Supponiamo che si rimuova il permesso di scrittura dellutente da un proprio le, poi si provi a modicare il le. Questo non sar permesso, ma si pu sempre ridare a se stessi il permesso di scrittura e poi modicare le. Il solo modo per perdere la possibilit di cambiare i permessi quello di perdere completamente laccesso al le.

7.1.3

I permessi in pratica

Questa sezione ripercorre una breve sessione di esempio per dimostrare come si usano i permessi. Per cambiare i permessi, si user il comando chmod. 1 cd; touch miofile Qui ci sono due nuovi trucchi. Primo, si pu usare ; per mettere due comandi in una riga. La riga precedente si pu digitare come: $ cd $ touch miofile oppure come: $ cd; touch miofile e, alla ne, si otterr lo stesso risultato. Ci si ricordi che il comando cd da solo fa ritornare alla propria directory home. Il comando touch normalmente usato per cambiare la data di modica del le alla data attuale, ma esso ha unaltra caratteristica interessante: se il le non esiste, touch crea il le. Cos lo usiamo per creare un le che ci serve per fare pratica. Usare ls -l per confermare che il le sia stato creato e si noti la modalit dei permessi: $ ls -l -rw-r--r-- 1 havoc havoc 0 Nov 18 22:04 miofile Ovviamente la data e i nomi dellutente/gruppo saranno differenti quando si prover il comando. La dimensione del le 0, dato che il comando touch crea un le vuoto. -rw-r--r-- la modalit dei permessi predenita in Debian.

Capitolo 7. Di pi sui le

48

2 chmod u+x miofile Questo comando signica: aggiungere (+) il permesso di esecuzione (x) per lutente (u) che il proprietario del le. Usare ls -l per vericare gli effetti. 3 chmod go-r miofile Con questo comando si sottrae (-) il permesso di lettura (r) al gruppo (g) proprietario del le e ad ogni altro (o). Ancora una volta, usare ls -l per vericare gli effetti. 4 chmod ugo=rx miofile Qui si impostano (=) i permessi di lettura ed esecuzione per lutente, il gruppo e gli altri. Questo comando imposta i permessi esattamente come specicati e disattiva ogni altro permesso. Cos tutti i permessi rx dovrebbero essere impostati e tutti i permessi w dovrebbero essere disattivati. Adesso, nessuno pu scrivere nel le. 5 chmod a-x miofile a una scorciatoia per ugo o all (tutti). Cos tutti i permessi x ora dovrebbero essere disattivati. 6 rm miofile Si sta rimuovendo il le, ma senza i permessi di scrittura. rm chieder se si sicuri: rm: remove miofile, overriding mode 0444? Si dovrebbe rispondere digitando y e premendo Invio. Questa una caratteristica di rm, non una questione di permessi: il permesso di rimuovere un le dipende dai permessi della directory, e si dispone del permesso di scrittura nella directory. Tuttavia, rm prova ad aiutare, immaginando che se non si voleva modicare il le (e perci si era rimosso il permesso di scrittura), non lo si voleva neanche cancellare, perci chiede conferma. Che cosa era quel numero 0444 nella domanda di rm? La modalit dei permessi un numero binario a 12 cifre, come questo: 000100100100. 0444 questo numero binario rappresentato come un numero ottale (a base 8), che il modo convenzionale per scrivere una modalit. Cos si pu digitare chmod 444 miofile invece di chmod ugo=r miofile. Questo spiegato esaurientemente in Aspetti avanzati dei permessi sui le a pagina 103.

7.2

Quali le ci sono sul proprio sistema? Dove si possono mettere i propri le?

Ora che si pu navigare allinterno dellalbero delle directory, il momento di iniziare un tour guidato dei le e delle directory che sono stati creati durante linstallazione di Debian. Se si curiosi, eseguire cd verso ogni directory e digitare ls per vedere il suo contenuto. Se la lista non sta tutta nello schermo, provare ls | more, dove | il carattere pipe, che si trova generalmente sullo stesso tasto della barra rovesciata o backslash (\).

Capitolo 7. Di pi sui le

49

/ Come precedentemente menzionato, questa la directory root, che contiene ogni altra directory. /root Non si confonda / con /root! /root la directory home dellutente root, o superutente. una directory chiamata /root, ma non la directory root /. /home Questa la directory dove tutti gli utenti normali, cio tutti gli utenti eccetto root, hanno la propria directory home. Le directory home hanno il nome dellutente a cui appartengono; per esempio, /home/jane. Se si usa un grande sistema in una scuola o unazienda, il proprio amministratore di sistema pu creare directory aggiuntive che contengono le directory home: /home1 e /home2, per esempio. In alcuni altri sistemi, si vedr un livello aggiuntivo di sottodirectory: /home/studenti/nomeutente, /home/staff/nomeutente, ecc. La propria directory home dove si mettono tutti i propri personali lavori, email e altri documenti e le congurazioni personali preferite. la propria casa nel sistema. /bin Questa directory contiene i binari, le eseguibili che sono essenziali al funzionamento del sistema. Esempi sono la shell (bash) e i le di comandi come cp. /sbin Questa directory contiene i binari di sistema, utilit che lutente root o lamministratore di sistema potrebbero voler usare, ma che probabilmente non si vorranno usare nelle proprie attivit giornaliere. /usr /usr contiene la maggior parte dei le che potrebbero essere di qualche interesse. Essa ha molte sottodirectory: /usr/bin e /usr/sbin sono praticamente come /bin e /sbin, eccetto che le directory in /usr non sono considerate essenziali al funzionamento del sistema. Anche se non essenziale per il funzionamento del computer, la directory /usr contiene le applicazioni che si useranno per realizzare ogni lavoro reale. Inoltre in /usr si trovano le directory /usr/man, /usr/info e /usr/doc che contengono rispettivamente le pagine di manuale, le pagine info, e altra documentazione. Non si deve dimenticare /usr/games! /usr/local Il sistema Debian non installa nulla in questa directory. La si dovrebbe usare se si vuole installare software che si compila da soli o ogni altro software non contenuto in un pacchetto Debian. possibile anche installare software nella propria directory home, se si vuole essere gli unici ad usarlo. /etc /etc contiene tutti i le di congurazione a livello di sistema. Quando si vuole modicare qualcosa in modo che abbia effetto su tutti gli utenti del proprio computer, come la connessione a internet o quale tipo di scheda video si ha, probabilmente sar necessario fare il login come root e modicare un le in /etc. /tmp Qui si trovano i le temporanei, la maggior parte di questi creati dal sistema. Questa directory generalmente ripulita a intervalli regolari od ogni volta che si riavvia il sistema. Si si vuole, possibile creare le in questa directory, solo ci si ricordi che potranno essere cancellati automaticamente.

Capitolo 7. Di pi sui le

50

/var /var contiene le variabili che il sistema cambia automaticamente. Per esempio, le email in arrivo sono memorizzate qui. Il sistema tiene un registro delle sue azioni qui. In questa directory ci sono anche un certo numero di altri le generati automaticamente. Per lo pi si sar interessati al contenuto della directory /var/log, dove si possono trovare i messaggi di errore e tentare di capire cosa stia succedendo nel sistema se qualcosa va storto. Chiaramente ci sono molte altre directory nel sistema, troppe per poterle descrivere tutte. Per fare cambiamenti, abitualmente si vorr limitare se stessi alluso della propria directory home e a /etc. Su di un sistema Debian, raramente capita di cambiare qualcosaltro, perch ogni altra cosa installata automaticamente per conto dellutente. /etc usata per congurare lintero sistema. Si user la propria directory home, una sottodirectory di /home, per congurare le proprie preferenze e memorizzare i propri dati personali. Lidea quella di rimanere connati in /home/proprionome durante luso quotidiano, cos non c alcun modo di rovinare qualcosa. Occasionalmente possibile fare il login come root per modicare qualcosa in una directory di sistema, ma solo quando ` assolutamente necessario. Naturalmente, se si sta usando Debian in una scuola o azienda e qualcun altro lamministratore di sistema, non si avr laccesso come root e si potr solamente modicare la propria directory home. Questo limita ci che si pu fare con il sistema.

7.3

Usare un le manager

Invece di muovere le manualmente, si pu usare un le manager. Se si muovono molti le un le manager pu rendere il proprio lavoro pi efciente. Sono disponibili le manager testuali, come Midnight Commander di GNU (digitare mc), e un certo numero di le manager per il sistema X Window (per esempio gmc, una versione di Midnight Commander di GNU per X Window). La descrizione di ognuno di essi esula dallo scopo di questo manuale, ma possibile provarli se la riga di comando non soddisfa le proprie necessit.

51

Capitolo 8

Creare e modicare le di testo


8.1 Che cos un le di testo?

Un le di testo semplicemente un le normale che contiene testo in forma leggibile. Non c nientaltro che lo renda speciale. Laltro tipo di le, un le binario, pensato per essere interpretato dal computer. possibile vedere entrambi i tipi di le con il paginatore di le less, se installato (se non lo , lo si installi, piuttosto utile). Digitare less /etc/profile per vedere un esempio di le di testo: si noti che si possono leggere i caratteri anche se non se ne capisce il signicato. Digitare less /bin/ls per vedere un le binario; come si vede, il programma ls non fatto per essere letto dalluomo. La differenza tra i due tipi di le esclusivamente una questione di ci che essi contengono, a differenza di altri sistemi (come DOS o MacOS) che trattano realmente i le in modo differente. I le di testo possono contenere script di shell, documentazione, note sui diritti dautore o qualsiasi altro testo leggibile. Ci, per inciso, illustra la differenza tra codice sorgente e eseguibili binari; /bin/ls un eseguibile binario che si pu scaricare da Debian, ma si pu anche scaricare un le di testo che dice al computer come creare /bin/ls. Tale le di testo il codice sorgente. Confrontare /bin/ls e /etc/profile spiega come sia importante il codice sorgente se si vuole capire e modicare un software. Il software libero fornisce allutente e ai suoi consulenti tecnici questi importantissimi codici sorgenti.

8.2

Editor di testo

Un editor di testo un programma usato per creare le di testo e modicarne il contenuto. La maggior parte dei sistemi operativi ha un editor di testo; DOS ha edit, Windows ha Notepad, MacOS ha SimpleText.

Capitolo 8. Creare e modicare le di testo

52

Debian fornisce una sorprendente variet di editor di testo. I due classici sono vi ed emacs; probabilmente sono sia i pi potenti che i pi usati. Sia vi sia emacs sono piuttosto complessi e necessitano di un po di pratica, ma possono rendere estremamente efcace la modica di testi. emacs pu essere eseguito sia in terminale che sotto il sistema X Window; vi viene normalmente eseguito in un terminale, ma la variante vim ha unopzione -g che gli permette di funzionare in X. Editor pi semplici includono nedit, ae, jed e xcoral. nedit e xcoral forniscono interfacce grache per il sistema X Window facili da usare. Vi sono anche diverse varianti di vi e una variante di Emacs chiamata XEmacs. Questo tutorial non si occupa nei dettagli delluso di alcun editor particolare, anche se brevemente introdotto vi dato che piccolo, veloce e quasi sempre disponibile e potrebbe essere necessario a volte usarlo indipendentemente dal proprio editor preferito. Emacs fornisce un proprio eccellente tutorial interattivo; per leggerlo, avviare Emacs con il comando emacs e digitare F1 t. Emacs una scelta eccellente per i nuovi utenti interessati a un editor di uso universale o ad un editor per la programmazione.

8.3

Creare e modicare un le di testo con vi

vi (pronunciato vi ai) di fatto lunico editor che viene fornito con quasi tutti i sistemi operativi stile Unix e Debian non fa eccezione. vi stato scritto in origine nella Universit della California a Berkeley. Il nome delleditor labbreviazione di visual (visivo), e si riferisce al fatto che vi fornisce una rappresentazione visiva del testo del le; questa era un tempo considerata una caratteristica unica, e d unidea di quanto sia vecchio il programma. in un certo senso difcile abituarsi a vi, ma esso ha molte funzionalit potenti. In generale, consigliabile che un nuovo utente usi Emacs per compiti quotidiani, quali la programmazione. A volte vi comunque pi comodo o lunico editor disponibile; inoltre un le molto pi piccolo da scaricare. La seguente analisi di vi dovrebbe valere anche per le varianti di vi quali elvis e vim.

8.3.1

Creare un le

1 vi filetest Nella propria directory home, invocare vi digitando vi seguito dal nome del le che si desidera creare. Si ottiene una schermata con una colonna di tilde (~) lungo il margine sinistro. vi ora in modalit di comando. Tutto ci che si digita viene interpretato come un comando, non come contenuti da aggiungere al le. Per poter inserire del testo necessario digitare un comando. 2 i I due comandi di base per linserimento sono i, che signica inserire il testo che sta per essere digitato alla sinistra del cursore e a, che signica inserire il testo che sta per

Capitolo 8. Creare e modicare le di testo

53

essere digitato alla destra del cursore. Dato che si allinizio di un le vuoto, entrambi funzionano. Si scelto per lesempio arbitrariamente di digitare i. 3 Digitare un po di testo; se non si riesce a pensare a qualcosa di proprio qui c una citazione profonda del losofo Charles Sanders Peirce: E che cos, allora, una credenza? la semicadenza che chiude una frase musicale nella sinfonia della nostra vita intellettuale. Abbiamo visto che essa ha solo tre propriet: primo, qualcosa di cui siamo consci; secondo, essa placa lirritazione del dubbio; e, terzo, essa comporta lo stabilirsi nella nostra natura di una regola di azione o, detto brevemente, di un abito. Premere INVIO dopo ogni riga, dato che vi non si sposta automaticamente alla riga successiva; quando si nito di scrivere, premere il tasto ESC per lasciare la modalit di inserimento prima o dopo il cursore e ritornare alla modalit di comando. 4 :wq Se si fatto tutto in maniera corretta, questo comando dovrebbe apparire alla base dello schermo mentre lo si inserisce, sotto a tutti i caratteri ~. Il carattere : comunica a vi che si sta per fornire una serie di comandi; w signica scrivere il le che si appena digitato: nella maggioranza dei nuovi programmi ci chiamato salvare, e q (quit) signica uscire da vi. Perci si dovrebbe ritornare al prompt della shell. 5 cat filetest cat mostra a schermo il le che stato scritto. Non cancellare filetest, perch verr usato nella prossima sezione del tutorial. Quando si usa vi, ricordare sempre che premendo ESC si ritorna alla modalit di comando. Perci se si confusi, premere ESC un paio di volte e riniziare da capo. vi ha la noiosa abitudine di emettere un avviso sonoro ogni volta che si fa qualcosa che non si dovrebbe, come inserire un comando sconosciuto; non allarmarsi per questo.

8.3.2

Modicare un le esistente

Per usare vi, necessario leggere solamente Muoversi allinterno di un le nella pagina seguente e Cancellare del testo nella pagina successiva. Le sezioni successive spiegano funzionalit avanzate, ma non sono strettamente necessarie anche se spesso pi efcaci e meno noiose.

Capitolo 8. Creare e modicare le di testo

54

Muoversi allinterno di un le vi di Debian permette di usare i tasti freccia per muoversi in un le. Comunque funzionano anche i tasti tradizionali; essi sono h per sinistra, j per basso, k per alto e l per destra. Sono stati scelti questi tasti perch sono uno vicino agli altri nella riga base della tastiera e perci facili da premere. Molte persone li usano al posto dei tasti freccia perch si raggiungono pi velocemente con le dita. 1 vi filetest Apre il le che si creato in precedenza con vi. Si dovrebbe vedere il testo scritto prima. 2 Muoversi in giro per il le con i tasti freccia o con i tasti hjkl. Se si cerca di muoversi troppo in qualsiasi direzione, vi emette un avviso sonoro e si riuta di muoversi oltre; se si vuole inserire l del testo, si deve usare un comando di inserimento come i o a. 3 :q Esce da vi.

Cancellare del testo 1 vi filetest Riapre il le su cui esercitarsi. 2 dd Il comando dd cancella una riga; la prima riga del le dovrebbe adesso essere scomparsa. 3 x x cancella un singolo carattere; la prima lettera della seconda riga viene cancellata. I tasti Canc e Backspace non funzionano in vi, per ragioni storiche1 . Alcune varianti di vi, come vim permettono di usare Canc e Backspace. 4 10x Se si inserisce un numero prima di un comando, il comando viene ripetuto quel numero di volte. Perci questo comando cancella 10 caratteri. 5 2dd Si pu usare un numero anche con il comando dd, cancellando due righe. 6 :q Questo comando ora causa un errore perch il le stato modicato ma non ancora stato salvato. Ci sono due modi per evitare ci. Si pu usare :wq, scrivendo quindi il le al momento di uscire, o si pu uscire senza salvare:
1

La tastiera di alcuni terminali molto vecchi (degli anni 60) non aveva i tasti Canc e Backspace

Capitolo 8. Creare e modicare le di testo

55

7 :q! Con il punto esclamativo si dice a vi che si veramente decisi e che deve uscire anche se il le non stato salvato. Se si usa :q! le cancellature fatte non sono salvate in filetest; se si usa :wq, lo sono. 8 cat filetest Essendo tornati al prompt di shell, visualizza filetest. Se si usato :wq, dovrebbe ora essere pi corto oppure essere inalterato, se si usato :q!. :q! un comando perfetto da ricordare, perch lo si pu usare per trarsi dimpaccio se si confusi oltre ogni speranza e se si pensa di aver rovinato il le che si sta modicando. Premere ESC un paio di volte per assicurarsi di essere in modalit di comando e poi digitare :q!. garantito che ci causer luscita da vi senza danni. Adesso si conosce tutto ci di cui si ha bisogno per fare modiche di base: inserire, cancellare, salvare e uscire. Le sezioni seguenti descrivono comandi utili per fare le cose pi velocemente; se si vuole si pu saltarle. Movimenti sosticati Ci sono molti comandi per i movimenti, questo un breve riassunto: w Sposta allinizio della parola successiva e Sposta alla ne della parola successiva E Sposta alla ne della parola successiva prima di uno spazio b Sposta allinizio della parola precedente 0 (zero) Sposta allinizio della riga ^ Sposta alla prima parola della riga attuale $ Sposta alla ne della riga INVIO Sposta allinizio della riga successiva - Sposta allinizio della riga precedente G Sposta alla ne del le 1G Sposta allinizio del le nG Sposta alla riga numero n C-G Mostra il numero della riga attuale H Prima riga dello schermo

Capitolo 8. Creare e modicare le di testo

56

M Riga a met schermo L Fine schermo n| Sposta il cursore alla colonna n La schermata scorre automaticamente quando il cursore raggiunge lestremit superiore o inferiore dello schermo. Ci sono comandi alternativi che possono controllare lo scorrimento del testo. C-f Scorre una schermata avanti C-b Scorre una schermata indietro C-d Scorre mezza schermata in basso C-u Scorre mezza schermata in alto Ripetere comandi Come gi detto si pu far precedere un comando da un numero per ripetere il comando pi volte. Il tasto l, per esempio sposta verso sinistra; 10l sposta di 10 posizioni a sinistra. Per inserire un certo numero di spazi prima di un testo si pu usare un numero con il comando di inserimento. Digitare il numero n poi i seguito da SPAZIO e ESC. Si dovrebbero ottenere n spazi. I comandi che si riferiscono a righe usano un numero per indicare i numeri di riga. G un buon esempio: se lo si fa precedere da un numero si sposta a quella riga. Guida di riferimento avanzata Questa sezione fornisce una lista pi completa dei comandi che possibile usare. solo un testo di riferimento; si possono provare i comandi, se si vuole, per vedere ci che fanno. Comandi di inserimento: a Aggiunge testo alla destra del cursore A Aggiunge testo alla ne della riga i Inserisce testo alla sinistra del cursore I Inserisce testo alla sinistra del primo carattere non vuoto nella riga attuale o Apre una nuova riga sotto a quella attuale e vi inserisce testo O Apre una nuova riga sopra a quella attuale e vi inserisce testo

Capitolo 8. Creare e modicare le di testo

57

Comandi per cancellare: x Cancella il carattere sotto al cursore dw Cancella dalla posizione attuale no alla ne della parola dd Cancella la riga attuale D Cancella dalla posizione attuale alla ne della riga I comandi, se combinati tra loro, possono essere pi potenti. d, in particolare, se seguito da un comando di movimento cancella dal cursore no a dovunque il comando provochi lo spostamento. Alcuni esempi: dnw Cancella n parole (anche ndw funziona) dG Cancella dalla posizione attuale no alla ne del le d1G Cancella dalla posizione attuale no allinizio del le d$ Cancella dalla posizione attuale no alla ne della riga (come D) dn$ Cancella dalla riga attuale no alla ne della riga numero n Comandi di annullamento: u Annulla lultimo comando U Annulla tutte le modiche alla riga attuale :e! Rimodica. Equivalente a uscire con :q! e riavviare; fa ritornare allultima volta che stato usato :w per salvare. Si pu annullare unoperazione di annullamento, perci uu ha come risultato un annullamento annullato cio nessun cambiamento. Comandi di sostituzione: rc Sostituisce il carattere sotto il cursore con c R Sovrascrive il testo cw Cambia la parola attuale c$ Cambia il testo tra la posizione attuale e la ne di riga cnw Cambia le prossime n parole (come ncw) cn$ Cambia no alla ne della riga numero n

Capitolo 8. Creare e modicare le di testo

58

C Cambia no alla ne di riga (come c$) cc Cambia la riga attuale s Sostituisce il testo inserito al carattere attuale ns Sostituisce il testo inserito ai prossimi n caratteri Dai comandi nella lista soprastante che permettono di inserire pi di un singolo carattere di testo si deve uscire usando il tasto ESC, ritornando cos alla modalit di comando. Il taglia e incolla implica prima lafferrare (tagliare o copiare) del testo e il posizionarlo in un buffer (o appunti), quindi il muoversi nella nuova posizione voluta e poi incollare il testo. Per tagliare del testo usare il comando y e le sue varianti: yy Prende una copia della riga attuale nyy Prende le prossime n righe yw Prende una parola ynw Prende n parole y$ Prende il testo tra il cursore e la ne di riga Comandi per incollare: p Incolla alla destra del cursore P Incolla alla sinistra del cursore nP Incolla n copie alla sinistra del cursore Quando si usa vi allinterno di un xterm o si usa una variante di vi con il supporto per X, si pu anche usare il mouse per copiare del testo. Per copiare e incollare testo in X vedere Il sistema X Window a pagina 63; assicurarsi di essere in modalit di inserimento quando si incolla, altrimenti il testo incollato sar interpretato come un comando. Quando si cancella, il testo cancellato viene copiato nel buffer (appunti); si possono poi usare i comandi per incollare. Questo permette di fare il taglia-e-incolla, mentre i comandi y hanno come risultato un copia-e-incolla. vi ha comandi per cercare del testo. Possono anche essere usati come comandi per muoversi se ci si vuole spostare ad una parola o un carattere particolari. I comandi di ricerca pi semplici cercano caratteri. fc Trova il prossimo carattere c alla destra o sotto alla posizione attuale

Capitolo 8. Creare e modicare le di testo

59

Fc Trova il prossimo carattere c alla sinistra o sopra alla posizione attuale tc Sposta a destra no al carattere che precede il prossimo carattere c Tc Sposta a sinistra no al carattere che segue il primo carattere c trovato ; Ripete lultimo comando di ricerca carattere , Come ; ma in direzione inversa rispetto al comando originale Se il carattere cercato non viene trovato, vi emette un avviso sonoro o d un qualche segnale. vi permette di cercare qualsiasi testo, non solamente un carattere. /testo Cerca a destra e in basso la prossima occorrenza di testo ?testo Cerca a sinistra e in alto la prossima occorrenza di testo n Ripete lultimo comando / o ? N Ripete in direzione opposta lultimo comando / o ? Quando si usano i comandi / o ? viene liberata una riga alla ne dello schermo. Inserire il testo da cercare seguito da INVIO. Il testo nel comando / o ? in realt una espressione regolare, si veda Espressioni regolari a pagina 69.

Capitolo 8. Creare e modicare le di testo

60

61

Capitolo 9

Personalizzare la shell
9.1 le .rc e ls -a

Quando si digita ls, i le che iniziano con un punto non sono elencati. Tradizionalmente i le che contengono informazioni di congurazione, preferenze dellutente e cos via iniziano con un punto; essi sono nascosti e non intralciano durante il normale uso quotidiano. Esempi di le di congurazione sono: ~/.emacs, ~/.newsrc, ~/.bashrc, ~/.xsession, ~/.fvwmrc, ecc.. Questi sono usati rispettivamente da Emacs, dai newsreader, dalla shell Bash, dal sistema X Window e dal gestore di nestre fvwm. Per convenzione i le di congurazione terminano per rc, ma per alcuni programmi non cos. Vi sono anche directory che iniziano con un punto, come ~/.gimp e ~/.netscape, che contengono le preferenze di Gimp e Netscape. A volte un programma crea automaticamente un le di congurazione; Netscape, per esempio, permette di modicare le proprie preferenze con nestre di dialogo grache e poi salva le scelte fatte. Altre volte i le vanno creati usando un editor di testo; questa la prassi tradizionale, ma necessario imparare lo speciale formato di ciascun le, che inizialmente scomodo, ma pu dare molto potere. Per vedere i le che iniziano con un punto, si deve usare lopzione -a di ls. La forma estesa di -a --all che pu essere pi facile da ricordare. Si pu anche usare -A o --almost-all, che include tutti i le tranne . e ... bene ricordare che . la directory attuale e .. la directory genitrice di quella attuale; dato che queste sono certamente presenti in ogni directory, non c una vera ragione per elencarle con ls. Si sa gi che ci sono.

9.2

Congurazioni a livello di sistema e speciche dellutente

importante ricordare che in un sistema Debian ci sono due differenti tipi di congurazioni. Le congurazioni a livello di sistema interessano tutti gli utenti. Vengono create nella directory /etc. Si pu congurare, per esempio, il modo in cui il sistema si connette ad Internet o fare in modo che i browser web del sistema mostrino sempre allavvio la pagina web della

Capitolo 9. Personalizzare la shell

62

compagnia. Dato che si desidera che queste impostazioni si applichino a tutti gli utenti, le modiche vengono fatte nella directory /etc. Esempi di le di congurazione in /etc includono /etc/X11/XF86Config, /etc/lynx.cfg e /etc/ppp/options. Di fatto quasi tutti i le in /etc sono le di congurazione. Normalmente necessario essere lutente root per poter modicare le impostazioni a livello di sistema. Le congurazioni utente interessano solo un singolo utente. Per esse vengono usati i le che iniziano con un punto. Il le ~/.newsrc, per esempio, contiene un elenco di quali articoli Usenet (gruppi di discussione) sono stati letti e quali gruppi sono stati sottoscritti. Ci permette ai newsreader come trn o Netscape di mostrare gli articoli non letti nei gruppi a cui si interessati. Questa informazione differente per ciascun utente nel sistema perci ogni utente ha il proprio le .newsrc nella propria directory home.

63

Capitolo 10

Il sistema X Window
Questo capitolo descrive il sistema ad interfaccia graca X Window. Si presume che si sia gi congurato con successo X come descritto nel manuale di installazione (il manuale di installazione non ancora stato scritto; per adesso si dovr utilizzare lXFree86 HOWTO, il contenuto della directory /usr/doc/X11 e questo capitolo). Una volta che si installato X, si pu entrare nellambiente X, digitando startx o mediante xdm, a seconda delle scelte fatte durante la congurazione. (N.d.T.: adesso il manuale di installazione di etch stato scritto e il sistema X standard Xorg.)

10.1

Avviare lambiente X

Ci sono due modi per avviare X. Il primo quello di farlo manualmente quando si desidera utilizzarlo. Per farlo, fare il login in una delle console testuali e digitare startx. Questo comando avvier X e passer sulla sua console virtuale. Il secondo (e raccomandato) metodo di usare X, tramite xdm, o X Display Manager. Semplicemente, xdm fornisce un gradevole prompt di login graco sulla console virtuale di X (probabilmente VC 7) e si fa il login l. In modo predenito, entrambi i metodi avviano anche un xterm, che una piccola nestra contenente un prompt di shell. Al prompt di shell si pu digitare qualsiasi comando, proprio come se si fosse su una VC testuale. Cos si possono seguire tutti gli esempi di questo tutorial utilizzando xterm; lunica differenza tra un xterm e una console testuale che non si deve fare il login nellxterm, dato che si gi fatto il login su X. Ci sono anche diverse cose che si possono fare solo in X, che sono comprese in questo capitolo. Una nota: lxterm predenito ha un carattere molto piccolo. Se si possiede un monitor piccolo o una risoluzione molto alta o una vista non buona, si vorr porvi rimedio. Si segua questo procedimento: 1 Spostare il puntatore del mouse al centro della nestra xterm.

Capitolo 10. Il sistema X Window

64

2 Premere il tasto Control e il pulsante destro del mouse contemporaneamente. Verr mostrato un menu dei tipi di carattere. 3 Puntare sul tipo di carattere desiderato e rilasciare il pulsante del mouse.

10.2

Introduzione: cos X

Una GUI (Graphical User Interface) una componente essenziale dei sistemi operativi Windows e Mac. fondamentalmente impossibile scrivere unapplicazione per questi sistemi operativi che non utilizzi una GUI e i sistemi medesimi non possono essere usati efcacemente dalla riga di comando. GNU/Linux pi modulare, cio, composto da molte piccole componenti indipendenti che possono essere utilizzate o meno in base alle proprie necessit e preferenze. Una di queste componenti il sistema X Window, o semplicemente X1 . X stesso un mezzo con cui i programmi comunicano con mouse e scheda video, senza conoscere quale tipo di mouse e scheda video si abbia. Cio, una astrazione dellhardware graco. Le applicazioni utente comunicano con X nel suo linguaggio; X poi traduce nel linguaggio del proprio hardware particolare. Ci signica che i programmi verranno scritti una sola volta e funzioneranno su qualsiasi computer. Nel gergo di X, il programma che comunica con lhardware il server X. Le applicazioni utente che richiedono allX server di mostrare nestre o graca sullo schermo, sono chiamate client X. Il server X include un driver video, cos si deve avere un server X che corrisponda alla propria scheda video. Il server X non fornisce nessuna delle caratteristiche che ci si aspetta da una GUI, tipo il ridimensionamento e riposizionamento di nestre. Un client X particolare, chiamato window manager, disegna bordi e barre dei titoli per le nestre, ridimensiona e riposiziona le nestre e fornisce strumenti per avviare altri client X da un menu. Window manager specici possono avere caratteristiche addizionali. I window manager disponibili su un sistema Debian includono fvwm, fvwm2, icewm, afterstep, olvwm, wmaker, mwm, twm, enlightenment e altri. Probabilmente si vorr provarli tutti e scegliere poi il proprio preferito. (Per informazioni sui window manager e altre cose simpatiche su X, X11.org (http://www.x11.org) un sito carino. N il server X, n il window manager forniscono un le manager; cio, non ci sono nestre contenenti icone per i propri le e directory. Si pu lanciare un le manager come applicazione separata; ce ne sono diversi disponibili, ma purtroppo non ce ne sono ancora di validi basati su icone. Il progetto per il desktop GNOME sta sviluppando un le manager basato su icone e altre facilitazioni della GUI. Si veda la pagina web del progetto GNOME (http://www. gnome.org) per le ultime novit su di esso. Unaltra caratteristica di X la sua trasparenza rispetto alla rete, col signicato che ai client X non interessa se sono connessi ad un server X sulla stessa macchina o ad un server X da qualche
1 Qualche volta chiamato anche X11 o X Window. Si noti che X Windows non corretto e usando questo termine scorretto si potrebbero offendere i puristi

Capitolo 10. Il sistema X Window

65

altra parte sulla rete. In pratica, ci signica che si pu avviare un programma su una macchina remota pi potente, mostrandolo sul proprio computer desktop.

10.3
10.3.1

Operazioni di base di X
Il mouse

Il mouse in X funziona esattamente come il mouse su altri sistemi, eccetto per il fatto che possiede tre pulsanti. Se il proprio mouse ne possiede solo due, si pu simulare il terzo pulsante (quello in mezzo), premendo contemporaneamente gli altri due. Ci pu risultare macchinoso e noioso, per cui investire qualche euro in un mouse a tre pulsanti, non una cattiva idea. Dovrebbero essere disponibili presso qualsiasi rivenditore di computer. I pulsanti sono numerati da sinistra a destra, presumendo che si abbia un mouse destrorso; allora il pulsante uno il sinistro, due quello centrale, tre quello destro. Si pu vericare sia il numero che la posizione nella documentazione. X possiede un semplice metodo integrato per il copia e incolla. Per selezionare il testo da copiare, si preme e si trascina con il tasto sinistro del mouse. Ci selezioner il testo da copiare, supponendo che lapplicazione che si sta utilizzando possieda il supporto per il copia-incolla. Per incollare il testo, si preme il tasto centrale del mouse in una applicazione X differente. Per esempio, se si riceve una e-mail contenente un URL, si pu selezionarlo con il pulsante sinistro, poi premere il tasto centrale nella barra degli indirizzi del browser web per copiarcelo.

10.3.2

Client X

I programmi che comunicano con il server X sono chiamati client X. Molti di essi richiederanno al server X di mostrare nestre sullo schermo. Si pu avviare un client X allo stesso modo con cui si avvia qualsiasi altro programma Debian. Semplicemente, si digiti il nome del client sulla riga di comando. Si provi digitando xterm dentro un xterm esistente: un nuovo client xterm apparir sullo schermo. Si potr notare che lxterm originale ora inutilizzabile dato che la shell resta in attesa che venga terminato il secondo xterm. Per evitare questo problema, si pu avviare il client X sullo sfondo: aggiungere un & dopo il nome del comando, cos: xterm &. Se ci si dimentica, si pu posizionare un processo in esecuzione sullo sfondo. Prima sospendere il processo con C-z e poi metterlo sullo sfondo con il comando bg. Se si usa un comando spesso, solitamente il proprio window manager fornisce il modo per inserirlo in un comodo menu graco.

Capitolo 10. Il sistema X Window

66

10.3.3

Risoluzione dei problemi

Qualche volta quando si lancia un client X tramite un menu graco, non si riuscir a vedere nessun messaggio di errore se questo fallisce. Si possono trovare tutti i messaggi di errore nel le ~/.xsession-errors.

10.3.4

Abbandonare lambiente X

Per abbandonare X necessario usare un menu. Sfortunatamente per i principianti, questo cambia a seconda del window manager e per la maggior parte di questi, pu essere congurato in vari modi. Se presente un menu evidente, si cerchi un comando del tipo Uscire o Chiudere il window manager. Se non si vede un menu, si provi premendo ciascuno dei pulsanti del mouse sullo sfondo dello schermo. Se ogni altro tentativo fallisce, si pu terminare forzatamente il server X premendo C-A-Backspace. Terminare forzatamente il server provocher la perdita di tutti i dati non salvati delle applicazioni aperte in quel momento.

10.4

Personalizzare lavvio di X

Quando si avvia X, Debian esegue alcuni script di shell che avviano il window manager e altri client X. In modo predenito verranno avviati un window manager, una xconsole e un xterm. Per personalizzare lavvio di X, il le /etc/X11/config deve contenere la riga allow-user-xsession. Se non c, si diventi root e si aggiunga questa riga. Poi si rifaccia il login con il proprio nome utente e si prosegua col tutorial. 2 Per avviare i client che si desiderano allavvio di X, creare uno script di shell eseguibile chiamato .xsession nella propria directory home. 1 touch ~/.xsession Creare il le. 2 chmod u+x ~/.xsession Rendere il le eseguibile. Una volta che .xsession stato creato, necessario modicarlo con il proprio editor di testo preferito per fare alcune cose utili. Si pu far fare tutto quello che si vuole a questo script. Comunque, quando il processo dello script termina, anche X termina. In pratica questo signica che spesso lo script nir con una chiamata a exec. Qualsiasi programma sar loggetto di exec sostituir il processo di script con se stesso, cos i comandi che
Si pu vedere come funzioni lavvio di X in Debian, nel le /etc/X11/Xsession. Si noti che il comportamento di /etc/X11/Xsession pu essere cambiato modicando il le /etc/X11/config, che specica alcune preferenze a livello di sistema.
2

Capitolo 10. Il sistema X Window

67

si trovano dopo la riga exec verranno ignorati. Il programma oggetto di exec diventer il nuovo proprietario del processo di script, il che signica che X terminer quando questo nuovo processo di programma termina. Supponiamo si sia messa alla ne del proprio le .xsession la riga: exec fvwm. Ci signica che il window manager fvwm verr eseguito quando viene avviato X. Quando si uscir da fvwm, terminer anche la sessione di X e tutti gli altri client saranno chiusi. Non obbligatorio utilizzare un window manager; si pu usare exec xterm, in tal caso, digitando exit in quel particolare xterm, si provocherebbe larresto dellintera sessione X. Se si vogliono avviare altri client prima di usare exec, si dovr avviarli sullo sfondo. Altrimenti .xsession attender no a che ciascun client attivo, poi proceder alla riga seguente. Si veda la sezione precedente sullesecuzione di job sullo sfondo (praticamente, si mette il carattere & alla ne; per esempio xterm &). Tuttavia possibile trarre vantaggio da questo comportamento. Se si vuole avviare un comando alla ne della propria sessione X, si pu fare s che il proprio .xsession avvii un window manager o qualcosa di simile e attenda il suo arresto. Cio, eliminare exec e &, lasciando fvwm da solo. Poi mettere i comandi che si desiderano dopo fvwm. Probabilmente di aiuto guardare qualche esempio di le .xsession. In tutti gli esempi, si sostituisca fvwm con il proprio window manager preferito. Il pi semplice .xsession avvia soltanto un window manager: exec fvwm Questo avvia fvwm e la sessione X termina quando si esce da fvwm. Se si usa senza exec, ogni cosa appare nello stesso modo, ma dietro le quinte .xsession rimane funzionante in attesa di fvwm e nisce solo dopo la ne di fvwm. Usare exec leggermente meglio perch fvwm sostituisce .xsession invece di lasciarlo in attesa. Si pu usare il comando ps o top per vericarlo. Un le .xsession pi utile avvia alcuni client prima dellavvio del window manager. Per esempio, si potrebbero volere alcuni xterm e un xclock ogni volta che si avvia X. Nessun problema: xterm & xterm & xclock & exec fvwm Due xterm e un xclock si avviano sullo sfondo e poi viene lanciato il window manager. Quando si esce dal window manager, si esce anche da X. Si pu provare senza porre sullo sfondo i programmi, solo per vedere cosa succede. Si faccia: xterm xclock exec fvwm

Capitolo 10. Il sistema X Window

68

Si avvia un xterm e attende che si esca da esso. Poi si avvia xclock; si deve uscire da xclock prima che fvwm si avvii. I comandi sono eseguiti in sequenza, dato che lo script attende ogni volta il termine di ciascuno. Si pu utilizzare lesecuzione sequenziale a proprio vantaggio. Forse si vuole tenere traccia di quando si nisce di lavorare ogni giorno: xterm & xclock & fvwm date >> ~/ora-di-logout Questo avvia un xterm e un xclock, poi avvia fvwm e attende che esso termini. Quando si esce da fvwm, si muove allultima riga, che aggiunge la data e ora corrente al le ~/ora-di-logout. Inne si potrebbe avere un programma diverso dal window manager che determina luscita da X: xclock & fvwm & exec xterm Questo script avvia xclock e fvwm sullo sfondo e poi sostituisce se stesso con un xterm. Quando si esce da xterm, nisce anche la sessione X. Il modo migliore per imparare a usare .xsession quello di provare a fare un po di cose. Assicurarsi, come gi detto, di usare chmod per renderlo eseguibile; questo un errore molto comune.

69

Capitolo 11

Strumenti per il testo


head, tail, grep, wc, tr, sed, perl e cos via.

11.1

Espressioni regolari

Una espressione regolare una descrizione di un insieme di caratteri. Questa descrizione pu essere usata per cercare in un le un testo che corrisponda alla espressione regolare. Le espressioni regolari sono analoghe ai metacaratteri della shell (vedere Espansione dei nomi di le (Metacaratteri) a pagina 40), ma sono sia pi complicate che pi potenti. Una espressione regolare composta di testo e metacaratteri. Un metacarattere semplicemente un carattere con un signicato particolare. I metacaratteri includono: . * [] - \ ^ $. Se una espressione regolare contiene solo testo (nessun metacarattere), allora essa corrisponde a quel testo. Per esempio, lespressione regolare la mia espressione regolare corrisponde al testo la mia espressione regolare e a niente altro. Le espressioni regolari sono generalmente sensibili alle minuscole/maiuscole. Si pu utilizzare il comando egrep per mostrare tutte le righe in un le che contengono unespressione regolare. La sua sintassi : egrep regexp nomefile1 ...
1

Per esempio, per trovare tutte le righe che contengono la parola GNU nella GPL, digitare: egrep GNU /usr/doc/copyright/GPL egrep stampa le righe sullo standard output. Se si vogliono tutte le righe che contengono freedom, seguito da altro testo non determinato, seguito da GNU, si pu fare:
1

Le virgolette non sono sempre necessarie, ma non disturbano mai.

Capitolo 11. Strumenti per il testo

70

egrep freedom.*GNU /usr/doc/copyright/GPL . signica qualsiasi carattere; e * signica zero o pi volte la cosa precedente, in questo caso zero o pi caratteri qualsiasi. Cos .* corrisponde praticamente a qualsiasi testo. egrep trova corrispondenze solo su una base riga per riga, cos freedom e GNU devono essere sulla stessa riga. Qui c un sommario dei metacaratteri delle espressioni regolari: . Corrisponde ad ogni singolo carattere, escluso il carattere di a capo. * Corrisponde a zero o pi occorrenze della cosa che lo precede. Cos lespressione a* corrisponde a nessuna o pi lettere a minuscole e .* corrisponde a zero o pi caratteri. [caratteri] Le parentesi quadre devono contenere uno o pi caratteri; lespressione contenuta tra le parentesi quadre corrisponde ad esattamente uno dei caratteri dellinsieme. Cos [abc] corrisponde a una a, una b o una c; non ha corrispondenza con 0 caratteri o con altri caratteri diversi da questi tre. ^ Aggancia la ricerca allinizio della riga. Lespressione ^Il corrisponde a Il solo se allinizio della riga; non ci possono essere spazi o altri caratteri prima di Il. Se si vuole permettere la presenza di spazi, si pu permetterne zero o pi cos: ^ *Il. $ Aggancia la ricerca alla ne della riga. fine$ richiede che il testo fine si trovi alla ne della riga, senza altri spazi o testo. [^caratteri] ^ inverte il senso di una lista di caratteri tra parentesi quadre. Cos [^abc] corrisponde ad ogni singolo carattere, eccetto a, b, o c. [carattere-carattere] Si possono includere in una lista tra parentesi quadre degli intervalli di caratteri. Per avere una corrispondenza con tutte le lettere minuscole, si usi [a-z]. Si pu avere pi di un intervallo; cos per avere una corrispondenza con le prime tre o le ultime tre lettere dellalfabeto, si provi [a-cx-z]. Per ottenere ogni lettera, maiuscola o minuscola, si provi [a-zA-Z]. Si possono mescolare intervalli con caratteri singoli e con il metacarattere ^; per esempio, [^a-zBZ] signica ogni cosa escluso una lettera minuscola, una B maiuscola o una Z maiuscola. () Si possono usare le parentesi per raggruppare parti dellespressione regolare, proprio come si fa in una espressione matematica. | | signica oppure; lo si pu usare per ottenere una serie di espressioni alternative. Abitualmente si preferisce mettere le alternative tra parentesi, cos: c(ad|ab|at) che corrisponde a cad o cab o cat. Senza le parentesi, corrisponderebbe invece a cad o ab o at. \ Protegge ogni carattere speciale; se si vuole trovare letteralmente un *, digitare \*. La barra signica ignorare il signicato speciale di *. Qui ci sono alcuni altri esempi, per aiutare a prendere la mano:

Capitolo 11. Strumenti per il testo

71

p.pa corrisponde a pipa, pupa, papale p\.pa corrisponde a p.pa, p.pap cal*i corrisponde a cai, cali, calli car.*i corrisponde a cartelli, cartoni, carretti xyz.* corrisponde a xyz con qualsiasi cosa dopo di esso, alcuni strumenti tipo egrep, faranno una corrispondenza solo no alla ne della riga. ^Il corrisponde a Il allinizio di una riga. atime$ corrisponde a atime alla ne di una riga. ^Solo$ corrisponde a una riga che consiste solamente della parola Solo, con nessuno spazio, nessun altro carattere, niente. Solo Solo permesso. m[eou]la corrisponde a mela, mola, mula Ver[D-F] corrisponde a VerD, VerE, VerF Ver[^0-9] corrisponde a Ver seguito da un qualsiasi carattere che non sia una cifra. cal[dm][io] corrisponde a caldi, calmi, caldo, calmo [A-Za-z][A-Za-z]* corrisponde a ogni parola costituita da sole lettere e da almeno una lettera. Non far corrispondenza con numeri o spazi.

Capitolo 11. Strumenti per il testo

72

73

Capitolo 12

Strumenti per gestione le


12.1 Strumenti di backup

tar, cpio, dump; copia di le su larga scala, cp -a, ecc. (Forse qualcosa su come fare il backup solo di /home e /etc se si ha solo ununit per oppy, dato che molti utenti non hanno ununit a nastro) Come usare tar per copiare molti le o fare il backup dei propri le. Tarball. Penso che questa dovrebbe essere una breve sezione pensata per sistemi per un singolo utente e avere una analisi pi dettagliata per gli amministratori di sistema in un altro manuale. Comandi di backup (contributo di Oliver Elphick, sezione da elaborare e ripulire): dump - fa il dump di un lesystem alla volta; le sue opzioni di comando assumono che si stia usando un nastro da mezzo pollice (massino 45Mb per nastro) perci un po noioso quando si usa il DAT (2Gb o pi). Probabilmente la scelta migliore per i backup regolari. Non pu essere usato per lesystem NFS montati. cpio - nd [directory] -print | cpio -ovH newc -B >/dev/st0 tar - tar cvf /dev/st0 [directory] ao - come cpio; supporta la pre-compressione dei le prima dellarchiviazione. tob - front-end per ao

12.2

Compressione di le con gzip

Spesso sarebbe bello rendere un le pi piccolo: per esempio per scaricarlo pi velocemente o afnch occupi meno spazio su disco. Il programma per questo scopo si chiama gzip (GNU Zip). 1 cd; cp /etc/profile ./miofileditest

Capitolo 12. Strumenti per gestione le

74

Passare alla propria directory home, copiare poi un le a propria scelta (/etc/profile) nella directory attuale al contempo rinominandolo in miofileditest. Ci fornisce un le con cui lavorare usando gzip. 2 ls -l Elencare il contenuto della directory attuale. Si noti la dimensione di miofileditest. 3 gzip miofileditest Comprimere miofileditest. 4 ls -l Osservare il risultato: miofileditest si chiama ora miofileditest.gz. anche molto pi piccolo. 5 gunzip miofileditest.gz; ls -l Decomprimere. Notare che miofileditest ritornato al suo stato originale. Si noti che per decomprimere viene usato gunzip, non gzip. 6 rm miofileditest Rimuovere il le, dato che serviva solo per fare pratica.

12.3

Dividere le in parti pi piccole

A volte un le troppo grande per essere contenuto in un disco o non si vuole inviare un enorme le in rete in un singolo blocco. Si pu dividere il le usando lutilit split e riassemblarlo usando lutilit cat (concatenare). 1 cd; cp /bin/bash miofile; ls -l miofile Copiare leseguibile bash in un le chiamato miofile nella propria directory home. Si osservi che miofile occupa un po pi di 400.000 byte cio circa 400 kilobyte. 2 split -b100k miofile mioprefisso Divide il le in sezioni di 100 kilobyte, dando loro il nome mioprefissoaa, mioprefissoab, ecc. Digitare ls -l per vedere il risultato. Si pu specicare un numero qualsiasi dopo -b: sceglierne uno sensato. Se si tralascia la k, viene interpretato come byte invece di kilobyte. Se si usa m al posto di k, viene interpretato come megabyte. 3 cat mioprefisso* > mionuovofile Concatenare tutti i le e scriverli in mionuovofile. (Luso di * e > un trucco spiegato in un altro capitolo.) 4 rm miofile mionuovofile mioprefisso* Rimuovere tutto.

Capitolo 12. Strumenti per gestione le

75

12.4

Trovare le

Ci sono due diversi mezzi per trovare le: find e locate. find cerca i le reali nel loro stato attuale. locate cerca in un indice creato dal sistema ogni mattina alle 6:42 a.m. (questo un compito di cron spiegato altrove in questo manuale). locate non trova i le che sono stati creati successivamente alla generazione dellindice. Tuttavia, dato che cerca allinterno di un indice, locate molto pi veloce: come usare lindice di un libro invece di sfogliarlo tutto. Per paragonare i due metodi per trovare le, si nga di non ricordarsi dove si trovi il le di congurazione di X, XF86Config. 1 locate XF86Config Questo dovrebbe essere piuttosto veloce. Si ottiene un elenco di nomi di le che contengono XF86Config: qualcosa di questo tipo: /etc/X11/XF86Config /usr/X11R6/lib/X11/XF86Config /usr/X11R6/lib/X11/XF86Config.eg /usr/X11R6/man/man5/XF86Config.5x.gz 2 find / -name XF86Config Si sente molta attivit sul disco ed necessario pi tempo. Il risultato ha un aspetto simile a questo: /etc/X11/XF86Config /usr/X11R6/lib/X11/XF86Config find: /var/spool/cron/atjobs: Permission denied find: /var/spool/cron/atspool: Permission denied find: /var/lib/xdm/authdir: Permission denied Si noti che find trova solo le che si chiamano esattamente XF86Config, invece di ogni le che contiene quella stringa di lettere. Inoltre find tenta di fatto di cercare in ogni directory del sistema, incluse alcune in cui non si hanno i permessi di lettura. Da ci derivano i messaggi Permission denied. Anche la sintassi differente. stato necessario specicare in quale directory cercare, /, mentre locate sceglie automaticamente la directory root. Inoltre stato necessario specicare una ricerca per nome, usando lopzione -name. Sarebbe stato possibile anche cercare le usando molti altri criteri, come la data di modica o il proprietario. Per far s che find cerchi le il cui nome abbia corrispondenza con la stringa XF86Cong, si dovrebbe usare una espressione regolare: find / -name *XF86Config*. Come la maggior parte degli strumenti a riga di comando, find accetta espressioni regolari quali argomenti. In generale find unutilit pi potente e locate pi veloce per le ricerche di tutti i giorni. Ci vorrebbe molto tempo per spiegare tutta la gamma delle possibili ricerche; per ulteriori dettagli, digitare info find, che fa apparire le pagine info molto dettagliate di find e di locate.

Capitolo 12. Strumenti per gestione le

76

12.5

Determinare il contenuto di un le

Debian fornita con uno strumento che pu avanzare unipotesi sul contenuto di un le al posto dellutente. Non sempre ha ragione. Comunque ragionevolmente accurato e pu essere usato per esplorare il proprio sistema. 1 file /bin/cp Si dovrebbe vedere qualcosa di simile a questo: /bin/cp: ELF 32-bit LSB executable, Intel 386, version 1, stripped Saltando la parte tecnica, questo un le eseguibile per macchine Intel. 2 file /etc/init.d/boot Restituisce la risposta: /etc/init.d/boot: Bourne shell script text Signica che questo un le di testo contenente uno script per la shell Bourne.

77

Capitolo 13

Usare i dischi
13.1 Concetti

Probabilmente una buona idea spiegare un po di teoria prima di discutere i meccanismi delluso dei dischi. In particolare, il concetto di lesystem. 1 Questo concetto genera confusione, perch ha diversi signicati. Il lesystem si riferisce allintero albero delle directory, che inizia con la directory root /, come descritto precedentemente. Un lesystem in generale signica ogni organizzazione di le e directory su di un particolare dispositivo sico. Organizzazione signica la struttura gerarchica delle directory e ogni altra informazione riguardo ai le di cui si pu volere tener traccia: la loro dimensione, chi ha il permesso di modicarli, ecc. Cos possibile avere un lesystem nel proprio hard disk e un altro su ogni oppy disk. Filesystem usato anche per signicare un tipo di lesystem. Per esempio, MS-DOS e Windows 3.1 organizzano i le in modo particolare, con particolari regole: i nomi dei le possono avere solo 8 caratteri, per esempio, e non memorizzata nessuna informazione sui permessi. Linux chiama questo lesystem msdos. Linux ha anche il suo proprio lesystem, chiamato lesystem ext2 (versione due del lesystem ext). Si user il lesystem ext2 per la maggior parte del tempo, a meno che non si acceda a le di un altro sistema operativo o si abbiano altre necessit particolari. Ogni dispositivo sico che si desidera usare per memorizzare i le deve avere almeno un lesystem su di esso. Questo si riferisce ad un lesystem nella seconda accezione: una gerarchia di le e directory, insieme alle informazioni su di essi. Naturalmente, ogni lesystem ha un proprio tipo, cos anche la terza accezione entra in gioco. Se si dispone di pi di un lesystem su di un singolo dispositivo, ogni lesystem pu essere di un proprio tipo differente; per esempio, si pu avere sia una partizione DOS che una partizione Linux sul proprio hard disk.
1 Alcune persone lo scrivono in due parole, cio le system. Una rapida verica delle pagine di manuale (man -k filesystem, man -k file system) rivela circa una divisione a met. Cos io lo scrivo come una parola.

Capitolo 13. Usare i dischi

78

importante distinguere il lesystem dalla formattazione a basso livello del disco. Nei mondi Dos e Macintosh, il lesystem chiamato formattazione ad alto livello. Quando si formatta un disco, usando uno di questi sistemi operativi, generalmente si realizza sia una formattazione a basso livello sia la creazione di un lesystem (formattazione ad alto livello). Su sistemi GNU e Unix, si dice semplicemente formattare generalmente per indicare la formattazione a basso livello, e creare un lesystem per indicare la formattazione ad alto livello. La formattazione inerente alle particolarit del dispositivo sico, come lesatta posizione sica dei propri dati su di un oppy disk (per esempio sul margine o vicino al centro del disco). Il lesystem il livello di organizzazione di cui ci si deve preoccupare: nomi di directory e le, le loro dimensioni, ecc.

13.2 mount e il le /etc/fstab


Questa sezione descrive come montare un oppy disk o uno Zip disk, la directory /dev e la distribuzione dellalbero delle directory sopra dispositivi sici o partizioni multiple.

13.2.1

Montare un lesystem

Si di un sistema GNU/Linux non necessaria alcuna corrispondenza tra le directory e i dispositivi sici, come c in Windows dove ogni dispositivo ha il suo proprio albero delle directory che inizia con una lettera (come C:\). Invece, ogni dispositivo sico come un hard disk o oppy disk ha uno o pi lesystem su di esso. Al ne di rendere un lesystem accessibile, esso assegnato ad una particolare directory in un altro lesystem. Per evitare circolarit, il lesystem root (che contiene la directory root /) non contenuto da nessun altro lesystem: si accede ad esso automaticamente quando si avvia Debian. Una directory in un lesystem che contiene un altro lesystem detta punto di montaggio (mount). Un punto di mount una directory in un primo lesystem su di un dispositivo (come il proprio hard disk) che contiene un secondo lesystem, forse su di un altro dispositivo (come un oppy disk). Per accedere a un lesystem, si deve montarlo in qualche punto di mount. Cos, per esempio, si pu montare un CD al punto di mount /cdrom. Questo signica che se si guarda nella directory /cdrom, si vedr il contenuto del CD. La directory /cdrom stessa di fatto nel proprio hard disk. Per tutti gli scopi pratici il contenuto del CD diventa una parte del lesystem root e quando si digitano comandi e si usano programmi non fa alcuna differenza quale sia la reale posizione sica dei le. Si pu avere creato una directory sul proprio hard disk chiamata /cdrom e aver messo alcuni le al suo interno e ogni cosa funzionerebbe esattamente nello stesso modo. Una volta che si montato un lesystem, non c la necessit di fare attenzione ai dispositivi sici. Tuttavia, prima di montare un lesystem o creare attualmente un lesystem su di un disco che non ne ha ancora uno, necessario riferirsi ai dispositivi stessi. Tutti i dispositivi hanno

Capitolo 13. Usare i dischi

79

un nome, e questi sono localizzati nella directory /dev. Se ora si digita ls /dev, si vedr una lista piuttosto lunga di ogni possibile dispositivo che si potrebbe avere sul proprio sistema Debian. I dispositivi possibili includono:
2

/dev/hda il dispositivo IDE A. In generale, questo sar un hard disk. IDE si riferisce al tipo di dispositivo; se non si sa che cosa esso signichi, probabilmente si ha questo tipo di dispositivo, perch il pi comune. La propria partizione DOS/Windows C:\ si trova probabilmente su questo dispositivo. /dev/hdb il dispositivo IDE B, come si pu indovinare. Questo potrebbe essere un secondo hard disk o forse un lettore di CD-ROM. I dispositivi A e B sono il primo e il secondo (master e slave) dispositivo sul controller IDE primario. I dispositivi C e D sono il primo e il secondo dispositivo sul controller IDE secondario. /dev/hda1 la prima partizione del dispositivo IDE A, usualmente chiamata C:\ su un sistema DOS o Windows. Notare che dispositivi differenti sono identicati da lettere, mentre speciche partizioni di questi dispositivi sono rappresentate in pi da numeri. /dev/sda il disco SCSI A. SCSI come IDE, solo che se non si conosce cosa sia probabilmente non si ha uno di questi dispositivi. Gli SCSI non sono molto comuni nei PC Intel casalinghi, sebbene siano spesso usati nei server e i computer Macintosh spesso utilizzino dischi SCSI. 3 /dev/fd0 il primo dispositivo oppy, generalmente A:\ sotto DOS. Dato che i oppy disk non hanno partizioni, i loro nomi hanno solo numeri, invece dello schema letteranumero usato per gli hard disk. Tuttavia, per i lettori di oppy i numeri si riferiscono al dispositivo e per gli hard disk i numeri si riferiscono alle partizioni. /dev/ttyS0 la prima delle proprie porte seriali (COM1: sotto DOS). La directory /dev contiene i nomi di molti dispositivi, non solo dischi.

Per montare un lesystem, si deve comunicare a Linux di associare qualunque lesystem trovi in un particolare dispositivo con un particolare punto di mount. Nel fare questo, potr essere necessario comunicare a Linux quale specie di lesystem cercare.
Questa non una lista completa. Generalmente la documentazione per un particolare dispositivo o programma informa su quale nome di dispositivo usare. Ci sono centinaia di nomi di dispositivo differenti. Una lista abbastanza completa (anche se non molto dettagliata) dovrebbe trovarsi nel sistema nel le /usr/src/linux/Documentation/devices.txt. 3 I dispositivi SCSI hanno uno schema di assegnazione dei nomi pi complicato di quello dei dispositivi IDE, per lo pi perch SCSI ha pi utilizzi diversi. Le partizioni di un disco SCSI hanno la forma /dev/sda[1-9a-f], cio, /dev/sda (o sdb o sdc, ecc.) seguito da un numero o lettera nellintervallo 1--9 o a--f. /dev/scd0 il primo dispositivo CDROM SCSI; dispositivi generici come scanner possono apparire come /dev/sg0; /dev/st0 un dispositivo a nastro SCSI.
2

Capitolo 13. Usare i dischi

80

13.2.2

Esempio: montare un CD-ROM

Come semplice dimostrazione, vediamo come si monta un CD-ROM, come quello che si pu aver usato per installare Debian. Per far questo sar necessario essere root, perci si faccia attenzione; ogni volta che si diventa root si ha il potere di rovinare lintero sistema, invece di rovinare solo i propri le. Inoltre, questi comandi presumono che ci sia un CD nel proprio lettore; si dovrebbe mettere un CD nel lettore ora. 1 su Se non lo si gi fatto, necessario o fare il login come root o ottenere i privilegi di root con il comando su (super utente). Se si usa su, inserire la password di root quando richiesta. 2 ls /cdrom Vedere che cosa c nella directory /cdrom prima di iniziare. Se non si ha una directory /cdrom, si dovr crearne una usando il comando mkdir /cdrom. 3 mount Digitare semplicemente mount senza alcun argomento fornisce la lista dei lesystem attualmente montati. 4 mount -t iso9660 dispositivo CD /cdrom Per questo comando, si dovrebbe sostituire il nome del proprio dispositivo CD-ROM al posto di dispositivo CD nella riga di comando precedente. Se non si sicuri, /dev/cdrom una buona supposizione dato che il processo di installazione dovrebbe aver creato questo link simbolico sul sistema. Se questo fallisce, provare con dispositivi IDE differenti: /dev/hdc, ecc. Si dovrebbe vedere un messaggio come il seguente: mount: block device /dev/hdc is write-protected, mounting read-only Lopzione -t specica il tipo di lesystem, in questo caso iso9660. La maggior parte dei CD iso9660. Largomento successivo il nome del dispositivo da montare e largomento nale il punto di mount. Sono disponibili molti altri argomenti per mount; vedere la pagina di manuale per i dettagli. Quando un CD montato, si pu constatare che il proprio lettore non si apre. Si deve smontare il CD prima di rimuoverlo. 5 ls /cdrom Confermare che la directory /cdrom ora contiene qualsiasi cosa sia sul CD nel proprio lettore. 6 mount Osservare di nuovo la lista dei lesystem, notare che ora il proprio lettore CD montato.

Capitolo 13. Usare i dischi

81

7 umount /cdrom Questo comando smonta il CD. Ora si pu tranquillamente rimuovere il CD dal lettore. Notare che il comando umount senza la lettera n, anche se usato per smontare, unmount, il lesystem. 8 exit Non rimanere autenticati come root. Fare immediatamente il logout, per essere sicuri.

13.2.3 /etc/fstab: Automatizzare il processo di mount


Il le /etc/fstab (il cui nome signica le system table) contiene le descrizioni dei lesystem che si montano frequentemente. Questi lesystem poi possono essere montati con un comando pi breve, come mount /cdrom. I lesystem si possono congurare anche per essere montati automaticamente quando il sistema viene avviato. Probabilmente si vorr montare tutti i lesystem sui propri hard disk al momento dellavvio. Ora osservare questo le, digitando more /etc/fstab. Ci saranno due o pi voci che sono state congurate automaticamente quando si installato il sistema. Probabilmente appare in modo simile a: # /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> /dev/hda1 / ext2 defaults /dev/hda3 none swap sw proc /proc proc defaults /dev/hda5 /dev/hda6 /dev/hda7 /dev/hdc /dev/fd0 /tmp /home /usr /cdrom /floppy ext2 ext2 ext2 defaults defaults defaults

<dump > 0 0 0 0 0 0

<pass> 1 0 0 2 2 2 0 0

iso9660 ro,noauto 0 auto noauto,sync 0

La prima colonna elenca i dispositivi su cui risiede il lesystem. La seconda elenca i punti di mount, la terza il tipo di lesystem. La riga che inizia con proc un lesystem speciale . Notare che la partizione di swap (/dev/hda3 nellesempio) non ha un punto di mount, cos la relativa colonna del punto di mount contiene none. Le ultime tre colonne richiedono alcune spiegazioni. La quinta colonna usata dallutilit dump per decidere quando fare il backup del lesystem. Nella maggior parte dei casi in questo campo si pu mettere 0. La sesta colonna usata dallutilit fsck per decidere in quale ordine vericare i lesystem quando si avvia il sistema. Il lesystem root dovrebbe avere un 1 in questo campo, i lesystem

Capitolo 13. Usare i dischi

82

che non necessitano di essere vericati (come la partizione di swap) dovrebbero avere uno 0 e tutti gli altri lesystem dovrebbero avere un 2. Vale la pena notare che la partizione di swap non esattamente un lesystem, nel senso che non contiene le e directory, ma usata solamente dal kernel Linux come memoria secondaria. Tuttavia, per ragioni storiche, le partizioni di swap sono ancora elencate nello stesso le dei lesystem. La quarta colonna contiene una o pi opzioni da usare quando si monta il lesystem. Ecco un breve sommario (alcune di queste probabilmente non saranno ancora molto chiare: vengono elencate per le consultazioni successive):

sync e async I/O sincrono o asincrono. LI/O sincrono scrive i cambiamenti ai le immediatamente, mentre lI/O asincrono pu tenere i dati in buffer e scriverli successivamente, per motivi di efcienza. ro e rw Montare il lesystem in sola lettura (read-only) o lettura-scrittura (read-write). Se non necessario fare alcun cambiamento al lesystem, una buona idea montarlo in sola lettura cos non si dannegger nulla per sbaglio. Inoltre, i dispositivi di sola lettura (come lettori CD-ROM e oppy disk con la protezione in scrittura) dovrebbero essere montati in sola lettura. auto e noauto Quando il sistema si avvia od ogni volta che si digita mount -a, mount prova a montare tutti i lesystem elencati nel le /etc/fstab. Se non si vuole che venga montato automaticamente un lesystem, si dovrebbe usare lopzione noauto. Probabilmente una buona idea usare lopzione noauto per i supporti rimovibili come oppy disk, perch pu o non pu esserci un disco nel lettore. Si vorr montare manualmente questi lesystem dopo aver inserito un disco. dev e nodev Usare o ignorare i le di dispositivo su questo lesystem. Si potrebbe usare nodev se si monta la directory root di un altro sistema sul proprio sistema; non si vuole che il proprio sistema provi ad usare i dispositivi su altre macchine. user e nouser Permette o proibisce agli utenti ordinari di montare il lesystem. nouser signica che solo root pu montare il lesystem. Questa la congurazione predenita. Si potrebbe usare lopzione user per accedere al lettore di oppy senza dover essere root. exec e noexec Permette o non permette lesecuzione di le su questo lesystem. Probabilmente queste opzioni non saranno necessarie. suid e nosuid Permette o non permette che il bit suid abbia effetto. Probabilmente queste opzioni non saranno necessarie. defaults Equivalente a: rw, dev, suid, exec, auto, nouser, async. Si pu specicare lopzione defaults seguita da altre opzioni per sovrascrivere aspetti specici di defaults.

Capitolo 13. Usare i dischi

83

13.2.4

Dischi rimovibili (oppy, Zip disk, etc.)

Aggiungere le seguenti righe al proprio le /etc/fstab: /dev/sda1 /dev/sda4 /mnt/zip /mnt/dos ext2 msdos noauto,user noauto,user 0 0 0 0

Da ora in poi, si sar in grado di montare i dischi Zip formattati DOS con il comando mount /mnt/dos e dischi Zip formattati Linux con il comando mount /mnt/zip. 4

4 Se si dispone di hard disk SCSI nel proprio sistema, si dovr cambiare sda con sdb o sdc, ecc. nellesempio precedente.

Capitolo 13. Usare i dischi

84

85

Capitolo 14

PPP
14.1 Introduzione

Se ci si connette ad Internet tramite una linea telefonica, si vorr usare PPP (Point-To-Point Protocol). Questo il metodo di connessione standard fornito dagli ISP (Internet Service Provider). Oltre ad usare PPP per connettersi al proprio ISP, si pu far s che il proprio computer resti in ascolto per connessioni in entrata: ci permette di connettersi al proprio computer da una postazione remota. Questa sezione una guida rapida senza fronzoli per impostare PPP su Debian. Se ci fosse la necessit di ulteriori dettagli, vedere leccellente PPP HOWTO (http://metalab. unc.edu/LDP/HOWTO/PPP-HOWTO.html) del Linux Documentation Project. LHOWTO approfondisce molti pi dettagli se si interessati o se si hanno esigenze particolari.

14.2

Preparazione

Congurare PPP su GNU/Linux semplice quando si dispone di tutte le informazioni necessarie. Debian rende le cose ancora pi facili con i suoi semplici strumenti di congurazione. Prima di iniziare, assicurarsi di avere tutte le informazioni fornite dal proprio ISP. Queste potrebbero includere: Username o login Password Il proprio indirizzo IP (Internet Protocol) statico, se se ne ha uno (questo ha un aspetto simile a 209.81.8.242) Bitmask (ha un aspetto simile a 255.255.255.248)

Capitolo 14. PPP

86

Gli indirizzi IP del name server (o DNS) del proprio ISP. Ogni procedura speciale di login richiesta dallISP. Dopo, si vorranno esaminare le impostazioni del proprio hardware: se il proprio modem funziona con GNU/Linux e a quale porta seriale connesso. C una semplice regola per stabilire se il proprio modem funzioner. Se un WinModem o host-based modem, non funzioner Questi modem sono economici perch dispongono di pochissime funzionalit e richiedono al computer di sopperire alle loro mancanze. Sfortunatamente, questo signica che sono complessi da programmare e, generalmente, le ditte produttrici non rendono disponibili le speciche per gli sviluppatori. Se si dispone di un modem con i propri circuiti sulla scheda, non si dovrebbe avere alcun problema. Sui sistemi GNU/Linux, ci si riferisce alle porte seriali come /dev/ttyS0, /dev/ttyS1 e cos via. Il proprio modem quasi certamente connesso o alla porta 0 o alla porta 1, equivalenti a COM1: e COM2: in Windows. Se non si conosce a quale porta sia connesso il proprio modem, wvdialconf pu tentare di rilevarla (vedere di seguito); altrimenti provare entrambe e vedere quale funziona. Se si vuole comunicare con il proprio modem o collegarsi al proprio ISP senza usare PPP, si pu usare il programma minicom. Potr essere necessario installare il pacchetto minicom per rendere il programma disponibile.

14.3

Il modo semplice: wvdial

Il modo pi semplice per avere PPP funzionante con il programma wvdial. Esso fa alcune ipotesi ragionevoli e tenta di impostare ogni cosa. Se funziona, si stati fortunati. Se le sue ipotesi sono sbagliate, si dovranno fare le cose manualmente. Assicurarsi di avere installato i seguenti pacchetti: ppp ppp-pam wvdial Quando si installa il pacchetto wvdial, pu venir data la possibilit di congurarlo. Altrimenti, per impostare wvdial, seguire questi semplici passaggi: 1 Fare il login come root, usando su come descritto in un capitolo precedente. 2 touch /etc/wvdial.conf touch crea un le vuoto, se il le non esiste; il programma di congurazione richiede un le esistente.

Capitolo 14. PPP

87

3 wvdialconf /etc/wvdial.conf Questo sigica che si sta creando un le di congurazione, /etc/wvdial.conf 4 Rispondere ad ogni domanda che appare sullo schermo, wvdialconf cerca anche il modem e comunica a quale porta seriale connesso; si potr volere prendere nota di questa informazione per il futuro. 5 /etc/wvdial.conf dovrebbe ora apparire simile a: [Dialer Defaults] Modem = /dev/ttyS1 Baud = 115200 Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 S11=55 +FCLASS=0 ; Phone = [Numero telefonico di destinazione] ; Username = [Proprio nome di login] ; Password = [Propria password] Sostituire semplicemente le informazioni tra parentesi quadre con quelle appropriate e rimuovere i ; dallinizio di quelle righe ed fatta! Ecco come dovrebbe apparire un le wvdial.conf completo: [Dialer Defaults] Modem = /dev/ttyS1 Baud = 115200 Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 S11=55 +FCLASS=0 Phone = 5551212 Username = beavis Password = password Ora che wvdial.conf impostato, per connettersi al proprio ISP, digitare semplicemente wvdial. Se non funziona probabilmente si dovr passare alla congurazione manuale di PPP.

14.4

Congurazione manuale

Anche questa non poi cos difcile, sebbene lo sia lievemente di pi rispetto a wvdial. Ecco un riassunto facile e veloce: digitare pppconfig come root, rispondere alle domande, poi digitare pon per connettersi e poff per disconnettersi. Comunque vedremo un po pi di dettagli.

Capitolo 14. PPP

88

89

Capitolo 15

Rimuovere e installare software


15.1 dpkg lutilit per i pacchetti 15.2 Che cosa fa unutilit per la manutenzione dei pacchetti

Una applicazione o programma di utilit comporta abitualmente un certo numero di le. Potrebbe avere la necessit di librerie, le di dati come scenari di gioco o icone, le di congurazione, pagine di manuale e documentazione. Quando si installa il programma, si vuole essere sicuri di avere tutti i le che sono necessari nella giusta posizione. Sarebbe anche preferibile essere capaci di disinstallare il programma. Quando si disinstalla, si vorrebbe essere sicuri che tutti i le associati siano rimossi. Tuttavia, se un programma che ancora presente nel sistema, necessita di questi le, si vorrebbe essere sicuri di tenerli. Inne, si potrebbe voler essere capaci di aggiornare un programma. Quando si fa un aggiornamento), si vorrebbe rimuovere i le obsoleti e aggiungere quelli nuovi, senza alterare il funzionamento di alcuna parte del sistema. Il sistema dei pacchetti Debian risolve questi problemi. Permette di installare, rimuovere e aggiornare i pacchetti software, che sono dei piccoli involucri ordinati contenenti i le del programma e le informazioni che aiutano il sistema a gestirli in modo adeguato. I pacchetti Debian hanno nomi dei le che terminano con lestensione .deb e sono disponibili sul sito ftp o nel proprio CD-ROM Debian ufciale.

15.3
15.3.1

Apt
Congurare Apt

Debian ora fornisce un strumento chiamato Apt (A Package Tool) per aiutare gli amministratori ad aggiungere o rimuovere il software pi facilmente. La prima cosa da fare adattare il le di congurazione /etc/apt/sources.list. Questa lista delle risorse dei pacchetti `

Capitolo 15. Rimuovere e installare software

90

usata per localizzare gli archivi del sistema di distribuzione dei pacchetti in uso nel proprio sistema. La lista delle sorgenti progettata per supportare qualsiasi numero di sorgenti attive e una variet di tipi di sorgenti. Il le /etc/apt/sources.list elenca le sorgenti, una sorgente per riga, con la sorgente preferita elencata per prima. Il formato di una voce in sources.list : deb uri distribuzione [componente1] [componente2] [...] LURI (Universal Resource Identier) per il tipo deb deve specicare la base della distribuzione Debian, da cui APT prender le informazioni necessarie. La distribuzione pu specicare un percorso esatto, nel qual caso le componenti devono essere omesse e distribuzione deve nire con uno slash (/). Questo utile quando si interessati solo ad una particolare sottosezione dellarchivio, denotata dallURI. Se la distribuzione non specica un percorso esatto, deve essere presente almeno una componente. I tipi di URI attualmente riconosciuti sono: le, cdrom, http, ftp e copy. file Lo schema le permette che una directory arbitraria nel lesystem sia considerata un archivio. Questo utile per montare NFS e per mirror o archivi locali. cdrom Lo schema cdrom permette ad APT di usare un lettore CDROM locale cambiando i supporti. Usare il programma apt-cdrom(8) per creare le voci di cdrom nella lista delle sorgenti. http Lo schema http specica un server HTTP per larchivio. Se impostata una variabile dambiente $http_proxy con il formato http://server:porta/, il server proxy specicato in $http_proxy sar usato. Gli utenti con proxy HTTP/1.1 con autenticazione possono usare una stringa nel formato http://utente:pass@server:porta/. Si noti che questo un metodo di autenticazione non sicuro. ftp Lo schema ftp specica un server FTP per larchivio. Il comportamento di APT per FTP altamente congurabile; per ulteriori informazioni vedere la pagina di manuale di apt.conf(5). copy Lo schema copy identico allo schema le eccetto che i pacchetti sono copiati nella directory della cache invece di essere usati direttamente dalla loro posizione. Questo utile per le persone che usano un disco zip per copiare i le con APT. Qualche esempio: deb http://www.debian.org/archive stable main contrib Usa HTTP per accedere allarchivio presso www.debian.org e usa le aree stable/main and stable/contrib. deb ftp://ftp.debian.org/debian unstable main contrib non-free

Capitolo 15. Rimuovere e installare software

91

Usa FTP per accedere allarchivio presso ftp.debian.org sotto la directory /debian e usa le aree unstable/main, unstable/contrib e unsunstable/non-free. deb ftp://ftp.debian.org/debian stable main Usa FTP per accedere allarchivio presso ftp.debian.org, sotto la directory /debian e usa larea stable/main. Se questa riga appare insieme a quella nel precedente esempio nel le sources.list, una singola sessione FTP sar usata per entrambe le righe di risorsa. deb file:/home/vincent/debian stable main contrib non-free Usa larchivio memorizzato localmente (o su un NFS montato) in /home/vincent/debian per le aree stable/main, stable/contrib, e stable/non-free.

15.3.2

Usare apt-get

apt-get lo strumento a riga di comando per la gestione dei pacchetti e pu essere considerato il back-end dellutente per apt. apt-get molto semplice da usare. apt-get [opzioni] [comando] [pacchetto ...] Dove comando uno dei seguenti: update update usato per risincronizzare i le di descrizione dei pacchetti dalle loro sorgenti. Le descrizioni dei pacchetti disponibili sono scaricate dalla/e posizione/i specicate nel le /etc/apt/sources.list. Per esempio, quando si usa un archivio Debian, questo comando scarica e fa una scansione dei le Packages.gz, cos che le informazioni riguardo i pacchetti nuovi e aggiornati siano disponibili. Un comando update dovrebbe sempre essere fatto prima di un upgrade o dist-upgrade. upgrade upgrade usato per installare le nuove versioni di tutti i pacchetti attualmente installati sul sistema dalle sorgenti elencate nel le /etc/apt/sources.list. I pacchetti attualmente installati, con una nuova versione disponibile, sono scaricati e aggiornati; in nessuna circostanza vengono rimossi pacchetti attualmente installati o scaricati e installati pacchetti non ancora installati. Le nuove versioni dei pacchetti attualmente installati, che non possono essere aggiornati senza cambiare lo stato di installazione di un altro pacchetto, saranno lasciate alla loro versione attuale. Un comando apt-get update dovrebbe essere eseguito prima cos che apt-get sappia quali nuove versioni dei pacchetti sono disponibili.

Capitolo 15. Rimuovere e installare software

92

dist-upgrade dist-upgrade, oltre a svolgere la funzione di upgrade, gestisce anche in modo intelligente i cambiamenti delle dipendenze con le nuove versioni di pacchetti; aptget ha un intelligente sistema di risoluzione dei conitti e tenter di aggiornare i pacchetti pi importanti a spese dei pacchetti meno importanti, se necessario. Il le /etc/apt/sources.list contiene una lista dei posti da cui scaricare i pacchetti desiderati. install install seguito da uno o pi pacchetti che si desidera installare. Ogni pacchetto un nome di pacchetto, non un nome di le pienamente qualicato (per esempio, in un sistema Debian GNU/Linux, lsdo dovrebbe essere largomento fornito, non ldso_1.9.62.deb). Saranno scaricati e installati anche tutti i pacchetti richiesti dal pacchetto o dai pacchetti specicati per linstallazione. Il le /etc/apt/sources.list usato per localizzare i pacchetti desiderati. Se un trattino - viene aggiunto alla ne del nome del pacchetto (senza linserimento di nessuno spazio), il pacchetto identicato sar rimosso se installato. Questultima caratteristica pu essere usata per sovrascrivere le decisioni prese dal sistema di risoluzione dei conitti di apt-get. remove remove identico a install eccetto che i pacchetti sono rimossi invece di essere installati. Se un segno + aggiunto alla ne del nome del pacchetto (senza linserimento di nessuno spazio), il pacchetto identicato sar installato. check check uno strumento di diagnostica; aggiorna la cache dei pacchetti e verica la presenza di pacchetti rovinati. clean clean ripulisce larchivio locale dei pacchetti scaricati. Esso rimuove ogni cosa, eccetto il le lock, dalle directory /var/cache/apt/archives/ e /var/cache/apt/archives/partial/. Le opzioni pi utili sono: -m Ignora i pacchetti mancanti, se ce ne sono. -d Scarica solamente i pacchetti necessari, senza installarli. -f Ripara le dipendenze non soddisfatte; eseguire apt-get -f install solo per riparare automagicamente i problemi di dipendenze sul proprio sistema.

15.4 15.5

Usare dselect Usare dpkg manualmente

Il modo pi semplice di installare un singolo pacchetto che stato scaricato, usare il comando dpkg -i (abbreviazione di dpkg --install). Supponiamo di aver scaricato il pacchetto icewm_0.8.12-1.deb e di volerlo installare. Prima fare il login come root, poi digitare:

Capitolo 15. Rimuovere e installare software

93

dpkg -i icewm_0.8.12-1.deb e la versione 0.8.12 di icewm sar installata. Se si ha gi una vecchia versione di icewm, dpkg laggiorner invece di installare entrambe le versioni contemporaneamente. Se si vuole rimuovere un pacchetto, ci sono due opzioni. La prima molto intuitiva: dpkg -r icewm Questo comando rimuover il pacchetto icewm (-r labbreviazione di --remove). Notare che si fornisce solo icewm per lopzione --remove, mentre lopzione --install richiede lintero nome del le .deb. --remove lascer i le di congurazione relativi al pacchetto nel proprio sistema. Un le di congurazione denito come un qualsiasi le che si pu modicare per adattare il programma al proprio sistema o alle proprie preferenze. In questo modo, se successivamente si reinstalla il pacchetto, non si dovr impostare nuovamente ogni cosa. Tuttavia, si potrebbe volere eliminare anche i le di congurazione, cos dpkg fornisce anche unopzione --purge. dpkg --purge icewm rimuover permanentemente ogni le associato al pacchetto icewm.

15.6

Compilare software da se stessi

Si dovranno avere i pacchetti -dev installati. Mettere il tutto in /usr/local, /opt o la propria directory home. La routine : congure prex; make; make install.

15.7

Software proprietario non in formato .deb.

Cosa fare con questa roba noiosa (pacchetti wrapper, /usr/local).

Capitolo 15. Rimuovere e installare software

94

95

Capitolo 16

Risoluzione di problemi
16.1 Debian si bloccata o andata in crash

Se il proprio sistema Debian si blocca possibile che ci sia dovuto ad un bug e che il sistema sia andato in crash. Comunque bisogna dire che ci non capita molto spesso; per molte persone passano mesi o anche anni senza un crash, anche in caso di un uso pesante. GNU/Linux estremamente afdabile. Se si hanno problemi con una frequenza maggiore, probabilmente c qualcosa che non va: chiedere aiuto (si veda Ottenere aiuto da una persona a pagina 31). Comunque molto pi facile che lo schermo si blocchi a causa di un bug nel server X, specialmente nel passaggio da o a una console virtuale. Ci avviene pi facilmente con i server X pi recenti oppure essi semplicemente vanno in crash; difcile per il progetto XFree86 tenersi al passo con le pi recenti caratteristiche di tutte le schede video disponibili. Se lo schermo si blocca, il sistema di solito ancora in funzione: semplicemente non possibile interagire con esso dalla console. Se si in una rete, dovrebbe essere possibile fare il login da unaltra postazione. Una volta effettuato il login si pu riavviare in maniera normale (cio digitando reboot). Se non si in una rete, nella maggior parte dei casi, premere Ctrl-Alt-Canc funziona. Se nessuno di questi due metodi funziona, necessario spegnere il sistema e lasciare che fsck ripari il disco allavvio successivo.

16.2

Il terminale non funziona correttamente

A volte il terminale si blocca in una modalit con video negativo, si riuta di muoversi ad una nuova riga quando si preme Invio, stampa caratteri insensati o in generale non funziona correttamente. Questo quasi sempre il risultato di un tentativo di visualizzare un le binario con cat o more (a volte pu essere anche causato da un bug in un programma). Si pu cercare di rimediare inserendo il comando reset. Se ci non fa nulla, provare a digitare echo C-vESCc (cio premere Ctrl-v, poi ESC e quindi c). Se questo non funziona, fare il logout e poi nuovamente il login.

Capitolo 16. Risoluzione di problemi

96

Il problema che i terminali sono controllati da speciali sequenze di controllo che comunicano loro di entrare nella modalit con video in negativo, di posizionare il puntatore, ecc. Se si invia un le binario al terminale, possibile che il le contenga tali sequenze di controllo. Perci il terminale va in confusione.

16.3

Il computer emette un avviso sonoro quando si preme un tasto e il video mostra un le di testo o molti simboli ~.

Si rimasti inavvertitamente bloccati dentro vi. Vedere Creare e modicare un le di testo con vi a pagina 52.

97

Capitolo 17

Concetti avanzati
(Argomenti pi avanzati andrebbero messi qui? Penso sarebbe carino averne alcuni, solo per mostrare le possibilit e dare alcune spiegazioni concettuali che non si trovano in un manuale di consultazione. Inoltre sempre bello avere un capitolo chiamato Concetti avanzati. Aumenta lautostima per i principianti. :)

17.1
17.1.1

Introduzione allo scripting di shell


Cosa e perch

Automatizzare semplici compiti.

17.1.2
Idee?

Un semplice esempio

17.2
17.2.1

File avanzati
La vera natura dei le: hard link e inode

Ogni le sul sistema rappresentato da un inode (da Information Node; pronunciato ainod): un inode contiene tutte le informazioni riguardanti un le. Tuttavia, linode non visibile direttamente. Invece ciascun inode collegato nel lesystem da uno o pi hard link. Gli hard link contengono il nome del le e il numero di inode. Linode contiene il le medesimo, cio la posizione in cui sono archiviate le informazioni sul disco, i suoi permessi di accesso, il tipo di le e cos via. Il sistema pu trovare ogni inode una volta che conosca il numero di inode.

Capitolo 17. Concetti avanzati

98

Un singolo le pu avere pi di un hard link. Ci signica che pi nomi di le possono riferirsi allo stesso le (cio, essi sono associati con lo stesso numero di inode). Tuttavia, non si possono creare hard link tra lesystem differenti: tutti i riferimenti di tipo hard ad un le particolare (inode) devono essere sullo stesso lesystem. Questo perch ciascun lesystem possiede il proprio insieme di inode e ci possono essere duplicati di numeri di inode tra i diversi lesystem. Siccome tutti gli hard link ad un dato inode si riferiscono al medesimo le, si possono fare modiche al le, riferendosi ad esso tramite un nome, e poi vedere questi cambiamenti quando ci si riferisce ad esso con un nome differente. Provare questo: 1 cd; echo hello > primolink Usare il comando cd verso la propria directory home e creare un le chiamato primolink contenente la parola hello. Quello che si fatto in realt redirigere loutput di echo (echo restituisce semplicemente ci che gli si d), posizionando loutput in primolink. Si veda il capitolo sulla shell per una spiegazione completa. 2 cat primolink Vericare il contenuto di primolink. 3 ln primolink secondolink Creare un hard link: secondolink ora punta allo stesso inode di primolink. 4 cat secondolink Vericare che secondolink uguale a primolink. 5 ls -l Si noti che il numero di hard link mostrati per primolink e secondolink 2. 6 echo cambiamento >> secondolink Questo un altro trucco di redirezione della shell; non ci si preoccupi dei dettagli. Si aggiunta la parola cambiamento a secondolink. Vericarlo con cat secondolink. 7 cat primolink Anche primolink ha la parola cambiamento in aggiunta! Questo perch primolink e secondolink fanno riferimento al medesimo le. Non importa come lo si chiama quando lo si modica. 8 chmod a+rwx primolink Cambiare i permessi di primolink. Digitare ls -l per confermare che i permessi di secondolink siano cambiati anchessi. Ci signica che le informazioni sui permessi sono registrate nellinode, non nei link. 9 rm primolink Cancellare questo link. Questa una rafnatezza di rm; in realt rimuove i link, non i le. Digitare ora ls -l e si noti che secondolink c ancora. Si noti anche che il numero di hard link per secondolink si ridotto a uno.

Capitolo 17. Concetti avanzati

99

10 rm secondolink Cancellare laltro link. Quando non ci sono altri link a un le, Linux cancella il le stesso, cio il suo inode. Tutti i le funzionano cos: perno alcuni tipi speciali di le come i device (per esempio /dev/hda). Una directory semplicemente un elenco di nomi di le e numeri di inode, cio un elenco di hard link. Quando si crea un hard link, si sta solo aggiungendo una coppia nome-numero a una directory. Quando si cancella un le, si sta solo rimuovendo un hard link da una directory.

17.2.2

Tipi di le

Un dettaglio che stato tenuto nascosto no ad ora che il kernel Linux considera quasi ogni cosa come un le. Ci include le directory e i device: questi sono solo un tipo speciale di le. Come si ricorder, il primo carattere mostrato da ls -l rappresenta il tipo di le. Per un le ordinario, questo sar un semplice -. Altre possibilit sono: d (directory) l (link simbolico) b (device a blocchi) c (device a caratteri) p (named pipe) s (socket) Link simbolici I link simbolici (anche chiamati symlink o soft link) sono laltro tipo di link oltre agli hard link. Un link simbolico un le speciale che punta a un hard link su un qualsiasi lesystem montato. Quando si prova a leggere il contenuto di un link simbolico, viene restituito il contenuto del le al quale esso punta invece del contenuto del link simbolico stesso. Siccome le directory, i device e gli altri link simbolici sono tipi di le, si pu puntare un link simbolico a uno qualsiasi di essi. Cos un hard link composto da un nome di le e da un numero di inode. Un le veramente un inode: una posizione sul disco, un tipo di le, modalit dei permessi, ecc. Un link simbolico un inode che contiene il nome di un hard link. Un link simbolico accoppia un nome di le con un altro, mentre un hard link accoppia un nome di le con un numero di inode. Tutti gli hard link al medesimo le hanno il medesimo stato. Cio ognuno equivalente allaltro; effettuare qualsiasi operazione su uno di essi proprio come effettuarla su uno qualsiasi

Capitolo 17. Concetti avanzati

100

degli altri. Questo perch gli hard link si riferiscono tutti al medesimo inode. Operazioni sui link simbolici, daltra parte, qualche volta hanno effetto sullinode specico del link simbolico (quello contenente il nome di un hard link) e altre volte hanno effetto sullhard link a cui puntano. Ci sono un certo numero di importanti differenze tra link simbolici e hard link: I link simbolici possono attraversare lesystem differenti. Questo perch contengono nomi di le completi, che cominciano con la directory root, e i nomi di le completi sono unici. Siccome gli hard link puntano ai numeri di inode, e i numeri di inode sono unici solo allinterno di un singolo lesystem, risulterebbero ambigui se il lesystem non fosse noto. Si possono creare link simbolici alle directory, ma non si possono invece creare hard link alle medesime. Ogni directory possiede hard link: quello che la elenca nella sua directory genitrice, la sua voce . e la voce .. in ciascuna delle sue sottodirectory, ma, per imporre ordine sul lesystem, nessun altro hard link alle directory permesso. Di conseguenza, il numero di le in una directory uguale al numero di hard link a quella directory meno due (si sottraggono il nome di quella directory e il link .). Si pu creare un hard link solo ad un le esistente, perch ci deve essere un numero di inode a cui fare riferimento. Tuttavia, si pu creare un link simbolico a qualsiasi nome di le, indipendentemente dal fatto che esista realmente un tale nome di le. Rimuovendo un link simbolico si rimuove solo il link. Non ha effetti sul le a cui il link si riferisce. Rimuovendo lunico hard link ad un le, si rimuove il le. Provare questo: 1 cd; ln -s /tmp/me MioTmp Spostarsi con cd alla propria directory home. ln con lopzione -s crea un link simbolico; in questo caso, uno chiamato MioTmp che punta al nome di le /tmp/me. 2 ls -l MioTmp Loutput dovrebbe somigliare a questo: lrwxrwxrwx 1 havoc havoc 7 Dec 6 12:50 MioTmp -> /tmp/me

La data e il nome utente/gruppo saranno naturalmente differenti. Si noti che il tipo di le l, che indica che si tratta di un link simbolico. Si notino anche i permessi: i link simbolici hanno sempre questi permessi. Se si prova il comando chmod su un link simbolico, si modicheranno i permessi del le a cui esso punta. 3 chmod 700 MioTmp Si ottiene un errore No such le or directory, perch il le /tmp/me non esiste. Si noti che si pu comunque creare un link simbolico ad esso.

Capitolo 17. Concetti avanzati

101

4 mkdir /tmp/me Creare la directory /tmp/me. 5 chmod 700 MioTmp Ora dovrebbe funzionare. 6 touch MioTmp/miofile Creare un le in MioTmp. 7 ls /tmp/me Il le veramente stato creato in /tmp/me. 8 rm MioTmp Rimuovere il link simbolico. Si noti che rimuove il link, non ci a cui esso punta. Cos si usa rm e non rmdir. 9 rm /tmp/me/miofile; rmdir /tmp/me Ripulire tutto.

File di device I le di device si riferiscono a un device sico o virtuale sul proprio sistema, come i propri hard-disk, scheda video, schermo o tastiera. Un esempio di device virtuale la console, rappresentata da /dev/console. Ci sono due tipi di device: i device a caratteri a cui si pu accedere un carattere alla volta, cio la pi piccola unit di dati che pu essere scritta o letta dal device un carattere (un byte). Ai device a blocchi si deve accedere in unit pi grosse chiamate blocchi, che contengono un certo numero di caratteri. Il proprio hard disk un device a blocchi. Si possono leggere e scrivere i le di device proprio come si pu con gli altri tipi di le, sebbene il le possa contenere strane cose senza senso e non comprensibili dalluomo. Scrivere dati casuali su questi le probabilmente una CATTIVA idea. Alcune volte tuttavia utile: per esempio, si pu fare il dump di un le postscript verso il device della stampante /dev/lp0 o inviare comandi modem al le di device per la porta seriale appropriata.

/dev/null /dev/null un le di device speciale che elimina qualsiasi cosa ci si scriva. Se non si vuole qualcosa, lo si getti in /dev/null. Essenzialmente si tratta di un pozzo senza fondo. Se si legge /dev/null si ottiene immediatamente un carattere di ne-le. EOF (endof-le). /dev/zero simile, solo che se si legge da esso, si ottiene il carattere \0 (non la stessa cosa del numero zero).

Capitolo 17. Concetti avanzati

102

Named pipe (FIFO) Una named pipe (pipe con nome) un le che agisce come una pipe. Si mette qualcosa nel le ed essa viene fuori dallaltra parte. Perci chiamata FIFO, o First-In-First-Out: la prima cosa che viene immessa nella pipe, la prima che viene fuori dallaltra parte. Se si scrive in una named pipe, il processo che sta scrivendo nella pipe non termina no a che linformazione che si sta scrivendo non stata letta dalla pipe. Se si legge da una named pipe, il processo di lettura attende nch c qualcosa da leggere, prima di terminare. La dimensione della pipe sempre zero; non immagazzina dati, collega solamente due processi come il carattere di shell |. Tuttavia, siccome questa pipe ha un nome, i due processi non devono essere sulla stessa riga di comando e neppure essere avviati dal medesimo utente. Si pu provare usando i seguenti comandi: 1 cd; mkfifo miapipe Creare la pipe. 2 echo hello > miapipe & Mettere sullo sfondo un processo che prova a scrivere hello nella pipe. Si noti che il processo non rientra dal suo essere sullo sfondo; aspetta che qualcuno legga dalla pipe. 3 cat miapipe A questo punto il processo echo dovrebbe rientrare, dato che cat legge dalla pipe e il processo cat stamper hello. 4 rm miapipe Si possono cancellare le pipe proprio come qualsiasi altro le.

I socket I socket assomigliano alle pipe, solamente che essi lavorano tramite la rete. Questo il modo in cui il computer lavora in rete: si pu aver sentito parlare di WinSock, che sono i socket per Windows. Non ci addentreremo in questo argomento, perch probabilmente non si avr occasione di usare i socket a meno che non si stia programmando. Tuttavia se si vede un le marcato con il tipo s sul proprio computer, si sa cosa esso sia.

17.2.3

Il lesystem proc

Il kernel Linux rende disponibile un lesystem speciale, che viene montato sotto /proc sui sistemi Debian. Questo uno pseudo-lesystem: non esiste realmente su nessuno dei propri dispositivi sici.

Capitolo 17. Concetti avanzati

103

Il lesystem proc contiene informazioni sul sistema e sui processi avviati. Alcuni dei le in /proc sono ragionevolmente comprensibili agli umani (provare a digitare cat /proc/meminfo o cat /proc/cpuinfo), mentre alcuni altri sono arcane collezioni di numeri. Spesso le utilit di sistema li utilizzano per raccogliere informazioni e presentarle in un modo pi comprensibile. Spesso le persone vanno nel panico quando scoprono un le in particolare, /proc/kcore, che generalmente enorme. Questo (pi o meno) una copia del contenuto della memoria del proprio computer. Esso utilizzato per fare il debug del kernel. Non esiste realmente da nessuna parte, perci non ci si preoccupi della sua dimensione. Se si vuole sapere tutto sulle cose presenti in /proc, digitare man 5 proc.

17.2.4

Aspetti avanzati dei permessi sui le

Utilizzare argomenti numerici con chmod Precedentemente in questo capitolo, abbiamo brevemente ricordato che si possono impostare i permessi sui le utilizzando i numeri. La notazione numerica chiamata modalit assoluta, in contrapposizione con la notazione simbolica (ad esempio u+rx) che spesso chiamata modalit relativa. Ci perch il numero specica una precisa modalit da impostare, mentre i simboli specicano solo un cambiamento da fare (ad esempio aggiungi i permessi di lettura ed esecuzione per lutente). La modalit numerica composta da una serie di quattro cifre ottali o dodici cifre binarie. Ogni cifra ottale (in base otto) rappresenta tre cifre binarie: una cifra ottale e tre cifre binarie sono due modi per rappresentare le cifre decimali da 0 a 7. Calcolare una modalit particolare piuttosto semplice. Si sommano semplicemente le modalit che si vogliono combinare o si sottraggono le modalit che non si vogliono. Per esempio i permessi per lutente, con solo il permesso di lettura attivato, sarebbero 100 in forma binaria. I permessi per lutente con solo quello di scrittura sarebbero 010 in forma binaria. I I permessi per lutente con lettura e scrittura entrambe attivate sarebbero 100 + 010 = 110. In alternativa, si pu esprimerlo in cifre ottali: 4 + 2 = 6. Per la modalit completa, semplicemente si aggiungano i numeri della seguente tabella: 0001 0002 0004 0010 0020 0040 0100 0200 0400 1000 altri, esecuzione altri, scrittura altri, lettura gruppo, esecuzione gruppo, scrittura gruppo, lettura utente, esecuzione utente, scrittura utente, lettura sticky bit

Capitolo 17. Concetti avanzati

104

2000 4000

imposta group id imposta user id

Per utilizzare la tabella, prima decidere quali permessi si vogliono impostare. Poi sommare i numeri per quei permessi. Il totale la propria modalit Per esempio, per impostare la modalit 0755: 0001 o=x 0004 o=r 0010 g=x 0040 g=r 0100 u=x 0200 u=w + 0400 u=r ------0755 u=rwx go=rw Questa modalit, si chiama in realt semplicemente 755, senza lo 0 iniziale, perch chmod aggiunge automaticamente gli zeri allinizio della modalit: 7 signica modalit 0007. Per impostare un le a 755, si digiter chmod 755 miofile. La modalit 755 molto comune per le directory, poich permette a chiunque di utilizzare la directory, ma solo al proprietario di creare e cancellare le nella directory. La modalit 644 la modalit analoga per i le e anchessa molto comune. Permette a chiunque di utilizzare il le, ma solo il proprietario pu modicarlo. Per i le eseguibili 755 una modalit comune; solamente644 pi i permessi di esecuzione (644 + 111 = 755).

17.2.5

chattr

Un trucco utile?

17.2.6

Copiare su larga scala

cp -a e varianti sul tema. come copiare un vecchio sistema su uno nuovo. FIXME oops, ho indicato questo argomento anche sotto gli strumenti di backup. Occorre decidere.

17.2.7

Altri concetti non ancora affrontati, ma che dovrebbero esserlo.

fsck, dd, fdisk, etc.

Capitolo 17. Concetti avanzati

105

in quale pacchetto si trova un le ? le di testo MSDOS vs. Mac vs. Unix sync

17.3

Compilare il kernel

Come, cosa e perch

17.4

Alcune parole riguardo la sicurezza

Le basi della sicurezza dal punto di vista dellutente. Mantenere la propria privacy. Cosa possono vedere gli altri utenti del proprio account.

17.5

Programmazione su Linux

Qualcosa riguardo la programmazione in ambiente Linux. Mirato a, diciamo, persone che stanno studiando Primi rudimenti di informatica. Niente sul come programmare, solo Emacs, gcc, gdb, ddd, ecc., in quanto strumenti di programmazione. Probabilmente basato su debug.tex

Capitolo 17. Concetti avanzati

106

107

Capitolo 18

E ora con cosaltro leggere?


18.1 18.2 Altri manuali Debian da leggere Alre risorse

Qualche buon URL, indicazioni per trovare metadocumenti.

Capitolo 18. E ora con cosaltro leggere?

108

109

Capitolo 19

Contribuire a Debian: come si pu aiutare?


19.1 Segnalare un bug

Come farlo con il pacchetto bug

19.2

Altre cose

Qualsiasi cosa si voglia aggiungere qui.

Capitolo 19. Contribuire a Debian: come si pu aiutare?

110

111

Appendice A

Un breve esame delle applicazioni disponibili


(Questo sarebbe utile? oppure dselect fa realmente tutto il suo lavoro? Pare che ci siano un sacco di domande su debian-user e sui newsgroup tipo: sto cercando unapplicazione che faccia questo. . . . Potremmo solo fare lelenco di ci che esiste, pi o meno, raccomandando una scelta piuttosto che unaltra quando ci sia una scelta ovvia).

A.1

(Le sottosezioni potrebbero copiare la struttura del sistema di menu).

Capitolo A. Un breve esame delle applicazioni disponibili

112

113

Appendice B

Sommario dei componenti di un sistema GNU/Linux


Si pu restare un poco confusi riguardo a cosa sia esattamente GNU/Linux. Cosa il kernel Linux, rispetto alle utilit GNU o rispetto al sistema X Window? Ecco un piccolo diagramma in graca ASCII per mostrare come questi si relazionino (in verit non molto attraente).

Window Manager ----- Programmi/Librerie Gnome (in sviluppo) | | ----------/ \ | | / ---------\ | Client X Programmi/Applicazioni ---- Librerie condivise | | \ | / \ | ---------------\ | /----------Server X -------------- Kernel Linux | / | | /--------------| Scheda video -------- Altro hardware del computer (memoria, dischi, ecc.) Si noti che il Server e i Client X sono applicazioni, ma sono applicazioni che interagiscono in modo speciale con lhardware video e le altre applicazioni. Il window manager uno speciale client X e perci anche unapplicazione. Tutti i programmi X utilizzano le librerie condivise ma nessuna linea li collega nel diagramma. Quando il progetto Gnome (GNU Network Object Model Environment) sar completato, aiuter a unicare lambiente X con un insieme speciale di programmi e librerie, che interagiscono con il window manager e gli altri client X. Le utilit GNU sono piccoli programmi che svolgono piccoli compiti: ad esempio mv, cp, tar.

Capitolo B. Sommario dei componenti di un sistema GNU/Linux

114

115

Appendice C

Appendice C: Avviamento del sistema


Questa appendice descrive cosa succede durante il processo di avvio di GNU/Linux. Come si effettua il boot del proprio sistema dipende da come si sono impostate le cose quando si installato Debian. Molto probabilmente, si accender semplicemente il computer. Ma si potrebbe prima dover inserire un oppy disk. Linux viene caricato da un programma chiamato LILO, ovvero LInux LOader. LILO pu anche caricare altri sistemi operativi e chiedere quale sistema si desideri caricare. La prima cosa che succede, quando si avvia un PC Intel, che viene eseguito il BIOS. BIOS sta per Basic Input Output System. Esso un programma memorizzato in modo permanente sul computer su chip di sola lettura. Esso esegue alcuni test di base e poi cerca un oppy disk nel primo lettore. Se ne trova uno, cerca un settore di avvio (boot sector) su questo disco e comincia a eseguire il codice da esso, se presente. Se c un disco, ma non un settore di avvio, il BIOS mostra un messaggio del tipo: Non-system disk or disk error La rimozione del disco e la pressione di un tasto, provocher la prosecuzione del processo di avvio. Se non c un oppy disk nel drive, il BIOS cerca un master boot record (MBR) sullhard disk. Inizia ad eseguire il codice trovato, che carica il sistema operativo. Sui sistemi GNU/Linux, LILO, il LInux LOader, pu occupare il MBR e caricher GNU/Linux. Perci se si optato per linstallazione di LILO sul proprio hard disk, si dovrebbe vedere la parola LILO quando il computer si avvia. A questo punto si pu premere il tasto Maiusc/Shift sinistro per selezionare il sistema operativo da caricare; premere Tab per vedere una lista di opzioni. Digitare una di queste opzioni e premere Invio. LILO avvier il sistema operativo richiesto. Se non si preme il tasto Maiusc/Shift, LILO carica il sistema operativo predenito dopo circa 5 secondi. Se si vuole, si pu cambiare il sistema che LILO carica automaticamente, quali sistemi sa come caricare e quanto tempo attende prima di caricarne uno automaticamente. .

Capitolo C. Appendice C: Avviamento del sistema

116

Se non si installato LILO sul proprio hard disk, probabilmente si creato un disco di avvio. Il disco di avvio avr LILO sopra. Tutto quello che si deve fare inserire il disco prima di accendere il computer e il BIOS lo trover prima di controllare nellMBR sullhard disk. Per tornare a un sistema operativo non-Linux, estrarre il disco di avvio e riavviare il computer (in Linux ci si assicuri di seguire la procedura corretta di riavvio: vedere Spegnere il sistema a pagina 12 per i dettagli). LILO carica il kernel Linux dal disco e poi lascia il controllo al kernel stesso. (Il kernel il programma centrale del sistema operativo e dirige tutti gli altri programmi.) Il kernel mette da parte il BIOS e LILO. Su piattaforme non-Intel, le cose funzionano in modo leggermente diverso, ma una volta effettuato lavvio, ogni cosa pi o meno simile. Linux rileva il tipo di hardware sul quale sta funzionando. Vuole sapere quali tipi di hard disk ci siano, se si abbia o meno un mouse, se si sia o meno su una rete e altre cosucce di questo tipo. Linux non pu ricordare queste cose tra un avvio e laltro, cos deve richiederle ogni volta che si avvia. Fortunatamente non ci chieder queste cose direttamente: le chiede allhardware! Mentre si avvia, il kernel Linux visualizza messaggi sullo schermo descrivendo ci che sta facendo. Il processo di richiesta pu creare problemi con il proprio sistema, ma se doveva succedere, probabilmente sarebbe accaduto quando si installato GNU/Linux la prima volta. Se si hanno dei problemi, si consultino le istruzioni di installazione o si chieda su una mailing list. Il kernel gestisce semplicemente gli altri programmi, cos una volta soddisfatto che tutto sia a posto, pu avviare un altro programma per rendere ogni cosa utilizzabile. Il programma che il kernel avvia chiamato init. Dopo avere avviato init, non avvia nessun altro programma. Il kernel diventa un gestore e fornitore di servizi. Una volta che init stato avviato, a sua volta avvia un certo numero di script (le contenenti comandi), che preparano il sistema per luso: essi effettuano alcune routine di manutenzione del sistema e avviano un sacco di programmi che fanno cose come mostrare un prompt di login, restare in ascolto per connessioni di rete e tenere un registro dellattivit del computer.

117

Appendice D

Miscellanea
Questo capitolo contiene interessanti informazioni che non hanno trovato posto nel resto del tutorial, tipo le notizie storiche. Potrebbero essere spostate in un altro manuale in futuro o nire in un capitolo specico.

D.1

Storia di Unix

Nel 1969, i Bell Telephone Laboratories (Bell Labs, una divisione di AT&T) stavano lavorando con la General Electric e il Project MAC del MIT (Massachusets Institute of Tecnology) per scrivere un sistema operativo chiamato Multics. Per rendere la storia pi breve, i Bell Labs decisero che il progetto non stava andando da nessuna parte e uscirono dal gruppo. Questo lasci i Bell Labs senza un buon sistema operativo. Ken Thompson e Dennis Ritchie decisero di delineare un sistema operativo che venisse incontro alle loro necessit. I Bell Labs possedevano un computer PDP-7 inutilizzato che Thompson voleva mettere in uso, cos implement il sistema che avevano progettato su quella macchina. Come un gioco di parole su Multics, Brian Kernighan, un altro ricercatore dei Bell Labs, dette al sistema il nome Unix. Il gruppo riusc a ottenere i fondi per acquistare un computer migliore, un PDP-11, proponendo un piano per scrivere un sistema di elaborazione testi. Piuttosto che scrivere il word processor da zero, lo realizzarono come unapplicazione che girava sotto Unix, di cui avevano fatto il port sul PDP-11. Pi tardi, Dennis Ritchie realizz il linguaggio di programmazione C. Nel 1973, Unix venne riscritto in C invece che nel linguaggio originario assembly. 1 Nel 1977, Unix venne spostato dalle macchine PDP su cui girava precedentemente su una nuova macchina attraverso un processo chiamato fare il port. Ci venne facilitato dal fatto che Unix fu scritto in C cosicch molto del codice dovette semplicemente essere ricompilato e non dovette essere riscritto. Alla ne degli anni 70, venne proibito ad AT&T di competere nellindustria dei computer, cos essa cedette la licenza di Unix a varie istituzioni scolastiche e universit ad un prezzo
1 Il linguaggio Assembly un linguaggio per computer molto basilare che legato ad un particolare tipo di computer. Esso di solito considerato una sda per il programmatore.

Capitolo D. Miscellanea

118

molto buono. Fu lento ad uscire dallambito delle istituzioni accademiche ma alla ne divenne popolare anche con le attivit commerciali. LUnix di oggi diverso da quello del 1970. Ha due varianti maggiori: il System V, dagli Unis System Laboratories (USL), una sussidiaria di SCO2 , e il Berkeley Software Distribution (BSD). La versione USL attualmente al suo quarto rilascio, ovvero SVR43 , mentre lultima versione di BSD la 4.4. Comunque, ci sono molte diverse versioni di Unix oltre a queste due. La maggior parte delle versioni proprietarie di Unix derivano da uno dei due gruppi. Le versioni di Unix che vengono in realt utilizzate, abitualmente incorporano caratteristiche prese da entrambe le varianti. Le attuali versioni proprietarie di Unix per PC Intel costano tra i 500 e i 2000 dollari, con leccezione di Solaris x86 che stato schiacciato dai cloni liberi di Unix e costretto ad abbassare i prezzi.

D.2

La storia di GNU/Linux

Debian trae le sue origini dalla fondazione del progetto GNU del 1984 da parte di Richard M. Stallmann. GNU (GNUs Not Unix, GNU non Unix) un progetto della Free Software Foundation. I loro obbiettivi erano e sono di rimpiazzare il sistema operativo Unix con software libero. Giunti ai primi anni 90 avevano scritto quasi un intero sistema operativo, ma il kernel mancava. Fortunatamente apparve Linux a colmare questo vuoto. Lautore originale del kernel Linux Linus Torvalds. Dopo la sua versione originale, stato migliorato da innumerevoli persone di tutto il mondo. Esso un clone, scritto interamente da zero, del sistema operativo Unix. N USL, n la University of California, Berkeley, furono coinvolte nella scrittura di Linux. Uno dei fatti pi interessanti di Linux che il suo sviluppo avviene contemporaneamente in pi parti del mondo. Persone dallAustralia alla Finlandia contribuirono a Linux e si spera che continueranno a farlo. Linux cominci con un progetto per esplorare le potenzialit del chip 386. Uno dei primi progetti di Linus fu un programma che stampava alternativamente AAAA e BBBB. Questo pi tardi si svilupp in Linux. Linux stato posto sotto la tutela di copyright nei termini della licenza GNU General Public License (GPL). Questa una licenza scritta dalla Free Software Foundation (FSF) che studiata per mantenere il software libero. In breve, essa dice che sebbene si possa far pagare quello che si vuole per una copia, non si pu impedire alle persone a cui la si venduta, di venderla, cederla oppure di modicarla. Ci signica inoltre che anche il codice sorgente4 deve restare disponibile. Ci utile per i programmatori. Chiunque pu modicare Linux e anche distribuire le proprie modiche, ammesso che mantengano il codice sotto la medesima licenza: la GPL. Debian chiamato GNU/Linux perch un prodotto di due massicci sforzi, il kernel Linux e il progetto GNU. Restando concentrati solo su questi due contributi, comunque vengono
Precedentemente, USL era propriet di AT&T e pi tardi di Novell. Un modo criptico per dire System Five, Release Four. 4 Il codice sorgente di un programma e ci che il programmatore legge e scrive. Successivamente viene tradotto in linguaggio macchina che il computer interpreta.
3 2

Capitolo D. Miscellanea

119

tralasciate decine di migliaia di partecipanti. impossibile tenere traccia di tutti quelli che hanno fatto di Debian quello che oggi. I seguenti due elenchi, di leader e rilasci fondamentali, sono coperti da copyright del Software in the Public Interest e possono essere ridistribuiti ma non modicati. Debian ha avuto diversi leader n dai suoi albori, nel 1993. Ian Murdock fond Debian nellagosto 1993 e lo guid no a marzo 1996. Questo impegno stato sponsorizzato dal progetto GNU della FSF per un anno (dal novembre 1994 al novembre 1995). Bruce Perens guid Debian da aprile 1996 no a dicembre 1997. Ian Jackson guid Debian da gennaio 1998 no a febbraio 1999. Wichert Akkerman il leader attuale di Debian n dal febbraio 1999. Ecco qui alcune delle maggiori pietre miliari nelle release Debian: 0.01-0.90 rilasciate tra agosto 1993 e dicembre 1993. 0.91 rilasciata nel gennaio 1994 (circa 30 sviluppatori, un primitivo gestore di pacchetti). 0.93R5 rilasciata nel marzo 1995 (dpkg fa la sua prima apparizione). 0.93R6 rilasciata nel novembre 1995 (circa 60 sviluppatori, a.out, il primo dselect). 1.0 non mai stata rilasciata. Divenne pi tardi la versione 1.1. 1.1 Buzz rilasciata nel giugno 1996 (474 pacchetti, kernel 2.0, completamente ELF, dpkg). 1.2 Rex rilasciata nel dicembre 1996 (848 pacchetti, 120 sviluppatori). 1.3 Bo rilasciata nel luglio 1997 (974 pacchetti, 200 sviluppatori). 2.0 Hamm rilasciata nel luglio 1998 (oltre 1500 pacchetti, oltre 400 sviluppatori, glibc2). 2.1 Slink prevista per il rilascio allinizio di marzo 1999.

D.3

La numerazione delle versioni del kernel Linux

La prima cifra del numero di versione di Linux indica revisioni veramente sostanziose. Cambia molto lentamente: al momento attuale lultima versione la numero 2. Il secondo numero indica una revisione meno importante. Un secondo numero pari indica una versione di Linux pi stabile e afdabile, mentre i numeri dispari sono versioni di sviluppo che risultano pi soggette a bug. Lultimo numero della versione il numero di rilascio minore; ogni volta che viene rilasciata una nuova versione, che pu anche solo risolvere piccoli problemi o aggiungere piccole caratteristiche, quel numero viene incrementato di uno. Adesso il kernel stabile il 2.0, e il kernel in sviluppo il 2.1. Quando il 2.1 sar pronto, diventer il kernel stabile 2.2. Lultima versione del kernel stabile attualmente la 2.0.35, tuttavia potrebbe essere cambiata al momento in cui si legger il tutorial. Il rilascio stabile del kernel 2.2 atteso tra non molto.