INDICE 1.01 - Mi chiedevo ..... (dal sito linux.it) 1.02 - Cos'è Linux 1.03 - Cenni storici 1.04 - Come installare Ubuntu 1.05 - Android su Virtualbox 1.06 - Vantaggi di Linux 1.07 - Svantaggi di Linux 1.08 - Linux e GNU 1.09 - Quale distribuzione installare? 1.10 - I comandi 1.11 - Usare le caratteristiche di Bash 1.12 - Le pagine man 1.13 - Le pagine Info 1.14 - I comandi whatis e apropos 1.15 - L'opzione --help 1.16 - Supporto/help in modalità grafica 2.01 - File system Linux 2.02 - Il partizionamento 2.03 - Il mount point 2.04 - La struttura del file system 2.05 - I file e le directory più importanti 2.06 - 2.07 - 2.08 - 2.09 - 3.01 - Editor Vi Ritorna all'indice 1.01 - Mi chiedevo ..... (dal sito linux.it) DOMANDA: Che differenza c'è tra freesoftware e opensource? Il freesoftware (o "software libero", in italiano) è il software che viene distribuito con una licenza che garantisce le libertà di utilizzo, studio, ridistribuzione e modifica a tutti coloro che ne ottengono una copia. L'opensource è un modello di sviluppo incentrato sulla partecipazione, in cui tutto il codice è pubblico e tutti possono in qualche modo contribuire al suo miglioramento e perfezionamento. Molto spesso il software libero è anche opensource, ma non sempre! DOMANDA: Ci sono un sacco di "distribuzioni"! Quale scelgo? Ogni progetto ha le sue peculiarità specifiche, che possono variare dalla dotazione di programmi installati insieme al sistema (ivi compresa l'interfaccia grafica), all'ottimizzazione specifica per l'hardware più moderno o più obsoleto, alla più o meno grande adesione ai principi del software libero, fino ai dettagli tecnici. Se non hai nessuno che possa consigliarti, prova con questo tool online, testane qualcuno in modalità "live" ed infine installa quella che preferisci sul tuo computer. DOMANDA: Dove scarico l'ultima versione di Linux? Essendo Linux un termine generico non ne esiste una "ultima versione". Semmai esistono le varie versioni delle diverse distribuzioni, ciascuna scaricabile sui rispettivi siti Internet (molto spesso gratuitamente). Qui trovi un ricchissimo elenco di progetti Linux ordinati per popolarità, e qua un piccolo strumento per aiutarti nella scelta. DOMANDA: E' vero che posso installare Linux anche su PC vecchi? Si, e anzi ci sono varianti di Linux appositamente pensate ed ottimizzate per computer di 5 (o anche 10) anni fa. Se per esempio avete un PC risalente all'epoca di Windows XP è probabile che ci si possa installare una versione ad-hoc graficamente gradevole e con software ben aggiornato (e dunque stabile e sicuro), provate a rivolgervi al Linux Users Group più vicino a casa per farvi consigliare! Non aspettatevi comunque di poter installare l'ultima versione disponibile su un dispositivo degli anni '90, o di avere effetti 3D all'avanguardia su un computer recuperato dalla cantina: esistono ovviamente dei limiti fisici oltre i quali è impossibile andare. DOMANDA: Ho un problema tecnico: a chi mi rivolgo? Innanzitutto puoi rivolgerti ad Internet, molto spesso basta consultare il tuo motore di ricerca preferito per trovare su qualche forum online una soluzione al tuo problema; non sempre è facile, ma per ottenere una risposta molto dipende da come si pone la domanda... Il secondo passo è quello di entrare in contatto con il Linux Users Group più vicino a te: ne esistono decine in tutta Italia, tutti indicizzati sulla LugMap: prova a dare una occhiata, forse troverai qualche amico. DOMANDA: In Linux si fa tutto scrivendo complicati comandi testuali? Dipende da voi, ma non è necessario. Molto spesso vedi gli utenti più esperti adoperare il "terminale" testuale (più o meno, l'equivalente di quello che in Windows viene chiamato "Prompt dei comandi DOS") in quanto, se lo si sa usare, esso è una interfaccia molto più flessibile e veloce di quella grafica, dunque - per quanto ciò possa suonare strano - più comoda. Sui forum o sulle mailing list in cui si offrono spunti e soluzioni ai comuni problemi di configurazione ed installazione quasi sempre viene indicato di aprire un terminale e scrivere dei comandi: non perché questo sia l'unico modo per fare le cose, ma perché su un forum (ovvero su un canale di comunicazione quasi esclusivamente scritto) è assai più pratico fornire delle righe da copiare ed incollare che non spiegare per filo e per segno cosa, quando e dove cliccare in una interfaccia grafica! DOMANDA: Ho sentito parlare di Ubuntu / Mint / Fedora. Che differenza c'è con Linux? Sono la stessa cosa! O meglio: Linux è un termine generico che descrive tutti i sistemi operativi di un certo tipo, quelli composti in tutto o per la maggior parte da software libero, mentre Ubuntu, Mint, Fedora sono per l'appunto esempi di sistemi operativi che ricadono nella categoria "Linux" (altresì noti in gergo tecnico come "distribuzioni"). Per fare una analogia (molto semplificata e non pienamente corretta), "Linux" equivale ad "automobile sportiva" mentre Ubuntu, Mint e Fedora sono Ferrari, Lamborghini e Porsche. DOMANDA: Il software libero/freeware è sempre gratis? Non proprio: il fatto che i programmi liberi siano spesso anche gratis è una coincidenza, il prezzo c'entra poco col fatto che il software sia chiamato "libero". Dunque, non tutto il software gratuito è anche libero (e non ti garantisce dunque tutti i tuoi diritti di ridistribuzione, analisi e modifica), cosiccome non tutto il software libero è necessitamente gratuito ed anzi esistono numerose aziende che offrono servizi di formazione, assistenza e personalizzazione a pagamento DOMANDA: Linux c'è anche in italiano? Ovviamente! Trattandosi di un progetto internazionale capita che i siti di informazione che si vanno a visitare siano spesso in inglese, ma anche la nostra lingua è pienamente supportata. All'inizio dell'installazione di pressoché tutte le distribuzioni è possibile selezionare il linguaggio preferito, tra cui appunto l'italiano e moltissimi altri; nel nuovo sistema operativo verranno automaticamente scaricate le traduzioni per tutti i programmi contemplati nell'ambiente, ed altrettanto avverrà per le applicazioni aggiunte successivamente. DOMANDA: Su Linux ci sono i virus? Proprio perché su Linux non si eseguono gli stessi programmi di Windows, e considerando che i virus altro non sono che programmi informatici, la risposta è "NO". Esistono anche virus specifici per Linux, ma hanno una diffusione decisamente marginale e ad oggi è assolutamente sicuro non installare alcun antivirus all'interno del proprio ambiente (con tutto quel che ne consegue in termini di velocità del computer). DOMANDA: Su Linux funzionano tutti programmi che funzionano su Windows? Non proprio: Linux è un sistema operativo, e gli applicativi fatti per altri sistemi operativi non possono essere installati ed eseguiti. Però per molti programmi esiste una versione anche per Linux, come ad esempio Firefox o OpenOffice. DOMANDA: Ritorna all'indice 1.02 - Cos'è Linux Linux (definizione esatta GNU/Linux) è un sistema operativo. E' una alternativa a Windows e a MacOS, e può essere installato al loro posto. Più in generale Linux è il primo rappresentante del software libero, ovvero quel software che viene distribuito con una licenza che ne permette non solo l'utilizzo da parte di chiunque ed in qualsiasi circostanza ma anche la modifica, la copia e l'analisi. Linux è il nome del kernel, sviluppato da Linus Torvalds a partire dal 1991, che è stato utilizzato come base per la realizzazione di vari sistemi operativi. In particolare molti progetti open source hanno scelto di sviluppare sistemi operativi con kernel Linux e software sviluppato dal progetto GNU. Progetto GNU: Il progetto GNU è un progetto collaborativo lanciato il 27 settembre 1983 da Richard Stallman il cui scopo ultimo è la creazione di un sistema operativo composto esclusivamente da software libero chiamato GNU. Il nome GNU è l'acronimo ricorsivo di "GNU's Not Unix" Tutti questi sistemi sono però comunemente chiamati col nome del loro kernel (Linux), senza specificare di che tipo è il resto del software utilizzato. L'utilizzo della parola Linux è da attribuire a Ari Lemmke, l'amministratore che rese per primo disponibile Linux su Internet via FTP il 17 settembre 1991. In particolare, Linux era il nome della directory, la pub/OS/Linux, in cui risiedevano i file del nuovo sistema operativo. Il nome scelto da Torvalds e che durò per sei mesi era Freax, ovvero Freaks con la x d'ordinanza. Secondo Richard Stallman, fondatore del progetto GNU, e secondo la Free Software Foundation, la dicitura "Linux" (senza prefisso "GNU/") per i sistemi operativi che utilizzano software GNU sarebbe erronea, in quanto il nome Linux è attribuibile al solo kernel e il sistema, strutturato a partire dai componenti dell'originale progetto GNU, dovrebbe più propriamente chiamarsi GNU/Linux. Secondo l'uso della maggior parte degli utenti, degli sviluppatori e delle società coinvolti nello sviluppo del sistema operativo e del software ad esso collegato, il nome Linux è ormai divenuto sinonimo di sistema "Linux based", cioè di sistema basato sul kernel Linux. Sebbene non sia insostituibile per questo scopo, Linux è anche il sistema operativo più comunemente usato per eseguire Apache, MySQL e PHP, i software alla base della maggior parte dei server web di tutto il mondo. Le iniziali di questi tre progetti, insieme all'iniziale della parola Linux, hanno dato origine all'acronimo LAMP. Con l'evoluzione di ambienti desktop come KDE e GNOME, sono state sviluppate distribuzioni che offrono interfacce grafiche simili a quelle di Microsoft Windows o di Mac OS X, più vicine alle esigenze degli utenti meno esperti, rendendo il passaggio da un sistema all'altro meno traumatico. Ritorna all'indice 1.03 - Cenni storici Linux è un derivato dell'architettura UNIX/AIX, Solaris, HPUX e altri, strutturato per essere compatibile con le specifiche di POSIX e inoltre raccoglie librerie provenienti dai sistemi Unix System V e BSD POSIX: Portable Operating System Interface for Unix, è il nome che indica la famiglia degli standard definiti dall’IEEE denominati formalmente IEEE 1003. Il nome standard internazionale è ISO/IEC 9945 Unix System V: Venne Sviluppato dalla AT&T, ne furono sviluppate 6 versioni successive (release). System V Release 4 (o SVR4), rilasciata nel 1989, è sicuramente stata la più famosa delle 4 e la fonte di numerose caratteristiche tipiche dei sistemi unix-like, quali il sistema di "Sys V init scripts" (/etc/init.d), usato per l'avvio e lo spegnimento del sistema, e le System V Interface Definition, uno standard che definisce quello che dovrebbe essere il funzionamento dei sistemi System V. BSD: la Berkeley Software Distribution, sigla BSD, è la variante originaria di Unix sviluppata presso l'Università di Berkeley in California e alla base di una delle due famiglie principali di sistemi operativi liberi attualmente più diffusi, tra cui gli esponenti più noti sono FreeBSD, PC-BSD, OpenBSD, NetBSD, GhostBSD, MidnightBSD, DesktopBSD, FreeNAS, FreeSBIE, DarwinOS (il cuore Unix di Mac OS X) e DragonFly BSD (con le sue distribuzioni FireflyBSD). Il cuore di Linux è per definizione il Kernel, ovvero il nucleo principale del sistema operativo in grado di eseguire operazioni Multitasking e Multiutente. Il primo kernel è stato creato nel 1991 dallo studente finlandese Linus Torvalds, da qui il sistema operativo prende il nome Linux (Linus), "x" come Unix. La prima release del kernel della serie 2.2.x è stata rilasciata nei primi di febbraio del 1999. Il kernel linux è in continua evoluzione ed è possibile scaricare gli ultimi sorgenti del kernel sia nella versione stabile (avente numero pari), che nella versione di sviluppo (avente numero dispari) direttamente dal sito www.kernel.org La maggior parte delle applicazioni di sistema, compreso il kernel, sono sviluppate e rilasciate dalla GNU, acronimo di "GNU's Not UNIX" sotto licenza GPL (General Public Licence) oppure sotto la LGPL (Library GPL). Tali licenze garantiscono dunque il diritto di copyright da parte dell'autore, ma con la possibilità di poter modificare il codice sorgente da parte degli utilizzatori secondo le proprie esigenze. In tutto il mondo sono tanti gli sviluppatori/programmatori che contribuiscono al mantenimento di del sistema operativo, questo è stato sicuramente uno dei fattori determinanti per la diffusione di Linux. Ritorna all'indice 1.04 - Come installare Ubuntu (distribuizone Linux per me più user-friendly) Prima cosa devi scaricare il sistema operativo e masterizzarlo su un DVD vuoto oppure copiarlo su una chiavetta USB. Lo scarichi dal sito Internet di Ubuntu Italia cliccando sul pulsante Scaricalo subito!. Scegli la versione, il bit che gestisce il tuo PC (32 o 64) e se vuoi installare una versione client (desktop) o Server. Fatte queste 3 scelte clicchi sul pulsante Avvia il download. Ti viene scaricato un file ISO (immagine) di circa 1,1GB che servirà per l'installazione. A download completato, devi masterizzare il file ISO di Ubuntu su un DVD vuoto oppure copiarlo su una chiavetta USB. .. continua Ritorna all'indice 1.05 - Android su Virtualbox Su questo link ci sono le istruzioni per installare Android su Virtualbox. Ritorna all'indice 1.06 - Vantaggi di Linux - Linux è gratuito e soprattutto libero! La licenza comunemente adottata è la GNU Public License (GPL).  La licenza afferma che chiunque ha il diritto di modificare Linux ed eventualmente di redistribuire una versione modificata,  all'unica condizione che il  codice sia ancora a disposizione dopo tale redistribuzione - Linux è portabile su qualsiasi piattaforma hardware, nel senso che un produttore che voglia vendere un nuovo tipo di computer  e non sa che Sistema Operativo utilizzre può prendere un kernel Linux e renderlo funzionante sul suo hardware - Linux è stato progettato per rimanere sempre funzionante (nussun o rari riavvii di sistema) - Linux è sicuro e versatile - Linux è scalabile, da un Palmtop da 2 MB di memoria ad un gruppo di archiviazione da un petabyte con centinaia di nodi - Il sistema operativo Linux e le sue applicazioni hanno tempi di debug molto brevi Ritorna all'indice 1.07 - Svantaggi di Linux - Ci sono troppe differenti distribuzioni - Linux non è molto facile e confonde i nuovi utenti - Un prodotto Open Source (gratuit) può essere anche affidabile? Ritorna all'indice 1.08 - Linux e GNU Linux può sembrare diverso in base alla distribuzione scelta, ma le basi su cui si fondano tutte le interfacce, grafiche o meno,  rimangono le medesime. Il sistema Linux è basato sugli strumenti GNU (Gnu's Not Unix), che forniscono un insieme di metodi comuni  per l'utilizzo. Tutti gli strumenti GNU sono a sorgente aperto cosicché possono essere installati su qualsiasi sistema.  Molte distribuzioni offrono pacchetti precompilati di strumenti molto comuni, come i pacchetti RPM di RedHat o quelli Debian, in  maniera che non dovete essere dei programmatori per installare un pacchetto nel vostro sistema.  Comunque, se vorrete approfondire molte distribuzioni sono fornite di un insieme completo di strumenti di sviluppo. Di seguito nn elenco di programmi GNU comuni: - Bash: la shell GNU - GCC: il Compilatore C di GNU - GDB: il Debugger GNU - Coreutils: un insieme di utility base in stile UNIX, come ls, cat e chmod - Findutils: per cercare e trovare file - Fontutils: per convertire font da un formato ad un altro e per crearne di nuovi - The Gimp: per la modifica delle immagini - Gnome: l'ambiente desktop GNU - Emacs: un editor molto potente - Ghostscript e Ghostview: interprete e frontend grafico per i file PostScript. - GNU Photo: programma per interagire con le macchine fotografiche digitali. - GNU SQL: sistema di database relazionale - Radius: server remoto di autenticazione e gestione account. Per installare pacchetti avrete bisogno di una qualche forma di gestione del software: le più comuni sono RPM e dpkg.  RPM è il RedHat Package Manager utilizzato da svariati sistemi Linux nonostante il nome non lo lasci pensare.  Dpkg è il sistema di gestione pacchetti di Debian che fa uso di un'interfaccia chiamata apt­get in grado di  gestire anche i  pacchetti RPM.  Quando sarete più esperti di Linux avrete a che fare facilmente con uno o più di questi programmi. Ritorna all'indice 1.09 - Quale distribuzione installare? Ogni distribuzione Linux contiene i pacchetti base e può essere realizzata per adattarsi a quasi tutte le richieste (in quanto esse  usano tutte il kernel Linux). Avete solo bisogno di capire se la distribuzione girerà sulla vostra macchina.  LinuxPPC, per esempio, è stato concepito per funzionare su Apple. Altro caso complicato è l'hardware Sun, che potrebbe essere una vecchia CPU SPARC oppure una più recente UltraSparc: queste  richiedono  differenti versioni di Linux. Molte distribuzioni Linux offrono un insieme di programmi per PC generici con pacchetti speciali contenenti kernel ottimizzati per  le CPU basate su Intel x86. Tali distribuzioni sono ben testate e mantenute regolarmente, focalizzate su una affidabile realizzazione per server e su semplici  procedure di installazione ed aggiornamento.  Gli esempi più conosciuti sono Debian, Ubuntu, Fedora, Mandriva.  Linux gira decentemente anche sui portatili e sui server di medio livello.  I driver per il nuovo hardware vengono inclusi solo dopo prove approfondite, cosa che accresce la stabilità di un sistema. Ritorna all'indice 1.10 - I comandi Nella tabella sotto vediamo i principali comandi di avvio rapido, che possono essere scritti in una finestra di terminale, in modalità  grafica o in  modalità testo, seguiti da Invio:
ComandoSignificato
lsMostra un elenco dei file contenuti nella directory di lavoro attuale, come il  comando dir del DOS
cd directorycambio directory
passwdcambio della password dell'utente correntemente
file nomefilemostra il tipo di file di quello chiamato nomefile
cat filetestofa apparire sullo schermo il contenuto di filetesto
pwdmostra la directory di lavoro attuale
exit/logoutabbandona la sessione
man comandolegge le pagine man relative a comando
info comandolegge le pagine info relative a comando
apropos stringacerca nel database whatis la stringa
I comandi possono essere eseguiti da soli, come il comando ls.  Un comando si comporta differentemente quando si aggiunge una opzione, normalmente preceduta da un segno meno (­), come ls ­a.  Il medesimo carattere di opzione può assumere significati diversi con altri comandi.  I comandi GNU accettano opzioni estese, precedute da due meno (­­), come ls ­­allAlcuni comandi non hanno opzioni. L'argomento di un comando è una precisazione circa l'oggetto su cui volete che il comando agisca: un esempio è ls /etc, dove la  directory /etc è  l'argomento del comando ls.   Ciò indica che volete vedere il contenuto di quella directory, invece di quella normale ottenibile battendo il semplice comando ls. Ritorna all'indice 1.11 - Usare le caratteristiche di Bash Alcune combinazioni di tasti vi consentono di attivare "scorciatoie" con la shell GNU, Bash, la quale si trova presente di norma in quasi tutti i  sistemi Linux. Vediamone alcune:
Tasto o combinazione di tastiFunzione
Ctrl+AMuove il cursore all'inizio della linea di comando
Ctrl+CTermina un programma attivo e ritorna al prompt
Ctrl+DDisconnessione dalla corrente sessione di shell: corrisponde alla  scrittura di exit o logout
Ctrl+ESposta il cursore in fondo alla linea di comando
Ctrl+HGenera un carattere di backspace [cancellazione all'indietro]
Ctrl+LPulisce il terminale
Ctrl+RRicerca nella cronologia [history] dei comandi
Ctrl+ZSospende un programma
FrecciaSX/FrecciaDXSposta il cursore di uno spazio a sinistra o a destra sulla linea di  comando in modo che potete inserire caratteri in altri posti oltre  a quelli d'inizio e fine
FrecciaSU/FrecciaGIUScorre la cronologia [history] dei comandi. Andate alla linea che  volete ripetere, modificate i dettagli se necessario e premete  Invio per risparmiare tempo
Maiuscolo+PagSU
Maiuscolo+PagGIU
Scorre il buffer di terminale (per vedere il testo che ha  "spostato" lo schermo).
TabCompletamento di comandi o nomi di file: quando sono possibili  più scelte, il sistema ve lo segnalerà  con un segnale sonoro o  visivo, altrimenti, se le scelte sono troppe, vi chiederà se volete  vedere tutte quante
Tab TabMostra le possibilità di completamento di file o comandie
Le ultime due voci nella soprastante tabella richiedono alcune spiegazioni extra.  Per esempio, se volete spostarvi nella directory directory_dal_nome_piuttosto_lungo, non dovete  digitare assolutamente tutto quel  lunghissimo nome.  Dovete solo battere nella linea di comando cd dir e poi premere il tasto Tab: la shell provvedere a completare il nome per voi se non esistono  altri file che iniziano con gli stessi tre caratteri. Se più di un file inizia con gli stessi caratteri, la shell ve lo segnalerà, dopo di  che potrete battere due volte Tab di seguito e la shell mostrerà le scelte disponibili. La stessa cosa succede per il completamento dei nomi dei comandi.  Digitando ls e battendo due volte il tasto Tab, apparirà l'elenco di tutti i comandi del vostro PATH che  iniziano con quelle due lettere: MIOPROMPT> ls ls lsdev lspci lsraid lsw lsattr lsmod lspgpot lss16toppm lsb_release lsof lspnp lsusb Ritorna all'indice 1.12 - Le pag man Digitando il comando man man apparirà sullo schermo dopo aver premuto Invio: Passate alla pagina successiva con la barra spaziatrice.  Potete ritornare alla pagina precedente usando il tasto b. Di solito, quando arrivate alla fine, man si interrompe e vi ritrovate al prompt. Premete q se volete lasciare la pagina man prima del termine o se il programma di visualizzazione non si ferma automaticamente alla fine. Ogni pagina man contiene abitualmente una coppia di sezioni standard, come possiamo notare  nell'esempio di man man: - La prima riga contiene il nome del comando di cui state leggendo e l'identificativo (id) della sezione in cui si trova questa pagina man.  Le pagine man sono ordinate per capitoli. I comandi hanno facilmente più pagine, per esempio la pagina man della sezione utente, quella della sezione di amministratore di sistema e quella della sezione del programmatore. - Vengono forniti il nome del comando e una breve descrizione che servono per costruire un indice di pagine man: potete cercare qualsiasi stringa  nell'indice  tramite il comando apropos. - La sintassi del comando fornisce una annotazione tecnica di tutte le opzioni e/o argomenti accettabili.  Potete pensare ad un'opzione come ad un modo di eseguire il comando. L'argomento è il destinatario dell'elaborazione. Alcuni comandi non hanno  ne opzioni, né argomenti. Opzioni e argomenti non necessari sono posti tra "[" e "]" per indicare che possono essere tralasciati. - Viene fatta una descrizione più lunga del comando. - Vengono elencate le opzioni con le loro descrizioni. Le opzioni normalmente possono essere combinate assieme: se ciò non è possibile vi   viene segnalato da questa sezione. - VARIABILI D'AMBIENTE descrive le variabili di shell che influenzano il  comportamento di questo comando (non tutti ce l'hanno). - Qualche volta ci sono delle sezioni specifiche del comando. - La sezione VEDERE ALTRO contiene riferimenti ad altre pagine man. Tra parentesi c'è il numero della sezione di pagine man in cui si trova questo  comando. Gli utenti esperti spesso accedono alla parte VEDERE ALTRO utilizzando il comando / seguito dalla stringa VED e da Invio. - Normalmente ci sono anche informazioni sui bachi (bug) noti (anomalie) e su come segnalarne di nuovi da voi eventualmente riscontrati. Se desiderate vedere un'altra sezione rispetto a quella solita, dovete specificarla dopo il comando man 5 passwd: Se invece volete vedere tutte le pagine man di un comando, una dopo l'altra, usate ­a con man: Tale modalità, raggiunto il termine della prima pagina man e premendo di nuovo SPAZIO, verrà mostrata la pagina man della sezione successiva. Ritorna all'indice 1.13 - Le pag man Oltre alle pagine man, potete leggere le pagine Info di un comando usando il comando info.  Queste contengono di solito informazioni più recenti e sono per qualche verso più semplici da usare.  Cominciate digitando info info in una finestra di terminale, per mostrare la schermata di introduzione. Usate i tasti freccia per muovervi nel testo e per spostare il cursore su una linea che inizia con un asterisco, contenente l'argomento  di cui volete informazioni, e poi premete Invio. Utilizzate i tasti PN per andare all'argomento precedente o successivo.  La barra spaziatrice vi porterà alla pagina successiva, senza verificare se quest'ultima inizia un nuovo argomento o la pagina info di un nuovo comando. Digitate Q per uscire. Ritorna all'indice 1.14 - I comandi whatis e apropos Un breve indice di spiegazioni sui comandi è disponibile utilizzando il comando whatis, come  nell'esempio qui sotto: Se non sapete dove cercare e che pagina man leggere, apropos vi fornisce maggiori informazioni.  Supponiamo che voi non sappiate come avviare un browser: potete allora battere il seguente  comando: Dopo aver premuto Invio, vedrete quanti argomenti relativi ai browser ci sono nella vostra macchina: non solo browser web, ma anche  browser di file, FTP e di documentazione. Se avete installato i pacchetti di sviluppo, potreste anche avere le pagine man di accompagnamento concernenti programmi di scrittura che hanno a che fare con i browser. Generalmente un comando con una pagina man in sezione uno  (uno rappresentato con "(1)") può essere sperimentato in qualità di utente.  Pertanto l'utente che qui sopra ha digitato apropos può di conseguenza provare ad avviare i comandi linkslynxmozilla o ncftp dal momento  che questi hanno a che fare con la navigazione nel world wide web. Ritorna all'indice 1.15 - L'opzione --help Molti comandi GNU supportano l'opzione --help, che dà una breve spiegazione su come usare il comando e una lista delle opzioni disponibili.  Qui sotto il risultato di questa opzione con il comando cat: Ritorna all'indice 1.16 - Supporto/help in modalità grafica Konqueror l'esplora risorse di KDE permetta di accedere alla pagine man e info. Scrivete il comando che vi serve nella barra degli indirizzi e otterrete una pagina Info navigabile relativa al comando info. Allo stesso modo man:ls vi mostrerà la pagina man per il comando ls. Avete pure il completamento dei nomi dei comandi:  vedrete le pagine man di tutti i comandi che iniziano con ls in un menù a scorrimento. Inserendo info:/dir nella barra degli indirizzi, appaiono tutte le pagine Info organizzate in categorie di programmi.  Eccellente il contenuto di Aiuto, comprendente anche il manuale di Konqueror. Avviate quest'ultimo dal menu o digitando il comando konqueror  in una finestra di terminale seguito da Invio; osservate la schermata qui sotto: Ritorna all'indice 2.01 - Supporto/help in modalità grafica Si dice: "in un sistema UNIX ogni cosa è un file: se qualcosa non è un file, è un processo" In realtà avremo alcune eccezioni: - Directory: file che sono elenchi di altri file. - File speciali: il meccanismo usato per ingresso e uscita dei dati. Molti file speciali si  trovano in /dev: ne parleremo più avanti. - Collegamenti (link): un mezzo impiegato per rendere visibili file e directory in più  parti dell'albero dei file del sistema.  - (Domain) socket: uno speciale tipo di file, simile ai socket TCP/IP, che fornisce un'infrastruttura di processi interconnessi protetta da  un controllo d'accesso del file  system. - Named pipes: funzionano più o meno come i socket e costituiscono un modo di comunicazione tra processi senza l'impiego della  semantica dei socket di rete. L'opzione -l di ls mostra il tipo di file usando il primo carattere di ciascuna linea di input: Di seguito una tabella con i caratteri che determinano il tipo di file:
SimboloSignificato
-File normale
dDirectory
lCollegamento (link)
cFile speciale
sSocket
pNamed pipe
bPeriferica a blocchi
Per non dover fare ogni volta un lungo elenco per riconoscere il tipo di file, molti sistemi normalmente non eseguono un semplice ls,  bensì ls -F, che applica un suffisso /=*|@ ai nomi dei  file per indicarne il tipo.  Per rendere la faccenda ancora più semplice per i principianti, le opzioni -F e --color solitamente vengono combinate assieme. Ritorna all'indice 2.02 - Il partizionamento Cosa vuol dire partizionare un hard disk? La partizione di un disco, può essere vista come la divisione fisica di un hard disk in parti ben distinte. Se l'hard disk è stato partizionato più volte, esso apparirà nel sistema operativo come se vi fossero inseriti più dischi distinti. Uno degli scopi di avere diverse partizioni è quello di raggiungere un livello di sicurezza  dei dati maggiore in caso di disastro Quindi l'uso delle partizioni resta per motivi di sicurezza e robustezza, in modo che un guasto in una parte del sistema non significa automaticamente che l'intero computer sia in pericolo. Esistono due tipi di partizioni principali in un sistema Linux: - partizione dati: normali dati del sistema Linux, compresa la  partizione di root  contenente tutti i dati per avviare e far funzionare il sistema - partizione swap: espansione della memoria fisica del computer, memoria extra su disco rigido Molti sistemi contengono una partizione di root, una o più partizioni di dati e una o più partizioni di swap. Lo spazio di swap è accessibile solo dal sistema stesso ed è nascosto alla vista durante le normali operazioni.  Swap è il mezzo che assicura che voi possiate continuare a lavorare qualsiasi cosa accada.  Con Linux potenzialmente non vedrete mai irritanti messaggi tipo Out of memory, please close some applications first and try again  (Memoria  esaurita, per favore chiudere  prima alcune applicazioni e riprovare), per necessità di questa memoria in più.  Linux in genere si aspetta di avere il doppio della memoria fisica sotto forma di spazio di Swap sul disco rigido.  Installando un sistema dovete sapere come fare ciò. Ecco un esempio su di un sistema con 512 MB di RAM: - prima possibilità: una partizione di swap da 1 GB - seconda possibilità: due partizioni di swap da 512 MB - terza possibilità: con due dischi rigidi: 1 partizione da 512 MB Il resto del disco rigido (dischi rigidi) è generalmente diviso in partizioni di dati, sebbene potrebbe succedere che tutti i dati di  sistema non critici risiedano in un'unica partizione, ad esempio quando eseguite una installazione standard per stazione di lavoro.  Quando i dati non critici sono suddivisi in differenti partizioni, solitamente si segue uno schema preordinato: - una partizione di programmi per gli utenti (/usr) - una partizione contenente i dati personali degli utenti (/home) - una partizione per conservare i dati temporanei come le code di stampa e di posta (/var) - una partizione per software di terze parti ed extra (/opt) Una volta create le partizioni, potete solo aggiungerne altre.  Cambiare dimensioni o proprietà di partizioni esistenti è possibile ma non consigliabile. In un'installazione workstation/client il software selezionato per l'installazione è composto da pacchetti come temi per il desktop,  strumenti di sviluppo, posta elettronica, software multimediale, web ed altri servizi.  Il tutto è collocato insieme su una grande partizione, viene aggiunto lo spazio di swap pari al doppio della RAM e la vostra workstation  generica è completa, dotata della più vasta quantità possibile di spazio su disco per l'uso personale, ma con l'inconveniente di una  possibile perdita di integrità dei dati durante situazioni critiche. In un server i dati di sistema tendono ad essere separati da quelli degli utenti.  Su questi sistemi verranno create diverse partizioni: - una partizione con tutti i dati necessari per l'avvio della macchina - una partizione con i dati di configurazione e i programmi server - una o più partizioni contenenti i dati dei server come le tabelle di database, la posta  degli utenti, un archivio ftp, ecc... - una partizione con i programmi degli utenti e le applicazioni - una o più partizioni per i file personali degli utenti (directory home) - una o più partizioni di swap (memoria virtuale) I server abitualmente hanno più memoria e, conseguentemente, più spazio di swap. Ritorna all'indice 2.03 - Il mount point Tutte le partizioni vengono agganciate al sistema tramite il punto di montaggio (mount point)Questo definisce la posizione di un specifico insieme di dati nel file system.  Normalmente tutte le partizioni sono connesse tra loro grazie alla partizione root o radice. In questa partizione, che viene indicata con la barra (/),  vengono create le directory. Tali directory vuote saranno il punto d'inizio delle partizioni a loro attaccate.  Un esempio: data una partizione contente le seguenti directory: videos/ cd images/ - pictures/ vogliamo attaccare questa partizione nel file system in  una directory chiamata /opt/media. Per fare ciò, l'amministratore di sistema deve assicurarsi che la directory /opt/media esista nel  sistema.  Preferibilmente dovrebbe essere una directory vuota.  Dopo, usando il comando mount, l'amministratore può attaccare la  partizione al sistema.  Quando osserverete il contenuto della directory /opt/media formalmente vuota, essa conterrà i file e le directory che si trovano sul dispositivo  montato (disco rigido o  partizione di disco rigido, CD, DVD, flash card, USB o altra unità di memorizzazione). Durante l'avvio del sistema, tutte le partizioni vengono montate così come indicato nel file /etc/fstab.  Alcune partizioni non vengono montate in automatico, per esempio se non sono collegate costantemente al sistema,  come le memorie usate dalla vostra macchina fotografica  digitale. Le informazioni sulle partizioni e sui relativi punti di montaggi possono essere mostrate usando il comando df (Disk Full/Disk Free).  In Linux, df è la versione GNU e supporta l'opzione -h o (human readable=leggibile da esseri umani) che migliora notevolmente la leggibilità.  Il comando df mostra solo informazioni circa le partizioni attive non di swap.  Queste possono comprendere partizioni da altri sistemi in rete, come nell'esempio qui sotto dove le directory home sono montate da un file server  sulla rete, situazione che si incontra spesso in ambienti aziendali. Ritorna all'indice 2.04 - La struttura del file system Per comodità il file system Linux è abitualmente immaginato come una struttura ad albero.  In un sistema Linux standard troverete una struttura simile allo schema presentato di seguito (struttura di un sistema RedHat): L'albero del file system inizia dal tronco o sbarra, rappresentato da una sbarra (/).  Tale directory, contenente tutti i file e le directory sottostanti, è chiamata root directory (directory radice). Le directory che si trovano solo ad un livello al di sotto di quella di root sono spesso precedute da una sbarra (slash) per indicare la loro posizione e per evitare di confonderle con altre directory che potrebbero avere lo stesso nome.  Quando si inizia con un nuovo sistema è sempre una buona idea dare un'occhiata alla directory radice.  Vediamo come potete accedervi: Vediamo cosa contiene ogni directory:
DirectoryContenuto
/bin Comuni programmi condivisi dal sistema, dall'amministratore di sistema e dagli utenti
/bootI file di avvio e del kernel, vmlinuz. In alcune recenti distribuzioni ci sono  anche i dati di grub. Grub è il GRand Unified Boot
 loader e rappresenta un  tentativo di sbarazzarsi di molti boot­loader differenti che conosciamo oggi
/devContiene i riferimenti a tutto l'hardware periferico della CPU, che viene rappresentato come file con particolari caratteristiche
/etcIn /etc si trovano file di configurazione di sistema molto importanti.
 Questa directory contiene dati simili a quelli del Pannello di Controllo di Windows
/homeDirectory home [personale] dei normali utenti
/initrd(in alcune distribuzioni) Informazioni per l'avvio. Non rimuovere!
/libFile di libreria, comprende file per tutti i tipi di programmi necessari al sistema  ed agli utenti
/lost+foundOgni partizione possiede lost+found nella directory più alta: vi si trovano i file salvati durante un guasto
/miscPer usi diversi
/mntPunto di montaggio standard per file system esterni, ad es. un CD­ROM o una  fotocamera digitale
/netPunto di montaggio standard per interi file system remoti
/optContiene tipicamente software extra e di terze parti
/procUn file system virtuale contenente informazioni sulle risorse di sistema. Maggiori con man proc in una finestra di terminale. Il file proc.txt tratta in  dettaglio del file system virtuale
/rootLa directory home dell'utente amministratore. Tenete presente la differenza tra /, la directory root o radice, e /root, la home directory dell'utente root
/sbinProgrammi utilizzati dal sistema e dall'amministratore di sistema
/tmpSpazio temporaneo usato dal sistema, ripulito ad ogni riavvio: da non usare per salvare alcun lavoro
/usrProgrammi, librerie, documentazione, ecc... per tutti i programmi a disposizione degli utenti
/varDeposito di tutti i file variabili e temporanei creati dagli utenti, come i file di log, le code di posta, l'area per lo spooler di stampa,
 spazio per l'archiviazione temporanea dei file scaricati da internet, o per conservare l'immagine di un CD prima di masterizzarlo
Come si può scoprire in quale partizione si trova una directory? Usando il comando df con un punto (.) come opzione mostra la partizione a cui appartiene la directory corrente e informa sulla quantità di spazio  usato in tale partizione: In un file system "reale", un file è rappresentato da un inode, un tipo di numero seriale che contiene informazioni sui dati veri che costituiscono il file,  su chi possiede il file e dove questo si trova nel disco rigido. Ogni partizione ha il suo proprio insieme di inode: grazie ad un sistema con partizioni multiple possono esistere file con lo stesso numero di inode. Ciascun inode descrive una struttura di dati nel disco rigido, conservando le proprietà di un file, compresa la locazione fisica dei dati del file.  Quando si prepara un disco fisso per l'archiviazione dei dati, normalmente durante l'iniziale processo di installazione del sistema, si crea  un numero  fisso di inode per partizione. Questo numero sarà la quantità massima di file di tutti i tipi (comprese directory, file speciali, collegamenti, ecc...)  che potranno esistere contemporaneamente nella partizione.  Normalmente contiamo di avere 1 inode da 2 a 8 kilobyte di memoria. Ogni qualvolta si crea un nuovo file, questo ottiene un inode libero contenente le seguenti informazioni: - Proprietario (owner) e gruppo possessore del file - Tipo del file (normale, directory, ecc...) - Permessi sul file - Data ed ora di creazione, ultima lettura e modifica - Data ed ora in cui tale informazione è stata cambiata nell'inode - Numero di collegamenti a questo file - Dimensione del file - Un indirizzo che definisce la vera posizione dei dati del file L'unica informazione non inclusa in un inode è il nome del file e della directory.  Questi sono conservati in speciali file di directory. Confrontando i nomi dei file e i numeri di inode, il sistema è in grado di costruire una struttura  ad albero comprensibile per l'utente. Gli utenti possono vedere i numeri di inode utilizzando il comando: ls - i Gli inode dispongono di un proprio spazio separato  nel disco. Vediamo adesso come "orientarsi" nel file system Quando volete che il sistema esegua un comando, non dovete quasi mai dare il percorso (path) completo di quel comando.  Per esempio, sappiamo che il comando ls si trova nella directory /bin (controllate con which -a ls),  cosicché non dobbiamo inserire il comando /bin/ls affinché il computer elenchi il contenuto della corrente directory. La variabile d'ambiente PATH si occupa di ciò.  Tale variabile elenca le directory del file system in cui si possono trovare i file eseguibili e così risparmia all'utente molte battiture  di caratteri e memorizzazioni delle posizioni dei comandi. Così PATH contiene solitamente molte directory aventi bin da qualche parte nel  loro nome, come mostra l'utente qui sotto. Il comando echo si usa  per vedere il contenuto (“$”) della variabile  PATH: In questo esempio, le directory /usr/local/sbin, /usr/local/bin, /usr/sbin, /bin, /usr/games, /usr/local/games e /snap/bin vengono scandite  alla ricerca del programma richiesto. Non appena c'è una corrispondenza, la ricerca viene terminata, anche se non tutte le directory nel  percorso sono state passate. Ciò può portare a strane situazioni.  Ad es. supponiamo che un utente sappia che esiste un programma chiamato sendsms per inviare un messaggio SMS e che un altro utente dello  stesso sistema può usarlo, ma lui no. La differenza consiste nella configurazione della variabile PATH. Percorsi assoluti e relativi Un percorso (path), cioè la strada da seguire nella struttura ad albero per raggiungere un certo file, può essere descritto partendo dal  tronco dell'albero (la "/" o directory radice). In tal caso, il percorso inizia con una sbarra e viene chiamato percorso assoluto,  dal momento che non possono esserci errori: nel sistema solo un file potrà corrispondervi. Nell'altro caso, il percorso non inizia con una sbarra ed è possibile confondere tra ~/bin/wc (nella directory home dell'utente) e  bin/wc in /usr ad esempio.  I percorsi che  non iniziano con una sbarra sono sempre relativi. Nei percorsi relativi usiamo anche . e .. per indicare la directory corrente e quella genitrice.  Ritorna all'indice 2.05 - I file e le directory più importanti La shell Una shell può essere meglio paragonata ad un mezzo per parlare con il computer, un linguaggio.  Molti utenti conoscono quell'altro linguaggio, "quello del mouse", ma con esso il computer guida la conversazione,  mentre l'utente assume il ruolo passivo di selezionare le funzioni che questo gli presenta.  E' molto difficile per un programmatore includere tutte le opzioni e gli usi possibili di un comando in un formato GUI (grafico).  Così le GUI sono quasi sempre meno potenti del comando o dei comandi che formano il backend, cioè su cui queste si appoggiano per  svolgere  le varie funzioni. La shell, d'altro canto, è una maniera evoluta di dialogare con il sistema poiché consente la conversazione nei due sensi e di assumere l'iniziativa. Entrambe le parti della comunicazione sono uguali, così si possono sperimentare nuove idee. La shell permette all'utente  di gestire un sistema in modo piuttosto flessibile e, come ulteriore vantaggio, di automatizzare i compiti. Vediamo i tipi di shell: - sh o Bourne Shell: la shell originale ancora utilizzata su sistemi UNIX e in ambienti collegati a UNIX.  E' la comune shell, un piccolo programma con poche funzioni. Quando è in modalità POSIX­compatibile bash emula questa shell. - bashBourne Again SHell: la shell GNU standard, intuitiva e flessibile.  Probabilmente molto consigliabile sia ai principianti sia, contemporaneamente, agli esperti e professionisti essendo uno strumento  molto potente. In Linux bash è la shell standard per i comuni utenti. Tale shell viene anche detta superinsieme della shell Bourne,  un insieme di aggiunte e plug­in. Ciò significa che la shell Bourne Again è compatibile con quella Bourne: i comandi che funzionano con sh, funzionano pure con bash. Comunque non è sempre vero il contrario.  - cshC Shell: la sintassi di questa shell assomiglia a quella del linguaggio di programmazione C.  Qualche volta viene richiesta dai programmatori. - tcsh o Turbo C Shell: un superinsieme della comune C shell, che aumenta la  semplicità e la velocità. - ksh o Korn shell: apprezzata qualche volta da persone con esperienze di UNIX.  E' un  superinsieme  della Bourne shell: in configurazione base è un incubo per i principianti Il file /etc/shells offre una panoramica delle shell conosciute da un sistema Linux: La vostra shell di base è impostata nel file /etc/passwd Per passare da una shell all'altra, basta solo inserire il nome della nuova shell nel terminale attivo.  Il sistema trova la directory dove ricorre il nome usando le impostazioni di PATH e, dal momento che una shell è un file eseguibile,  la shell corrente la attiva e la manda in esecuzione. Abitualmente appare un nuovo prompt perché ogni shell ha il proprio aspetto tipico: Come si vede nel SO della slide la shell tcsh non era installata ma il SO si accorge e ti scrive il comando da eseguire se vuoi installarla! Per vedere quale shell state utilizzando potete sia controllare la linea del vostro account in /etc/passwd: sia dare echo $SHELL come comando (attenti alle MAIUSCOLE poichè Linux è case sensitive = sensibile alle maiuscole) La vostra home directory Quando vi connettete al sistema, la vostra home directory (directory personale) è la destinazione iniziale.  In molti casi si tratta di una sottodirectory di /home, sebbene possa variare.  La vostra home directory può essere collocata nel disco rigido di un file server remoto: in questo caso essa si può trovare in  /nethome/vostronomeutente.  In caso diverso l'amministratore di sistema  può aver optato per una struttura meno comprensibile e la vostra directory, ad es.,  potrebbe essere su /disk6/HU/07/jgillard. Non dovete preoccuparvi eccessivamente di quale sia il percorso della vostra home directory: infatti il percorso corretto è conservato nella variabile d'ambiente HOME, nel caso alcuni programmi ne abbiano bisogno.  Con il comando echo $HOME potete vedere il contenuto di questa variabile : Nella vostra directory personale potete fare tutto ciò che vi piace: potete metterci tanti file in tante directory quanti ne volete,  sebbene lo spazio totale per dati e i file sia naturalmente limitato a causa dell'hardware.  Potete verificare da voi stessi l'esistenza di un limite utilizzando il comando quota -v : La vostra directory personale viene indicata con una tilde (~), abbreviazione di /path_to_home/nome_utente.  Lo stesso percorso è conservato nella variabile HOME, cosicché non dovete fare nulla per attivarlo. Una semplice applicazione: passare da /var/music/albums/arno/2001images contenuta nella vostra directory personale utilizzando  un comando elegante: Ritorna all'indice 3.01 - Editor Vi Dal Sito delluniversità di Trento