Index: head/it_IT.ISO8859-15/articles/explaining-bsd/article.xml =================================================================== --- head/it_IT.ISO8859-15/articles/explaining-bsd/article.xml (revision 52098) +++ head/it_IT.ISO8859-15/articles/explaining-bsd/article.xml (nonexistent) @@ -1,615 +0,0 @@ - - - -
- Panoramica su BSD - - - GregLehey -
grog@FreeBSD.org
-
- - - &tm-attrib.freebsd; - &tm-attrib.amd; - &tm-attrib.apple; - &tm-attrib.linux; - &tm-attrib.opengroup; - &tm-attrib.sun; - &tm-attrib.xfree86; - &tm-attrib.general; - - - $FreeBSD$ - - $FreeBSD$ - - - Nel mondo open source, la parola Linux è quasi - sinonimo di Sistema Operativo, ma non si tratta del solo - sistema operativo &unix; open source. Secondo - l'Internet - Operating System Counter, ad Aprile del 1999 il 31.3% delle - macchine connesse in rete ha in esecuzione Linux. - Il 14.6% fa girare BSD &unix;. - Alcuni dei più grandi operatori del web, come Yahoo!, usano BSD. Il server - FTP più affollato del mondo nel 1999 (ora defunto), ftp.cdrom.com, usa BSD per - trasferire 1.4 TB di dati al giorno. Chiaramente questo non è - un mercato di nicchia: BSD è un segreto ben mantenuto. - - Dunque, qual è il segreto? Perché BSD non è - conosciuto meglio? Questo documento risponde a questa e ad altre - domande. - - In questo documento, le differenze tra BSD e Linux verranno - evidenziate così. - - &trans.it.surrender; - -
- - - Cos'è BSD? - - BSD sta per Berkeley Software Distribution. È - il nome delle distribuzioni di codice sorgente dell'Università - della California, Berkeley, che erano originariamente estensioni al - sistema operativo &unix; del settore Ricerca della AT&T. - Molti progetti open source di sistemi operativi sono basati - su una versione di questo codice sorgente noto come - 4.4BSD-Lite. Inoltre, essi comprendono un gran numero di - pacchetti provenienti da altri progetti Open Source, incluso, in - particolare, il progetto GNU. L'intero sistema operativo - comprende: - - - - Il kernel BSD, che gestisce lo scheduling dei processi, l'utilizzo - della memoria, il supporto multiprocessore (SMP), i driver dei - vari dispositivi, ecc. - - Diversamente dal kernel Linux, ci sono differenti - kernel BSD con differenti caratteristiche. - - - - La libreria C, le API di base per il sistema. - - La libreria C BSD è basata su codice proveniente - da Berkeley, non dal progetto GNU. - - - - Utilità come shell, file manager, compilatori e - linker. - - Alcune delle applicazioni derivano dal - progetto GNU, altre no. - - - - L'X Window System, che gestisce la visualizzazione grafica. - - L'X Window System usato nella maggior parte delle versioni di - BSD viene mantenuto da uno dei due progetti separati, il - progetto &xfree86; e il - progetto X.Org. - Questo è lo stesso codice usato da Linux. BSD in genere non - specifica un desktop grafico come GNOME o KDE, - anche se questi sono disponibili. - - - - Molti altri programmi ed utilità. - - - - - - Cosa, un vero &unix;? - - I sistemi operativi BSD non sono cloni, ma derivati open source - del sistema operativo &unix; dell'AT&T Research, che è anche - l'antenato del moderno &unix; System V. Questo potrebbe sorprendere. - Come è potuto accadere questo, se la AT&T non ha mai rilasciato - il suo codice come open source? - - È vero che lo &unix; AT&T non è open source, e nel - senso del copyright BSD in definitiva non è - &unix;, ma d'altro canto l'AT&T ha importato sorgenti da altri - progetti, in maniera rilevante dal Computer Sciences Research Group - dell'Università della California a Berkeley, CA. Iniziato nel - 1976, il CSRG ha iniziato a rilasciare nastri con il loro software, - chiamandolo Berkeley Software Distribution o - BSD. - - Le versioni iniziali di BSD consistevano principalmente di programmi - utente, ma questo cambiò drammaticamente quando il CSRG - sottoscrisse un contratto con la - Defense Advanced Projects Research Agency (DARPA) per migliorare - i protocolli di comunicazione della loro rete, ARPANET. I nuovi - protocolli furono conosciuti come Internet Protocols, - e in seguito come TCP/IP, ai nomi dei protocolli - più importanti. La prima implementazione distribuita in maniera - estesa fu parte di 4.2BSD, nel 1982. - - Nel corso degli '80, sorsero un certo numero di compagnie - che producevano workstation. Molti preferirono usare &unix; su licenza - piuttosto che sviluppare da soli un nuovo sistema operativo. - In particolare, la Sun Microsystems rilicenziò &unix; ed - implementò una versione commerciale di 4.2BSD, che chiamò - SunOS. Quando alla AT&T stessa fu permesso di vendere &unix; - commercialmente, cominciarono con una implementazione ridotta all'osso - nota come System III, presto seguita da System V. - Il codice fondamentale di System V non comprendeva la parte di rete, - dunque tutte le implementazioni includevano software addizionale tratto - da BSD, incluso il software legato al TCP/IP, ma anche utilità come - la shell csh e l'editor vi. - Complessivamente, questi miglioramenti furono conosciuti - come le Estensioni Berkeley. - - Il nastro BSD conteneva codice AT&T e dunque richiedeva - una licenza per il sorgente &unix;. Dal 1990, il finanziamento del CSRG - si stava esaurendo, e se ne stava per affrontare la chiusura. - Alcuni membri del gruppo decisero di rilasciare il codice BSD, - che era Open Source, senza il codice proprietario della AT&T. - Ciò accadde infine con il Networking Tape 2, - in genere noto come Net/2. Net/2 non era un sistema - operativo completo: mancava circa il 20% del codice del kernel. Uno dei - membri del CSRG, William F. Jolitz, scrisse il codice rimanente e lo - rilasciò all'inizio del 1992 come 386BSD. - Allo stesso tempo, un altro gruppo di ex membri del CSRG formò una - compagnia chiamata Berkeley Software - Design Inc. e rilasciò una versione beta di un sistema - operativo chiamato BSD/386, - che era basato sugli stessi sorgenti. Il nome del sistema operativo - è cambiato di recente in BSD/OS. - - 386BSD non divenne mai un sistema operativo stabile. Invece, due - altri progetti se ne distaccarono nel 1993: - NetBSD e - FreeBSD. - I due progetti presero inizialmente direzioni divergenti, a causa della - differente pazienza nell'attendere miglioramenti a - 386BSD: la gente di NetBSD cominciò all'inizio dell'anno, - e la prima versione di FreeBSD non fu pronta fino alla fine - dell'anno. Nel frattempo, i codici erano diventati abbastanza differenti - da renderne difficile la fusione. Inoltre, i progetti avevano obiettivi - differenti, come vedremo in seguito. Nel 1996, - OpenBSD si ramificò - da NetBSD, e nel 2003, - DragonFlyBSD si - ramificò da FreeBSD. - - - - Perché BSD non è più conosciuto? - - Per un certo numero di ragioni, BSD è relativamente - sconosciuto: - - - - Gli sviluppatori BSD sono spesso più interessati - a ripulire il loro codice che a fagli pubblicità. - - - - Molta della popolarità di Linux è dovuta a fattori - esterni al progetto Linux, come la stampa, e le compagnie formate per - fornire servizi relativi a Linux. Fino a poco tempo fa, - la varie versioni di BSD open source non avevano tali spinte. - - - - Gli sviluppatori BSD tendono ad avere più esperienza - di quelli di Linux, ed hanno meno interesse nel rendere il sistema - facile da usare. - I nuovi arrivati tendono a sentirsi più a loro agio con - Linux. - - - - Nel 1992, l'AT&T citò in giudizio - BSDI, - il produttore di BSD/386, sostenendo che il prodotto conteneva - codice sotto copyright della AT&T. Il caso fu risolto in - tribunale nel 1994, ma lo spettro della causa continua a perseguitare - alcune persone. Nel marzo 2000 un articolo pubblicato sul web - sosteneva che il caso era stato concluso - recentemente. - - Un dettaglio che venne chiarito dall'azione legale fu il nome: - negli anni '80, BSD era stato conosciuto come BSD - &unix;. - Con l'eliminazione delle ultima vestigia del codice AT&T da BSD, - si era perso anche il diritto di usare il nome &unix;. Per questo - noterete riferimenti nei libri al sistema operativo 4.3BSD - &unix; ed al sistema operativo 4.4BSD. - - - - C'è una certa percezione che il progetto BSD sia - frammentato e belligerante. Il Wall - Street Journal parlò di - balcanizzazione dei progetti BSD. Come per l'azione - legale, questa percezione si basa principalmente su vecchie - storie. - - - - - - Paragone tra BSD e Linux - - Dunque qual'è l'effettiva differenza tra, diciamo, Debian - Linux e FreeBSD? Per l'utente medio, la differenza è - sorprendentemente piccola: entrambi sono sistemi operativi tipo &unix;. - Entrambi vengono sviluppati da progetti non commerciali (questo non si - applica a molte altre distribuzioni di Linux, ovviamente). Nella sezione - seguente, daremo un'occhiata a BSD e lo paragoneremo a Linux. - La descrizione si applica molto da vicino a FreeBSD, che conta per un 80% - delle installazioni BSD, ma le differenza da NetBSD, OpenBSD e DragonFlyBSD - sono piccole. - - - Chi possiede BSD? - - Nessuna persona o società possiede BSD. Esso è creato - e distribuito da una comunità di persone con grande preparazione - tecnica e voglia di fare che contribuiscono da tutto il mondo. - Alcuni dei componenti di BSD sono progetti open source a se stanti gestiti - da diversi responsabili. - - - - Come viene sviluppato ed aggiornato BSD? - - I kernel BSD vengono sviluppati ed aggiornati - seguendo il modello di sviluppo open source. Ogni progetto mantiene - un albero dei sorgenti liberamente accessibile in - un Concurrent Versions - System, un sistema di gestione delle versioni concorrenti, - che contiene tutti i file sorgenti del progetto, - inclusa la documentazione ed altri file inerenti. Il CVS - permette agli utenti di estrarre (in sostanza, - estrarre una copia di) ogni versione desiderata del sistema. - - Un grande numero di sviluppatori da tutto il mondo contribuisce al - miglioramento di BSD. Essi sono divisi in tre grandi gruppi: - - - - I contributor scrivono codice o - documentazione. Non gli è permesso di effettuare il commit - (aggiungere codice) direttamente all'albero dei sorgenti. - Affinché il loro codice sia incluso nel sistema, esso - deve essere rivisto e controllato da uno sviluppatore registrato, - noto come committer. - - - - I committer sono sviluppatori - con accesso in scrittura all'albero dei sorgenti. - Per poter divenire un committer, un individuo deve dimostrare - abilità nell'area nella quale è attivo. - - - È a discrezione del committer la volontà di - confrontarsi con qualcuno prima di effettuare cambiamenti. In - generale, un committer con esperienza può effettuare - cambiamenti che sono ovviamente corretti senza interrogare nessuno. - Ad esempio, un committer del progetto di documentazione può - correggere errori tipografici o grammaticali senza un confronto con - altri. D'altro canto, dagli sviluppatori che stanno per effettuare - cambiamenti profondi o complessi ci si aspetta che sottopongano i - cambiamenti a revisione prima di renderli effettivi. In casi - estremi, un membro del core team, con una funzione simile a un Capo - Architetto, può ordinare che i cambiamenti siano rimossi - dall'albero, un processo noto come marcia - indietro. - Tutti i committer ricevono una lettera che descrive ogni - modifica individuale, dunque non è possibile effettuare un - commit segretamente. - - - - Il Core Team. FreeBSD e NetBSD - hanno ognuno un core team che gestisce il progetto. I - core team si sono modificati nel corso del progetto, ed i loro - ruoli non sempre sono ben definiti. Non è necessario essere - uno sviluppatore per far parte del core team, anche se è - normale che sia così. Le regole - per il core team variano da un progetto ad un altro, ma in - generale chi ne fa parte ha più autorità - nell'indirizzamento del progetto rispetto agli altri membri. - - - - Questa organizzazione differisce da Linux in vari modi: - - - - Nessuna persona controlla il contenuto del sistema. In - pratica, questa differenza è sopravvalutata, poiché - il Capo Architetto può richiedere che il codice sia - rimosso, ed anche nel progetto Linux viene permesso a - molte persone di effettuare cambiamenti. - - - - D'altra parte, c'è un deposito - centrale, un punto singolo dove è possibile trovare i - sorgenti dell'intero sistema, incluse tutte le vecchie - versioni. - - - - I progetti BSD mantengono l'intero Sistema - Operativo, non solo il kernel. Questa distinzione - è utile solo marginalmente: né BSD né Linux - sono utili senza applicazioni. Le applicazioni usate su BSD sono - spesso le stesse usate su Linux. - - - - Come risultato di un mantenimento formalizzato - di un singolo CVS per l'albero dei sorgenti, lo sviluppo di BSD - è chiaro, ed è possibile accedere ad ogni versione del - sistema dal numero di release o dalla data. - Il CVS permette anche aggiornamenti incrementali del sistema: ad - esempio, il repository di FreeBSD viene aggiornato più o meno - 100 volte al giorno. La maggior parte dei cambiamenti sono - piccoli. - - - - - - Release di BSD - - FreeBSD, NetBSD and OpenBSD forniscono il sistema in tre - release differenti. Come per Linux, alle release - vengono assegnati dei numeri come 1.4.1 o 3.5. Inoltre, il numero di - versione ha un suffisso che indica il suo scopo: - - - - la versione di sviluppo del sistema è chiamata - CURRENT. FreeBSD assegna un numero - alla CURRENT, ad esempio FreeBSD 5.0-CURRENT. NetBSD usa uno - schema di denominazione leggermente differente - ed aggiunge un suffisso di una singola lettera che indica - i cambiamenti nell'interfaccia interna, ad esempio NetBSD - 1.4.3G. OpenBSD non assegna un numero - (OpenBSD-current). - Tutti gli sviluppi del sistema vanno in questo ramo. - - - - A intervalli regolari, tra le due e le quattro volte all'anno, i - progetti fanno uscire una versione RELEASE - del sistema, disponibile su CD-ROM e come libero download da siti - FTP, ad esempio OpenBSD 2.6-RELEASE o NetBSD 1.4-RELEASE. - La versione RELEASE è intesa per gli utenti finali ed - è la versione normale del sistema. NetBSD fornisce anche - patch release, versioni con solo piccole - correzioni, con una terza cifra, ad esempio NetBSD 1.4.2. - - - - Quando vengono trovati dei bug in una versione RELEASE, - vengono corretti, e le correzioni vengono aggiunte all'albero del - CVS. In FreeBSD, la versione risultante viene detta - STABLE, mentre in NetBSD ed OpenBSD continua - a chiamarsi RELEASE. Caratteristiche minori possono essere aggiunte - a questo ramo dopo un periodo di test nel ramo CURRENT. - - - - In contrasto, Linux mantiene due alberi di codice - differenti: la versione stabile e la versione di sviluppo. - Le versioni stabili hanno un numero di versione pari, come 2.0, 2.2 o - 2.4. Le versioni di sviluppo hanno numero di versione dispari, come - 2.1, 2.3 o 2.5. In ogni caso, il numero è seguito da un - ulteriore numero che indica la versione esatta. Inoltre, ogni - venditore aggiunge i suoi programmi utente o le sue utilità, - dunque anche il nome della distribuzione è importante. Ogni - venditore di distribuzione assegna anche un numero di versione alla - distribuzione, dunque una descrizione completa dovrebbe essere una - cosa del tipo TurboLinux 6.0 con kernel - 2.2.14 - - - - Quali versioni di BSD sono disponibili? - - In contrasto alle numerose distribuzioni Linux, ci sono solo - quattro BSD open source. Ogni progetto BSD mantiene il suo albero dei - sorgenti ed il suo kernel. In pratica, comunque, ci sono meno - divergenze tra i codici dei programmi utente dei vari progetti di quante - ce ne siano in Linux. - - È difficile catalogare gli obiettivi di ogni progetto: - le differenze sono molto soggettive. Di base, - - - - FreeBSD punta alle alte prestazioni e alla facilità d'uso - per l'utente finale, ed è molto usato dai fornitori di - contenuti web. Funziona su diverse piattaforme, inclusi i sistemi - basati su i386 (PC), i sistemi basati sui processori - AMD a 64-bit, i sistemi basati su &ultrasparc;, i sistemi basati su - processori Alpha della Compaq e i sistemi basati sulle specifiche - NEC PC-98. Il progetto FreeBSD ha nettamente più utenti degli - altri. - - - - NetBSD punta alla massima portabilità: of course - it runs NetBSD, ovviamente ci gira NetBSD. - Funziona su macchine che vanno dai palmtop ai grossi - server, ed è anche stato usato dalla NASA in alcune missioni - spaziali. È una scelta particolarmente buona per il vecchio - hardware non Intel. - - - - OpenBSD punta alla sicurezza e alla purezza del codice: usa una - combinazione dei concetti open source e un rigoroso controllo - del codice per creare un sistema la cui correttezza sia - dimostrabile, rendendolo la scelta di organizzazioni attente alla - sicurezza come banche, borse e dipartimenti del governo - statunitense. - Come NetBSD, funziona su un gran numero di piattaforme. - - - - DragonFlyBSD punta ad alte prestazioni e scalabilità sotto - qualsiasi sistema dal singolo sistema mono-processore al sistema - massicciamente clasterizzato. DragonFlyBSD ha diversi obbiettivi a - lungo termine, anche se è concentrato nel fornire un'infrastruttura - SMP facile da capire, mantenere e sviluppare. - - - - Ci sono anche altri due sistemi operativi BSD che non sono open - source, BSD/OS e il &macos; X della Apple: - - - - BSD/OS fu il pù antico dei derivati di 4.4BSD. - Non fu open source, anche se le licenze per il codice sorgente - erano disponibili ad un costo relativamente basso. - Per molti aspetti assomiglia a FreeBSD. Due anni dopo - l'acquisizione di BSDi da parte di Wind River Systems, - BSD/OS non riuscii a sopravvivere come prodotto indipendete. - Supporto e codice sorgente sono ancora disponibili da Wind River, - anche se tutto il nuovo sviluppo è concentrato sul - sistema operativo embedded VxWorks. - - - - &macos; - X è l'ultima versione del sistema operativo per - la linea &macintosh; della Apple - Computer Inc.. L'anima BSD &unix; di questo sistema - operativo, Darwin, è - disponibile come un sistema operativo open source completamente - funzionante per computer x86 e PPC. Il sistema grafico Aqua/Quartz - e molti altri aspetti proprietari di &macos; X rimangono comunque - closed source. Numerosi sviluppatori di Darwin sono anche - committer di FreeBSD, e viceversa. - - - - - - Come differisce la licenza BSD dalla GNU Public? - - Linux è disponibile con licenza GNU General Public - License (GPL), che è pensata per eliminare il software - closed source. In particolare, ogni lavoro derivante da un prodotto - rilasciato sotto GPL deve essere fornito anche con il codice sorgente, - se richiesto. Al contrario, la licenza - BSD è meno restrittiva: le distribuzioni dei soli - binari sono permesse. Ciò è particolarmente attraente per - le applicazioni embedded. - - - - Cos'altro dovrei sapere? - - Poiché sono disponibili meno applicazioni per BSD che per - Linux, gli sviluppatori BSD hanno creato un pacchetto di - compatibilità con Linux, che permette ai programmi per Linux di - funzionare su BSD. Il pacchetto include sia modifiche al kernel, in - modo da permettere l'esecuzione corretta di chiamate di sistema - Linux, che file di compatibilità, come la libreria C. Non - c'è una differenza notevole nella velocità di esecuzione - tra una applicazione in esecuzione su una macchina Linux ed una - applicazione in esecuzione su una macchina BSD con pari - caratteristiche. - - La natura tutto da una sola fonte di BSD fa sì - che gli aggiornamenti siano molto più semplici da gestire - rispetto alla maggior parte dei casi in Linux. BSD gestisce gli - aggiornamenti della versione di libreria fornendo moduli di - compatibilità per le versioni precedenti, dunque è - possibile eseguire binari di parecchi anni prima senza problemi. - - - - Cosa dovrei usare, BSD o Linux? - - Cosa significa tutto questo in pratica? Chi dovrebbe usare BSD, chi - dovrebbe usare Linux? - - Questa è una domanda molto difficile a cui rispondere. Qui - ci sono alcune linee guida: - - - - Se non è rotto, non aggiustarlo: se usi - già un sistema operativo open source, e ne sei soddisfatto, - probabilmente non c'è ragione di cambiare. - - - - I sistemi BSD, in particolare FreeBSD, possono avere prestazioni - notevolmente migliori di Linux. Ma questo non avviene in tutti i - campi. In molti casi, c'è una differenza minima nelle - prestazioni. In alcuni casi, Linux può comportarsi meglio di - FreeBSD. - - - - In generale, i sistemi BSD hanno una reputazione migliore di - affidabilità, principalmente come risultato di una base di - codice più maturo. - - - - I progetti BSD hanno una reputazione migliore per quanto - concerne qualità e completezza della loro documentazione. - I diversi progetti di documentazione mirano a fornire attivamente - documentazione aggiornata, in molte lingue, e coprendo tutti - gli aspetti del sistema. - - - - La licenza BSD può essere più attraente della - GPL. - - - - BSD può eseguire la maggior parte dei binari Linux, - mentre Linux non può eseguire i binari BSD. Molte - implementazioni di BSD possono anche eseguire i binari di altri - sistemi di tipo &unix;. Come risultato, BSD può - rappresentare un percorso di migrazione più semplice da - altri sistemi rispetto a Linux. - - - - - - Chi fornisce supporto, servizi, e training su BSD? - - BSDi / FreeBSD - Mall, Inc. forniscono contratti di supporto per - FreeBSD da quasi un decennio. - - Inoltre, ognuno dei progetti ha una lista di consulenti a pagamento: - FreeBSD, - NetBSD, - e OpenBSD. - - -
Property changes on: head/it_IT.ISO8859-15/articles/explaining-bsd/article.xml ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/sgml \ No newline at end of property Index: head/it_IT.ISO8859-15/articles/explaining-bsd/Makefile =================================================================== --- head/it_IT.ISO8859-15/articles/explaining-bsd/Makefile (revision 52098) +++ head/it_IT.ISO8859-15/articles/explaining-bsd/Makefile (nonexistent) @@ -1,19 +0,0 @@ -# -# $FreeBSD$ -# -# Articolo: Panoramica su BSD - -DOC?= article - -FORMATS?= html -WITH_ARTICLE_TOC?= YES - -INSTALL_COMPRESSED?=gz -INSTALL_ONLY_COMPRESSED?= - -SRCS= article.xml - -URL_RELPREFIX?= ../../../.. -DOC_PREFIX?= ${.CURDIR}/../../.. - -.include "${DOC_PREFIX}/share/mk/doc.project.mk" Property changes on: head/it_IT.ISO8859-15/articles/explaining-bsd/Makefile ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Index: head/it_IT.ISO8859-15/articles/Makefile.inc =================================================================== --- head/it_IT.ISO8859-15/articles/Makefile.inc (revision 52098) +++ head/it_IT.ISO8859-15/articles/Makefile.inc (nonexistent) @@ -1,5 +0,0 @@ -# -# $FreeBSD$ -# - -DESTDIR?= ${DOCDIR}/it_IT.ISO8859-15/articles/${.CURDIR:T} Property changes on: head/it_IT.ISO8859-15/articles/Makefile.inc ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Index: head/it_IT.ISO8859-15/articles/new-users/article.xml =================================================================== --- head/it_IT.ISO8859-15/articles/new-users/article.xml (revision 52098) +++ head/it_IT.ISO8859-15/articles/new-users/article.xml (nonexistent) @@ -1,1073 +0,0 @@ - - - -
- Per chi è alle Prime Armi sia con FreeBSD che con - &unix; - - - - AnneliseAnderson -
andrsn@andrsn.stanford.edu
-
-
- - 15 Agosto 1997 - - - &tm-attrib.freebsd; - &tm-attrib.ibm; - &tm-attrib.microsoft; - &tm-attrib.netscape; - &tm-attrib.opengroup; - &tm-attrib.general; - - - $FreeBSD$ - - - Congratulazioni per aver installato FreeBSD! Questa introduzione - é per chi é alle prime armi con FreeBSD - e &unix;—perciò comincia dalle basi. - Stai certamente usando la versione 2.0.5 o una più recente di - &os; distribuita da &os;.org, il tuo sistema ha (per il momento) un - solo utente (te stesso)—e sei probabilmente abbastanza bravo - con DOS/&windows; o &os2;. - - &trans.it.max; - -
- - - Entrare ed Uscire dal Sistema - - Entra (quando vedi login:) come l'utente che - hai creato durante l'installazione oppure come - root. (La tua installazione di FreeBSD dovrebbe - già avere un account di root; che può - andare ovunque e fare qualsiasi cosa, anche cancellare file essenziali, - perciò stai attento!) I simboli &prompt.user; e &prompt.root; - che incontrerai più avanti simboleggiano il prompt (i tuoi - potrebbero essere differenti), dove &prompt.user; indica un utente - ordinario e &prompt.root; indica root. - - Per uscire (e ritrovarsi con un nuovo prompt login:) - scrivi - - - &prompt.root; exit - - - tante volte quanto serve. Sì, premi - invio dopo ogni comando, e ricordati che &unix; fa - distinzione tra maiuscole e minuscole—perciò - exit, non EXIT. - - Per spegnere il computer digita - - - &prompt.root; /sbin/shutdown -h now - - - O per riavviarlo digita - - - &prompt.root; /sbin/shutdown -r now - - - oppure - - - &prompt.root; /sbin/reboot - - - Puoi anche riavviarlo premendo - CtrlAltCanc. - Lasciagli un po' di tempo per compiere il suo lavoro. Questo equivale a - /sbin/reboot nelle versioni più recenti di - FreeBSD ed è molto meglio che premere il bottone di reset. - Non vorrai mica reinstallare tutto da capo, vero? - - - - Aggiungere un Utente con Privilegi di Root - - Se non hai creato un utente durante l'installazione e quindi - sei entrato nel sistema come root, dovresti - probabilmente crearne uno ora tramite - - - &prompt.root; adduser - - - La prima volta che aggiungi un utente, il sistema dovrebbe chiederti - di inserire delle impostazioni di default da applicare. Potresti volere - come shell &man.csh.1; invece di &man.sh.1;, se ti viene consigliato - sh come default. Altrimenti premi solo invio - per accettare i valori proposti. Questi dati vengono salvati in - /etc/adduser.conf, un file modificabile - successivamente a mano. - - Supponiamo che tu voglia creare l'utente jack di - nome reale Jack Benimble. Assegna a - jack una password per ragioni di sicurezza (anche i - bambini che gironzolano per casa potrebbero mettere le mani sulla - tastiera). Quando ti viene chiesto se vuoi invitare - jack in un altro gruppo, digita - wheel - - - Login group is ``jack''. Invite jack into other groups: wheel - - - Questo ti permetterà di entrare come l'utente - jack e usare il comando &man.su.1; - per diventare root. A quel punto non sarai - più preso in giro per essere entrato direttamente come - root. - - Puoi uscire da adduser in qualsiasi momento - premendo CtrlC, - e alla fine avrai l'opportunità di approvare il nuovo utente oppure - premere n per non farlo. Potresti voler creare un - secondo utente cosicché quando andrai a modificare i file - di jack avrai un'ancora di salvezza in caso qualcosa - vada male. - - Una volta fatto questo, usa exit per tornare al - prompt di login ed entrare come jack. - In generale è meglio cercare di lavorare da utente normale - in modo da non avere il potere—e il rischio—di - root. - - Se hai già creato un utente e vuoi che quell'utente sia in - grado di usare su per diventare - root, puoi entrare come root e - modificare il file /etc/group, aggiungendo - jack alla prima linea (il gruppo - wheel). Ma prima devi fare pratica con - &man.vi.1;, l'editor di testo—oppure usa il più semplice - &man.ee.1;, installato sulle recenti versioni di FreeBSD. - - Per cancellare un utente, usa il comando - rmuser. - - - - Diamoci un'occhiata in giro - - Una volta avuto accesso come utente normale, guardati in giro e prova - alcuni dei comandi che ti daranno accesso alle fonti di aiuto e di - informazioni su FreeBSD. - - Ecco qui una lista di comandi e le loro funzioni: - - - - id - - - Ti dice chi sei! - - - - - pwd - - - Ti mostra dove sei—la directory in cui stai - lavorando. - - - - - ls - - - Ti mostra una lista dei file contenuti nella directory. - - - - - ls -F - - - Ti mostra un elenco dei file contenuti nella directory ponendo - * dopo i file eseguibili, - / dopo le directory, e - @ dopo i collegamenti simbolici. - - - - - ls -l - - - Mostra un elenco di file nel formato lungo—grandezza, - data, permessi. - - - - - ls -a - - - Mostra una lista dei file nascosti, cioè con un - punto davanti al nome, insieme agli altri. - Se sei root, i file puntati - vengono mostrati anche senza l'opzione . - - - - - cd - - - Cambia la directory di lavoro. cd - .. torna alla directory - superiore; nota lo spazio dopo cd. cd - /usr/local va nella directory - specificata. cd ~ va - nella directory home dell'utente collegato in quel - momento—per esempio, /usr/home/jack. - Prova cd /cdrom, e poi - ls, per scoprire se il tuo CDROM è - montato e funziona. - - - - - view - nomefile - - - Mostra il contenuto del file (chiamato - nomefile) senza modificarlo. - Prova view - /etc/fstab. - Digita :q per uscire. - - - - - cat nomefile - - - Mostra nomefile sullo schermo. - Se è troppo lungo e ne puoi vedere solo la fine, - premi BlocScorr e usa - freccia-su per muoverti in alto; puoi usare - BlocScorr anche con le pagine man. Premi ancora - BlocScorr per uscire dallo scorrimento. Potresti - provare cat con alcuni dei file - nascosti presenti nella tua directory home—cat - .cshrc, cat - .login, cat - .profile. - - - - - Noterai degli alias in .cshrc per - alcuni dei comandi ls (sono molto - convenienti). Puoi creare degli altri alias modificando - .cshrc. Puoi far sì che questi alias - diventino disponibili a tutti gli utenti mettendoli nel file - di configurazione generale di csh, - /etc/csh.cshrc. - - - - Ottenere Aiuto e Informazioni - - Ecco alcune risorse utili per ottenere aiuto. - Testo è qualcosa che puoi - digitare a tuo piacere—normalmente si tratta di un comando - o del nome di un file. - - - - apropos - testo - - - Tutto ciò che contiene la stringa - testo nel database - whatis. - - - - - man - testo - - - Mostra la pagina man di testo, - la maggior risorsa di documentazione per i sistemi Un*x. - man ls ti dirà - tutti i modi possibili per usare il comando ls. - Premi Invio per muoverti nel testo, - CtrlB - per andare indietro di una pagina, - CtrlF - per andare avanti, q oppure - CtrlC - per uscire. - - - - - which - testo - - - Ti dice dove si trova il comando - testo nel path dell'utente. - - - - - locate - testo - - - Ti dice tutte le directory nei path dell'utente in cui si trova - il comando testo. - - - - - whatis - testo - - - Ti dice che cosa fa il comando - testo e la sua pagina man. - Digitando whatis * ti verranno presentate tutte - le pagine man associate agli eseguibili presenti nella directory - corrente. - - - - - whereis - testo - - - Trova il file testo, dandoti il suo - percorso completo. - - - - - Potresti voler provare ad usare whatis con - alcuni comandi utili come cat, - more, grep, - mv, find, - tar, chmod, - chown, date, e - script. more ti permette - di leggere una pagina alla volta come in DOS, ad esempio, ls -l | - more oppure more - nomefile. - * ha valore assoluto—per esempio, ls - w* mostra tutti i file che cominciano con - w. - - Per caso alcuni di questi comandi non funzionano correttamente? Sia - &man.locate.1;, sia &man.whatis.1; dipendono da - un database che viene ricostruito settimanalmente. Se la tua macchina - non sarà lasciata accesa per il fine settimana (usando FreeBSD), - può darsi che tu voglia usare i comandi per la manutenzione - giornaliera, settimanale, e mensile ogni tanto. Falli partire come - root e lascia loro il tempo di finire il lavoro - prima di farne partire un altro. - - - &prompt.root; periodic daily -output tralasciato -&prompt.root; periodic weekly -output tralasciato -&prompt.root; periodic monthly -output tralasciato - - - Se ti stufi di aspettare, premi - AltF2 per - avere un'altra console virtuale, e poterti loggare - nuovamente. Dopotutto è un sistema multi-utente, e multi-tasking. - Probabilmente questi comandi produrranno dei messaggi sullo - schermo quando lavorano; puoi digitare - clear per pulire lo schermo. - Quando hanno finito, dovresti dare un'occhiata a - /var/mail/root e - /var/log/messages. - - Usare tali comandi fa parte dell'amministrazione di - sistema—e come utente singolo di un sistema &unix;, - sei tu l'amministratore del sistema. Praticamente l'unica cosa - per la quale è necessario che tu sia root - è l'amministrazione. Queste responsabilità non vengono - trattate bene nemmeno in quei grossi libri su &unix;, che sembrano - dedicare troppo spazio all'uso dei menu nei windows manager. Potresti - voler leggere uno dei più interessanti libri sull'amministrazione - di sistema, come UNIX System Administration - Handbook di Evi Nemeth et.al. (Prentice-Hall, 1995, - ISBN 0-13-15051-7)—la seconda edizione con la copertina rossa; - oppure Essential System Administration di - Æleen Frisch (O'Reilly & Associates, 2002, ISBN 0-596-00343-9). - Io ho usato quello di Nemeth. - - - - Modificare File di Testo - - Per poter configurare il tuo sistema, devi modificare dei file. Molti - di questi saranno in /etc; e avrai bisogno - del comando su per diventare root - e poter così modificarli. Puoi usare il semplice editor - ee, ma alla lunga risulta più utile imparare - vi. C'é un eccellente tutorial su - vi in - /usr/src/contrib/nvi/docs/tutorial se hai installato - i sorgenti di sistema. - - Prima di modificare un file, dovresti farne una copia. - Supponiamo tu voglia modificare /etc/rc.conf. Puoi - semplicemente usare cd /etc per andare in - /etc e fare: - - - &prompt.root; cp rc.conf rc.conf.orig - - - Questo copierà rc.conf in - rc.conf.orig, e potrai successivamente copiare - rc.conf.orig in - rc.conf per tornare all'originale. Ma ancora meglio - sarà spostare (rinominare) il file per poi ricopiarlo con il nome - originale: - - - &prompt.root; mv rc.conf rc.conf.orig -&prompt.root; cp rc.conf.orig rc.conf - - - perché il comando mv mantiene - la data e il proprietario originali del file. Puoi ora modificare - rc.conf. Se vuoi tornare all'originale, - potresti fare mv rc.conf rc.conf.myedit - (assumendo che vuoi tenere la versione modificata) e - quindi fare - - - &prompt.root; mv rc.conf.orig rc.conf - - - per tornare allo stato iniziale. - - Per modificare un file, digita - - - &prompt.root; vi nomefile - - - Muoviti nel testo con i tasti freccia. - Esc mette vi - in modalità comando. Ecco qui alcuni dei comandi: - - - - x - - - cancella la lettera su cui si trova il cursore - - - - - dd - - - cancella l'intera riga (anche se va a capo sullo schermo) - - - - - i - - - inserisci del testo nella posizione del cursore - - - - - a - - - inserisci del testo dopo il cursore - - - - - Quando digiti i o a, - puoi inserire del testo. Esc ti riporta in - modalità comando dove puoi digitare - - - - :w - - - per salvare le modifiche sul disco e continuare a - modificare il file - - - - - :wq - - - per salvare le modifiche e uscire - - - - - :q! - - - per uscire senza salvare le modifiche - - - - - /testo - - - per spostare il cursore su testo; - /Invio - per trovare la prossima occorrenza di - testo. - - - - - G - - - per andare alla fine del file - - - - - nG - - - per andare alla riga n del - file, dove n è un numero - - - - - CtrlL - - - per ridisegnare lo schermo - - - - - Ctrlb e - Ctrlf - - - vai avanti e indietro di una pagina, come succede con - more e view. - - - - - Fai un po' di pratica con vi nella tua directory - home creando un nuovo file digitando vi - nomefile e aggiungendo - e cancellando del testo, salvando il file, e riaprendolo di nuovo. - vi è pieno di sorprese perché è - abbastanza complesso, e ti capiterà di digitare un comando che - farà di sicuro qualcosa che non ti aspetti. (Alcune persone - preferiscono vi—è più potente - dell'EDIT del DOS—scopri il comando :r) - Usa Esc una o più volte per essere sicuro di - essere in modalità comando e continua da lì quando hai dei - problemi, salva spesso con :w, e usa - :q! per uscire e ricominciare (dal tuo ultimo - :w) quando ne hai bisogno. - - Ora puoi usare cd per andare in - /etc, su per diventare - root, vi per modificare il file - /etc/group, e aggiungere un utente al gruppo - wheel cosicché possa avere privilegi di - root. Aggiungi solo una virgola e il nome di login - dell'utente alla fine della prima riga del file, premi - Esc, e usa :wq per salvare - il file su disco e uscire. La modifica ha effetto immediato. (Non hai - lasciato uno spazio dopo la virgola, vero?) - - - - Stampa di File da DOS - - A questo punto la tua stampante non funzionerà ancora sotto - FreeBSD, ecco quindi un sistema per creare un file da una pagina man, - metterlo su un floppy, e quindi stamparlo da DOS. Supponiamo che tu - voglia leggere attentamente come cambiare i permessi sui file (abbastanza - importante). Puoi usare man chmod per leggere come - fare. Il comando - - - &prompt.user; man chmod | col -b > chmod.txt - - - toglierà gli elementi di formattazione e manderà il - tutto sul file chmod.txt al posto di mostrare il - contenuto sullo schermo. Ora metti un dischetto formattato DOS nel - lettore, digita su per diventare - root, e scrivi - - - &prompt.root; /sbin/mount -t msdos /dev/fd0 /mnt - - - per montare il floppy su /mnt. - - Ora (non hai più bisogno di essere root, - e puoi digitare exit per tornare ad essere l'utente - jack) puoi andare nella directory in cui hai creato - chmod.txt e copiare il file sul floppy - digitando: - - - &prompt.user; cp chmod.txt /mnt - - - e usare ls /mnt per vedere il - contenuto di /mnt, che dovrebbe contenere il file - chmod.txt. - - In particolare potresti voler creare un file con l'output di - /sbin/dmesg digitando - - - &prompt.user; /sbin/dmesg > dmesg.txt - - - e copiare dmesg.txt sul floppy. - /sbin/dmesg è il file di log di avvio, ed - è importante comprenderlo perché ti mostra cosa ha trovato - FreeBSD all'avvio. Se poni delle domande sulla &a.questions; - o su un gruppo USENET—del tipo FreeBSD non trova il mio drive - per i nastri, che cosa faccio?—la gente vorrà - sapere cosa mostra il tuo dmesg. - - Ora devi smontare il floppy (da root) per poter - togliere il disco - - - &prompt.root; /sbin/umount /mnt - - - e riavviare per tornare in DOS. Copia questo file in una - directory DOS, richiamali con l'EDIT del DOS, Notepad o Wordpad di - &windows;, o un editor di testi, fai una piccola modifica in modo che - il file debba essere salvato, e stampa come faresti da DOS o - &windows;. Spera che funzioni! Le pagine man vengono meglio se - stampate con il comando DOS print. (Copiare i file - da FreeBSD su una partizione DOS montata è ancora in alcuni casi - rischioso.) - - Far funzionare la stampante sotto FreeBSD consiste nel creare - un opportuno elemento in /etc/printcap e - creare una directory di spool corrispondente in - /var/spool/output. Se la tua stampante è su - lpt0 (ciò che DOS chiama - LPT1), devi solo andare in - /var/spool/output e (da root) - creare la directory lpd digitando: mkdir - lpd, se non è già presente. A quel punto la - stampante dovrebbe rispondere quando il sistema parte, e - lp o lpr dovrebbero mandare un - file alla stampante. Che il file venga stampato o meno è solo - questione di configurazione, che è discussa nel Manuale di FreeBSD. - - - - Altri Comandi Utili - - - - df - - - mostra lo spazio disponibile e tutte le partizioni - montate. - - - - - ps aux - - - mostra i processi in esecuzione. ps ax - è una forma contratta. - - - - - rm nomefile - - - cancella nomefile. - - - - - rm -R dir - - - cancella la directory dir e tutte le - sottodirectory—attenzione! - - - - - ls -R - - - mostra il contenuto della directory e delle sue - sottodirectory; io usavo una variante, ls -AFR > - where.txt, per avere una lista dei file in - / e (separatamente) - /usr prima che scoprissi dei metodi migliori - per cercare i file. - - - - - passwd - - - per cambiare la password dell'utente (o di - root) - - - - - man hier - - - pagina man sul file system di &unix; - - - - - Usa find per trovare nomefile - in /usr o nelle sue sottodirectory digitando - - - &prompt.user; find /usr -name "nomefile" - - - Puoi usare * come identificatore universale in - "nomefile" - (che dovrebbe essere tra virgolette). Se dici a - find di cercare in / - anziché /usr cercherà il/i file su - tutti i file system montati, inclusi i CDROM e le partizioni DOS. - - Un libro eccellente che tratta i comandi e le utility di &unix; - è Unix for the Impatient di Abrahams & - Larson (2nd ed., Addison-Wesley, 1996). - Ci sono anche un sacco di informazioni su &unix; su Internet. - - - - Prossimi Passi - - Dovresti ora avere gli strumenti necessari per girare nel sistema e - modificare i file, così da poter rendere tutto funzionante. Ci - sono un sacco di informazioni nel Manuale di FreeBSD (che è - probabilmente sul tuo disco rigido) e sul sito web di FreeBSD. Una - grande scelta di package e port è presente sul CDROM così - come sul sito web. Il manuale ti spiega come usarli - (prendi il package se esiste, con pkg_add - /cdrom/packages/All/nomepackage, - dove nomepackage è il nome del file del - package). Il CDROM ha una lista di package e di port - con delle brevi descrizioni in cdrom/packages/index, - cdrom/packages/index.txt, e - cdrom/ports/index, e con descrizioni più ampie - in /cdrom/ports/*/*/pkg/DESCR, dove - * rappresenta rispettivamente sottodirectory di tipi di - programmi e nomi di programmi. - - Se trovi il manuale troppo difficile su come installare i port dal - CDROM (con il sistema di lndir e altro), ecco come - funziona normalmente: - - Trova il port che vuoi, supponiamo kermit. - Ci sarà una directory per lui sul CDROM. Copia la - sottodirectory in /usr/local (un buon posto - perché il software che aggiungi sia disponibile a tutti gli utenti) - con: - - - &prompt.root; cp -R /cdrom/ports/comm/kermit /usr/local - - - Questo dovrebbe portarti ad avere la sottodirectory - /usr/local/kermit che contiene tutti i file - presenti nella sottodirectory kermit del CDROM. - - Ora, crea la directory - /usr/ports/distfiles se non esiste ancora, - usando mkdir. Poi controlla - /cdrom/ports/distfiles cercando un file - con il nome che indica che si tratta del port esatto. Copia quel file in - /usr/ports/distfiles; nelle versioni più - recenti puoi saltare questo passo, perché FreeBSD lo farà - per te. Nel caso di kermit, non c'è nessun - distfile. - - Quindi entra con cd nella sottodirectory di - /usr/local/kermit che contiene il file - Makefile. Digita - - - &prompt.root; make all install - - - Durante questo processo il port userà FTP per scaricare - i file compressi che non ha trovato sul CDROM o in - /usr/ports/distfiles. Se la tua connessione - non funziona ancora e non c'è nessun file per il port in - /cdrom/ports/distfiles, dovrai - recuperare il distfile usando un'altra macchina e poi copiarlo in - /usr/ports/distfiles da un dischetto o dalla - partizione DOS. Leggi Makefile (usando - cat o more oppure - view) per scoprire dove andare (il sito principale - di distribuzione) per trovare il file e conoscere il suo nome. Il nome - verrà troncato quando scaricato da DOS, e dopo averlo trasferito - in /usr/ports/distfiles dovrai - rinominarlo (usando il comando mv) nel suo - nome originale cosicché possa essere trovato. (Usa il - trasferimento di file binario!) - Quindi torna in /usr/local/kermit, trova la - directory contenente Makefile, e digita - make all install. - - Un'altra cosa che può succedere quando si installa un port o un - package è che questi abbiano bisogno di un altro programma. Se - l'installazione si ferma con un messaggio can't find - unzip o simile, potresti dover installare il - package o il port di unzip prima di proseguire. - - Una volta installato, digita rehash per far - sì che FreeBSD rilegga i file contenuti nel path e sappia quali - sono presenti. - (Se trovi un sacco di messaggi path not found - quando usi whereis o which, dovresti - fare delle aggiunte all'elenco delle directory nel - file .cshrc nella tua directory home. - L'elenco dei path in &unix; fa la stessa - cosa che fa in DOS, tranne che la directory corrente (di - default) non si trova nel path per ragioni di sicurezza; se il comando - che vuoi eseguire è nella directory in cui ti trovi, devi digitare - ./ prima del nome del comando; niente - spazio dopo la barra.) - - Potresti volere la versione più recente di &netscape; - dal loro sito FTP. - (&netscape; necessita dell'X Window System.) Ora c'é una versione - per FreeBSD, quindi dà un'occhiata in giro. Usa solo - gunzip nomefile e - tar xvf nomefile sul file, - sposta il binario in /usr/local/bin o qualche altro - posto in cui vengono tenuti i binari, esegui rehash, e - quindi aggiungi le seguenti linee a .cshrc in tutte - le directory home degli utenti oppure (più semplicemente) in - /etc/csh.cshrc, il file di configurazione globale di - csh: - - - setenv XKEYSYMDB /usr/X11R6/lib/X11/XKeysymDB -setenv XNLSPATH /usr/X11R6/lib/X11/nls - - - Questo assume che il file XKeysymDB - e la directory nls siano in - /usr/X11R6/lib/X11; se non lo sono, trovale - e mettile lì. - - Se hai originariamente installato &netscape; dal CDROM (o via - FTP), non sostituire /usr/local/bin/netscape - con il nuovo binario di netscape; questo è solo uno script di shell - che imposta le variabili di ambiente per te. Rinomina invece - il nuovo binario in netscape.bin e rimpiazza il - vecchio binario, che dovrebbe essere - /usr/local/netscape/netscape. - - - - Il tuo Ambiente di Lavoro - - La shell è la parte più importante del tuo ambiente - di lavoro. In DOS, la shell è solitamente command.com. La shell - è ciò che interpreta i comandi che digiti sulla linea di - comando, e quindi comunica con il resto del sistema operativo. - Puoi anche scrivere script di shell, che sono come i file batch di - DOS: una serie di comandi che devono essere eseguiti senza il tuo - intervento. - - Due shell vengono normalmente installate con FreeBSD: - csh e sh. - csh è buona per lavoro da linea di comando, ma - gli script dovrebbero essere scritti usando sh (o - bash). Puoi scoprire che shell hai - digitando echo $SHELL. - - csh è una buona shell, ma - tcsh fa tutto ciò che csh - fa e anche altro. Ti permette di richiamare i comandi usando - le frecce e ti permette di modificarli. Ha l'auto-completamento dei nomi - di file con tab (csh usa Esc), e - ti permette di tornare alla directory in cui eri digitando - cd -. È anche più semplice alterare il - prompt con tcsh. Ti rende la vita più - facile. - - Ecco tre semplici passi per installare una nuova shell: - - - - Installa la shell tramite port o package, come faresti - con un qualsiasi altro port o package. Usa - rehash e which tcsh - (assumendo che tu stia installando tcsh) per - essere sicuro di averla installata. - - - - Da root, modifica - /etc/shells, aggiungendo una riga nel file per - la nuova shell, in questo caso - /usr/local/bin/tcsh, e salva il file. - (Alcuni port lo fanno per te.) - - - - Usa il comando chsh per cambiare - permanentemente la tua shell in tcsh, o digita - tcsh al prompt per cambiare la shell senza - dover uscire dal sistema per poi rientrare. - - - - - Può essere pericoloso cambiare la shell di - root in qualcosa di diverso da - sh o csh su versioni più - recenti di FreeBSD e di &unix;; potresti non avere una shell - funzionante se il sistema entra in modalità singolo utente. - La soluzione è usare su -m per diventare - root, che ti dà tcsh come - shell di root, poiché la shell è - parte del tuo ambiente. Puoi rendere tutto ciò permanente - aggiungendo al tuo .tcshrc un alias con: - alias su su -m - - - Quando tcsh parte, legge i file - /etc/csh.cshrc e - /etc/csh.login, come farebbe - csh. Leggerà anche il file - .login nella tua directory home ed anche - .cshrc, a meno che tu non abbia un file - .tcshrc. Puoi crearlo copiando - .cshrc in .tcshrc. - - Ora che hai installato tcsh, puoi sistemare - il tuo prompt. Puoi trovare i dettagli nella pagina man di - tcsh, ma ecco qui una linea da mettere nel tuo - .tcshrc che ti dirà quanti comandi hai - digitato, che ore sono, e in che directory - ti trovi. Produce anche un > se sei un - utente normale e un # se sei root, - ma tcsh lo farebbe in ogni caso: - - set prompt = "%h %t %~ %# " - - Questa dovrebbe andare nella stessa posizione della linea di - prompt corrente se ce n'è una, o sotto "if($?prompt) then" in caso - contrario. Commenta la vecchia riga; così potrai tornare a quella - vecchia se la preferirai. Non dimenticare gli spazi e le virgolette. - Puoi far rileggere .tcshrc digitando - source .tcshrc. - - Puoi avere una lista delle variabili di sistema che sono state - impostate digitando env al prompt. - Il risultato ti mostrerà il tuo editor di default, il pager, e il - tipo di terminale, tra le altre possibili variabili. Un comando - utile se ti connetti al sistema da una postazione remota e non riesci ad - eseguire un programma perché il terminale non ne è capace - è setenv TERM vt100. - - - - Altro - - Da tcsh puoi smontare il CDROM con - /sbin/umount /cdrom, toglilo dal lettore, - inseriscine un altro, e montalo con - /sbin/mount_cd9660 /dev/cd0a /cdrom assumendo che - cd0a sia il nome di dispositivo del tuo lettore di - CDROM. La versione più recente di FreeBSD ti permette di montare - il CDROM solo con /sbin/mount /cdrom. - - Usare il live file system—il secondo cd del set - di FreeBSD—è - utile se hai poco spazio a disposizione. Ciò che si trova - sul live file system cambia da release a release. Potresti - provare ad eseguire dei giochi dal CDROM. Questo comporta l'uso di - lndir, che viene installato con l'X Window - System, per dire ai programmi dove trovare i file necessari, poiché - questi si trovano nel file system /cdrom - anziché /usr e le sue - sottodirectory, che è dove dovrebbero essere. Leggi - man lndir per avere più informazioni. - - - - I Commenti sono Benvenuti - - Se usi questa guida, sarei interessata a sapere dove non è - chiara, ciò che è stato tralasciato e che vorresti venisse - incluso, e sapere se tutto ciò è stato utile. I miei - ringraziamenti vanno a Eugene W. Stark, professore di informatica a - SUNY-Stony Brook, e John Fieber per i suoi utili commenti. - - Annelise Anderson, andrsn@andrsn.stanford.edu - - Per questioni legate alla traduzione, o se avete commenti da poter - esprimere solo in italiano, non esitate a contattarmi. Come per l'autrice - originale, ogni genere di commenti è ben accetto. - - Massimiliano Stucchi, stucchi@willystudios.com - -
Property changes on: head/it_IT.ISO8859-15/articles/new-users/article.xml ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/sgml \ No newline at end of property Index: head/it_IT.ISO8859-15/articles/new-users/Makefile =================================================================== --- head/it_IT.ISO8859-15/articles/new-users/Makefile (revision 52098) +++ head/it_IT.ISO8859-15/articles/new-users/Makefile (nonexistent) @@ -1,18 +0,0 @@ -# -# $FreeBSD$ -# -# Articolo: Per chi e' alle Prime Armi sia con FreeBSD che con Unix - -DOC?= article - -FORMATS?= html - -INSTALL_COMPRESSED?=gz -INSTALL_ONLY_COMPRESSED?= - -SRCS= article.xml - -URL_RELPREFIX?= ../../../.. -DOC_PREFIX?= ${.CURDIR}/../../.. - -.include "${DOC_PREFIX}/share/mk/doc.project.mk" Property changes on: head/it_IT.ISO8859-15/articles/new-users/Makefile ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Index: head/it_IT.ISO8859-15/articles/vm-design/article.xml =================================================================== --- head/it_IT.ISO8859-15/articles/vm-design/article.xml (revision 52098) +++ head/it_IT.ISO8859-15/articles/vm-design/article.xml (nonexistent) @@ -1,1036 +0,0 @@ - - - -
- Elementi di progettazione del sistema di VM di FreeBSD - - - - MatthewDillon -
- dillon@apollo.backplane.com -
-
-
- - - &tm-attrib.freebsd; - &tm-attrib.linux; - &tm-attrib.microsoft; - &tm-attrib.opengroup; - &tm-attrib.general; - - - $FreeBSD$ - - $FreeBSD$ - - - Il titolo è in realtà solo un modo complicato per dire - che cercherò di descrivere l'intera enchilada della memoria - virtuale (VM), sperando di farlo in una maniera che chiunque possa - seguire. - Nell'ultimo anno mi sono concentrato su un certo numero di sottosistemi - principali del kernel in FreeBSD, trovando quelli della VM (la memoria - virtuale) e dello Swap i più interessanti, e considerando quello - di NFS un lavoretto necessario. - Ho riscritto solo piccole porzioni di quel codice. Nell'arena - della VM la sola grossa riscrittura che ho affrontato è stata - quella del sottosistema di swap. - La maggior parte del mio lavoro è stato di pulizia e - mantenimento, con solo alcune moderate riscritture di codice e - nessuna correzione rilevante a livello algoritmico nel sottosistema - della VM. Il nocciolo della base teorica del sottosistema - rimane immutato ed un bel po' del merito per gli sforzi di - modernizzazione negli ultimi anni appartiene a John Dyson e David - Greenman. Poiché non sono uno storico come Kirk non - tenterò di marcare tutte le varie caratteristiche con i nomi - delle relative persone, perché sbaglierei - invariabilmente. - - &trans.it.surrender; - - - - Questo articolo è stato pubblicato in origine nel numero di - gennaio 2000 di DaemonNews. - Questa versione dell'articolo può includere aggiornamenti da - parte di Matt e di altri autori per riflettere i cambiamenti - nell'implementazione della VM di FreeBSD. - -
- - - Introduzione - - Prima di andare avanti con la descrizione del progetto effettivo - della VM spendiamo un po' di tempo sulla necessità di mantenere - e modernizzare una qualunque base di codice longeva. - Nel mondo della programmazione, gli algoritmi tendono ad essere più - importanti del codice ed è dovuto alle radici accademiche - di BSD che si è prestata grande attenzione alla progettazione - algoritmica sin dal principio. - Una maggiore attenzione al design in genere conduce ad una base di codice - flessibile e pulita che può essere modificata abbastanza - semplicemente, estesa, o rimpiazzata nel tempo. - Mentre BSD viene considerato un sistema operativo vecchio - da alcune persone, quelli di noi che lavorano su di esso tendono - a considerarlo come una base di codice matura - che ha vari componenti modificati, estesi, o rimpiazzati con codice - moderno. Questa si è evoluta, e FreeBSD è all'avanguardia, - non importa quanto possa essere vecchio qualche pezzo di codice. - Questa è una distinzione importante da fare ed una di quelle che - sfortunatamente sfuggono alla maggior parte delle persone. Il più - grande errore che un programmatore possa fare è non imparare - dalla storia, e questo è precisamente l'errore che molti sistemi - operativi moderni hanno commesso. &windowsnt; è il miglior esempio - di questo, e le conseguenze sono state disastrose. Anche Linux commette - questo errore a un certo livello—abbastanza perché noi - appassionati di BSD possiamo scherzarci su ogni tanto, comunque. - Il problema di Linux è semplicemente la mancanza di esperienza e - di una storia con la quale confrontare le idee, un problema che sta - venendo affrontato rapidamente dalla comunità Linux nello stesso - modo in cui è stato affrontato da quella BSD—con il continuo - sviluppo di codice. La gente di &windowsnt;, d'altro canto, fa - ripetutamente gli stessi errori risolti da &unix; decadi fa e poi impiega - anni nel risolverli. E poi li rifanno, ancora, e ancora. - Soffrono di un preoccupante caso di non è stato progettato - qui e di abbiamo sempre ragione perché il nostro - dipartimento marketing dice così. Io ho pochissima - tolleranza per chiunque non impari dalla storia. - - La maggior parte dell'apparente complessità di progettazione di - FreeBSD, specialmente nel sottosistema VM/Swap, è una conseguenza - diretta dell'aver dovuto risolvere importanti problemi di prestazioni - legati a varie condizioni. Questi problemi non sono dovuti a cattivi - progetti algoritmici ma sorgono invece da fattori ambientali. - In ogni paragone diretto tra piattaforme, questi problemi - diventano più evidenti quando le risorse di sistema cominciano ad - essere stressate. - Mentre descrivo il sottosistema VM/Swap di FreeBSD il lettore - dovrebbe sempre tenere a mente almeno due punti. Primo, l'aspetto - più importante nel design prestazionale è ciò che - è noto come Ottimizzazione del Percorso Critico. - Accade spesso che le ottimizzazioni prestazionali aggiungano - un po di impurità al codice per far migliorare il percorso critico. - Secondo, un progetto solido e generalizzato, funziona meglio di - un progetto pesantemente ottimizzato, alla lunga. Mentre un progetto - generale può alla fin fine essere più lento di un sistema - pesantemente ottimizzato quando vengono implementati inizialmente, il - progetto generalizzato tende ad essere più semplice da adattare - alle condizioni variabili mentre quello pesantemente ottimizzato finisce - per dover essere gettato via. Ogni base di codice che dovrà - sopravvivere ed essere mantenibile per anni deve dunque essere progettata - con attenzione fin dall'inizio anche se questo può portare a - piccoli peggioramenti nelle prestazioni. - Vent'anni fa c'era ancora gente che sosteneva che programmare in assembly - era meglio che programmare in linguaggi di alto livello, perché - si poteva produrre codice che era dieci volte più veloce. Oggi, - la fallacia di tale argomento è ovvia—così come i - paralleli con il design algoritmico e la generalizzazione del - codice. - - - - Oggetti VM - - Il modo migliore per iniziare a descrivere il sistema di VM di FreeBSD - è guardandolo dalla prospettiva di un processo a livello - utente. Ogni processo utente vede uno spazio di indirizzamento della VM - singolo, privato e contiguo, contenente molti tipi di oggetti di memoria. - Questi oggetti hanno varie caratteristiche. - Il codice del programma e i dati del programma sono effettivamente - un singolo file mappato in memoria (il file binario che è stato - eseguito), ma il codice di programma è di sola lettura mentre i - dati del programma sono copy-on-write - I dati copy on write sono dati che vengono copiati solo al momento - della loro effettiva modifica - . Il BSS del programma è solamente una zona di memoria - allocata e riempita con degli zero su richiesta, detta in inglese - demand zero page fill. - Nello spazio di indirizzamento possono essere mappati anche file - arbitrari, che è in effetti il meccanismo con il quale funzionano - le librerie condivise. Tali mappature possono richiedere modifiche per - rimanere private rispetto al processo che le ha effettuate. - La chiamata di sistema fork aggiunge una dimensione completamente nuova - al problema della gestione della VM in cima alla complessità - già data. - - Una pagina di dati di un programma (che è una basilare pagina - copy-on-write) illustra questa complessità. Un programma binario - contiene una sezione di dati preinizializzati che viene inizialmente - mappata direttamente in memoria dal file del programma. - Quando un programma viene caricato nello spazio di memoria virtuale di un - processo, questa area viene inizialmente copiata e mappata in memoria dal - binario del programma stesso, permettendo al sistema della VM di - liberare/riusare la pagina in seguito e poi ricaricarla dal binario. - Nel momento in cui un processo modifica questi dati, comunque, il - sistema della VM deve mantenere una copia privata della pagina per quel - processo. Poiché la copia privata è stata modificata, il - sistema della VM non può più liberarlo, poiché non ci - sarebbe più nessuna possibilità di recuperarlo in - seguito. - - Noterai immediatamente che quella che in origine era soltanto - una semplice mappatura di un file è diventata qualcosa di - più complesso. - I dati possono essere modificati pagina per pagina - mentre una mappatura di file coinvolge molte pagine alla volta. - La complessità aumenta ancora quando un processo esegue una fork. - Quando un processo esegue una fork, il risultato sono due - processi—ognuno con il proprio spazio di indirizzamento privato, - inclusa ogni modifica fatta dal processo originale prima della chiamata a - fork(). Sarebbe stupido per un sistema di VM creare - una copia completa dei dati al momento della fork() - perché è abbastanza probabile che almeno uno dei due - processi avrà bisogno soltanto di leggere da una certa pagina da - quel momento in poi, permettendo di continuare ad usare la - pagina originale. Quella che era una pagina privata viene di nuovo - resa una copy-on-write, poiché ogni processo (padre e figlio) si - aspetta che i propri cambiamenti rimangano privati per loro e non abbiano - effetti sugli altri. - - FreeBSD gestisce tutto ciò con un modello a strati di oggetti - VM. Il file binario originale del programma risulta come lo strato di - Oggetti VM più basso. - Un livello copy-on-write viene messo sopra questo per mantenere quelle - pagine che sono state copiate dal file originale. - Se il programma modifica una pagina di dati appartenente al file originale - il sistema dell VM prende un page fault - Un page fault, o mancanza di pagina, - corrisponde ad una mancanza di una determinata pagina di memoria a un - certo livello, ed alla necessità di copiarla da un livello - più lento. Ad esempio se una pagina di memoria è stata - spostata dalla memoria fisica allo spazio di swap su disco, e viene - richiamata, si genera un page fault e la pagina viene di nuovo copiata - in ram. - e fa una copia della pagina nel livello più alto. - Quando un processo effettua una fork, vengono aggiunti altri livelli di - Oggetti VM. Tutto questo potrebbe avere un po' più senso con un - semplice esempio. - Una fork() è un'operazione comune per ogni - sistema *BSD, dunque questo esempio prenderà in considerazione un - programma che viene avviato ed esegue una fork. Quando il processo viene - avviato, il sistema della VM crea uno starto di oggetti, chiamiamolo - A: - - - - - - - - +---------------+ -| A | -+---------------+ - - - - Un'immagine - - - - A rappresenta il file—le pagine possono essere - spostate dentro e fuori dal mezzo fisico del file se necessario. - Copiare il file dal disco è sensato per un programma, - ma di certo non vogliamo effettuare il page out - La copia dalla memoria al disco, l'opposto del page in, la - mappatura in memoria. - e sovrascrivere l'eseguibile. - Il sistema della VM crea dunque un secondo livello, B, che verrà - copiato fisicamente dallo spazio di swap: - - - - - - - - +---------------+ -| B | -+---------------+ -| A | -+---------------+ - - - - Dopo questo, nella prima scrittura verso una pagina, viene creata una - nuova pagina in B, ed il suo contenuto viene inizializzato con i dati di - A. Tutte le pagine in B possono essere spostate da e verso un dispositivo - di swap. Quando il programma esegue la fork, il sistema della VM crea - due nuovi livelli di oggetti—C1 per il padre e C2 per il - figlio—che restano sopra a B: - - - - - - - - +-------+-------+ -| C1 | C2 | -+-------+-------+ -| B | -+---------------+ -| A | -+---------------+ - - - - In questo caso, supponiamo che una pagina in B venga modificata dal - processo genitore. Il processo subirà un fault di copy-on-write e - duplicherà la pagina in C1, lasciando la pagina originale in B - intatta. - Ora, supponiamo che la stessa pagina in B venga modificata dal processo - figlio. Il processo subirà un fault di copy-on-write e - duplicherà la pagina in C2. - La pagina originale in B è ora completamente nascosta poiché - sia C1 che C2 hanno una copia e B potrebbe teoricamente essere distrutta - (se non rappresenta un vero file); - comunque, questo tipo di ottimizzazione non è triviale da - realizzare perché è di grana molto fine. - FreeBSD non effettua questa ottimizzazione. - Ora, supponiamo (come è spesso il caso) che - il processo figlio effettui una exec(). Il suo - attuale spazio di indirizzamento è in genere rimpiazzato da un - nuovo spazio di indirizzamento rappresentante il nuovo file. - In questo caso il livello C2 viene distrutto: - - - - - - - - +-------+ -| C1 | -+-------+-------+ -| B | -+---------------+ -| A | -+---------------+ - - - - In questo caso, il numero di figli di B scende a uno, e tutti gli - accessi a B avvengono attraverso C1. Ciò significa che B e C1 - possono collassare insieme in un singolo strato. - Ogni pagina in B che esista anche in C1 viene cancellata da - B durante il crollo. Dunque, anche se l'ottimizzazione nel passo - precedente non era stata effettuata, possiamo recuperare le pagine morte - quando il processo esce o esegue una exec(). - - Questo modello crea un bel po' di problemi potenziali. Il primo - è che ci si potrebbe ritrovare con una pila abbastanza profonda di - Oggetti VM incolonnati che costerebbe memoria e tempo per la ricerca - quando accadesse un fault. Può verificarsi un ingrandimento della - pila quando un processo esegue una fork dopo l'altra (che sia il padre o - il figlio). Il secondo problema è che potremmo ritrovarci con - pagine morte, inaccessibili nella profondità della pila degli - Oggetti VM. Nel nostro ultimo esempio se sia il padre che il figlio - modificano la stessa pagina, entrambi hanno una loro copia della pagina e - la pagina originale in B non è più accessibile - da nessuno. Quella pagina in B può essere liberata. - - FreeBSD risolve il problema della profondità dei livelli con - un'ottimizzazione speciale detta All Shadowed Case (caso - dell'oscuramento totale). - Questo caso accade se C1 o C2 subiscono sufficienti COW fault (COW - è l'acronimo che sta per copy on write) da oscurare completamente - tutte le pagine in B. - Ponimo che C1 abbia raggiunto questo livello. C1 può ora - scavalcare B del tutto, dunque invece di avere C1->B->A e C2->B->A adesso - abbiamo C1->A e C2->B->A. - ma si noti cos'altro è accaduto—ora B ha solo un riferimento - (C2), dunque possiamo far collassare B e C2 insieme. - Il risultato finale è che B viene cancellato - interamente e abbiamo C1->A e C2->A. Spesso accade che B contenga un - grosso numero di pagine e ne' C1 ne' C2 riescano a oscurarlo - completamente. Se eseguiamo una nuova fork e creiamo un insieme di - livelli D, comunque, è molto più probabile che uno dei - livelli D sia eventualmente in grado di oscurare completamente l'insieme - di dati più piccolo rappresentato da C1 o C2. La stessa - ottimizzazione funzionerà in ogni punto nel grafico ed il - risultato di ciò è che anche su una macchina con - moltissime fork le pile degli Oggetti VM tendono a non superare una - profondità di 4. Ciò è vero sia per il padre che per - il figlio ed è vero nel caso sia il padre a eseguire la fork ma - anche se è il figlio a eseguire fork in cascata. - - Il problema della pagina morta esiste ancora nel caso C1 o C2 non - oscurino completamente B. A causa delle altre ottimizzazioni questa - eventualità - non rappresenta un grosso problema e quindi permettiamo semplicemente - alle pagine di essere morte. Se il sistema si trovasse con poca memoria - le manderebbe in swap, consumando un po' di swap, ma così - è. - - Il vantaggio del modello ad Oggetti VM è che - fork() è estremamente veloce, poiché - non deve aver luogo nessuna copia di dati effettiva. Lo svantaggio - è che è possibile costruire un meccanismo a livelli di - Oggetti VM relativamente complesso che rallenterebbe la gestione dei page - fault, e consumerebbe memoria gestendo le strutture degli Oggetti VM. - Le ottimizazioni realizzate da FreeBSD danno prova di ridurre - i problemi abbastanza da poter essere ignorati, non lasciando - nessuno svantaggio reale. - - - - Livelli di SWAP - - Le pagine di dati private sono inizialmente o pagine - copy-on-write o pagine zero-fill. - Quando avviene un cambiamento, e dunque una copia, l'oggetto di copia - originale (in genere un file) non può più essere utilizzato - per salvare la copia quando il sistema della VM ha bisogno di - riutilizzarla per altri scopi. A questo punto entra in gioco lo SWAP. Lo - SWAP viene allocato per creare spazio dove salvare memoria che altrimenti - non sarebbe disponibile. FreeBSD alloca la struttura di gestione di - un Oggetto VM solo quando è veramente necessario. - Ad ogni modo, la struttura di gestione dello swap ha avuto storicamente - dei problemi. - - Su FreeBSD 3.X la gestione della struttura di swap prealloca un - array che contiene l'intero oggetto che necessita di subire - swap—anche se solo poche pagine di quell'oggetto sono effettivamente - swappate questo crea una frammentazione della memoria del kernel quando - vengono mappati oggetti grandi, o processi con grandi dimensioni - all'esecuzione (large runsizes, RSS). Inoltre, per poter tenere traccia - dello spazio di swap, viene mantenuta una lista dei buchi - nella memoria del kernel, ed anche questa tende ad essere pesantemente - frammentata. Poiché la lista dei buchi è una - lista lineare, l'allocazione di swap e la liberazione hanno prestazioni - non ottimali O(n) per ogni pagina. - Questo richiede anche che avvengano allocazioni di memoria - durante il processo di liberazione dello swap, e questo crea - problemi di deadlock, blocchi senza uscita, dovuti a scarsa memoria. - Il problema è ancor più esacerbato dai buchi creati a causa - dell'algoritmo di interleaving. - Inoltre il blocco di swap può divenire frammentato molto facilmente - causando un'allocazione non contigua. Anche la memoria del Kernel deve - essere allocata al volo per le strutture aggiuntive di gestione dello - swap quando avviene uno swapout. È evidente che c'era molto spazio - per dei miglioramenti. - - Per FreeBSD 4.X, ho completamente riscritto il sottosistema di swap. - Con questa riscrittura, le strutture di gestione dello swap vengono - allocate attraverso una tabella di hash invece che con un array lineare - fornendo una dimensione di allocazione fissata e una granularità - molto maggiore. - Invece di usare una lista lineare collegata per tenere traccia delle - riserve di spazio di swap, essa usa una mappa di bit di blocchi di swap - organizzata in una struttura ad albero radicato con riferimenti allo - spazio libero nelle strutture nei nodi dell'albero. Ciò rende in - effetti l'operazione di allocazione e liberazione delle risorse - un'operazione O(1). - L'intera mappa di bit dell'albero radicato viene anche preallocata in modo - da evitare l'allocazione di memoria kernel durante le operazioni di swap - critiche nei momenti in cui la memoria disponibile è ridotta. - Dopo tutto, il sistema tende a fare uso dello swap quando ha poca memoria - quindi dovremmo evitare di allocare memoria per il kernel in quei momenti - per poter evitare potenziali deadlock. Infine, per ridurre la - frammentazione l'albero radicato è in grado di allocare grandi - spezzoni contigui in una volta, saltando i pezzetti frammentati. - Non ho ancora compiuto il passo finale di avere un puntatore di - supportoall'allocazione che scorra su una porzione di swap nel - momento in cui vengano effettuate delle allocazioni, in modo da garantire - ancor di più le allocazioni contigue o almeno una località - nel riferimento, ma ho assicurato che un'aggiunta simile possa essere - effettuata. - - - - Quando liberare una pagina - - Poiché il sistema della VM usa tutta la memoria disponibile - per il caching del disco, in genere ci sono pochissime pagine veramente - libere. Il sistema della VM dipende dalla possibilità di - scegliere in maniera appropriata le pagine che non sono in uso per - riusarle in nuove allocazioni. Selezionare le pagine ottimali da liberare - è forse la funzione singola più importante che possa essere - eseguita da una VM perché se si effettua una selezione non - accurata, il sistema della VM può essere forzato a recuperare - pagine dal disco in modo non necessari, degradando seriamente le - prestazioni del sistema. - - Quanto sovraccarico siamo disposti a sopportare nel percorso critico - per evitare di liberare la pagina sbagliata? Ogni scelta sbagliata che - facciamo ci costerà centinaia di migliaia di cicli di CPU ed uno - stallo percettibile nei processi coinvolti, dunque permettiamo un - sovraccarico significativo in modo da poter avere la certezza che la - pagina scelta sia quella giusta. - Questo è il motivo per cui FreeBSD tende ad avere prestazioni - migliori di altri sistemi quando le risorse di memoria vengono - stressate. - - L'algoritmo di determinazione della pagina da liberare - è costruito su una storia di uso delle pagine di memoria. - Per acquisire tale storia, il sistema si avvantaggia di una - caratteristica della maggior parte dell'hardware moderno, il bit che - indica l'attività di una pagina (page-used bit). - - In qualsiasi caso, il page-used bit viene azzerato e in un momento - seguente il sistema della VM passa di nuovo sulla pagina e vede che il - page-used bit è stato di nuovo attivato. Questo indica che la - pagina viene ancora usata attivamente. - Il bit ancora disattivato è un indice che quella pagina non viene - usata attivamente. - Controllando questo bit periodicamente, viene sviluppata una storia - d'uso (in forma di contatore) per la pagina fisica. Quando il sistema - della VM avrà bisogno di liberare delle pagine, controllare questa - storia diventa la pietra angolare nella determinazione del candidato - migliore come pagina da riutilizzare. - - - E se l'hardware non ha un page-used bit? - - Per quelle piattaforme che non hanno questa caratteristica, il - sistema in effetti emula un page-used bit. Esso elimina la mappatura di - una pagina, o la protegge, forzando un page fault se c'è un - accesso successivo alla pagina. - Quando avviene il page fault, il sistema segnala semplicemente - la pagina come usata e la sprotegge in maniera che possa essere usata. - Mentre prendere tale page fault solo per determinare se una pagina - è in uso può apparire una scelta costosa, in realtà - essa lo è molto meno che riusare la pagina per altri scopi, per - dover poi scoprire che un processo ne aveva ancora bisogno e dovere - andare a cercarla di nuovo su disco. - - - FreeBSD fa uso di parecchie code per le pagine per raffinare - ulteriormente la selezione delle pagine da riutilizzare, come anche per - determinare quando le pagine sporche devono essere spostate dalla memoria - e immagazzinate da qualche parte. Poiché le tabelle delle pagine - sono entità dinamiche in FreeBSD, non costa praticamente nulla - eliminare la mappatura di una pagina dallo spazio di indirizzamento di un - qualsiasi processo che la stia usando. Quando una pagina candidata - è stata scelta sulla base del contatore d'uso, questo è - esattamente quello che viene fatto. - Il sistema deve effettuare una distinzione tra pagine pulite che - possono essere teoricamente liberate in qualsiasi momento, e pagine - sporche che devono prima essere scritte (salvate) per poter essere - riutilizzabili. - Quando una pagina candidata viene trovata viene spostata nella coda - delle pagine inattive, se è una pagina sporca, o nella coda di - cache se è pulita. - Un algoritmo separato basato su un rapporto sporche/pulite - determina quando le pagine sporche nella coda inattiva devono essere - scritte su disco. Una volta che è stato fatto questo, le pagine - ormai salvate vengono spostate dalla coda delle inattive alla coda di - cache. A questo punto, le pagine nella coda di cache possono ancora - essere riattivate da un VM fault ad un costo relativamente basso. - Ad ogni modo, le pagine nella coda di cache vengono considerate - immediatamente liberabili e verranno riutilizzate con un - metodo LRU (least-recently used - Usate meno recentemente. Le pagine che non vengono usate da molto - tempo probabilmente non saranno necessarie a breve, e possono essere - liberate. - ) quando il sistema avrà bisogno di allocare nuova - memoria. - - È importante notare che il sistema della VM di FreeBSD tenta - di separare pagine pulite e sporche per l'espressa ragione di evitare - scritture non necessarie di pagine sporche (che divorano banda di I/O), e - non sposta le pagine tra le varie code gratuitamente quando il - sottosistema non viene stressato. Questo è il motivo per cui - dando un systat -vm vedrai sistemi con contatori della - coda di cache bassi e contatori della coda delle pagine attive molto alti. - Quando il sistema della VM diviene maggiormente stressato, esso fa un - grande sforzo per mantenere le varie code delle pagine ai livelli - determinati come più efficenti. - Per anni è circolata la leggenda urbana che Linux facesse un lavoro - migliore di FreeBSD nell'evitare gli swapout, ma in pratica questo non - è vero. Quello che stava effettivamente accadendo era che FreeBSD - stava salvando le pagine inutilizzate proattivamente per fare spazio - mentre Linux stava mantendendo le pagine inutilizzate lasciando meno - memoria disponibile per la cache e le pagine dei processi. - Non so se questo sia vero ancora oggi. - - - - Pre-Faulting e Ottimizzazioni di Azzeramento - - Subire un VM fault non è costoso se la pagina sottostante - è già nella memoria fisica e deve solo essere mappata di - nuovo nel processo, ma può divenire costoso nel caso se ne - subiscano un bel po' su base regolare. Un buon esempio di ciò si - ha eseguendo un programma come &man.ls.1; o &man.ps.1; ripetutamente. - Se il binario del programma è mappato in memoria ma non nella - tabella delle pagine, allora tutte le pagine che verranno accedute dal - programmma dovranno generare un page fault ogni volta che il programma - viene eseguito. - Ciò non è necessario quando le pagine in questione sono - già nella cache della VM, quindi FreeBSD tenterà di - pre-popolare le tabelle delle pagine di un processo con quelle pagine che - sono già nella VM Cache. Una cosa che FreeBSD non fa ancora - è effettuare il pre-copy-on-write di alcune pagine nel caso di una - chiamata a exec. - Ad esempio, se esegui il programma &man.ls.1; mentre stai eseguendo - vmstat 1 noterai che subisce sempre un certo numero - di page fault, anche eseguendolo ancora e ancora. Questi sono - zero-fill fault, legati alla necessità di azzerare memoria, - non program code fault, legati alla copia dell'eseguibile in memoria - (che erano già stati gestiti come pre-fault). - Pre-copiare le pagine all'exec o alla fork è un'area che potrebbe - essere soggetta a maggior studio. - - Una larga percentuale dei page fault che accadono è composta di - zero-fill fault. In genere è possibile notare questo fatto - osservando l'output di vmstat -s. - Questi accadono quando un processo accede a pagine nell'area del BSS. - Ci si aspetta che l'area del BSS sia composta inizialmente da zeri - ma il sistema della VM non si preoccupa di allocare nessuna memoria - finché il processo non ne ha effettivamente bisogno. - Quindi nel momento in cui accade un fault il sistema della VM non - deve solo allocare una nuova pagina, ma deve anche azzerarla. - Per ottimizzare l'operazione di azzeramento, il sistema della VM - ha la capacità di pre-azzerare le pagine e segnalarle come tali, - e di richiedere pagine pre-azzerate quando avvengono zero-fill fault. - Il pre-azzeramento avviene quando la CPU è inutilizzata ma il - numero di pagine che vengono pre-azzerate dal sistema è limitato - per evitare di spazzare via la cache della memoria. Questo è un - eccellente esempio di complessità aggiunta al sistema della VM per - ottimizare il percorso critico. - - - - Ottimizzazioni della Tabella delle Pagine - - Le ottimizzazioni alla tabella delle pagine costituiscono - La parte più controversa nel design della VM di FreeBSD ed ha - mostrato un po' di affanno con l'avvento di un uso pesante di - mmap(). - Penso che questa sia una caratteristiche della maggior parte dei - BSD anche se non sono sicuro di quando è stata introdotta - la prima volta. Ci sono due ottimizzazioni maggiori. La prima è - che le tabelle della pagine hardware non contengono uno stato persistente - ma possono essere gettate via in qualsiasi momento con un sovraccarico di - gestione minimo. - La seconda è che ogni pagina attiva nel sistema ha una struttura di - controllo pv_entry che è integrata con la - struttura vm_page. FreeBSD può semplicemente - operare attraverso quelle mappature di cui è certa l'esistenza, - mentre Linux deve controllare tutte le tabelle delle pagine che - potrebbero contenere una mappatura specifica per - vedere se lo stanno effettivamente facendo, il che può portare ad - un sovraccarico computazionale O(n^2) in alcune situazioni. - È per questo che FreeBSD tende a fare scelte migliori su quale - pagina riutilizzare o mandare in swap quando la memoria è messa - sotto sforzo, fornendo una miglior performance sotto carico. Comunque, - FreeBSD richiede una messa a punto del kernel per accomodare situazioni - che richiedano grandi spazi di indirizzamento condivisi, come quelli che - possono essere necessari in un sistema di news perché potrebbe - esaurire il numero di struct pv_entry. - - Sia Linux che FreeBSD necessitano di lavoro in quest'area. - FreeBSD sta cercando di massimizzare il vantaggio di avere un modello di - mappatura attiva potenzialmente poco denso (non tutti i processi hanno - bisogno di mappare tutte le pagine di una libreria condivisa, ad esempio), - mentre linux sta cercando di semplificare i suoi algoritmi. FreeBSD - generalmente ha dei vantaggi prestazionali al costo di un piccolo spreco - di memoria in più, ma FreeBSD crolla nel caso in cui un grosso file - sia condiviso massivamente da centinaia di processi. - Linux, d'altro canto, crolla nel caso in cui molti processi mappino a - macchia di leopardo la stessa libreria condivisa e gira in maniera non - ottimale anche quando cerca di determinare se una pagina deve essere - riutilizzata o no. - - - - Colorazione delle Pagine - - Concluderemo con le ottimizzazioni di colorazione delle pagine. - La colorazione delle pagine è un'ottimizzazione prestazionale - progettata per assicurare che gli accessi a pagine contigue nella memoria - virtuale facciano il miglior uso della cache del processore. Nei - tempi antichi (cioè più di 10 anni fa) le cache dei - processori tendevano a mapparela memoria virtuale invece della memoria - fisica. Questo conduceva ad un numero enorme di problemi inclusa la - necessità di ripulire la cache ad ogni cambio di contesto, in - alcuni casi, e problemi con l'aliasing dei dati nella cache. - Le cache dei processori moderni mappano la memoria fisica proprio per - risolvere questi problemi. - Questo significa che due pagine vicine nello spazio di indirizzamento - dei processi possono non corrispondere a due pagine vicine nella cache. - In effetti, se non si è attenti pagine affiancate nella memoria - virtuale possono finire con l'occupare la stessa pagina nella cache del - processore—portando all'eliminazione prematura di dati - immagazzinabili in cache e riducendo le prestazioni della cache. - Ciò è vero anche con cache set-associative - set-associative sta per associative all'interno di un insieme, in - quanto c'è un insieme di blocchi della cache nei quale puo - essere mappato un elemento della memoria fisica. - a molte vie (anche se l'effetto viene in qualche maniera - mitigato). - - Il codice di allocazione della memoria di FreeBSD implementa - le ottimizizzazioni di colorazione delle pagine, ciò significa che - il codice di allocazione della memoria cercherà di trovare delle - pagine libere che siano vicine dal punto di vista della cache. - Ad esempio, se la pagina 16 della memoria fisica è assegnata - alla pagina 0 della memoria virtuale di un processo e la cache può - contenere 4 pagine, il codice di colorazione delle pagine non - assegnerà la pagina 20 di memoria fisica alla pagina 1 di - quella virtuale. - Invece, gli assegnerà la pagina 21 della memoria fisica. - Il codice di colorazione delle pagine cerca di evitare l'assegnazione - della pagina 20 perché questa verrebbe mappata sopra lo stesso - blocco di memoria cache della pagina 16 e ciò causerrebbe un uso - non ottimale della cache. - Questo codice aggiunge una complessità significativa - al sottosistema di allocazione memoria della VM, come si può ben - immaginare, ma il gioco vale ben più della candela. La colorazione - delle pagine rende la memoria virtuale deterministica quanto la memoria - fisica per quel che riguarda le prestazioni della cache. - - - - Conclusione - - La memoria virtuale nei sistemi operativi moderni deve affrontare - molti problemi differenti efficientemente e per molti diversi tipi di uso. - L'approccio modulare ed algoritmico che BSD ha storicamente seguito ci - permette di studiare e comprendere l'implementazione attuale cosi come di - poter rimpiazzare in maniera relativamente pulita grosse sezioni di - codice. Ci sono stati un gran numero di miglioramenti al sistema della - VM di FreeBSD negli ultimi anni, ed il lavoro prosegue. - - - - Sessione Bonus di Domande e Risposte di Allen Briggs - <email>briggs@ninthwonder.com</email> - - - - - Cos'è l'algoritmo di interleaving a cui - fai riferimento nell'elenco delle debolezze della gestione dello - swap in FreeBSD 3.X ? - - - - FreeBSD usa un intervallo tra zone di swap fissato, con un - valore predefinito di 4. Questo significa che FreeBSD riserva - spazio per quattro aree di swap anche se ne hai una sola o due o - tre. Poiché lo swap è intervallato lo spazio di - indirizzamento lineare che rappresenta le quattro aree di - swap verrà frammentato se non si possiedono - veramente quattro aree di swap. Ad esempio, se hai due aree di - swap A e B la rappresentazione dello spazio di FreeBSD per - quell'area di swap verrà interrotta in blocchi di 16 - pagine: - - A B C D A B C D A B C D A B C D - - FreeBSD 3.X usa una lista sequenziale delle - regioni libere per registrare le aree di swap libere. - L'idea è che grandi blocchi di spazio libero e lineare - possano essere rappresentati con un nodo singolo - (kern/subr_rlist.c). - Ma a causa della frammentazione la lista sequenziale risulta - assurdamente frammentata. - Nell'esempio precedente, uno spazio di swap completamente non - allocato farà si che A e B siano mostrati come - liberi e C e D come totalmente - allocati. Ogni sequenza A-B richiede un nodo per essere - registrato perché C e D sono buchi, dunquei nodi di lista non - possono essere combinati con la sequenza A-B seguente. - - Perché organizziamo lo spazio in intervalli invece di - appiccicare semplicemente le area di swap e facciamo qualcosa di - più carino? Perché è molto più semplice - allocare strisce lineari di uno spazio di indirizzamento ed ottenere - il risultato già ripartito tra dischi multipli piuttosto che - cercare di spostare questa complicazione altrove. - - La frammentazione causa altri problemi. Essendoci una lista - lineare nella serie 3.X, ed avendo una tale quantità di - frammentazione implicita, l'allocazione e la liberazione dello swap - finisce per essere un algoritmo O(N) invece di uno O(1). - Combinalo con altri fattori (attività di swap pesante) - e comincerai a trovarti con livelli di overhead come O(N^2) e - O(N^3), e ciò è male. Il sistema dela serie 3.X - può anche avere necessità di allocare KVM durante - un'operazione di swap per creare un nuovo nodo lista, il che - può portare ad un deadlock se il sistema sta cercando di - liberare pagine nella memoria fisica in un momento di - scarsità di memoria. - - Nella serie 4.X non usiamo una lista sequenziale. Invece usiamo - un albero radicato e mappe di bit di blocchi di swap piuttosto che - nodi lista. - Ci prendiamo il peso di preallocare tutte le mappe di bit richieste - per l'intera area di swap ma ciò finisce per consumare meno - memoria grazie all'uso di una mappa di bit (un bit per blocco) - invece di una lista collegata di nodi. L'uso di un albero radicato - invece di una lista sequenziale ci fornisce una performance quasi - O(1) qualunque sia il livello di frammentazione dell'albero. - - - - - - Non ho capito questo: - -
- È importante notare che il sistema della VM di FreeBSD - tenta di separare pagine pulite e sporche per l'espressa ragione di - evitare scritture non necessarie di pagine sporche (che divorano - banda di I/O), e non sposta le pagine tra le varie code - gratuitamente se il sottosistema non viene stressato. Questo - è il motivo per cui dando un systat -vm - vedrai sistemi con contatori della coda di cache bassi e contatori - della coda delle pagine attive molto alti. -
- - Come entra in relazione la separazione delle pagine pulite e - sporche (inattive) con la situazione nella quale vediamo contatori - bassi per la coda di cache e valori alti per la coda delle pagine - attive in systat -vm? I dati di systat derivano - da una fusione delle pagine attive e sporche per la coda delle - pagine attive? -
- - - Si, questo può confondere. La relazione è - obiettivo contro realtà. Il - nostro obiettivo è separare le pagine ma la realtà - è che se non siamo in crisi di memoria, non abbiamo bisogno - di farlo. - - Questo significa che FreeBSD non cercherà troppo di - separare le pagine sporche (coda inattiva) da quelle pulite - (code della cache), ne cercherà di disattivare le pagine - (coda pagine attive -> coda pagine inattive) quando il sistema non - è sotto sforzo, anche se non vengono effettivamente - usate. - -
- - - - Nell'esempio di &man.ls.1; / vmstat 1, - alcuni dei page fault non potrebbero essere data page faults - (COW da file eseguibili a pagine private)? Cioè, io mi - aspetterei che i page fault fossero degli zero-fill e dei dati di - programma. O si implica che FreeBSD effettui il pre-COW per i dati - di programma? - - - - Un fault COW può essere o legato a uno zero-fill o a dati - di programma. - Il meccanismo è lo stesso in entrambi i casi poiché - i dati di programma da copiare sono quasi certamente già - presenti nella cache. E infatti li tratto insieme. FreeBSD non - effettua preventivamentela copia dei dati di programma o lo - zero-fill, effettua la mappatura preventiva - delle pagine che sono presenti nella sua cache. - - - - - - Nella sezione sull'ottimizzazione della tabella delle pagine, - potresti fornire maggiori dettagli su pv_entry e - vm_page (forse vm_page dovrebbe essere - vm_pmap—come in 4.4, cf. pp. 180-181 di - McKusick, Bostic, Karel, Quarterman)? Specificamente, che tipo di - operazioni/reazioni richiederebbero la scansione delle - mappature? - - Come funziona Linux nel caso in cui FreeBSD fallisce - (la condivisione di un grosso file mappato tra molti - processi)? - - - - Una vm_page rappresenta una tupla - (oggetto,indice#). - Una pv_entry rappresenta una voce nella tabella - delle pagine hardware (pte). Se hai cinque processi che condividono - la stessa pagina fisica, e tre delle tabelle delle pagine di questi - processi mappano effettivamente la pagina, questa pagina - verrà rappresentata da una struttura - vm_page singola e da tre strutture - pv_entry. - - Le strutture pv_entry rappresentano solo - le pagine mappate dalla MMU (una pv_entry - rappresenta un pte). Ciò significa che è necessario - rimuovere tutti i riferimenti hardware a vm_page - (in modo da poter riutilizzare la pagina per qualcos'altro, - effettuare il page out, ripulirla, sporcarla, e così via) - possiamo semplicemente scansionare la lista collegata di - pv_entry associate con quella - vm_page per rimuovere o modificare i pte - dalla loro tabella delle pagine. - - Sotto Linux non c'è una lista collegata del genere. Per - poter rimuovere tutte le mappature della tabella delle pagine - hardware per una vm_page linux deve indicizzare - ogni oggetto VM che potrebbe aver mappato la - pagina. Ad esempio, se si hanno 50 processi che mappano la stessa - libreria condivisa e si vuole liberarsi della pagina X in quella - libreria, sarà necessario cercare nella tabella delle pagine - per ognuno dei 50 processi anche se solo 10 di essi ha - effettivamente mappato la pagina. Così Linux sta barattando - la semplicità del design con le prestazioni. Molti algoritmi - per la VM che sono O(1) o (piccolo N) in FreeBSD finiscono per - diventare O(N), O(N^2), o anche peggio in Linux. - Poiché i pte che rappresentano una particolare pagina in un - oggetto tendono ad essere allo stesso offset in tutte le tabelle - delle pagine nelle quali sono mappati, la riduzione del numero di - accessi alla tabela delle pagine allo stesso offset eviterà - che la la linea di cache L1 per quell'offset venga cancellata, - portando ad una performance migliore. - - FreeBSD ha aggiunto complessità (lo schema - pv_entry) in modo da incrementare le prestazioni - (per limitare gli accessi alla tabella delle pagine - solo a quelle pte che necessitino di essere - modificate). - - Ma FreeBSD ha un problema di scalabilità che linux non ha - nell'avere un numero limitato di strutture - pv_entry e questo provoca problemi quando si - hanno condivisioni massicce di dati. In questo caso c'è la - possibilità che finiscano le strutture - pv_entry anche se c'è ancora una grande - quantità di memoria disponibile. - Questo può essere risolto abbastanza facilmente - aumentando il numero di struttre pv_entry nella - configurazione del kernel, ma c'è veramente bisogno di - trovare un modo migliore di farlo. - - Riguardo il sovrapprezzo in memoria di una tabella delle pagine - rispetto allo schema delle pv_entry: Linux usa - tabelle delle pagine permanenti che non vengono - liberate, ma non necessita una pv_entry per ogni - pte potenzialmente mappato. - FreeBSD usa tabelle delle pagine throw away, - eliminabili, ma aggiunge una struttura pv_entry - per ogni pte effettivamente mappato. Credo che l'utilizzo della - memoria finisca per essere più o meno lo stesso, fornendo a - FreeBSD un vantaggio algoritmico con la capacità di - eliminare completamente le tabelle delle pagine con un - sovraccarico prestazionale minimo. - - - - - - Infine, nella sezione sulla colorazione delle pagine, potrebbe - esser d'aiuto avere qualche descrizione in più di quello che - intendi. Non sono riuscito a seguire molto bene. - - - - Sai come funziona una memoria cache hardware L1? Spiego: - Considera una macchina con 16MB di memoria principale ma solo 128K - di cache L1. In genere il modo in cui funziona la cache è - che ogni blocco da 128K di memoria principale usa gli - stessi 128K di cache. - Se si accede all'offset 0 della memoria principale e poi al 128K si - può finire per cancellare i dati che si erano messi nella - cache dall'offset 0! - - Ora, sto semplificando di molto. Ciò che ho appena - descritto è quella che viene detta memoria cache a - corrispondenza diretta, o direct mapped. - La maggior parte delle cache moderne sono quelle che - vengono dette set-associative a 2 o 4 vie. - L'associatività di questo tipo permette di accedere fino ad N - regioni di memoria differenti che si sovrappongano sulla stessa - cache senza distruggere i dati preventivamente immagazzinati. - Ma solo N. - - Dunque se ho una cache set associativa a 4 vie posso accedere - agli offset 0, 128K, 256K 384K ed essere ancora in grado di - accedere all'offset 0 ritrovandolo nella cache L1. Se poi accedessi - all'offset 512K, ad ogni modo, uno degli oggetti dato immagazzinati - precedentemente verrebbero cancellati dalla cache. - - È estremamente importante … - estremamente importante che la maggior parte - degli accessi del processore alla memoria vengano dalla cache L1, - poiché la cache L1 opera alla stessa frequenza del - processore. Nel momento in cui si ha un miss - Un miss nella cache è equivalente a un page fault per - la memoria fisica, ed allo stesso modo implica un accesso a - dispositivi molto più lenti, da L1 a L2 come da RAM a - disco. - nella cache L1 si deveandare a cercare nella cache L2 o - nella memoria principale, il processore andrà in stallo, e - potenzialmente potrà sedersi a girarsi i pollici per un tempo - equivalente a centinaia di istruzioni - attendendo che la lettura dalla memoria principale venga - completata. La memoria principale (la RAM che metti nel tuo - computer) è lenta, se comparata alla - velocità del nucleo di un moderno processore. - - Ok, ora parliamo della colorazione dele pagine: - tutte le moderne cache sono del tipo noto come cache - fisiche. Esse memorizzano indirizzi di memoria - fisica, non indirizzi di memoria virtual. Ciò permette alla - cache di rimanere anche nel momento in cui ci sia un cambio di - contesto tra processi, e ciò è molto - importante. - - Ma nel mondo &unix; devi lavorare con spazi di indirizzamento - virtuali, non con spazi di indirizzamento fisici. Ogni programma - che scrivi vedrà lo spazio di indirizzamento virtuale - assegnatogli. Le effettive pagine fisiche - nascoste sotto quello spazio di indirizzi virtuali - non saranno necessariamente contigue fisicamente! In effetti, - potresti avere due pagine affiancate nello spazio di - indirizzamento del processo cge finiscono per trovarsi agli - offset 0 e 128K nella memoria fisica. - - Un programma normalmente assume che due pagine - affiancate verranno poste in cache in maniera ottimale. - Cioè, che possa accedere agli oggetti dato in - entrambe le pagine senza che esse si cancellino a vicenda le - rispettiva informazioni in cache. - Ma ciò è vero solo se le pagine fisiche sottostanti lo - spazio di indirizzo virtuale sono contigue (per quel che riguarda - la cache). - - Questo è ciò che viene fatto dalla colorazione - delle pagine. - Invece di assegnare pagine fisiche casuali agli - indirizzi virtuali, che potrebbe causare prestazioni non ottimali - della cache, la colorazione dele pagine assegna pagine fisiche - ragionevolmente contigue. - Dunque i programmi possono essere scritti assumendo che - le caratteristiche per lo spazio di indirizzamento virtuale del - programma della cache hardware sottostante siano uguali a come - sarebbero state se avessero usato lo spazio di indirizzamento - fisico. - - Si note ho detto ragionevolmente contigue invece - che semplicemente contigue. Dal punto di vista di - una cache di 128K a corrispondenza diretta, l'indirizzo fisico 0 - è lo stesso che l'indirizzo fisico 128K. - Dunque due agine affiancate nello spzio di indirizzamento virtuale - potrebbero finire per essere all'offset 128K e al 132K nella memoria - fisica, ma potrebbero trovarsi tranquillamente anche agli offset - 128K e 4K della memoria fisica e mantenera comunque le stesse - caratteristiche prestazionali nei riguardi della cache. Dunque la - colorazione delle pagine non deveassegnare - pagine di memoria fisica veramente contigue a pagine di memoria - virtuale contigue, deve solo assicurarsi che siano assegnate pagine - contigue dal punto di vista delle prestazioni/operazioni della - cache. - - -
-
-
Property changes on: head/it_IT.ISO8859-15/articles/vm-design/article.xml ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/sgml \ No newline at end of property Index: head/it_IT.ISO8859-15/articles/vm-design/Makefile =================================================================== --- head/it_IT.ISO8859-15/articles/vm-design/Makefile (revision 52098) +++ head/it_IT.ISO8859-15/articles/vm-design/Makefile (nonexistent) @@ -1,22 +0,0 @@ -# -# $FreeBSD$ -# -# Articolo: Elementi di progettazione del sistema di VM di FreeBSD - -DOC?= article - -FORMATS?= html -WITH_ARTICLE_TOC?= YES - -SRCS= article.xml -IMAGES_EN = fig1.eps -IMAGES_EN+= fig2.eps -IMAGES_EN+= fig3.eps -IMAGES_EN+= fig4.eps - -INSTALL_COMPRESSED?=gz -INSTALL_ONLY_COMPRESSED?= - - -DOC_PREFIX?= ${.CURDIR}/../../.. -.include "${DOC_PREFIX}/share/mk/doc.project.mk" Property changes on: head/it_IT.ISO8859-15/articles/vm-design/Makefile ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Index: head/it_IT.ISO8859-15/articles/committers-guide/article.xml =================================================================== --- head/it_IT.ISO8859-15/articles/committers-guide/article.xml (revision 52098) +++ head/it_IT.ISO8859-15/articles/committers-guide/article.xml (nonexistent) @@ -1,1818 +0,0 @@ - - - -
- Guida del Committer - - - - The FreeBSD Italian Documentation Project - - - - 1999 - - 2000 - - 2001 - - 2002 - - 2003 - - 2004 - - The FreeBSD Italian Documentation Project - - - - &tm-attrib.freebsd; - &tm-attrib.cvsup; - &tm-attrib.ibm; - &tm-attrib.intel; - &tm-attrib.sparc; - &tm-attrib.general; - - - $FreeBSD$ - - $FreeBSD$ - - - Questo documento fornisce informazioni per la comunità dei - committer di FreeBSD. Tutti i nuovi committer dovrebbero leggere - questo documento prima di iniziare, e i committer già esistenti - sono fortemente incoraggiati a riguardarselo di tanto in tanto. - - &trans.it.alex; - - - - - Dettagli Amministrativi - - - - - - Host con il Repository - Principale - - ncvs.FreeBSD.org - - - - Metodi di Accesso - - &man.ssh.1;, solo protocollo 2 - - - - CVSROOT Principale - - ncvs.FreeBSD.org:/home/ncvs - (guarda anche la ). - - - - &a.cvsadm; Principali - - &a.peter; e &a.markm;, così come &a.joe; e &a.marcus; - per i ports/ - - - - Mailing List - - &a.doc-developers;, &a.doc-committers;; - &a.ports-developers;, &a.ports-committers;; - &a.src-developers;, &a.src-committers;. (Ogni repository di - progetto ha le sue mailing list -developers e -committers. Gli - archivi per queste liste possono essere trovati nei file - /home/mail/repository-name-developers-archive - e - /home/mail/repository-name-committers-archive - sul cluster di FreeBSD.org.) - - - - Report mensili del Core Team - /home/core/public/monthly-report - sul cluster di FreeBSD.org. - - - - Tag CVS Degni di Nota - - RELENG_4 (4.X-STABLE), - RELENG_5 (5.X-STABLE), - HEAD (-CURRENT) - - - - - - È richiesto l'uso di &man.ssh.1; o &man.telnet.1; con - Kerberos 5 per connettersi agli host del progetto. Per &man.ssh.1; - è permesso solo il protocollo 2. - Questi sono generalmente più sicuri che un semplice &man.telnet.1; - o &man.rlogin.1; visto che la negoziazione delle credenziali - avverrà sempre in modo cifrato. - Tutto il traffico è cifrato di default - con &man.ssh.1;. Insieme a programmi di utilità come - &man.ssh-agent.1; e &man.scp.1;, anch'essi disponibili, &man.ssh.1; - è di gran lunga più conveniente. Se non sai nulla di - &man.ssh.1;, guarda la . - - - - Tipi di Bit di Commit - - Il repository CVS di FreeBSD ha un numero di componenti che, se - combinati, supportano i sorgenti di base del sistema operativo, la - documentazione, l'infrastruttura dei port delle applicazioni di terze - parti, e vari programmi di utilità. Quando vengono assegnati i bit - di commit di FreeBSD, vengono specificate le aree dell'albero dove il bit - può essere usato. Solitamente, le aree associate a un bit - corrispondono a quelle di chi ha autorizzato l'assegnamento del bit di - commit. Ulteriori aree di autorità possono essere aggiunte in - seguito: se occorrerà, il committer dovrà seguire le - normali procedure di allocazione del bit di commit per quell'area - dell'albero, chiedendo l'approvazione all'entità appropriata e - possibilmente prendendo un mentore per quell'area per un po' di - tempo. - - - - - - Tipo di Committer - - Responsabile - - Componenti dell'Albero - - - - src - - core@ - - src/, doc/ soggetta ad appropriata revisione - - - - doc - - doceng@ - - doc/, www/, documentazione src/ - - - - ports - - portmgr@ - - ports/ - - - - - - I bit di commit assegnati prima dello sviluppo della nozione di aree - di autorità possono essere usati in molte parti dell'albero. - Tuttavia, il buon senso dice che un committer che non ha mai lavorato - precedentemente in un'area dell'albero chieda una revisione del proprio - lavoro prima di effettuare il commit, chieda l'approvazione del - responsabile appropriato, e/o lavori d'accordo con un mentore. Dato che - le regole sulla manutenzione del codice differiscono a seconda dell'area - dell'albero, questo è per il bene del committer che lavora in - un'area poco familiare tanto quanto per gli altri che lavorano - sull'albero. - - I committer sono incoraggiati a chiedere la revisione del proprio - lavoro come parte del normale processo di sviluppo, indifferentemente - dall'area dell'albero in cui stanno lavorando. - - - Regolamento dell'attività del <filename>doc/</filename> - committer in <filename>src/</filename> - - - - I doc committer possono effettuare commit riguardanti modifiche - alla documentazione sui file src, come pagine man, README, - database dei fortune, file dei calendari, e correzioni sui commenti - senza l'approvazione di un src committer, prestando la solita - attenzione e cura ai commit. - - - - I doc committer possono effettuare commit riguardanti piccole - modifiche e correzioni ai sorgenti, come correzioni per la - compilazione, piccole funzionalità, ecc., con un - Approved by di un src committer. - - - - I doc committer possono cercare di ottenere il commit bit sui - src acquisendo un mentore, che proporrà il doc committer al - core. Una volta approvato, verrà aggiunto al file - access ed inizierà il normale periodo - sotto la guida del mentore, che implica l'aggiunta di - Approved by per un certo periodo. - - - - Approved by può essere usato solamente - se l'approvazione è di un src committer senza mentore — - i committer ancora sotto la guida di un mentore possono fornire al - più un Reviewed by ma non un - Approved by. - - - - - - - Operazioni sul CVS - - Si assume che tu abbia già familiarità con le operazioni - di base di CVS. - - I &a.cvsadm; sono i proprietari del repository CVS e - sono responsabili delle sue modifiche dirette allo scopo di ripulire o - sistemare dei gravi abusi di CVS da parte di un committer. - Nel caso dovessi causare qualche problema al repository, - diciamo una errata operazione di cvs import o - cvs tag, invia un messaggio al membro responsabile - fra i &a.cvsadm;, come stabilito nella tabella qui sotto, (o chiama uno - di loro) ed esponi il problema. Per questioni molto importanti che - interessano l'intero albero CVS—non solo un'area - specifica—puoi contattare i &a.cvsadm;. Non - contattare i &a.cvsadm; per copie di repository o altre cose che possono - gestire i team più specifici. - - Gli unici che hanno il - permesso di manipolare direttamente i bit del repository sono i - repomeister. Per questo non ci sono shell di login - disponibili sulle macchine del repository, tranne che per i - repomeister. - - - A seconda dell'area interessata del repository CVS, dovresti - mandare la tua richiesta a uno dei seguenti indirizzi email: - - - - ncvs@ - a proposito di /home/ncvs, il repository dei - src - - - - pcvs@ - a proposito di /home/pcvs, il repository dei - port - - - - dcvs@ - a proposito di /home/dcvs, il repository dei - doc - - - - projcvs@ - a proposito di /home/projcvs, il repository dei - progetti di terze parti - - - - - L'albero CVS è attualmente diviso in quattro repository - differenti, ovvero doc, ports, - projects e src. Questi vengono - ricomposti sotto un unico CVSROOT quando vengono - distribuiti tramite CVSup per la convenienza - dei nostri utenti. - - - Nota che il modulo www che contiene i sorgenti - del sito web di FreeBSD - è contenuto all'interno del repository - doc. - - - I repository CVS sono ospitati sulle macchine repository. - Attualmente, ognuno dei repository elencati qui sopra risiede sulla stessa - macchina fisica, ncvs.FreeBSD.org, ma - per permettere la possibilità di averne ognuno su una macchina - diversa in futuro, ci sono diversi nomi di host che i committer - dovrebbero utilizzare. Inoltre, ogni repository risiede in una - directory differente. La seguente tabella racchiude la situazione. - - - Repository CVS, Host e Directory di &os; - - - - - Repository - - Host - - Directory - - - - - - doc - - dcvs.FreeBSD.org - - /home/dcvs - - - - ports - - pcvs.FreeBSD.org - - /home/pcvs - - - - projects - - projcvs.FreeBSD.org - - /home/projcvs - - - - src - - ncvs.FreeBSD.org - - /home/ncvs - - - -
- - Le operazioni sul CVS sono fatte da remoto impostando la variabile di - ambiente CVSROOT a ncvs.FreeBSD.org:/home/ncvs - e la variabile CVS_RSH a ssh, e - quindi effettuando le appropriate operazioni di check-out/check-in. - Molti committer definiscono degli alias che si espandono nella corretta - invocazione di cvs per il repository - appropriato. Per esempio, un utente di &man.tcsh.1; può aggiungere - le seguenti righe al suo .cshrc per questo - scopo: - - alias dcvs env CVS_RSH=ssh cvs -d user@dcvs.FreeBSD.org:/home/dcvs -alias pcvs env CVS_RSH=ssh cvs -d user@pcvs.FreeBSD.org:/home/pcvs -alias projcvs env CVS_RSH=ssh cvs -d user@projcvs.FreeBSD.org:/home/projcvs -alias scvs env CVS_RSH=ssh cvs -d user@ncvs.FreeBSD.org:/home/ncvs - - In questo modo è possibile fare tutte le operazioni di - CVS localmente ed usare Xcvs - commit per effettuare il commit sull'albero CVS ufficiale. - Se desideri aggiungere qualcosa di totalmente nuovo (ad esempio dei - sorgenti in contrib, ecc.), deve essere usato cvs - import. Guarda come riferimento la pagina man di &man.cvs.1; - per l'utilizzo. - - - Per favore non usare cvs - checkout o update con la macchina con il - repository ufficiale impostata come CVS Root per tenere aggiornato il - tuo albero dei sorgenti. CVS da remoto non è ottimizzato per la - distribuzione via rete e richiede un grande sovraccarico di lavoro e di - amministrazione sul lato server. Utilizza il nostro metodo di - distribuzione avanzato cvsup per ottenere i bit del - repository, ed esegui solamente l'operazione di - commit sull'host con il repository. - Forniamo un'estesa rete di mirror cvsup per questo scopo, così - come diamo accesso al cvsup-master se hai veramente - bisogno di essere aggiornato alle ultime modifiche. - Il cvsup-master ha la potenza necessaria a gestire - questa cosa, il repository principale no. &a.kuriyama; è a capo - del cvsup-master. - - - Se devi usare le operazioni add e - delete di CVS come se fosse un'operazione &man.mv.1;, - allora va effettuata una copia nel repository piuttosto che usare - add e delete di CVS. In una - copia nel repository, un CVS Meister - copierà il/i file nei loro nuovi nomi e/o locazioni e ti - avviserà ad operazione avvenuta. Lo scopo di una copia del - repository è di preservare la cronologia dei cambiamenti del file, - o i log. Noi del FreeBSD Project diamo molta importanza alla cronologia - dei cambiamenti che CVS fornisce al progetto. - - Informazioni di riferimento, tutorial, e FAQ su CVS possono - essere trovate su: http://www.cvshome.org/docs/. - Anche le informazioni contenute nei capitoli di Karl Fogel - da Open Source Development with CVS sono molto - utili. - - &a.des; ha fornito inoltre il seguente mini manuale su - CVS. - - - - Effettua il check out di un modulo con il comando - co o checkout. - - &prompt.user; cvs checkout shazam - - Questo estrae una copia del modulo shazam. Se - non c'è alcun modulo shazam nel file dei - moduli, cercherà allora una directory di primo livello chiamata - shazam. - - - Opzioni utili con <command>cvs checkout</command> - - - - - - - Non crea le directory vuote - - - - - - Estrae solo un livello, non le sottodirectory - - - - - - Estrai la versione, il ramo, o il tag - ver - - - - - - Estrai i sorgenti com'erano in data - data - - - -
- - Esempi pratici su FreeBSD: - - - - Estrai il modulo miscfs, che - corrisponde a src/sys/miscfs: - - &prompt.user; cvs co miscfs - - Ora hai una directory chiamata miscfs - con le sottodirectory CVS, - deadfs, devfs, e - così via. Una di queste (linprocfs) - è vuota. - - - - Estrai gli stessi file, ma con il percorso completo: - - &prompt.user; cvs co src/sys/miscfs - - Ora hai una directory chiamata src, - con le sottodirectory CVS e - sys. La directory - src/sys ha le - sottodirectory CVS e - miscfs, ecc. - - - - Estrai gli stessi file, ma elimina le directory vuote: - - &prompt.user; cvs co -P miscfs - - Ora hai una directory chiamata miscfs - con le sottodirectory CVS, - deadfs, devfs... ma nota - che non c'è nessuna sottodirectory - linprocfs, perché non contiene alcun - file. - - - - Estrai la directory miscfs, ma nessuna - delle sue sottodirectory: - - &prompt.user; cvs co -l miscfs - - Ora hai una a directory chiamata miscfs - con solo una sottodirectory chiamata - CVS. - - - - Estrai il modulo miscfs com'è nel - ramo 4.X: - - &prompt.user; cvs co -rRELENG_4 miscfs - - Puoi modificare i sorgenti ed effettuare il commit su questo - ramo. - - - - Estrai il modulo miscfs com'era nella - 3.4-RELEASE. - - &prompt.user; cvs co -rRELENG_3_4_0_RELEASE miscfs - - Non potrai effettuare il commit delle modifiche, visto che - RELENG_3_4_0_RELEASE corrisponde ad un - preciso istante di tempo, non a un ramo. - - - - Estrai il modulo miscfs com'era il 15 - gennaio 2000. - - &prompt.user; cvs co -D'01/15/2000' miscfs - - Non potrai effettuare modifiche. - - - - Estrai il modulo miscfs com'era una - settimana fa. - - &prompt.user; cvs co -D'last week' miscfs - - Non potrai effettuare modifiche. - - - - Tieni presente che cvs salva i metadati in sottodirectory chiamate - CVS. - - Gli argomenti di e - sono fissi, che vuol dire che cvs se li ricorderà in seguito, - ad esempio quando farai un cvs update. -
- - - Controlla lo stato dei file estratti con il comando - status. - - &prompt.user; cvs status shazam - - Questo visualizza lo stato del file shazam o - di ogni file nella directory shazam. Per ogni - file, lo stato è uno fra: - - - - - - Up-to-date - - Il file à aggiornato e non è stato - modificato. - - - - Needs Patch - - Il file non è stato modificato, ma c'è una - nuova versione nel repository. - - - - Locally Modified - - Il file è aggiornato, ma è stato - modificato. - - - - Needs Merge - - Il file è stato modificato, e c'è una nuova - versione nel repository. - - - - File had conflicts on merge - - Ci sono stati conflitti l'ultima volta che il file - è stato aggiornato, e non sono ancora stati - risolti. - - - - - - Vedrai anche la versione e la data locale, il numero dell'ultima - versione appropriata (ultima appropriata perché - se hai una data, un tag o un ramo fissati, può non essere - l'ultima versione), e i tag, le date o le opzioni applicate. - - - - Dopo avere estratto qualcosa, puoi aggiornarlo con il comando - update. - - &prompt.user; cvs update shazam - - Questo aggiorna il file shazam o il contenuto - della directory shazam all'ultima versione sul - ramo che hai estratto. Se hai estratto un preciso instante di - tempo, non fa nulla a meno che i tag non siano stati - spostati nel repository o qualche altra strana cosa sia in - corso. - - Opzioni utili, in aggiunta a quelle elencate sopra, con - checkout: - - - - - - - - Estrae ogni directory aggiuntiva mancante. - - - - - - Scarica l'ultima versione del ramo principale. - - - - - - Altre magie (guarda sotto). - - - - - - Se hai estratto un modulo con o - , l'esecuzione di cvs update - con un argomento differente di o - o con selezionerà un - nuovo ramo, una nuova versione o una nuova data. - L'opzione elimina tutti i tag, le date o le - versioni fissate mentre e ne - impostano di nuove. - - Teoricamente, specificando HEAD come argomento - di avrai lo stesso risultato di - , ma è solo in teoria. - - L'opzione è utile se: - - - - qualcuno ha aggiunto delle sottodirectory al modulo che hai - estratto dopo averlo estratto. - - - - hai estratto con , e dopo cambi idea e - vuoi estrarre anche le sottodirectory. - - - - hai cancellato delle sottodirectory e vuoi estrarle - nuovamente. - - - - Osserva l'output di cvs update con - cura. La lettera all'inizio di ogni file indica cosa - è stato fatto su di esso: - - - - - - U - - Il file è stato aggiornato senza problemi. - - - - P - - Il file è stato aggiornato senza problemi (vedrai - questo solo quando lavorerai su un repository remoto). - - - - M - - Il file è stato modificato, ed è stato - fuso senza conflitti. - - - - C - - Il file è stato modificato, ed è stato - fuso con dei conflitti. - - - - - - La fusione è ciò che avviene quando estrai una copia - di qualche codice sorgente, lo modifichi, quindi qualcun altro - effettua il commit di un'altra modifica, e tu esegui cvs - update. CVS nota che tu hai fatto dei cambiamenti locali, e - cerca di fondere le tue modifiche con quelle fatte tra la versione che - hai originariamente estratto e quella che stai aggiornando. Se i - cambiamenti sono a due parti separate del file, solitamente non ci - saranno problemi (sebbene il risultato possa non essere - sintatticamente o semanticamente corretto). - - CVS stamperà una M davanti ad ogni file - modificato localmente anche se non c'è una nuova versione nel - repository, quindi cvs update è adatto - per avere un resoconto di quello che hai cambiato in locale. - - Se appare una C, allora le tue modifiche sono - in conflitto con i cambiamenti presenti nel repository (le modifiche - sono sulle stesse righe, o righe vicine, o hai cambiato così - tanto il file locale che cvs non è in grado - di applicare le modifiche al repository). Dovrai allora andare a - modificare il file a mano e risolvere i conflitti; questi saranno - evidenziati da righe di simboli <, - = e >. Per ogni conflitto, - ci sarà una linea di demarcazione formata da sette - < e il nome del file, seguita da una porzione di - quello che il tuo file locale conteneva, seguita da una riga di - separazione con sette =, seguita dalla porzione - corrispondente presente nella versione del repository, seguita da una - riga di separazione con sette > e il numero di - versione che stai aggiornando. - - L'opzione è un po' voodoo. Aggiorna - il file locale alla versione specificata come se avessi usato - , ma non cambia il numero di versione o il ramo - registrato del file locale. Non è realmente utile tranne - quando usata due volte, nel qual caso fonderà le modifiche - tra le due versioni specificate nella copia su cui stai - lavorando. - - Per esempio, supponiamo che ti abbia effettuato il commit di una - modifica a shazam/shazam.c in &os.current; e che - più tardi tu voglia effettuare l'MFC. Le modifiche che vuoi - fondere sono nella versione 1.15: - - - - Estrai la versione &os.stable; del modulo - shazam: - - &prompt.user; cvs co -rRELENG_5 shazam - - - - Applica le modifiche tra la ver 1.14 e la 1.15: - - &prompt.user; cvs update -j1.14 -j1.15 shazam/shazam.c - - - - Quasi certamente avrai un conflitto a causa delle righe - $Id$ (o nel caso di FreeBSD, $FreeBSD$), - quindi dovrai modificare a mano il file per risolvere il conflitto - (rimuovi le righe di separazione e la seconda linea - $Id$, lasciando la linea $Id$ - originale intatta). - - - - Guarda le differenze tra la versione locale e quella sul - repository con il comando diff. - - &prompt.user; cvs diff shazam - - mostra ogni modifica che hai fatto al file o al modulo - shazam. - - - Opzioni utili con <command>cvs diff</command> - - - - - - - Utilizza il formato diff unificato. - - - - - - Utilizza il formato diff contestuale. - - - - - - Visualizza i file mancanti o aggiunti. - - - -
- - Vorrai sempre utilizzare , visto che le diff - unificate sono molto più semplici da leggere rispetto a quasi - tutti gli altri formati (in alcune circostanze, le diff contestuali - generate con l'opzione possono essere meglio, ma - sono molto più voluminose). Una diff unificata consiste di una - serie di parti. Ogni parte inizia con una riga con due caratteri - @ e specifica dove si trovano le differenze nel - file e su quante linee si estendono. Questa è seguita da un - certo numero di righe; alcune (precedute da uno spazio) fanno parte - del contesto; altre (precedute da un -) sono quelle - eliminate e altre ancora (precedute da un +) sono - quelle aggiunte. - - Puoi anche effettuare una diff con una versione differente - rispetto a quella che hai estratto specificando la versione con - o come per il - checkout o l'update, - o anche visualizzare le differenze tra due versioni arbitrarie - (indipendentemente da quella che hai localmente) specificando - due versioni con o - . -
- - - Guarda le righe di log con il comando - log. - - &prompt.user; cvs log shazam - - Se shazam è un file, questo - stamperà un'intestazione con le - informazioni sul file, come la locazione nel repository dove il file - è salvato, a quale versione è l'HEAD - per questo file, in quali rami si trova il file, e qualsiasi tag - valido per questo file. Quindi, per ogni versione del file, viene - stampato un messaggio di log. Questo include la data e l'ora del - commit, chi ha fatto il commit, quante righe sono state aggiunte e/o - tolte, e alla fine il messaggio di log che il committer ha scritto - quando ha inviato la modifica. - - Se shazam è una directory, allora le - informazioni di log descritte sopra vengono stampate a turno per ogni - file presente nella directory. A meno che tu abbia dato l'opzione - a log, vengono stampati anche - i log per tutte le sottodirectory di shazam, in - maniera ricorsiva. - - Usa il comando log per vedere la storia di uno - o più file, come è salvata nel repository CVS. Puoi - anche usarlo per vedere il messaggio di log di una versione specifica, - se aggiungi al - comando log: - - &prompt.user; cvs log -r1.2 shazam - - Questo stamperà solamente il messaggio di log per la - versione 1.2 del file shazam - se è un file, oppure i messaggi di log per le versioni 1.2 di - ogni file sotto shazam se è una - directory. - - - - Guarda chi ha fatto cosa con il comando - annotate. Questo comando visualizza ogni riga del - file o dei file specificati, insieme all'utente che ha modificato - più recentemente quella riga. - - &prompt.user; cvs annotate shazam - - - - Aggiungi nuovi file con il comando add. - - Crea il file, usa cvs add su di esso, quindi - cvs commit. - - In modo analogo, puoi aggiungere nuove directory creandole e poi - utilizzando cvs add su di esse. Nota che non - c'è bisogno di usare il commit sulle directory. - - - - Rimuovi i file obsoleti con il comando - remove. - - Rimuovi il file, quindi usa cvs rm su di esso, - ed infine cvs commit. - - - - Effettua il commit con il comando commit o - checkin. - - - Opzioni utili con <command>cvs commit</command> - - - - - - - Forza il commit di un file non modificato. - - - - - - Specifica un messaggio di commit sulla riga di comando - anziché invocare un editor. - - - -
- - Usa l'opzione se ti accorgi che hai lasciato - fuori informazioni importanti dal messaggio di commit. - - Buoni messaggi di commit sono importanti. Dicono agli altri - perché hai fatto le modifiche che hai fatto, non solo qui ed - ora, ma per mesi o anni quando qualcuno si chiederà - perché dei pezzi di codice all'apparenza illogici o - inefficienti sono entrati nel file sorgente. È inoltre un - aiuto inestimabile per decidere su quali modifiche va effettuato - l'MFC e su quali no. - - I messaggi di commit devono essere chiari, concisi, e fornire - un ragionevole sommario per dare un'indicazione di cosa è stato - cambiato e perché. - - I messaggi di commit devono fornire abbastanza informazioni - affinché una terza parte possa decidere se la modifica è - rilevante per lei e se debba leggere la modifica stessa. - - Evita di effettuare il commit di più modifiche scollegate - in una volta sola. Questo rende difficile la fusione, e inoltre rende - più complicato determinare quale modifica è colpevole - se salta fuori un bug. - - Evita di effettuare il commit di correzioni di stile o di - spaziatura insieme a correzioni di funzionalità. Questo rende - difficile la fusione, e inoltre rende più complicato capire - quali modifiche alle funzionalità sono state fatte. Nel caso - di file di documentazione, può rendere il lavoro dei gruppi - di traduzione più complicato, visto che diventa difficile per - loro determinare esattamente quali modifiche al contenuto vanno - tradotte. - - Evita di effettuare il commit di cambiamenti a più file - con un unico messaggio generico o vago. Invece, effettua il commit - di un file alla volta (o di piccoli gruppi di file correlati) con un - messaggio di commit appropriato. - - Prima di effettuare il commit, devi - sempre: - - - - verificare su che ramo stai effettuando il commit, tramite - cvs status. - - - - revisionare i tuoi cambiamenti, con - cvs diff - - - - Inoltre, devi SEMPRE specificare esplicitamente sulla riga di - comando su quali file deve essere effettuato il commit, in modo da non - toccare incidentalmente altri file non voluti - cvs - commit senza argomenti effettuerà il commit di ogni - modifica nella directory corrente ed ogni sottodirectory. -
-
- - Suggerimenti e trucchi aggiuntivi: - - - - Puoi inserire le opzioni più comunemente usate nel tuo - ~/.cvsrc, come in questo caso: - - cvs -z3 -diff -Nu -update -Pd -checkout -P - - Questo esempio dice: - - - - usa sempre il livello di compressione 3 quando si parla con un - server remoto. Questo è un salvavita quando si lavora su - una connessione lenta. - - - - usa sempre le opzioni (visualizza i file - aggiunti o rimossi) e (formato diff unificato) - con &man.diff.1;. - - - - usa sempre le opzioni (elimina le - directory vuote) e (estrai le nuove directory) - quando si effettua l'update. - - - - usa sempre l'opzione (elimina le - directory vuote) quando si estrae. - - - - - - Usa lo script cdiff di Eivind Eklund per - visualizzare le diff unificate. È un wrapper per &man.less.1; - che aggiunge i codici colore ANSI per far risaltare le intestazioni - delle sezioni, le righe rimosse e quelle aggiunte; il contesto rimane - invariato. Inoltre espande i tab correttamente (i tab spesso appaiono - errati nelle diff a causa del carattere aggiuntivo all'inizio di ogni - riga). - - textproc/cdiff - - Semplicemente usalo al posto di &man.more.1; o - &man.less.1;: - - &prompt.user; cvs diff -Nu shazam | cdiff - - Alternativamente alcuni editor come &man.vim.1; - (editors/vim5) hanno il supporto - al colore e quando vengono usati con l'evidenziazione della sintassi - attiva evidenzieranno molti tipi di file, incluse le diff, le patch, - e i log CVS/RCS. - - &prompt.user; echo "syn on" >> ~/.vimrc -&prompt.user; cvs diff -Nu shazam | vim - -&prompt.user; cvs log shazam | vim - - - - - CVS è vecchio, arcano, complesso e buggato, e a volte - esibisce comportamenti non deterministici che qualcuno sostiene siano - la prova che CVS non sia niente di più di una manifestazione - Newtoniana di una entità ultradimensionale sensibile. - Non è umanamente possibile conoscere ogni dettaglio di CVS, - quindi non essere dispiaciuto di chiedere aiuto all'Intelligenza - Artificiale (&a.cvsadm;). - - - - Non lasciare il comando cvs commit nella - modalità di inserimento del messaggio di commit per troppo - tempo (più di 2–3 minuti). Questo blocca la directory in - cui stai lavorando ed impedirà ad altri sviluppatori di - effettuare commit nella stessa directory. Se devi digitare un - messaggio di commit lungo, scrivilo prima di eseguire - cvs commit e inseriscilo successivamente oppure - salvalo in un file prima di effettuare il commit ed usa l'opzione - di CVS per leggere il messaggio di commit da - quel file, cioè: - - &prompt.user; vi logmsg -&prompt.user; cvs ci -F logmsg shazam - - Questo è il metodo più veloce per passare un - messaggio di commit a CVS ma devi stare attento quando modifichi - il file logmsg prima del commit, perché - CVS non ti darà la possibilità di modificare il - messaggio quando effettuerai realmente il commit. - - -
- - - Convenzioni e Tradizioni - - Come nuovo committer ci sono alcune cose che dovresti fare - all'inizio. - - - - Aggiungi la tua entity di autore in - doc/en_US.ISO8859-1/share/xml/authors.ent; - questo dovrebbe essere fatto per prima cosa, visto che l'omissione - di questo commit farà in modo che i prossimi commit - romperanno la compilazione del ramo doc/. - - Questo è un compito relativamente semplice, ma rimane una - buona prima prova delle tue abilità con CVS. - - - - Aggiungi te stesso alla sezione Developers della - Contributors - List e - rimuovere te stesso dalla sezione Additional - Contributors. - - - - Aggiungi una voce per te stesso in - www/en/news/news.xml. Guarda le altre voci che - assomigliano a A new committer e segui il - formato. - - - - Dovresti aggiungere la tua chiave PGP o GnuPG in - doc/share/pgpkeys (e se non ce l'hai, dovresti - creartene una). Non dimenticare di effettuare il commit del file - doc/share/pgpkeys/pgpkeys.ent aggiornato. - - &a.des; ha scritto uno script di shell per rendere questa - operazione molto semplice. Guarda il file README - per maggiori informazioni. - - - È importante avere una chiave PGP/GnuPG aggiornata nel - Manuale, visto che potrà essere richiesta per - l'identificazione del committer, ad esempio dai &a.admins; per - il recupero dell'account. Un portachiavi completo degli utenti - FreeBSD.org è disponibile - su http://www.FreeBSD.org/doc/pgpkeyring.txt. - - - - - Alcune persone aggiungono una voce per se stessi in - ports/astro/xearth/files/freebsd.committers.markers. - - - - Alcune persone aggiungono una voce per se stessi in - src/usr.bin/calendar/calendars/calendar.freebsd. - - - - Presentati agli altri committer, altrimenti nessuno avrà - idea di chi tu sia o di cosa ti occupi. Non devi scrivere una - biografia completa, basta un paragrafo o due su chi sei e su quello - di cui hai intenzione di occuparti come committer di FreeBSD. - Invialo alla &a.developers; e sarai sulla strada giusta! - - - - Loggati su hub.FreeBSD.org e crea un file - /var/forward/utente - (dove utente è il tuo nome utente) - contenente l'indirizzo e-mail dove vuoi che i messaggi indirizzati a - tuonomeutente@FreeBSD.org siano inoltrati. - Questo include tutti i messaggi di commit così come ogni altro - messaggio inviato alla &a.committers; e alla &a.developers;. Caselle - di posta veramente grandi che hanno preso residenza fissa su - hub spesso vengono accidentalmente - troncate senza preavviso, quindi inoltra o leggi i messaggi in modo da - non perderli. - - A causa dell'intenso carico per la gestione dello SPAM che - arriva ai server di posta centrali che processano le mailing list, i - server front-end fanno alcuni controlli e non fanno passare alcuni - messaggi in base a questi controlli. Al momento l'unico controllo - attivo è la verifica sulla correttezza delle informazioni DNS - dell'host che si connette, ma questo potrebbe cambiare. Alcune - persone accusano questi controlli di respingere email valide. Se - vuoi disabilitare questi controlli per la tua email puoi creare - un file chiamato ~/.spam_lover nella tua - directory home su freefall.FreeBSD.org. - - - - Se sei iscritto alla &a.cvsall;, probabilmente vorrai - disiscriverti per evitare di ricevere copie doppie dei messaggi di - commit e della loro evoluzione. - - - - Tutti i nuovi committer hanno un mentore assegnato a loro per i primi - mesi. Il tuo mentore è responsabile di insegnarti le regole e le - convenzioni del progetto e guidare i tuoi primi passi nella - comunità dei committer. È anche personalmente responsabile - delle tue azioni durante questo periodo iniziale. Fino a quando il tuo - mentore non decide (e lo annuncia con un commit forzato su - access) che sei diventato pratico e pronto per - effettuare commit da solo, non dovresti effettuare commit senza aver - prima ottenuto la revisione e l'approvazione del tuo mentore, e dovresti - documentare l'approvazione con una riga Approved by: - nel messaggio di commit. - - Tutti i commit src dovrebbero andare - su &os.current; prima di essere - fusi in &os.stable;. Nessuna nuova caratteristica importante o modifica - ad alto rischio dovrebbe essere fatta sul ramo &os.stable;. - - - - Licenza Preferita per i Nuovi File - - Attualmente il &os; Project suggerisce di usare il seguente testo - come schema di licenza preferito: - -Copyright © <Year> <Author>. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. - - Il progetto &os; scoraggia fortemente la cosiddetta clausola - pubblicitaria nel nuovo codice. A causa del grande numero di - contributi al progetto &os;, osservare questa clausola per molti - fornitori commerciali è diventato difficile. Se hai codice - nell'albero con la clausola pubblicitaria, pensa a rimuoverla. - In pratica, considera di usare la licenza qui sopra per il tuo - codice. - - Il progetto &os; scoraggia completamente nuove licenze e variazioni - sulle licenze standard. Nuove licenze richiedono l'approvazione di - core@FreeBSD.org per risiedere nel repository principale. - Più licenze differenti vengono usate nell'albero, più - problemi possono essere causati a chi desidera utilizzare questo codice, - tipicamente da conseguenze non previste di una licenza strutturata - male. - - - - Relazioni tra Sviluppatori - - Se stai lavorando direttamente sul tuo codice o su codice che è - già stabilito essere di tua responsabilità, allora - c'è probabilmente poca necessità di confrontarsi con altri - committer prima di effettuare un commit. Se vedi un bug in un'area del - sistema che è chiaramente orfana (e ce n'è qualcuna di - queste aree, per nostra vergogna), agisci allo stesso modo. Se, tuttavia, - stai per modificare qualcosa che è chiaramente mantenuto - attivamente da qualcun'altro (ed è solo guardando la mailing list - cvs-committers che puoi veramente sapere cosa è - e cosa non è) allora invia le modifiche a lui, come avresti - fatto prima di diventare committer. Per i port, dovresti contattare il - MAINTAINER specificato nel - Makefile. Per altre parti del repository, se non sei - sicuro di chi possa essere il maintainer attivo, potrebbe essere utile - scorrere l'output di cvs log per vedere chi ha - effettuato delle modifiche in passato. &a.fenner; ha scritto un utile - script di shell che può aiutare a determinare chi sia il - maintainer attivo. Questo elenca ogni persona che ha effettuato commit - su un file specifico con il numero di commit che ha fatto. Può - essere trovato su freefall in - ~fenner/bin/whodid. Se alle tue richieste non - corrisponde una risposta o se il committer in altro modo dimostra uno - scarso interesse nell'area oggetto della modifica, vai avanti ed effettua - il commit tu stesso. - - Se non sei sicuro di un commit per qualunque motivo, fallo revisionare - da -hackers prima di effettuare il commit. Meglio - che sia criticato lì piuttosto che quando è parte del - repository CVS. Se ti capita di effettuare un commit che provoca - controversie, potresti voler considerare l'annullamento delle modifiche - finché il problema sia chiarito. Ricorda – con CVS possiamo - sempre tornare indietro. - - Non mettere in dubbio le intenzioni di qualcuno che non è - d'accordo con te. Se vedono una soluzione differente dalla tua per un - problema, o anche un problema diverso, non è perché sono - stupidi, perché hanno una dubbia origine, o perché stanno - cercando di distruggere il tuo duro lavoro, la tua immagine personale, o - FreeBSD, ma semplicemente perché hanno una visione differente del - mondo. La diversità è una buona cosa. - - Dissenti onestamente. Argomenta la tua posizione con i suoi meriti, - sii onesto sui difetti che può avere, e sii disponibile a guardare - le loro soluzioni, o anche le loro visioni del problema, con mente - aperta. - - Accetta le correzioni. Possiamo tutti sbagliare. Se hai fatto un - errore, scusati e vai avanti con la tua vita. Non picchiarti, e - sicuramente non picchiare gli altri per il tuo sbaglio. Non sprecare - tempo imbarazzandoti o recriminando, risolvi solo il problema e vai - avanti. - - Chiedi aiuto. Cerca (e dai) revisioni dagli altri. Uno delle cose - in cui dovrebbe eccellere il software open source è il numero di - occhi che lo scrutano; questo non è vero se nessuno - revisionerà il codice. - - - - GNATS - - Il FreeBSD Project utilizza GNATS per - gestire i bug e le richieste di cambiamenti. Assicurati di usare - edit-pr numero-pr su - freefall quando effettui il commit di una correzione o di - un suggerimento trovato in un PR GNATS per - chiuderlo. È inoltre considerato gentile se trovi il tempo di - chiudere ogni PR associato al tuo commit, se esistono. Puoi anche usare - &man.send-pr.1; tu stesso per proporre qualsiasi cambiamento che pensi - debba essere fatto, a seguito di una maggiore revisione da parte di altre - persone. - - Puoi trovare di più su GNATS - su: - - - - http://www.cs.utah.edu/csinfo/texinfo/gnats/gnats.html - - - - http://www.FreeBSD.org/support.html - - - - &man.send-pr.1; - - - - Puoi far girare una copia locale di GNATS, e poi integrare l'albero - GNATS di FreeBSD in esso tramite CVSup. In seguito puoi usare i comandi - GNATS localmente, o usare altre interfacce, come - tkgnats. Questo ti permette di interrogare il database - dei PR senza bisogno di essere connesso a Internet. - - - Utilizzo di un albero GNATS locale - - - Se non stai già scaricando l'albero GNATS, aggiungi questa - riga al tuo supfile, e riesegui &man.cvsup.1;. - Nota che siccome GNATS non è sotto - il controllo di CVS non ha tag, quindi se lo stai aggiungendo al tuo - supfile esistente deve apparire prima di ogni - voce tag= dato che queste rimangono attive una volta - impostate. - - gnats release=current prefix=/usr - - Questo metterà l'albero GNATS di FreeBSD in - /usr/gnats. Puoi usare un file - refuse per controllare quali categorie ricevere. - Per esempio, per ricevere solo i PR docs, metti - questa riga in /usr/local/etc/cvsup/sup/refuse - - Il percorso preciso dipende dall'impostazione - *default base nel tuo - supfile. - . - - gnats/[a-ce-z]* - - Il resto di questi esempi assume che tu abbia scaricato solo la - categoria docs. Modificali quando è - necessario, a seconda delle categorie che tieni in sincronia. - - - - Installa il port GNATS da - ports/databases/gnats. Questo metterà le - varie directory GNATS sotto - $PREFIX/share/gnats. - - - - Crea un symlink per le directory GNATS che aggiorni tramite CVSup - sotto la versione di GNATS che hai installato. - - &prompt.root; cd /usr/local/share/gnats/gnats-db -&prompt.root; ln -s /usr/gnats/docs - - Ripeti tante volte quanto necessario, a seconda di quante - categorie GNATS tieni in sincronia. - - - - Aggiorna il file categories di GNATS con - queste categorie. Il file è - $PREFIX/share/gnats/gnats-db/gnats-adm/categories. - - # Questa categoria è obbligatoria -pending:Categoria per i PR errati:gnats-admin: -# -# Categorie di FreeBSD -# -docs:Bug di Documentazione:freebsd-doc: - - - - Esegui $PREFIX/libexec/gnats/gen-index per - ricreare l'indice GNATS. L'output deve essere reindirizzato su - $PREFIX/share/gnats/gnats-db/gnats-adm/index. - Puoi fare questo periodicamente da &man.cron.8;, o eseguire - &man.cvsup.1; da uno script di shell che fa anche questo. - - &prompt.root; /usr/local/libexec/gnats/gen-index \ - > /usr/local/share/gnats/gnats-db/gnats-adm/index - - - - Verifica la configurazione interrogando il database dei PR. - Questo comando visualizza i PR docs aperti. - - &prompt.root; query-pr -c docs -s open - - Anche altre interfacce, come quella fornita dal port databases/tkgnats, dovrebbero funzionare - correttamente. - - - - Prendi un PR e chiudilo. - - - - - Questa procedura funziona solo per permetterti di visualizzare ed - interrogare i PR localmente. Per modificarli o chiuderli dovrai ancora - loggarti su freefall e farlo da lì. - - - - - Chi è Chi - - Oltre ai meister del repository, ci sono altri membri e team del - FreeBSD Project che probabilmente arriverai a conoscere nel tuo ruolo di - committer. Brevemente, e senza pretesa di elencarli tutti, questi - sono: - - - - &a.jhb; - - - John è il manager dell'SMPng Project, e ha - autorità sulla progettazione architetturale e - sull'implementazione del passaggio a un sistema di threading e - locking del kernel a grana fine. È anche l'autore - dell'SMPng Architecture Document. Se stai lavorando sullo stesso - sistema, coordinati con John. - - - - - &a.jake;, &a.tmm; - - - Jake e Thomas sono i maintainer del port sull'architettura - &sparc64;. - - - - - &a.doceng; - - - doceng è il gruppo responsabile dell'infrastruttura - per la realizzazione della documentazione, approva i nuovi committer - della documentazione, e assicura che il sito web di FreeBSD e la - documentazione sul sito FTP siano aggiornati rispetto all'albero - CVS. Non è un organo di risoluzione dei conflitti. - La maggior parte delle discussioni relative alla documentazione - prendono posto sulla &a.doc;. Maggiori dettagli riguardanti il - team doceng possono essere trovati nel suo statuto. - I committer interessati a contribuire - alla documentazione dovrebbero familiarizzare con il Documentation - Project Primer. - - - - - &a.ru; - - - Ruslan è Mister &man.mdoc.7;. Se stai scrivendo una - pagina man e hai bisogno di qualche suggerimento sulla struttura, - o sul linguaggio di markup, chiedi a Ruslan. - - - - - &a.bde; - - - Bruce è lo Style Police-Meister. Quando fai un commit - che poteva essere fatto meglio, Bruce sarà lì a - dirtelo. Ringrazia che qualcuno lo sia. Bruce conosce anche molto - bene gli standard applicabili a FreeBSD. - - - - - &a.gallatin; - &a.mjacob; - &a.dfr; - &a.obrien; - - - Questi sono gli sviluppatori e i supervisori primari della - piattaforma DEC Alpha AXP. - - - - - &a.dg; - - - David è il supervisore del sistema VM. Se hai in mente - una modifica al sistema VM, coordinala con David. - - - - - &a.dfr; - &a.marcel; - &a.peter; - &a.ps; - - - Questi sono i principali sviluppatori e supervisori della - piattaforma Intel IA-64, ufficialmente conosciuta come l'&itanium; - Processor Family (IPF). - - - - - &a.murray; - &a.steve; - &a.rwatson; - &a.jhb; - &a.scottl; - &a.kensmith; - &a.hrs; - - - Questi sono i membri del &a.re;. Questo team è - responsabile di decidere i tempi delle release e controllare il - processo di release. Durante i periodi di congelamento del - codice, gli ingegneri di release hanno l'autorità finale su - tutte le modifiche al sistema per quel ramo di cui si sta preparando - la release. Se c'è qualcosa che vuoi sia fuso da - &os.current; a &os.stable; (qualsiasi valore queste possano avere - in un dato momento), queste sono le persone con cui devi - parlare. - - Hiroki è anche l'autore della documentazione di - release (src/release/doc/*). Se effettui il - commit di una modifica che pensi sia degna di menzione nelle note - di release, assicurati che lo sappia. Meglio ancora, inviagli - una patch con il tuo commento. - - - - - &a.benno; - - - Benno è il maintainer ufficiale del port per - &powerpc;. - - - - - &a.brian; - - - Maintainer ufficiale di - /usr/sbin/ppp. - - - - - &a.nectar; - - - Jacques è il FreeBSD - Security Officer e supervisiona il - &a.security-officer;. - - - - - &a.wollman; - - - Se hai bisogno di consigli sulle oscure parti interne delle reti - o non sei sicuro di qualche eventuale modifica al sottosistema di - rete che hai in mente, Garrett è qualcuno con cui parlare. - Garret è inoltre molto esperto sui vari standard applicabili - a FreeBSD. - - - - - &a.committers; - - - cvs-committers è l'entità che CVS usa per inviarti - tutti i messaggi di commit. Non devi mai - inviare email direttamente a questa lista. Puoi solamente - rispondere a questa lista quando i messaggi sono brevi e - direttamente correlati a un commit. - - - - - &a.developers; - - - Tutti i committer sono iscritti a -developers. Questa lista - è stata creata per essere un forum sulle questioni della - comunità dei committer. Esempi sono le - votazioni per il Core, annunci, ecc. Questa lista - non è intesa come posto per la revisione - del codice o come rimpiazzo della &a.arch; o della &a.audit;. - Infatti usarla in questo modo urta il FreeBSD Project dato che - dà l'impressione di una lista privata dove vengono prese le - decisioni generali che influenzano tutta la comunità che usa - FreeBSD senza essere rese pubbliche. - Ultimo, ma non per importanza mai e poi mai invia un - messaggio alla &a.developers; mettendo in CC:/BCC: un'altra lista - FreeBSD. - Mai e poi mai invia un messaggio su un'altra mailing list mettendo - in CC:/BCC: la &a.developers;. Fare questo può diminuire - enormemente i benefici di questa lista. Inoltre, non pubblicare o - inoltrare mai email inviate alla &a.developers;. L'atto di inviare - un messaggio alla &a.developers; anziché a una lista - pubblica significa che le informazioni contenute non sono ad uso - pubblico. - - - - - - - Guida Rapida a SSH - - - - Se stai usando FreeBSD 4.0 o successivo, OpenSSH è incluso - nel sistema base. Se stai usando una release precedente, aggiorna - ed installa uno dei port di SSH. In generale, probabilmente vorrai - prendere OpenSSH dal port security/openssh. Potresti anche voler - estrarre l'ssh1 originale dal port security/ssh, ma sii certo di porre la - dovuta attenzione alla sua licenza. Nota che questi port non possono - essere installati contemporaneamente. - - - - Se non vuoi digitare la tua password ogni volta che usi - &man.ssh.1;, e usi chiavi RSA o DSA per autenticarti, - &man.ssh-agent.1; è lì per la tua comodità. - Se vuoi usare &man.ssh-agent.1;, assicurati di eseguirlo prima di - utilizzare altre applicazioni. Gli utenti X, per esempio, solitamente - fanno questo dal loro file .xsession o - .xinitrc. Guarda &man.ssh-agent.1; per i - dettagli. - - - - Genera un paio di chiavi con &man.ssh-keygen.1;. Le chiavi - finiranno nella tua directory - $HOME/.ssh/. - - - - Invia la tua chiave pubblica - ($HOME/.ssh/id_dsa.pub o - $HOME/.ssh/id_rsa.pub) - alla persona che ti sta configurando come committer in modo che possa - inserirla nel file - tualogin su - freefall. - - - - Ora dovresti essere in grado di usare &man.ssh-add.1; per autenticarti - una volta a sessione. Ti verrà richiesta la pass phrase della tua - chiave privata, e quindi verrà salvata nel tuo agente di - autenticazione (&man.ssh-agent.1;). Se non vuoi più avere la tua - chiave salvata nell'agente, l'esecuzione di ssh-add -d - la rimuoverà. - - Verifica facendo qualcosa come ssh freefall.FreeBSD.org ls - /usr. - - Per maggiori informazioni, guarda security/openssh, &man.ssh.1;, - &man.ssh-add.1;, &man.ssh-agent.1;, &man.ssh-keygen.1;, e - &man.scp.1;. - - - - Il Lungo Elenco di Regole dei Committer di FreeBSD - - Traduzione in corso - - - - Supporto per Diverse Architetture - - Traduzione in corso - - - - FAQ Specifiche sui Port - - Traduzione in corso - - - - Benefici del Lavoro - - Sfortunatamente, non ci sono molti benefici derivanti dall'essere un - committer. Il riconoscimento di essere un progettista di software - competente è probabilmente l'unica cosa che sarà di tuo - vantaggio a lungo termine. Ciononostante, ci sono comunque alcuni - benefici: - - - - Accesso diretto al cvsup-master - - - Come committer, puoi chiedere a &a.kuriyama; accesso diretto - a cvsup-master.FreeBSD.org, - fornendo l'output della tua chiave pubblica tramite - cvpasswd - yourusername@FreeBSD.org - freefall.FreeBSD.org. Nota: devi specificare - freefall.FreeBSD.org sulla riga di comando si - cvpasswd anche se il server attuale è - cvsup-master. L'accesso al - cvsup-master non dovrebbe essere abusato visto che - è una macchina carica di lavoro. - - - - - Un abbonamento gratuito al set da 4 CD o DVD - - - FreeBSD Mall, - Inc. offre un abbonamento gratuito al set da 4 CD o DVD a - tutti i committer di FreeBSD. Le informazioni su come ottenere il - prodotto gratuitamente vengono spedite a - developers@FreeBSD.org dopo ogni release. - - - - - - - Domande Generali - - Traduzione in corso - -
Property changes on: head/it_IT.ISO8859-15/articles/committers-guide/article.xml ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/sgml \ No newline at end of property Index: head/it_IT.ISO8859-15/articles/committers-guide/Makefile =================================================================== --- head/it_IT.ISO8859-15/articles/committers-guide/Makefile (revision 52098) +++ head/it_IT.ISO8859-15/articles/committers-guide/Makefile (nonexistent) @@ -1,21 +0,0 @@ -# -# $FreeBSD$ -# -# Articolo: Guida del Committer - -MAINTAINER=ale@FreeBSD.org - -DOC?= article - -FORMATS?= html -WITH_ARTICLE_TOC?= YES - -INSTALL_COMPRESSED?= gz -INSTALL_ONLY_COMPRESSED?= - -SRCS= article.xml - -URL_RELPREFIX?= ../../../.. -DOC_PREFIX?= ${.CURDIR}/../../.. - -.include "${DOC_PREFIX}/share/mk/doc.project.mk" Property changes on: head/it_IT.ISO8859-15/articles/committers-guide/Makefile ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Index: head/it_IT.ISO8859-15/articles/filtering-bridges/article.xml =================================================================== --- head/it_IT.ISO8859-15/articles/filtering-bridges/article.xml (revision 52098) +++ head/it_IT.ISO8859-15/articles/filtering-bridges/article.xml (nonexistent) @@ -1,429 +0,0 @@ - - - -
- Filtering Bridges - - - - AlexDupre -
ale@FreeBSD.org
-
-
- - - &tm-attrib.freebsd; - &tm-attrib.3com; - &tm-attrib.intel; - &tm-attrib.general; - - - $FreeBSD$ - - $FreeBSD$ - - - Spesso è utile dividere una rete fisica (come una Ethernet) - in due segmenti separati, senza dover creare sottoreti e usare un router - per collegarli assieme. Il dispositivo che collega due reti insieme in - questo modo è chiamato bridge. Un sistema FreeBSD con due - interfacce di rete è sufficiente per raggiungere lo scopo. - - Un bridge funziona individuando gli indirizzi del livello - MAC (indirizzi Ethernet) dei dispositivi collegati ad - ognuna delle sue interfacce di rete e inoltrando il traffico tra le due - reti solo se il mittente e il destinatario si trovano su segmenti - differenti. Sotto molti punti di vista un brigde è simile a uno - switch Ethernet con solo due porte. - -
- - - Perché usare un filtering bridge? - - Sempre più frequentemente, grazie all'abbassamento dei costi - delle connessioni a banda larga (xDSL) e a causa della riduzione del - numero di indirizzi IPv4 disponibili, molte società si ritrovano - collegate ad Internet 24 ore su 24 e con un numero esiguo (a volte nemmeno - una potenza di 2) di indirizzi IP. In situazioni come queste spesso - è desiderabile avere un firewall che regoli i permessi di ingresso - e uscita per il traffico da e verso Internet, ma una soluzione basata - sulle funzionalità di packet filtering dei router può non - essere applicabile, vuoi per problemi di suddivisione delle sottoreti, - vuoi perché il router è di proprietà del fornitore di - accesso (ISP), vuoi perché il router non - supporta tali funzionalità. È in questi casi che l'utilizzo - di un filtering bridge diventa altamente consigliato. - - Un firewall basato su bridge può essere configurato e inserito - direttamente tra il router xDSL e il vostro hub/switch Ethernet senza - alcun problema di assegnazione di indirizzi IP. - - - La traduzione italiana di firewall è - muro anti incendio, non - muro di fuoco come molti pensano. Nel corso - dell'articolo, comunque, manterrò i termini tecnici nella loro - lingua originale in modo da non creare confusione o - ambiguità. - - - - - Metodi d'installazione - - Aggiungere le funzionalità di bridge a una macchina FreeBSD non - è difficile. Dalla release 4.5 è possibile caricare tali - funzionalità come moduli anziché dover ricompilare il - kernel, semplificando di gran lunga la procedura. Nelle prossime - sottosezioni spiegherò entrambi i metodi di installazione. - - - Non seguite entrambe le istruzioni: le - procedure sono a esclusione. Scegliete - l'alternativa che meglio si adatta alle vostre esigenze e - capacità. - - - Prima di continuare è necessario assicurarsi di avere almeno - due schede di rete Ethernet che supportino la modalità promiscua - sia in ricezione che in trasmissione, difatti devono essere in grado di - inviare pacchetti Ethernet con qualunque indirizzo, non solo il loro. - Inoltre, per avere un buon rendimento, le schede dovrebbero essere di - tipo PCI bus mastering. Le scelte migliori sono ancora le Intel - ðerexpress; Pro seguite dalle &tm.3com; 3c9xx subito dopo. Per - comodità nella configurazione del firewall può essere - utile avere due schede di marche differenti (che usino drivers - differenti) in modo da distinguere chiaramente quale interfaccia sia - collegata al router e quale alla rete interna. - - - Configurazione del Kernel - - Così avete deciso di utilizzare il più vecchio e - collaudato metodo di installazione. Per prima cosa bisogna - aggiungere le seguenti righe al file di configurazione del - kernel: - - options BRIDGE -options IPFIREWALL -options IPFIREWALL_VERBOSE - - La prima riga serve a compilare il supporto per il bridge, la - seconda il firewall e la terza le funzioni di logging del firewall. - - - Adesso è necessario compilare e installare il nuovo kernel. - Si possono trovare le istruzioni nella sezione - Building and Installing a Custom Kernel dell'handbook. - - - - Caricamento dei Moduli - - Se avete deciso di usare il nuovo e più semplice metodo di - installazione, l'unica cosa da fare è aggiungere la seguente riga - al file /boot/loader.conf: - - bridge_load="YES" - - In questo modo all'avvio della macchina verrà caricato - insieme al kernel anche il modulo bridge.ko. Non - è necessario invece aggiungere una riga per il modulo - ipfw.ko in quanto verrà caricato in - automatico dallo script /etc/rc.network dopo aver - seguito i passi della prossima sezione. - - - - - Preparativi finali - - Prima di riavviare per caricare il nuovo kernel o i moduli richiesti - (a seconda del metodo che avete scelto in precedenza), bisogna effettuare - alcune modifiche al file /etc/rc.conf. La regola di - default del firewall è di rifiutare tutti i pacchetti IP. Per - iniziare attiviamo il firewall in modalità , - in modo da verificare il suo funzionamento senza alcun problema di - filtraggio pacchetti (nel caso stiate eseguendo questa procedura da - remoto, tale accorgimento vi consentirà di non rimanere - erroneamente tagliati fuori dalla rete). - Inserite queste linee nel file /etc/rc.conf: - - firewall_enable="YES" -firewall_type="open" -firewall_quiet="YES" -firewall_logging="YES" - - La prima riga serve ad attivare il firewall (e a caricare il modulo - ipfw.ko nel caso non fosse già compilato nel - kernel), la seconda a impostarlo in modalità - (come descritto nel file - /etc/rc.firewall), la terza a non - visualizzare il caricamento delle regole e la quarta ad abilitare il - supporto per il logging. - - Per quanto riguarda la configurazione delle interfacce di rete, il - metodo più utilizzato è quello di assegnare un IP a solo una - delle schede di rete, ma il bridge funziona egualmente anche se entrambe o - nessuna delle interfacce ha IP settati. In quest'ultimo caso (IP-less) la - macchina bridge sarà ancora più nascosta in quanto - inaccessibile dalla rete: per configurarla occorrerà quindi entrare - da console o tramite una terza interfaccia di rete separata dal bridge. A - volte all'avvio della macchina qualche programma richiede di accedere alla - rete, per esempio per una risoluzione di dominio: in questo caso è - necessario assegnare un IP all'interfaccia esterna (quella collegata a - Internet, dove risiede il server DNS), visto che il - bridge verrà attivato alla fine della procedura di avvio. Questo - vuol dire che l'interfaccia fxp0 (nel nostro - caso) deve essere menzionata nella sezione ifconfig del file - /etc/rc.conf, mentre la xl0 - no. Assegnare IP a entrambe le schede di rete non ha molto senso, a meno - che durante la procedura di avvio non si debba accedere a servizi presenti - su entrambi i segmenti Ethernet. - - C'è un'altra cosa importante da sapere. Quando si utilizza IP - sopra Ethernet ci sono due protocolli Ethernet in uso: uno è IP, - l'altro è ARP. ARP permette - la conversione dell'indirizzo IP di una macchina nel suo indirizzo - Ethernet (livello MAC). Affinché due macchine - separate dal bridge riescano a comunicare tra loro è necessario che - il bridge lasci passare i pacchetti ARP. Tale - protocollo non fa parte del livello IP, visto che è presente solo - con IP sopra Ethernet. Il firewall di FreeBSD agisce esclusivamente sul - livello IP e quindi tutti i pacchetti non IP (compreso - ARP) verranno inoltrati senza essere filtrati, anche se - il firewall è configurato per non lasciar passare nulla. - - Ora è arrivato il momento di riavviare la macchina e usarla - come in precedenza: appariranno dei nuovi messaggi riguardo al bridge e al - firewall, ma il bridge non sarà attivato e il firewall, essendo in - modalità , non impedirà nessuna - operazione. - - Se ci dovessero essere dei problemi, è il caso di scoprire ora - da cosa derivino e risolverli prima di continuare. - - - - Attivazione del Bridge - - A questo punto, per attivare il bridge, bisogna eseguire i seguenti - comandi (avendo l'accortezza di sostituire i nomi delle due interfacce di - rete fxp0 e xl0 con i - propri): - - &prompt.root; sysctl net.link.ether.bridge.config=fxp0:0,xl0:0 -&prompt.root; sysctl net.link.ether.bridge.ipfw=1 -&prompt.root; sysctl net.link.ether.bridge.enable=1 - - La prima riga specifica tra quali interfacce va attivato il bridge, - la seconda abilita il firewall sul bridge ed infine la terza attiva il - bridge. - - - Se hai &os; 5.1-RELEASE o precedenti le variabili sysctl - sono chiamate in modo differente. Guarda &man.bridge.4; per i - dettagli. - - - A questo punto dovrebbe essere possibile inserire la macchina tra - due gruppi di host senza che venga compromessa qualsiasi - possibilità di comunicazione tra di loro. Se è così, - il prossimo passo è quello di aggiungere le parti - net.link.ether.bridge.[blah]=[blah] - di queste righe al file /etc/sysctl.conf, in modo che - vengano eseguite all'avvio della macchina. - - - - Configurazione del Firewall - - Ora è arrivato il momento di creare il proprio file con le - regole per il firewall, in modo da rendere sicura la rete interna. - Ci sono delle complicazioni nel fare questo, perché non tutte le - funzionalità del firewall sono disponibili sui pacchetti inoltrati - dal bridge. Inoltre, c'è una differenza tra i pacchetti che stanno - per essere inoltrati dal bridge e quelli indirizzati alla macchina locale. - In generale, i pacchetti che entrano nel bridge vengono processati dal - firewall solo una volta, non due come al solito; infatti vengono filtrati - solo in ingresso, quindi qualsiasi regola che usi - oppure non verrà mai eseguita. Personalmente - uso che è una sintassi più antica, - ma che ha un senso quando la si legge. - Un'altra limitazione è che si possono usare solo i comandi - e per i pacchetti filtrati - dal bridge. Cose avanzate come , - o non sono disponibili. - Queste opzioni possono ancora essere usate, ma solo per il traffico da - e verso la macchina bridge stessa (sempre che le sia stato assegnato - un IP). - - Nuovo in FreeBSD 4.0 è il concetto di stateful filtering. - Questo è un grande miglioramento per il traffico - UDP, che consiste tipicamente di una richiesta in - uscita, seguita a breve termine da una risposta con la stessa coppia di - indirizzi IP e numeri di porta (ma con mittente e destinatario invertiti, - ovviamente). Per i firewall che non supportano il mantenimento di stato, - non c'è modo di gestire questo breve scambio di dati come una - sessione unica. Ma con un firewall che può - ricordarsi di un pacchetto UDP in - uscita e permette una risposta nei minuti successivi, gestire i - servizi UDP è semplice. - L'esempio seguente mostra come fare. La stessa cosa è - possibile farla con i pacchetti TCP. Questo - permette di evitare qualche tipo di attacco denial of service e altri - sporchi trucchi, ma tipicamente fa anche crescere velocemente la - tabella di stato. - - Vediamo un esempio di configurazione. Bisogna notare che all'inizio - del file /etc/rc.firewall ci sono già delle - regole standard per l'interfaccia di loopback - lo0, quindi non ce ne occuperemo più ora. - Le regole personalizzate andrebbero messe in un file a parte (per esempio - /etc/rc.firewall.local) e caricate all'avvio - modificando la riga del file /etc/rc.conf dove era - stata definita la modalità con: - - firewall_type="/etc/rc.firewall.local" - - - Bisogna specificare il path completo - del file, altrimenti non verrà caricato con il rischio di - rimanere tagliati fuori dalla rete. - - - Per il nostro esempio immaginiamo di avere l'interfaccia - fxp0 collegata all'esterno (Internet) e la - xl0 verso l'interno (LAN). - La macchina bridge ha assegnato l'IP - 1.2.3.4 - (è impossibile che il vostro ISP vi assegni un - indirizzo simile a questo, ma per l'esempio va bene). - - # Le connessioni di cui abbiamo mantenuto lo stato vengono fatte passare subito -add check-state - -# Esclude le reti locali definite nell'RFC 1918 -add drop all from 10.0.0.0/8 to any in via fxp0 -add drop all from 172.16.0.0/12 to any in via fxp0 -add drop all from 192.168.0.0/16 to any in via fxp0 - -# Permette alla macchina bridge di connettersi con chi vuole -# (se la macchina è IP-less non includere questi comandi) -add pass tcp from 1.2.3.4 to any setup keep-state -add pass udp from 1.2.3.4 to any keep-state -add pass ip from 1.2.3.4 to any - -# Permette agli host della rete interna di connettersi con chi vogliono -add pass tcp from any to any in via xl0 setup keep-state -add pass udp from any to any in via xl0 keep-state -add pass ip from any to any in via xl0 - -# Sezione TCP -# Permette SSH -add pass tcp from any to any 22 in via fxp0 setup keep-state -# Permette SMTP solo verso il mail server -add pass tcp from any to relay 25 in via fxp0 setup keep-state -# Permette i trasferimenti di zona solo dal name server secondario [dns2.nic.it] -add pass tcp from 193.205.245.8 to ns 53 in via fxp0 setup keep-state -# Lascia passare i controlli ident: -# è meglio che aspettare che vadano in timeout -add pass tcp from any to any 113 in via fxp0 setup keep-state -# Permette connessioni nel range di "quarantena". -add pass tcp from any to any 49152-65535 in via fxp0 setup keep-state - -# Sezione UDP -# Permette DNS solo verso il name server -add pass udp from any to ns 53 in via fxp0 keep-state -# Permette connessioni nel range di "quarantena". -add pass udp from any to any 49152-65535 in via fxp0 keep-state - -# Sezione ICMP -# Abilita le funzioni di 'ping' -add pass icmp from any to any icmptypes 8 keep-state -# Permette il passaggio dei messaggi di errori del comando 'traceroute' -add pass icmp from any to any icmptypes 3 -add pass icmp from any to any icmptypes 11 - -# Tutto il resto è sospetto -add drop log all from any to any - - Coloro che hanno configurato un firewall in precedenza potrebbero aver - notato che manca qualcosa. In particolare, non ci sono regole contro lo - spoofing, difatti non abbiamo aggiunto: - - add deny all from 1.2.3.4/8 to any in via fxp0 - - Ovvero, non far entrare dall'esterno pacchetti che affermano di venire - dalla rete interna. Questa è una cosa che solitamente viene fatta - per essere sicuri che qualcuno non provi a eludere il packet filter, - generando falsi pacchetti che sembrano venire dall'interno. Il problema - è che c'è almeno un host - sull'interfaccia esterna che non si può ignorare: il router. - Solitamente, però, gli ISP eseguono il controllo - anti-spoof sui loro router e quindi non ce ne dobbiamo preoccupare. - - L'ultima riga sembra un duplicato della regola di default, ovvero non - far passare nulla che non sia stato specificatamente permesso. In - verità c'è una differenza: tutto il traffico sospetto - verrà loggato. - - Ci sono due regole per permettere il traffico SMTP - e DNS verso il mail server e il name server, se ne - avete. Ovviamente l'intero set di regole deve essere personalizzato - per le proprie esigenze, questo non è altro che uno specifico - esempio (il formato delle regole è spiegato dettagliatamente nella - man page &man.ipfw.8;). Bisogna notare che, affinché - relay e ns - siano interpretati correttamente, la risoluzione dei nomi deve funzionare - prima che il bridge sia attivato. Questo è un - chiaro esempio che dimostra l'importanza di settare l'IP sulla corretta - scheda di rete. In alternativa è possibile specificare - direttamente l'indirizzo IP anziché il nome host (cosa necessaria - se la macchina è IP-less). - - Le persone che sono solite configurare un firewall probabilmente - avranno sempre usato una regola o - per i pacchetti - ident (porta 113 TCP). Sfortunatamente, questa non - è una scelta applicabile con il bridge, quindi la cosa migliore - è lasciarli passare fino alla destinazione. Finché la - macchina di destinazione non ha un demone ident attivo, questa tecnica - è relativamente sicura. L'alternativa è proibire le - connessioni sulla porta 113, creando qualche problema con servizi tipo - IRC (le richieste ident devono andare in - timeout). - - L'unica altra cosa un po' particolare che potete aver notato è - che c'è una regola per lasciar comunicare la macchina bridge e - un'altra per gli host della rete interna. Ricordate che questo è - dovuto al fatto che i due tipi di traffico prendono percorsi differenti - attraverso il kernel e di conseguenza anche dentro il packet filter. La - rete interna passerà attraverso il bridge, mentre la macchina - locale userà il normale stack IP per le connessioni. Perciò - due regole per gestire due casi differenti. Le regole in via - fxp0 funzionano in entrambi i casi. - In generale, se usate regole attraverso il - packet filter, dovrete fare un'eccezione per i pacchetti generati - localmente, in quanto non entrano tramite nessuna interfaccia. - - - - Contributi - - Alcune parti di questo articolo sono state prese, tradotte e - adattate da testi sui bridge, appartenenti alla documentazione di FreeBSD - in lingua inglese, a cura di Nick Sayer e Steve Peterson. - - Un grosso ringraziamento va a Luigi Rizzo per l'implementazione - delle funzionalità di bridging in FreeBSD e per il tempo che mi ha - dedicato rispondendo ad alcune mie domande a riguardo. - -
Property changes on: head/it_IT.ISO8859-15/articles/filtering-bridges/article.xml ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/sgml \ No newline at end of property Index: head/it_IT.ISO8859-15/articles/filtering-bridges/Makefile =================================================================== --- head/it_IT.ISO8859-15/articles/filtering-bridges/Makefile (revision 52098) +++ head/it_IT.ISO8859-15/articles/filtering-bridges/Makefile (nonexistent) @@ -1,18 +0,0 @@ -# -# $FreeBSD$ -# -# Articolo: Filtering Bridges - -DOC?= article - -FORMATS?= html - -INSTALL_COMPRESSED?=gz -INSTALL_ONLY_COMPRESSED?= - -SRCS= article.xml - -URL_RELPREFIX?= ../../../.. -DOC_PREFIX?= ${.CURDIR}/../../.. - -.include "${DOC_PREFIX}/share/mk/doc.project.mk" Property changes on: head/it_IT.ISO8859-15/articles/filtering-bridges/Makefile ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Index: head/it_IT.ISO8859-15/articles/Makefile =================================================================== --- head/it_IT.ISO8859-15/articles/Makefile (revision 52098) +++ head/it_IT.ISO8859-15/articles/Makefile (nonexistent) @@ -1,12 +0,0 @@ -# $FreeBSD$ - -SUBDIR = -SUBDIR+= committers-guide -SUBDIR+= explaining-bsd -SUBDIR+= filtering-bridges -SUBDIR+= new-users -SUBDIR+= vm-design - -DOC_PREFIX?= ${.CURDIR}/../.. - -.include "${DOC_PREFIX}/share/mk/doc.project.mk" Property changes on: head/it_IT.ISO8859-15/articles/Makefile ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Index: head/it_IT.ISO8859-15/Makefile =================================================================== --- head/it_IT.ISO8859-15/Makefile (revision 52098) +++ head/it_IT.ISO8859-15/Makefile (revision 52099) @@ -1,10 +1,9 @@ # $FreeBSD$ -SUBDIR = articles SUBDIR+= books COMPAT_SYMLINK = it DOC_PREFIX?= ${.CURDIR}/.. .include "${DOC_PREFIX}/share/mk/doc.project.mk" Index: head/it_IT.ISO8859-15/books/unix-introduction/command-summary/chapter.xml =================================================================== --- head/it_IT.ISO8859-15/books/unix-introduction/command-summary/chapter.xml (revision 52098) +++ head/it_IT.ISO8859-15/books/unix-introduction/command-summary/chapter.xml (nonexistent) @@ -1,671 +0,0 @@ - - - - Riassunto dei comandi Unix - - - Comandi Unix - - Nella tabella che segue vengono riassunti i comandi maggiormente usati - su un sistema Unix. In questa tabella, come in generale avviene, per - molti comandi Unix, file può essere un - nome di file, una lista di nomi di file o input/output che potrebbe essere - rediretto per o dal comando. - - - Comandi Unix - - - - - - - Comando/Sintassi - - Cosa fa - - - - - - awk/nawk [opzioni] - file - - esamina schemi in un file e processa i risultati - - - - cat [opzioni] - file - - concatena (lista) un file - - - - cd - [directory] - - cambia directory - - - - chgrp [opzioni] - gruppo file - - cambia il gruppo di appartenenza di un file - - - - chmod [opzioni] - file - - cambia i permessi di accesso a file o directory - - - - chown [opzioni] - proprietario file - - cambia il proprietario di un file; può essere solo - fatto dal super-user - - - - chsh (passwd -e/-s) username - login_shell - - cambia la shell di login dell'utente (spesso solamente - attraverso il super-user) - - - - cmp [opzioni] - file1 file2 - - confronta due file e mostra dove avvengono le differenze - (file di testo e file binari) - - - - compress [opzioni] - file - - comprime il file specificato e lo salva con l'estensione - .Z - - - - cp [opzioni] - file1 file2 - - copia file1 - in file2; - file2 non dovrebbe - già esistere. Questo comando crea o sovrascrive - file2 - - - - cut (opzioni) - [file] - - taglia specifici campi/caratteri dalle linee del file - specificato - - - - date - [opzioni] - - riporta data e ora corrente - - - - dd [if=infile] - [of=outfile] - [operando=valore] - - copia un file, converte tra ASCII e EBCDIC o scambia l'ordine - di byte, come specificato - - - - diff [opzioni] - file1 file2 - - confronta i due file e visualizza le differenze (solamente - file di testo) - - - - df [opzioni] - [risorsa] - - riporta il sommario dei blocchi del disco e degli inode - liberi e usati - - - - du [opzioni] - [directory o - file] - - riporta lo spazio di disco usato - - - - echo - [stringa di testo] - - riporta la stringa di testo specificata in standard - output - - - - ed o ex - [opzioni] - file - - editor a linea di comando - - - - emacs [opzioni] - file - - editor a schermo-pieno - - - - expr - argomenti - - valuta gli argomenti. Usato per l'aritmetica, ecc. in - shell - - - - file [opzioni] - file - - classifica il tipo di file - - - - find directory - [opzioni] - [azioni] - - cerca file basandosi sul tipo o su uno schema - - - - finger [opzioni] - user[@nomehost] - - riporta informazioni circa gli utenti di macchine locali e - remote - - - - ftp [opzioni] - host - - trasferisce file utilizzando il protocollo di trasferimento - di file (FTP) - - - - grep [opzioni] - 'stringa di ricerca' - argomento - - ricerca nell'argomento (in questo caso - probabilmente un file) tutte le occorrenze della stringa di - ricerca specificata e le visualizza - - - - egrep [opzioni] - 'stringa di ricerca' - argomento - - - - fgrep [opzioni] - 'stringa di ricerca' - argomento - - - - gzip [opzioni] - file - - comprime o decomprime un file. I file compressi - vengo memorizzati con l'estensione - .gz - - - - gunzip [opzioni] - file - - - - zcat [opzioni] - file - - - - head [-numero] - file - - mostra le prime 10 (o numero di) linee di un file - - - - hostname - - mostra o setta (solamente super-user) il nome della macchina - attuale - - - - kill [opzioni] - [-SEGNALE] - [pid#] - [%job] - - manda un segnale al processo specificato dal numero di - processo id (pid#) o dal numero di - controllo del job (%n). Il segnale di - default termina il processo - - - - ln [opzioni] - sorgente - destinazione - - crea un collegamento di nome - destinazione a - sorgente - - - - lpq - [opzioni] - - mostra lo stato dei job di stampa - - - - lpstat - [opzioni] - - - - lpr [opzioni] - file - - stampa sulla stampante specificata - - - - lp [opzioni] - file - - - - lprm - [opzioni] - - rimuove un job di stampa dalla coda di - stampa - - - - cancel - [opzioni] - - - - ls [opzioni] - [directory o - file] - - elenca il contenuto della directory specificata o i permessi - del file specificato - - - - mail [opzioni] - [user] - - semplice utility per la posta elettronica - disponibile su un sistema Unix. Si digita un punto come primo - carattere su una nuova linea per trasmettere il messaggio, un - punto interrogativo per richiamare l'help - - - - mailx [opzioni] - [user] - - - - Mail [opzioni] - [user] - - - - man [opzioni] - comando - - mostra la pagina di manuale (man) - del comando specificato - - - - mkdir [opzioni] - directory - - crea una directory - - - - more [opzioni] - file - - impaginatore di un file testuale - - - - less [opzioni] - file - - - - pg [opzioni] - file - - - - mv [opzioni] - file1 file2 - - muove file1 - in file2 - - - - od [opzioni] - file - - dump su un file binario, in ottale, in ASCII, in - esadecimale, in decimale o in modalità carattere. - - - - passwd - [opzioni] - - setta o modifica la propria password - - - - paste [opzioni] - file - - incolla campi nelle linee del file specificato - - - - pr [opzioni] - file - - filtra il file e lo stampa su un terminale - - - - ps - [opzioni] - - mostra lo stato dei processi attivi - - - - pwd - - stampa la directory di lavoro (corrente) - - - - rcp [opzioni] - nomehost - - copia file in remoto dalla macchina corrente in un'altra - macchina - - - - rlogin [opzioni] - nomehost - - effettua il login in remoto su un'altra macchina - - - - rm [opzioni] - file - - rimuove (elimina) un file o una directory - ( elimina ricorsivamente la directory ed il suo - contenuto) ( chiede conferma prima di eliminare - i file) - - - - rmdir [opzioni] - directory - - rimuove una directory - - - - rsh [opzioni] - nomehost - - shell remota da eseguire su un'altra macchina - - - - script - file - - memorizza ogni cosa che appare sullo schermo in un file fino - a quando si esegue exit - - - - sed [opzioni] - file - - editor di flusso per editare file da uno script o da linea di - comando - - - - sort [opzioni] - file - - ordina le linee del file specificato basandosi sulle opzioni - scelte - - - - source - file - - legge i comandi dal file specificato - e li esegue nella shell corrente. source per - la shell C, . per la shell Bourne - - - - . file - - - - strings [opzioni] - file - - riporta sequenze di 4 o più caratteri stampabili - terminanti in <NL> o <NULL>. Generalmente viene usato - per ricercare in file binari stringhe ASCII - - - - stty - [opzioni] - - setta o visualizza le opzioni del terminale di - controllo - - - - tail [opzioni] - file - - mostra le ultime linee (o parte) di un file - - - - tar [opzioni] - [file] - - archivio a nastro--riferirsi alle pagine man per dettagli su - come creare, elencare ed estrarre file da un archivio. I file tar - possono essere memorizzati su disco o su nastro. - - - - tee [opzioni] - file - - copia standard output in uno o più file - - - - telnet [host - [porta]] - - comunica con un altro host usando il protocollo - telnet - - - - touch [opzioni] - [data/ora] - file - - crea un file vuoto o aggiorna la data/ora di accesso di un - file esistente - - - - tr [opzioni] - stringa1 stringa2 - - traduce i caratteri di stringa1 - provenienti da standard input in quelli di - stringa2 per standard output - - - - uncompress - file.Z - - decomprime il file specificato e lo salva in un file - - - - uniq [opzioni] - file - - rimuove le linee ripetute in un file - - - - uudecode - [file] - - decodifica un file codificato con - uuencode, riportandolo al file - originale - - - - uuencode [file] - nuovo_nome - - codifica un file binario in codice ASCII 7-bit; utile quando - lo si trasmette via email, per essere poi decodificato come - nuovo_nome alla - destinazione - - - - vi [opzioni] - file - - editor visuale, a pieno schermo - - - - wc [opzioni] - [file] - - mostra il numero di parole (o di caratteri o di linee) del - file specificato - - - - whereis [opzioni] - comando - - riporta le locazioni del binario, del sorgente e della pagina - man per il comando specificato - - - - which - comando - - riporta il percorso del comando o l'alias di shell in - uso - - - - who o w - - riporta chi è loggato e quali processi - ha in esecuzione - - - - zcat - file.Z - - concatena (lista) il file non compresso a video, lasciando il - file compresso su disco - - - -
-
-
Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/command-summary/chapter.xml ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/sgml \ No newline at end of property Index: head/it_IT.ISO8859-15/books/unix-introduction/special-features/chapter.xml =================================================================== --- head/it_IT.ISO8859-15/books/unix-introduction/special-features/chapter.xml (revision 52098) +++ head/it_IT.ISO8859-15/books/unix-introduction/special-features/chapter.xml (nonexistent) @@ -1,554 +0,0 @@ - - - - Caratteristiche speciali di Unix - - Uno dei più importanti contributi che Unix ha dato ai sistemi - operativi è stato quello di fornire molti strumenti per creare lavori - ordinari e per ottenere le informazioni che si desiderano. Un altro - è rappresentato dal modo standard con cui i dati sono memorizzati e - trasmessi in un sistema Unix. Questo permette di trasferire dati - in un file, nel terminale video o in un programma, - oppure da un file, dalla tastiera o da un programma, - sempre in maniera uniforme. Il trattamento standardizzato dei dati supporta - due importanti caratteristiche di Unix: la redirezione di I/O e il - piping. - - Con la redirezione dell'output, l'output di un - comando viene rediretto su un file piuttosto che sul terminale video. - Con la redirezione dell'input, l'input di un comando - viene preso da un file piuttosto che dalla tastiera. Sono possibili - altre tecniche di redirezione dell'input e dell'output come - si vedrà in seguito. Con il piping, l'output di - un comando può essere usato come input di un comando successivo. - In questo capitolo si discuterà di alcune delle caratteristiche e - degli strumenti disponibili per gli utenti Unix. - - - Descrittori di file - - Ci sono 3 descrittori di file standard: - - - - - - - - - - &man.stdin.4; - - 0 - - Standard input per il programma - - - - &man.stdout.4; - - 1 - - Standard output dal programma - - - - &man.stderr.4; - - 2 - - Standard error (output) dal programma - - - - - - Normalmente l'input viene preso dalla tastiera o da un file. - Generalmente l'output, sia &man.stdout.4; che &man.stderr.4;, scorre nel - terminale, ma può essere rediretto, uno o entrambi, su uno o - più file. - - Si possono specificare descrittori di file addizionali, denotandoli - con un numero da 3 a 9 e redirigendo l'I/O attraverso questi. - - - - Redirezione di file - - La redirezione dell'output prende l'output di un comando e lo - posiziona nel file specificato. La redirezione dell'input legge il file - specificato come input per un comando. La tabella che segue sintetizza le - possibili modalità di redirezione. - - - Redirezione di file - - - - - - - SIMBOLO - - REDIREZIONE - - - - - - > - - redirezione dell'output - - - - >! - - come sopra, ma non tiene conto dell'opzione - noclobber per &man.csh.1; - - - - >> - - appende l'output - - - - >>! - - come sopra, ma non tiene conto dell'opzione - noclobber su &man.csh.1; e crea il file se - non esiste - - - - | - - incanala (pipe) l'output nell'input di un altro - comando - - - - < - - redirezione dell'input - - - - <<Stringa - - legge da standard input fino a quando incontra una linea - contenente solo la parola Stringa. - Anche conosciuto come here document - (vedere il Capitolo 9) - - - - <<\Stringa - - come sopra, ma le sostituzioni di shell non sono - permesse - - - -
- - Un esempio di redirezione dell'output è: - - cat file1 file2 > - file3 - - Il precedente comando concatena - file1 - e file2 e redirige (manda) - l'output in file3. Se - file3 non esiste, viene - creato. Se esiste, verrà troncato a lunghezza zero prima che il - nuovo contenuto sia inserito, oppure, se l'opzione - noclobber della shell &man.csh.1; è abilitata, - il comando verrà rifiutato (vedere la shell &man.csh.1; nel - Capitolo 5). I file originali - file1 e - file2 rimarranno - come erano prima dell'esecuzione del comando, ossia due entità - separate. - - L'output viene appeso a un file con la forma: - - cat file1 >> - file2 - - Questo comando appende il contenuto di - file1 alla fine - dell'esistente file2 - (file2 non viene - soprascritto). - - L'input è rediretto (preso) da un file con la forma: - - programma < - file - - Questo comando prende l'input per il - programma da - file. - - Per incanalare (pipe) l'output di un programma nell'input di un altro - programma si usa la forma: - - comando|comando - - Questo comando assegna l'output del primo comando all'input del - secondo comando. - - - Csh - - - - - - - - >& - file - - redirige &man.stdout.4; e &man.stderr.4; in - file - - - - >>& - file - - appende &man.stdout.4; e &man.stderr.4; in - file - - - - |& - comando - - crea una pipe tra &man.stdout.4;-&man.stderr.4; e il - comando - - - - - - Per redirigere &man.stdout.4; e &man.stderr.4; in due file separati - si deve prima redirigere &man.stdout.4; in una sotto-shell, - così: - - &prompt.user; (comando > out_file) >& err_file - - - - Sh - - - - - - - - 2> - file - - redirige &man.stderr.4; in - file - - - - > file - 2>&1 - - redirige &man.stdout.4; e &man.stderr.4; in - file - - - - >> file - 2>&1 - - appende &man.stdout.4; e &man.stderr.4; in - file - - - - 2>&1 | - comando - - crea una pipe tra &man.stdout.4;-&man.stderr.4; e il - comando - - - - - - Per redirigere &man.stdout.4; e &man.stderr.4; in due file separati - si può fare: - - $ comando 1> out_file 2> err_file - - oppure, data la redirezione di default per &man.stdout.4;: - - $ comando > out_file 2> err_file - - Con la shell Bourne si possono specificare altri descrittori di file - (da 3 a 9) e redirigere l'output attraverso questi. Questo può - essere fatto con la forma: - - - - - - - - n>&m - - redirige il descrittore di file - n sul descrittore di file - m - - - - - - Questo meccanismo viene utilizzato per mandare &man.stderr.4; nello - stesso posto di &man.stdout.4;, 2>&1, quando - si vuole avere i messaggi di errore e i normali messaggi in un file - piuttosto che sul terminale. Se si vuole che solamente i messaggi di - errore vadano nel file, si può usare un descrittore di file di - supporto, 3. Si redirige prima 3 su 2, quindi 2 su 1 e in fine si - redirige 1 su 3. - - $ (comando 3>&2 2>&1 1>&3) > file - - Questo manda &man.stderr.4; in 1 e &man.stdout.4; in 3 che è - rediretto su 2. In questo modo, in effetti, si ribaltano i normali - significati dei descrittori di file 1 e 2. Si può sperimentare - tutto questo con l'esempio seguente: - - $ (cat file 3>&2 2>&1 1>&3) > errfile - - Quindi se file - è letto, l'informazione è scartata dall'output del - comando, ma se file non - può essere letto, i messaggi di errore sono messi nel file - errfile per usi - futuri. - - I descrittori di file che sono stati creati possono essere chiusi - con: - - - - - - - - m<&- - - chiude un descrittore di file di input - - - - <&- - - chiude &man.stdin.4; - - - - m>&- - - chiude un descrittore di file di output - - - - >&- - - chiude &man.stdout.4; - - - - - -
- - - Altri speciali simboli di comando - - Oltre ai simboli di redirezione dei file ci sono altri - simboli speciali che si possono usare su linea di comando. - Alcuni di questi sono: - - - - - - - - ; - - separatore di comandi - - - - & - - esegue un comando in background - - - - && - - esegue il comando seguente (a questo simbolo) solamente se il - comando precedente (a questo simbolo) è stato completato - con successo, esempio: - grep stringa file && cat - file - - - - || - - esegue il comando seguente (a questo simbolo) solamente se il - comando precedente (a questo simbolo) non è stato - completato con successo, esempio: - grep stringa file || - echo "Stringa non trovata." - - - - ( ) - - i comandi tra parentesi sono eseguiti in una sotto-shell. - L'output della sotto-shell può essere manipolato come - specificato nelle precedenti sezioni. - - - - ' ' - - segni di quoting letterali. All'interno di questi segni di - quoting non viene permesso ad alcuni caratteri di assumere - significati speciali. - - - - \ - - considera il prossimo carattere letteralmente - (escape) - - - - " " - - segni di quoting regolari. All'interno di questi segni di - quoting sono permesse sostituzioni di variabili e di comando - (non disattivano $ e \ all'interno della stringa). - - - - `comando` - - prende l'output del comando e lo sostituisce nell'argomento - su linea di comando - - - - # - - ogni cosa che lo segue fino a un newline è un - commento - - - - - - Inoltre, il carattere \ può essere usato per effettuare un - escape sul carattere di newline, in modo tale da continuare un - lungo comando su più di una linea fisica di testo. - - - - Meta caratteri - - La shell e alcuni programmi di manipolazione testo permettono i - meta-caratteri, chiamati anche - wild card, i quali vengono rimpiazzati dai - corrispondenti schemi (pattern). Per i nomi di file questi - meta-caratteri e i loro significati sono: - - - - - - - - ? - - indica un singolo carattere alla posizione - indicata - - - - * - - indica una stringa di zero o più - caratteri - - - - [abc...] - - indica un carattere tra quelli racchiusi - - - - [a-e] - - indica un carattere tra quelli nel range a, b, c, d, - e - - - - [!def] - - indica un carattere tra quelli non inclusi in parentesi, - solamente &man.sh.1; - - - - {abc,bcd,cde} - - indica un set di caratteri tra quelli inclusi in parentesi, - separati da una virgola (,) (niente spazi), solamente - &man.csh.1; - - - - ~ - - indica la directory home dell'utente corrente, solamente - &man.csh.1; - - - - ~user - - indica la directory home dell'utente specificato, solamente - &man.csh.1; - - - - - -
Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/special-features/chapter.xml ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/sgml \ No newline at end of property Index: head/it_IT.ISO8859-15/books/unix-introduction/bibliography/chapter.xml =================================================================== --- head/it_IT.ISO8859-15/books/unix-introduction/bibliography/chapter.xml (revision 52098) +++ head/it_IT.ISO8859-15/books/unix-introduction/bibliography/chapter.xml (nonexistent) @@ -1,179 +0,0 @@ - - - - Una breve bibliografia Unix - - - Una breve bibliografia Unix - - - - - - - - - Titolo - - Autori - - Editore - - Anno pub. - - - - - - UNIX: concetti, strutture, - utilizzo - - James R. Groff, Paul N. Weinberg - - Jackson - - 1988 - - - - Guida completa Unix System V. Release - 4 - - Coffin Steven - - Mc Graw Hill - - 1991 - - - - Introduzione all'architettura di sistema - Unix - - Prabhat K. Andleigh - - Jackson - - 1991 - - - - Usare Unix senza fatica - - John R. Levine, Margaret Levine Young - - Mc Graw Hill - - 1993 - - - - La grande guida Unix - - John J. Valley - - Jackson - - 1993 - - - - Shell Unix guida alla - programmazione - - Arthur, Burns - - Mc Graw Hill - - 1998 - - - - Introduzione alla struttura interna di - Unix - - Le Van Huu - - Unicopli - - 1998 - - - - Unix guida completa - - Rosen, Host, Farber, Rosinski - - Mc Graw Hill - - 1999 - - - - Gestione del sistema operativo Unix - - Bruno Catalano, Ezio Raddi - - Città Studi - - 2000 - - - - Guida a Unix seconda edizione - - Hahn H. - - Mc Graw Hill - - 2000 - - - - I segreti di Unix Seconda edizione - - Armstrong James - - Apogeo - - 2000 - - - - Guida a Unix con Linux - - Jack Dent, Tony Gaddis - - Apogeo - - 2001 - - - - Introduzione a Unix - - David L. Schwartz - - Apogeo - - 2001 - - - - Unix manuale per l'amministratore di sistema - terza - edizione - - Nemeth Evi, Snyder Garth, Seebass Scott, Hein Trent - - Pearson Education Italia - - 2002 - - - -
-
Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/bibliography/chapter.xml ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/sgml \ No newline at end of property Index: head/it_IT.ISO8859-15/books/unix-introduction/shells/chapter.xml =================================================================== --- head/it_IT.ISO8859-15/books/unix-introduction/shells/chapter.xml (revision 52098) +++ head/it_IT.ISO8859-15/books/unix-introduction/shells/chapter.xml (nonexistent) @@ -1,1157 +0,0 @@ - - - - Shell - - La shell, che sta tra l'utente e il sistema operativo, opera come un - interprete di comandi. Legge l'input dal terminale e traduce i comandi in - azioni, azioni che vengono intraprese dal sistema. La shell è simile - al command.com in DOS. Una volta effettuato il login - nel sistema, viene assegnata la shell di default. La shell, al suo avvio, - legge i suoi file di inizializzazione e può settare alcune - variabili di ambiente, i path di ricerca dei comandi, gli alias dei comandi - ed eseguire qualche comando specificato in questi file. - - La prima shell è stata la shell Bourne, &man.sh.1;. Ogni - piattaforma Unix dispone della shell Bourne o di una shell Bourne - compatibile. Questa shell ha molte buone caratteristiche per controllare - l'input e l'output, ma non è molto adatta all'utente interattivo. - Per andare incontro a quest'ultimo è stata scritta la shell C, - &man.csh.1;, presente ora in molti, ma non tutti, i sistemi Unix. - Questa shell usa una sorta di sintassi C, il linguaggio con cui Unix - è stato scritto, ma ha molte scomode implementazioni - dell'input/output. La shell C ha il controllo dei job, quindi può - mandare un job eseguito in background (sotto shell) in - foreground (in shell corrente). Inoltre ha la funzione di - history (storia dei comandi) che permette di modificare e ripetere comandi - eseguiti precedentemente. - - Il prompt di default per la shell Bourne è $ - (o &prompt.root; per l'utente root). Il prompt di default per la shell C - è &prompt.user;. - - Sono disponibili in rete molte altre shell. Quasi tutte sono basate - sulla shell &man.sh.1; o &man.csh.1; con estensioni per fornire il controllo - dei job alla shell &man.sh.1;, permettere di manipolare il modo di - esecuzione dei comandi su linea di comando, cercare attraverso i comandi - eseguiti precedentemente, fornire il completamento dei nomi dei comandi, - prompt personalizzati, ecc. Alcune delle seguenti shell maggiormente - conosciute potrebbero essere sul proprio amato sistema Unix: la shell korn, - ksh, di David Korn e la shell Bourne Again, &man.bash.1;, - dal progetto GNU Free Software Foundations, entrambe basate su &man.sh.1;, - la shell T-C, &man.tcsh.1; e l'estensione della shell C, - cshe, entrambe bastate su &man.csh.1;. In seguito si - descriveranno alcune delle caratteristiche di &man.sh.1; e &man.csh.1;, - così per iniziare. - - - Comandi built-in - - La shell ha alcuni comandi built-in, chiamati - anche comandi nativi. Questi comandi sono eseguiti direttamente dalla - shell e non chiamano nessun altro programma per essere eseguiti. Questi - comandi built-in possono essere diversi tra le varie shell. - - - Sh - - Per la shell Bourne alcuni dei comandi built-in più - comunemente usati sono: - - - - - - - - : - - comando null - - - - . - - prende (legge ed esegue) i comandi da un file - - - - case - - condizionale case - - - - cd - - cambia la directory di lavoro ($HOME di - default) - - - - echo - - scrive una stringa su standard output - - - - eval - - valuta l'argomento specificato e ritorna il risultato alla - shell - - - - exec - - esegue il comando specificato rimpiazzando la shell - corrente - - - - exit - - esce dalla shell corrente - - - - export - - condivide le variabili di ambiente specificate con le - successive shell - - - - for - - condizionale di ciclo for - - - - if - - condizionale if - - - - pwd - - mostra la directory di lavoro corrente - - - - read - - legge una linea di input da standard input - - - - set - - setta le variabili di shell - - - - test - - valuta un'espressione come vera o falsa - - - - trap - - intrappola un tipo di segnale ed esegue comandi - - - - umask - - setta la maschera di default relativa ai permessi da - impostare per i nuovi file - - - - unset - - resetta le variabili di shell - - - - wait - - attente che un specifico processo termini - - - - while - - condizionale di ciclo while - - - - - - - - Csh - - Per la shell C i comandi built-in maggiormente usati sono: - - - - - - - - alias - - assegna un nome a una funzione - - - - bg - - mette un job in background - - - - cd - - cambia la directory di lavoro corrente - - - - echo - - scrive una stringa su standard output - - - - eval - - valuta gli argomenti specificati e ritorna il risultato - alla shell - - - - exec - - esegue il comando specificato rimpiazzando la shell - corrente - - - - exit - - esce dalla shell corrente - - - - fg - - porta un job in foreground - - - - foreach - - condizionale di ciclo for - - - - glob - - crea un'espansione dei nomi di file su una lista senza - tenere conto del carattere di escape \ - - - - history - - stampa la storia dei comandi della shell - - - - if - - condizionale if - - - - jobs - - mostra o controlla i job attivi - - - - kill - - termina un processo specifico - - - - limit - - setta dei limiti sulle risorse di sistema - - - - logout - - termina la shell di login - - - - nice - comando - - abbassa la priorità di schedulazione del - comando specificato - - - - nohup - comando - - non termina il comando specificato quando la shell - esce - - - - popd - - estrae un record dallo stack delle directory e ritorna - nella directory estratta - - - - pushd - - cambia nella nuova directory specificata e aggiunge quella - corrente nello stack delle directory - - - - rehash - - ricrea la tabella hash dei percorsi (path) per i file - eseguibili - - - - repeat - - ripete un comando il numero di volte specificato - - - - set - - setta una variabile di shell - - - - setenv - - setta una variabile di ambiente per la shell corrente e per - quelle successive - - - - source - - prende (legge ed esegue) comandi da un file - - - - stop - - ferma uno specifico job in background - - - - switch - - condizionale switch - - - - umask - - setta la maschera di default relativa ai permessi da - impostare per i nuovi file - - - - unalias - - rimuove il nome alias specificato - - - - unset - - resetta le variabile di shell - - - - unsetenv - - resetta le variabili di ambiente - - - - wait - - attente la terminazione di tutti i processi in - background - - - - while - - condizionale di ciclo while - - - - - - - - - Variabili di ambiente - - Le variabili di ambiente sono usate per fornire informazioni ai - programmi che si utilizzano. Si possono avere sia variabili - globali di ambiente sia variabili locali di - shell. Le variabili globali di ambiente sono inizializzate - attraverso la propria shell di login e i nuovi programmi e le nuove shell - ereditano l'ambiente della shell genitore. Le variabili locali di shell - sono usate solamente dalla shell corrente e non sono passate ad altri - processi. Un processo figlio non può passare una variabile al suo - processo padre. - - Le variabili di ambiente correnti sono visualizzabili con i comandi - &man.env.1; o &man.printenv.1;. Alcune comuni variabili sono: - - - - - - - - DISPLAY - - Il display grafico da usare, esempio - nyssa:0.0 - - - - EDITOR - - Il path (percorso) del proprio editor di default, esempio - /usr/bin/vi - - - - GROUP - - Il proprio gruppo di login, esempio - staff - - - - HOME - - Il path della propria home directory, esempio - /home/frank - - - - HOST - - Il nome host del proprio sistema, esempio - nyssa - - - - IFS - - I separatori di campo interni, generalmente alcuni spazi - bianchi (tab, spazio e new-line di default) - - - - LOGNAME - - Il nome del proprio login, esempio - frank - - - - PATH - - I path per ricercare i comandi, esempio - /usr/bin:/usr/ucb:/usr/local/bin - - - - PS1 - - La stringa del prompt primario, solamente shell Bourne - ($ di default) - - - - PS2 - - La stringa del prompt secondario, solamente shell Bourne - (> di default) - - - - SHELL - - La propria shell di login, esempio - /usr/bin/csh - - - - TERM - - Il proprio tipo di terminale, esempio - xterm - - - - USER - - Il proprio username, esempio - frank - - - - - - Molte variabili di ambiente sono inizializzate automaticamente quando - si effettua il login. Queste possono essere modificate e si possono - definire altre variabili nei propri file di inizializzazione o in - qualunque momento all'interno della shell. Alcune variabili che è - possibile si voglia cambiare sono PATH e - DISPLAY. La variabile PATH - specifica le directory nelle quali saranno automaticamente cercati i - comandi richiesti. Alcuni esempi sono nello script di inizializzazione - di shell mostrato più avanti. - - Per la shell C si può settare una variabile globale - di ambiente con un comando simile a quello usato per - visualizzare le variabili: - - &prompt.user; setenv NOME valore - - e per la shell Bourne: - - $ NOME=valore; export NOME - - Si possono elencare le proprie variabili globali di ambiente con i - comandi &man.env.1; o &man.printenv.1;. Si possono resettare queste - variabili con i comandi unsetenv (shell C) o - unset (shell Bourne). - - Per settare una variabile locale di shell in - shell C si usa il comando set con la sintassi seguente. - Senza opzioni set mostra tutte le variabili - locali. - - &prompt.user; set nome=valore - - Per la shell Bourne si setta una variabile locale di shell - con: - - $ nome=valore - - Il valore corrente di una variabile è accessibile attraverso le - notazioni $nome o - ${nome}. - - - - La shell Bourne, sh - - La shell &man.sh.1; usa il file di inizializzazione - .profile posto nella home directory dell'utente. - Inoltre può esserci un file di inizializzazione globale del - sistema, esempio /etc/profile. In tal caso, il file - globale del sistema sarà eseguito prima di quello locale. - - Un semplice file .profile potrebbe essere come - il seguente: - - -PATH=/usr/bin:/usr/ucb:/usr/local/bin:. # setta il PATH -export PATH # rende disponibile PATH per le sotto-shell -# setta il prompt -PS1="{`hostname` `whoami`} " # setta il prompt, $ di default -# funzioni -ls() { /bin/ls -sbF "$@";} -ll() { ls -al "$@";} -# setta il tipo di terminale -stty erase ^H # setta Control-H come tasto di cancellazione -eval `tset -Q -s -m ':?xterm'` # richiede il tipo di terminale, presupponendo - # xterm -# -umask 077 - - Ogni volta che si incontra il simbolo #, il resto di quella linea - viene trattato come un commento. Nella variabile PATH - ogni directory è separata da due punti (:) e il punto - (.) specifica che la directory corrente è nel - proprio path. Se il punto non è nel proprio path, lo stesso - diventa un semplice elemento per eseguire un programma nella directory - corrente: - - ./programma - - Non è una buona idea avere il punto (.) - nel proprio PATH, in modo tale da non eseguire - inavvertitamente un programma senza averne l'intenzione quando si usa il - comando cd per spostarsi in differenti - directory. - - Una variabile settata in .profile rimane valida - solo nel contesto della shell di login, a meno che la si esporti con - export o si esegua .profile in - un'altra shell. Nell'esempio precedente PATH viene - esportato per le sotto-shell. Si può eseguire un file con il - comando built-int . di &man.sh.1;, esempio: - - . ./.profile - - Si possono creare proprie funzioni. Nell'esempio precedente la - funzione ll, risultato di ls -al, - lavora su un specifico file o directory. - - Con &man.stty.1; il carattere di cancellazione viene settato a - - Control - H - , che è usualmente il tasto di - Backspace. - - Il comando &man.tset.1; richiede il tipo di terminale e assume questo - a xterm se si conferma con invio - <CR>. Questo comando è eseguito con un - comando built-in di shell, eval, che prende il - risultato del comando &man.tset.1; e lo usa come argomento per la shell. - In questo caso l'opzione di &man.tset.1; setta - le variabili TERM e TERMCAP e le - esporta. - - L'ultima linea nell'esempio richiama il comando - umask, facendo in modo che i file e le directory create - non abbiano i permessi di lettura-scrittura-esecuzione per l'utenza - gruppo e altri. - - Per altre informazioni su &man.sh.1;, digitare - man sh al prompt di shell. - - - - La shell C, csh - - La shell C, &man.csh.1;, usa i file di inizializzazione - .cshrc e .login. Alcune - versioni usano un file di inizializzazione globale del sistema, ad - esempio /etc/csh.login. Il proprio file - .login è eseguito solamente quando si effettua - il login. Il proprio file .cshrc è eseguito - ogni volta in cui si avvia una shell &man.csh.1;, incluso quando si - effettua il login. Questo file ha molte caratteristiche simili al file - .profile, ma un differente modo di composizione. - Qui si usano i comandi set o setenv - per inizializzare una variabile, dove set viene usato - per definire una variabile solo per la shell corrente, mentre - setenv definisce una variabile per la shell corrente e - per le altre sotto-shell. Le variabili di ambiente - USER, TERM e PATH - sono automaticamente importate ed esportate dalle variabili - user, term e path - della shell &man.csh.1;. Quindi setenv non è - necessario per queste variabili. La shell C usa il simbolo ~ per indicare - la directory home dell'utente in un path, come in - ~/.cshrc o per specificare una directory di login di - un altro utente, come in - ~username/.cshrc. - - Alcune variabili predefinite usate dalla shell C sono: - - - - - - - - argv - - La lista degli argomenti della shell corrente - - - - cwd - - La directory di lavoro corrente - - - - history - - Imposta la dimensione della lista di history (storia) da - memorizzare - - - - home - - La directory home dell'utente, visualizzabile con - $HOME - - - - ignoreeof - - Quando viene settata, EOF ( - Ctrl - D - ) viene ignorato dal terminale - - - - noclobber - - Quando viene settata si impedisce di redirigere l'output per - sovrascrivere file esistenti - - - - noglob - - Quando viene settata si impedisce l'espansione dei nomi di - file all'interno di un confronto con uno schema wild card - - - - path - - I path di ricerca dei comandi, visualizzabile con - $PATH - - - - prompt - - Setta il prompt della linea di comando (&prompt.user; di - default) - - - - savehist - - Numero di volte (di login) che bisogna mantenere memorizzata - la lista di history nel file .history - - - - shell - - Il path name completo della shell corrente, visualizzabile - con $SHELL - - - - status - - Il codice di stato di uscita dell'ultimo comando - (0=uscita normale, 1=comando fallito) - - - - term - - Il proprio tipo di terminale, visualizzabile con - $TERM - - - - user - - Il proprio nome utente, username, visualizzabile con - $USER - - - - - - Un semplice file .cshrc potrebbe essere come il - seguente: - - -set path=(/usr/bin /usr/ucb /usr/local/bin ~/bin . ) # setta il path -set prompt = "{`hostname` `whoami` !} " # setta il promt primario ; - # % di default -set noclobber # non redirige l'output su file esistenti -set ignoreeof #ignora EOF (Ctrl+D) in questa shell -set history=100 savehist=50 # mantiene una lista history di comandi e la - # memorizza tra vari (50) login -# alias -alias h history # alias h per history -alias ls "/usr/bin/ls -sbF" # alias ls per ls -sbF -alias ll ls -al # alias ll per ls -sbFal (combina queste - # opzioni con quelle di ls sopra citate) -alias cd 'cd \!*;pwd' # alias cd per stampare la directory di lavoro - # corrente dopo aver cambiato directory -umask 077 - - Alcune nuove caratteristiche che non sono state viste nel - file .profile (shell &man.sh.1;) sono - noclobber, ignoreeof e - history. Noclobber indica che - l'output non può essere rediretto su un file esistente, mentre - ignoreeof specifica che EOF ( - - Ctrl - D - ) non causa l'uscita dalla shell di login o l'uscita dal - sistema. - - Con la caratteristica di history si possono - richiamare comandi eseguiti precedentemente e rieseguirli, eventualmente - con dei cambiamenti. - - Un alias permette di usare uno specifico nome - alias al posto del comando completo. Nell'esempio - precedente, il risultato di digitare ls sarà - quello di eseguire /usr/bin/ls -sbF. Si può - verificare quale comando ls è nel proprio path - con il comando &man.which.1;, ad esempio: - - &prompt.user; which ls -ls: alias di /usr/bin/ls -sbF - - Un semplice file .login potrebbe essere come il - seguente: - - # .login -stty erase ^H # setta Control+H come tasto di eliminazione -set noglob # impedisce un confronto con uno schema wild card -eval `tset -Q -s -m ':?xterm'` # chiede il tipo di terminale presupponendo - # xterm -unset noglob # riabilita un confronto con uno schema wild card - - Abilitando e disabilitando noglob intorno a - &man.tset.1; si impedisce di confondere il tipo di terminale con - qualche espansione dei nomi di file in un confronto con uno schema - (pattern) wild card. - - Se si effettuano cambiamenti al proprio file di inizializzazione, - questi possono essere attivati eseguendo il file modificato. Per la shell - &man.csh.1; questo è possibile attraverso il comando - built-in source, esempio: - - source .cshrc - - Per altre informazioni circa la shell &man.csh.1; digitare - man csh al prompt di shell. - - - - Controllo dei job - - Con la shell C, &man.csh.1; e molte altre nuove shell, incluse alcune - nuove shell Bourne, si possono mettere i job in background apporrendo - & al comando, così come succede per la - shell &man.sh.1;. Questo può anche essere fatto, una volta - sottoposto il comando, digitando - Control - Z - per sospendere il job e quindi bg per - metterlo in background. Per riportarlo in foreground si digita - fg. - - Si possono avere molti job eseguiti in background. Quando questi sono - in background, non sono connessi alla tastiera per l'input, ma possono - tuttavia mostrare l'output nel terminale, sparpagliandolo con qualsiasi - cosa ci sia digitata o mostrata attraverso il job corrente. Si può - avere la necessità di redirigere I/O in o da un file per un job in - background. La propria tastiera è solamente connessa al corrente - job in foreground. - - Il comando built-in jobs permette di elencare i - propri job in background. Si può usare il comando &man.kill.1; per - terminare un job in background. In questi comandi, con la notazione - %n ci si riferisce - all'n-esimo job in background, rimpiazzando - n con il numero di job proveniente dall'output - di jobs. Quindi si termina il secondo job in - background con kill %2 e si riprende il terzo job in - foreground con fg %3. - - - - History - - La shell C, la shell Korn e molte altre shell avanzate, mantengono - informazioni sui comandi che sono stati eseguiti in shell. La - quantità di storia memorizzabile dipende dalla shell utilizzata. - Qui si descriveranno le caratteristiche di history della shell C. - - Si possono usare le variabili history e - savehist per settare rispettivamente quanti comandi - della shell corrente memorizzare e per quanti login mantenerli. - Si può inserire in .cshrc la seguente linea - per memorizzare 100 comandi della shell corrente fino a 50 prossimi - login. - - set history=100 savehist=50 - - La shell mantiene traccia della storia dei comandi tra un login e - l'altro memorizzandola nel file ~/.history. - - Si può usare il comando built-in history per - richiamare i comandi eseguiti precedentemente, ad esempio per stampare gli - ultimi 10: - - &prompt.user; history 10 -52 cd workshop -53 ls -54 cd Unix_intro -55 ls -56 pwd -57 date -58 w -59 alias -60 history -61 history 10 - - Si può ripetere l'ultimo comando digitando - !!: - - &prompt.user; !! -53 ls -54 cd Unix_intro -55 ls -56 pwd -57 date -58 w -59 alias -60 history -61 history 10 -62 history 10 - - Si può ripetere un comando numerato introducendo il numero con - un !, esempio: - - &prompt.user; !57 -date -Tue Apr 9 09:55:31 EDT 1996 - - Si può ripetere un comando che inizia con qualche stringa, - introducendo la parte iniziale univoca della stringa con un - !, esempio: - - &prompt.user; !da -date -Tue Apr 9 09:55:31 EDT 1996 - - Quando la shell valuta la linea di comando verifica subito la - sostituzione di history prima di interpretare qualche altra cosa. Per - usare uno di questi caratteri speciali in un comando di shell è - necessario usare un escape, o effettuare un quoting, apporrendo un \ prima - del carattere, esempio \!. I caratteri di sostituzione di history sono - sintetizzati nella tabella seguente: - - - Comandi di sostituzione di history per la shell C - - - - - - - Comando - - Funzione sostitutiva - - - - - - !! - - ripete l'ultimo comando - - - - !n - - ripete il comando numero n - - - - !-n - - ripete l'n-esimo comando partendo - dall'ultimo - - - - !str - - ripete il comando che inizia con la stringa - str - - - - !?str? - - ripete il comando con all'interno - str - - - - !?str?% - - seleziona il primo argomento che ha - str all'interno - - - - !: - - ripete l'ultimo comando, generalmente usato con una - modifica - - - - !:n - - seleziona l'n-esimo argomento - dell'ultimo comando (n=0 è il nome del comando) - - - - !:n-m - - seleziona gli argomenti tra - l'n-esimo e - l'm-esimo argomento dell'ultimo - comando - - - - !^ - - seleziona il primo argomento dell'ultimo comando (come - !:1) - - - - !$ - - seleziona l'ultimo argomento dell'ultimo comando - - - - !* - - seleziona tutti gli argomenti del precedente comando - - - - !:n* - - seleziona gli argomenti - dall'n-esimo all'ultimo, incluso, del - precedente comando - - - - !:n- - - seleziona gli argomenti - dall'n-esimo all'ultimo, escluso, del - precedente comando - - - - ^str1^str2^ - - rimpiazza str1 con - str2 nella prima occorrenza nel - precedente comando - - - - !n:s/str1/str2/ - - sostituisce str1 con - str2 nella prima occorrenza - nell'n-esimo comando, finendo con una - sostituzione globale g - - - - -
- - Altre informazioni sono descritte nelle pagine - man. -
- - - Cambiare la propria shell - - Per cambiare la propria shell si usano generalmente i comandi - &man.chsh.1; o passwd -e. Il flag di opzione, qui - , può cambiare da sistema a sistema - ( su sistemi basati su BSD), quindi verificare le - proprie pagine man sul proprio sistema per un - uso corretto. Alcune volte questa caratteristica è disabilitata. - Se non si riesce a cambiare la propria shell contattare il proprio - amministratore di sistema (System Administrator). - - La nuova shell deve essere un path name assoluto di una valida shell - sul sistema. Le shell disponibili variano da sistema a sistema. Inoltre - il path name assoluto della shell può cambiare. Normalmente, per - la shell Bourne e la shell C sono standard e sono: - - /bin/sh - - /bin/csh - - Alcuni sistemi hanno anche la shell Korn standard normalmente - in: - - /bin/ksh - - Altre shell, che sono poco popolari e non distribuite normalmente - dal venditore di OS, sono &man.bash.1; e &man.tcsh.1;. Queste potrebbero - essere situate in /bin o in una directory locale, - esempio /usr/local/bin o - /opt/local/bin. Se si sceglie una shell non standard - del OS, ci si deve assicurare che quella shell e tutte le shell di login - disponibili sul sistema siano elencate nel file - /etc/shells. Se questo file esiste e la propria - shell non è elencata in esso, il demone per il trasferimento di - file, &man.ftpd.8;, ti impedirà una connessione ftp su questa - macchina. Se tale file non esiste, solamente account con shell - standard possono connettersi via &man.ftp.1;. - - Si può sempre provare una shell prima di settarla come la - propria shell di default. Per fare questo si deve digitare il nome della - shell che si desidera utilizzare, come qualsiasi altro comando. - -
Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/shells/chapter.xml ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/sgml \ No newline at end of property Index: head/it_IT.ISO8859-15/books/unix-introduction/chapters.ent =================================================================== --- head/it_IT.ISO8859-15/books/unix-introduction/chapters.ent (revision 52098) +++ head/it_IT.ISO8859-15/books/unix-introduction/chapters.ent (nonexistent) @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/chapters.ent ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/sgml \ No newline at end of property Index: head/it_IT.ISO8859-15/books/unix-introduction/glossary/chapter.xml =================================================================== --- head/it_IT.ISO8859-15/books/unix-introduction/glossary/chapter.xml (revision 52098) +++ head/it_IT.ISO8859-15/books/unix-introduction/glossary/chapter.xml (nonexistent) @@ -1,558 +0,0 @@ - - - - Glossario - - - A - - - account - - - struttura di dati che contiene alcune informazioni (come password, - nome reale, username, indirizzo, ecc.) relative a un utente - - - - - alias - - - meccanismo che permette di invocare un comando (o una combinazione - di comandi) attraverso un nome pseudonimo precedentemente - assegnato - - - - - - B - - - background - - - riferito alla modalità di gestione dell'esecuzione di un - processo in shell corrente: la shell non aspetta la fine di tale - processo ma continua la sua normale esecuzione - - Vedere: - sezione 5.5 - - - - - backquote - - - caratteri speciali utilizzati per inserire in una stringa l'output - del comando specificato tra questi caratteri - - Vedere: sezione 9.2 - - - - - built-in - - - comandi incorporati nel codice della shell - - Vedere: sezione 5.1 - - - - - - C - - - case sensitive - - - distinzione tra lettere maiuscole e lettere minuscole - - - - - - D - - - directory-home - - - è la directory dell'utente, nella quale ci si ritrova - (in generale) dopo la fase di login - - Vedere: sezione - 3.6 - - - - - directory-root - - - è la directory padre di tutte le altre directory (indicata - spesso con il segno /) - - Vedere: sezione 2.2 - - - - - - E - - - editor - - - strumenti per manipolare testi (programmi, ecc.) - - Vedere: Capitolo - 10 - - - - - EOF - - - sta per end of file e indica la fine del - file - - - - - - F - - - filename - - - nome del file - - - - - file system - - - architettura formata da un insieme di strutture dati che permetto - di organizzare e gestire i dati su disco - - Vedere: sezione 2.2 - - - - - foreground - - - riferito alla modalità di gestione dell'esecuzione di un - processo in shell corrente: la shell aspetta che il processo termini - prima di riprendere la sua esecuzione - - Vedere: sezione 5.5 - - - - - - G - - - groupid - - - numero che identifica in maniera univoca un gruppo di utenti su un - sistema Unix - - Vedere: sezione 3.1.4 - - - - - groupname - - - nome che identifica un gruppo su un sistema Unix - - Vedere: sezione 3.1.4 - - - - - - H - - - hard link - - - link fisico tra due file - - Vedere: sezione 8.1.7 - - - - - here document - - - speciale forma di quoting - - Vedere: sezione 9.6 - - - - - history - - - storia dei comandi digitati precedentemente - - Vedere: sezione 5.6 - - - - - - I - - - inode - - - struttura di dati contenente informazioni sui file - - Vedere: sezione 2.3 - - - - - - J - - - job - - - sinonimo di processo - - - - - - K - - - kernel - - - è il cuore del sistema operativo, il posto in cui sono - caricati tutti i driver per i device, gestisce i processi, le - operazione di I/O, ecc. - - - - - - L - - - login - - - riferito sia al nome utente di un account Unix (login username) - sia alla fase (fase di login) di accesso a un sistema Unix - (login+password) (il riferimento risulta chiaro dal contesto) - - Vedere: sezione 3.1 - - - - - - M - - - man page - - - pagina del manuale di un sistema Unix - - Vedere: sezione 3.5 - - - - - multi-level file system - - - file system a più livelli organizzati in gerarchia - - Vedere: sezione 2.2 - - - - - multi-processor - - - o multi-tasking; capacità del sistema operativo che - permette di eseguire più programmi (processi) senza doverne - aspettare la terminazione sequenziale - - Vedere: sezione - 2.1 - - - - - multi-user - - - capacità del sistema operativo che permette di gestire - più utenti contemporaneamente - - Vedere: sezione - 2.1 - - - - - - O - - - OS - - - operating system, sistema operativo - - - - - - P - - - password - - - codice segreto di un account Unix utilizzato per autenticare un - utente nel sistema - - Vedere: sezione 3.1 e - sezione 3.1.2 - - - - - path name - - - percorso dei nomi, che indica i rami del file - system (directory separate da un /) che bisogna attraversare per - raggiungere un determinato file o directory - - Vedere: sezione 2.2 - - - - - pattern - - - schema - - - - - pipe/piping - - - meccanismo che porta l'output di un comando nell'input di - un altro - - Vedere: sezione 6.2 - - - - - - Q - - - quoting - - - tecnica di interpretazione di una stringa da parte della - shell - - Vedere: sezione 9.3 - - - - - - S - - - script - - - programma scritto nel linguaggio della shell - - Vedere: sezione 9.1 - - - - - shell - - - interprete a linea di comando. È l'interfaccia tra - l'utente e il sistema operativo (kernel) - - Vedere: Capitolo - 5 - - - - - simbolic link - - - link simbolico (collegamento tramite path name) tra due file o - directory - - Vedere: sezione 8.1.7 - - - - - system call - - - sono delle procedure (routine) standard, che i programmi utente - utilizzano per accedere ai servizi che il kernel mette - a disposizione - - Vedere: sezione - 2.1 - - - - - standard error - - - dispositivo standard di errori (terminale di default) - - Vedere: sezione 6.1 - - - - - standard input - - - dispositivo standard di ingresso (tastiera di default) - - Vedere: sezione 6.1 - - - - - standard output - - - dispositivo standard di uscita (terminale di default) - - Vedere: sezione 6.1 - - - - - super-user - - - o root, utente speciale che amministra un sistema Unix - - - - - - U - - - userid - - - numero che identifica univocamente l'utente su un sistema - Unix - - Vedere: sezione 3.1.4 - - - - - username - - - o user, nome di un utente Unix (utilizzato nella fase di - login) - - Vedere: sezione 3.1.4 - - - - - - V - - - verbose - - - modalità di esecuzione di un comando che fornisce molte - informazioni addizionali (utile per gli utenti novizi) - - - - - - W - - - wild card - - - anche conosciuti come meta-caratteri, sono caratteri speciali - utilizzati in alcune circostanze per il confronto/sostituzione di - caratteri - - Vedere: sezione 6.4 - - - - - word-wrap - - - meccanismo che invia alla prossima riga l'intera parola fuori - margine - - - - Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/glossary/chapter.xml ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/sgml \ No newline at end of property Index: head/it_IT.ISO8859-15/books/unix-introduction/preface/chapter.xml =================================================================== --- head/it_IT.ISO8859-15/books/unix-introduction/preface/chapter.xml (revision 52098) +++ head/it_IT.ISO8859-15/books/unix-introduction/preface/chapter.xml (nonexistent) @@ -1,97 +0,0 @@ - - - - Prefazione - - Questo documento è rivolto in prevalenza a quelle persone che si - avvicinano per la prima volta a Unix, ma non solo. - - Prima di iniziare ad esporre la traduzione di questo documento - volevo dire alcune cose. Alcune parole del testo originale in lingua - inglese non sono state tradotte in italiano, vuoi perchè la - rispettiva traduzione in italiano non è efficiente in termini di - comprensibilità, vuoi perchè è di uso comune far - riferimento a queste direttamente in lingua inglese (vedi login, quoting, - built-in, here document, shell, background, pipe, script, ecc.). Inoltre mi - è sembrato opportuno e logico modificare l'ultima sezione di questo - documento, bibliografia di Unix (testi in lingua inglese), in una breve - bibliografia italiana di Unix. Infine ho aggiunto un glossario dove poter - trovare un elenco dei termini inglesi più caldi incontrati in questo - documento e il loro significato corrispondente. - - Non mi resta che augurarvi una buona lettura. - - Convenzioni usate in questo - libro - - Per fornire un testo consistente e facile da leggere, sono state - seguite numerose convenzioni in tutto il libro. - - Convenzioni - Tipografiche - - - - Italico - - - Un font italico è per i nomi dei file, - per gli URL, per il testo enfatizzato, e per il primo utilizzo dei - termini tecnici. - - - - - Monospazio - - - Un font monospazio è usato per i - messaggi di errore, i comandi, le variabili di ambiente, i nomi di - host, i nomi degli utenti, i nomi dei gruppi, i nomi dei device, le - variabili, e i frammenti di codice. - - - - - Grassetto - - - Un font in grassetto è per le - applicazioni, i comandi, e i tasti. - - - - - Input - dell'Utente - - I tasti sono visualizzati in grassetto per - differenziarli dal testo normale. Le combinazioni di tasti che devono - essere digitate contemporaneamente sono visualizzate con un - `+' tra i tasti, come: - - - Ctrl - Alt - Del - - - I tasti che devono essere digitati in sequenza saranno separati da - virgole, come per esempio: - - - Ctrl - X - , - Ctrl - S - - - Vuol dire che l'utente deve digitare i tasti Ctrl e - X contemporaneamente e poi i tasti Ctrl e - S. - Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/preface/chapter.xml ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/sgml \ No newline at end of property Index: head/it_IT.ISO8859-15/books/unix-introduction/commands/chapter.xml =================================================================== --- head/it_IT.ISO8859-15/books/unix-introduction/commands/chapter.xml (revision 52098) +++ head/it_IT.ISO8859-15/books/unix-introduction/commands/chapter.xml (nonexistent) @@ -1,3021 +0,0 @@ - - - - Altri comandi utili - - - Lavorare con i file - - Questa sezione descrive alcuni comandi che possono risultare utili - nell'esaminare e manipolare il contenuto dei propri file. - - - Utilità file - - - - - - - Comando/Sintassi - - Cosa fa - - - - - - cmp [opzioni] - file1 file2 - - confronta due file e mostra dove avvengono le differenze - (file di testo e file binari) - - - - cut [opzioni] - [file] - - taglia specifici campi/caratteri dalle linee di un - file - - - - diff [opzioni] - file1 file2 - - confronta due file e mostra le differenze - (solamente file di testo) - - - - file [opzioni] - file - - classifica il tipo di file - - - - find directory - [opzioni] - [azioni] - - cerca file basandosi sul tipo o su uno schema - - - - ln [opzioni] - sorgente - destinazione - - crea un link (collegamento) a - sorgente chiamato - destinazione - - - - paste [opzioni] - file - - aggiunge campi all'interno di un file - - - - sort [opzioni] - file - - riordina le linee di un file in accordo con le opzioni - specificate - - - - strings [opzioni] - file - - riporta sequenze di 4 o più caratteri stampabili - terminati con <NL> o <NULL>. Normalmente utilizzato - per ricercare stringhe ASCII in file binari. - - - - tee [opzioni] - file - - copia standard output in uno o più file - - - - touch [opzioni] - [data/ora] - file - - crea un file vuoto o aggiorna la data di accesso di un file - esistente - - - - tr [opzioni] - stringa1 stringa2 - - traduce i caratteri di stringa1 - provenienti da standard input in quelli di - stringa2 per standard output - - - - uniq [opzioni] - file - - rimuove le linee ripetute in un file - - - - wc [opzioni] - [file] - - mostra il numero di parole (o di caratteri o di linee) di - un file - - - -
- - - cmp - confronta contenuti di file - - Il comando &man.cmp.1; confronta due file, e (senza opzioni) riporta - la posizione della loro prima differenza. Può trattare confronti - sia tra file ASCII sia tra file binari. Il comando compie una - comparazione byte-per-byte. - - Sintassi - - cmp [opzioni] - file1 file2 - [salto1] - [salto2] - - I numeri di salto sono i numeri di byte da - saltare in ogni file prima di iniziare il confronto. - - Opzioni generali - - - - - - - - - - riporta ogni differenza - - - - - - riporta solamente un valore di uscita, non le differenze - tra i byte - - - - - - Esempi: - - Dati i file mon.logins e - tues.logins: - - ageorge ageorge -bsmith cbetts -cbetts jchen -jchen jdoe -jmarsch jmarsch -lkeres lkeres -mschmidt proy -sphillip sphillip -wyepp wyepp - - Il confronto dei due file produce: - - &prompt.user; cmp mon.logins tues.logins -mon.logins tues.logins differ: char 9, line 2 - - Di default il comando riporta solamente la prima differenza - trovata. - - Questo comando è utile nel determinare quale versione di un - file dovrebbe essere mantenuta quando c'è più di una - versione dello stesso file. - - - - diff - differenze tra file - - Il comando &man.diff.1; confronta due file, due directory, - ecc., e riporta tutte le differenze tra i due. Questo comando tratta - solamente file ASCII. Il suo formato di output è stato - progettato per fornire i cambiamenti necessari per convertire il primo - file nel secondo. - - Sintassi - - diff [opzioni] - file1 file2 - - Opzioni generali - - - - - - - - - - ignora spazi contigui - - - - - - ignora la differenza tra lettere minuscole e - maiuscole - - - - - - ignora i caratteri di spazio e tab - - - - - - produce un formato di output da utilizzare con l'editor - &man.ed.1; - - - - - - esegue &man.diff.1; ricorsivamente attraverso le - sotto-directory - - - - - - Esempi: - - Per i file sopra citati mon.logins e - tues.logins, le loro differenze sono: - - &prompt.user; diff mon.logins tues.logins -2d1 -< bsmith -4a4 -> jdoe -7c7 -< mschmidt ---- -> proy - - Notare che l'output mostra sia l'elenco delle differenze sia in - quale file queste esistono. Le linee del primo file sono precedute da - < e quelle del secondo file sono precedute da >. - - - - cut - seleziona parte di una linea di un file - - Il comando &man.cut.1; permette di estrarre una parte di - un file che verrà utilizzata per un altro scopo. - - Sintassi - - cut [opzioni] - file - - Opzioni generali - - - - - - - - - - posizioni dei caratteri da selezionare (il primo carattere - è in posizione 1) - - - - - - delimitatore di campo (tab di default) - - - - - - campi da selezionare (il primo campo è 1) - - - - - - Sia la lista dei caratteri che quella dei campi possono contenere - numeri (in ordine crescente) separati da virgole o da spazi bianchi e - possono contenere un trattino (-) per indicare un range. La mancanza di - un numero prima del trattino (esempio -5) o dopo il trattino - (esempio 5-), specifica rispettivamente un range completo che inizia con - il primo carattere o campo, o finisce con l'ultimo carattere o campo. - I caratteri bianchi di separazione di lista devono essere chiusi tra - caratteri di quoting. I campi di delimitazione possono essere chiusi - tra quoting se hanno un significato speciale di shell, ad esempio quando - specificano un carattere di tab o spazio. - - Esempi: - - In questi esempi si userà il file - users: - - jdoe John Doe 4/15/96 -lsmith Laura Smith 3/12/96 -pchen Paul Chen 1/5/96 -jhsu Jake Hsu 4/17/96 -sphilip Sue Phillip 4/2/96 - - Se si desidera solo lo username e il nome reale dell'utente, il - comando &man.cut.1; può essere usato per ottenere solamente - queste informazioni: - - &prompt.user; cut -f 1,2 users -jdoe John Doe -lsmith Laura Smith -pchen Paul Chen -jhsu Jake Hsu -sphilip Sue Phillip - - Il comando &man.cut.1; può essere usato con altre opzioni. - L'opzione permette di selezionare caratteri. Per - selezionare i primi 4 caratteri: - - &prompt.user; cut -c 1-4 users - - che produrrà: - - jdoe -lsmi -pche -jhsu -sphi - - in questo modo si selezionano solamente i primi 4 caratteri di ogni - linea. - - - - paste - fusione di file - - Il comando &man.paste.1; permette di combinare insieme due - file. In una fusione, il delimitatore di default tra le colonne - è un tab, ma le opzioni permettono di usare altri - delimitatori. - - Sintassi - - paste [opzioni] - file1 file2 - - Opzioni generali - - - - - - - - - - elenco dei caratteri di delimitazione - - - - - - concatena linee - - - - - - L'elenco dei delimitatori può - comprendere singoli caratteri come una virgola, una stringa quotata, - uno spazio o alcune delle seguenti sequenze di escape: - - - - - - - - \n - - carattere newline - - - - \t - - carattere tab - - - - \\ - - carattere backslash - - - - \0 - - stringa vuota (carattere non-null) - - - - - - Può essere necessario quotare i delimitatori che hanno - significati speciali di shell. - - Un trattino (-) al posto di un nome di file viene usato per - indicare che quel campo dovrebbe venire da standard input. - - Esempi: - - Dato il file users: - - jdoe John Doe 4/15/96 -lsmith Laura Smith 3/12/96 -pchen Paul Chen 1/5/96 -jhsu Jake Hsu 4/17/96 -sphilip Sue Phillip 4/2/96 - - e il file phone: - - John Doe 555-6634 -Laura Smith 555-3382 -Paul Chen 555-0987 -Jake Hsu 555-1235 -Sue Phillip 555-7623 - - il comando &man.paste.1; può essere usato in combinazione - con il comando &man.cut.1; per creare un nuovo file, - listing, che include per tutti gli utenti lo - username, il nome reale, l'ultimo login e il numero di telefono. - Prima si estraggono i numeri di telefono all'interno del file temporaneo - temp.file: - - &prompt.user; cut -f2 phone > temp.file -555-6634 -555-3382 -555-0987 -555-1235 -555-7623 - - Il risultato può essere incollato alla fine di ogni linea di - users e quindi rediretto nel nuovo file, - listing: - - &prompt.user; paste users temp.file > listing -jdoe John Doe 4/15/96 237-6634 -lsmith Laura Smith 3/12/96 878-3382 -pchen Paul Chen 1/5/96 888-0987 -jhsu Jake Hsu 4/17/96 545-1235 -sphilip Sue Phillip 4/2/96 656-7623 - - Tutto questo può anche essere realizzato su una linea senza - il file temporaneo, con lo stesso risultato: - - &prompt.user; cut -f2 phone | paste users - > listing - - In questo caso il trattino (-) funge come sostituto per il campo di - input (indica cioè l'output del comando &man.cut.1;). - - - - touch - crea un file - - Il comando &man.touch.1; può essere usato per creare un nuovo - (vuoto) file o per aggiornare l'ultima data/ora di accesso di un - file esistente. Il comando viene usato primariamente quando uno script - richiede la pre-esistenza di un file (ad esempio per appendere delle - informazioni) o quando uno script controlla l'ultima data/ora in cui una - funzione è stata realizzata. - - Sintassi - - touch [opzioni] - [data/ora1] - file - - touch [opzioni] - [-t data/ora2] - file - - Opzioni generali - - - - - - - - - - cambia la data/ora di accesso al file - (solamente SVR4) - - - - - - non crea il file se non esiste - - - - - - forza l'azione, nonostante i permessi di lettura/scrittura - del file - - - - - - cambia la data/ora di modifica del file - (solamente SVR4) - - - - - - usa la data/ora2 specificata, non la data/ora corrente - (solamente SVR4) - - - - - - Quando si usa l'opzione , deve essere nella - forma: - - [[CC]YY] - MMDDhhmm[.SS] - - dove: - - - - - - - - CC - - prime due cifre dell'anno - - - - YY - - seconde due cifre dell'anno - - - - MM - - mese, 01-12 - - - - DD - - giorno del mese, 01-31 - - - - hh - - ora del giorno, 00-23 - - - - mm - - minuti, 00-59 - - - - SS - - secondi, 00-59 - - - - - - Il formato dell'opzione - è: - - - - dove questi simboli hanno gli stessi significati dei simboli - mostrati in precedenza. - - La data non può essere settata prima del 1969 o dopo il 18 - Gennaio 2038 (dipende dalle versione del sistema operativo Unix). - - Esempi: - - Per creare un file: - - &prompt.user; touch filename - - - - wc - conta le parole in un file - - &man.wc.1; sta per conta parole; il comando - può essere usato per contare il numero di linee, di caratteri o - di parole in un file. - - Sintassi - - wc [opzioni] - file - - Opzioni generali - - - - - - - - - - conta byte - - - - - - conta caratteri (SVR4) - - - - - - conta linee - - - - - - conta parole - - - - - - Se nessuna opzione viene specificata, l'opzione di default è - . - - Esempi: - - Dato il file users: - - jdoe John Doe 4/15/96 -lsmith Laura Smith 3/12/96 -pchen Paul Chen 1/5/96 -jhsu Jake Hsu 4/17/96 -sphilip Sue Phillip 4/2/96 - - il risultato dell'uso del comando &man.wc.1; su tale file è - il seguente: - - &prompt.user; wc users -5 20 121 users - - Il primo numero indica il numero di linee nel file, il secondo - indica il numero di parole e il terzo numero indica il numero di - caratteri. - - Usando il comando &man.wc.1; con una delle opzioni sopra citate - ( per linee; per parole o - per caratteri) si ottiene come risultato solo - una delle precedenti informazioni. Per esempio, - wc -l users produce il risultato seguente: - - 5 users - - - - ln - crea un link a un altro file - - Il comando &man.ln.1; crea un link (collegamento) o - un modo aggiuntivo per accedere (o attribuisce un nome addizionale) a un - altro file. - - Sintassi - - ln [opzioni] - sorgente - [destinazione] - - Se non specificata, la - destinazione di default - è un file dello stesso nome di - sorgente posto nella - directory di lavoro corrente. - - Opzioni generali - - - - - - - - - - forza un link nonostante i permessi della - destinazione; non riporta errori (solamente SVR4 ) - - - - - - crea un link simbolico - - - - - - Esempi: - - Un link simbolico viene usato per creare un - nuovo percorso a un altro file o directory. Per esempio, se un gruppo - di utenti è abituato ad usare un comando chiamato - chkmag, ma il comando è stato riscritto e il - nuovo nome è chkit, creando un link simbolico - gli utenti eseguiranno automaticamente chkit quando - digitano il comando chkmag, eliminando la transizione - per il nuovo comando. - - Un link simbolico può essere creato nel modo seguente: - - &prompt.user; ln -s chkit chkmag - - Ora il lungo listato per questi due file è il - seguente: - - 16 -rwxr-x--- 1 lindadb acs 15927 Apr 23 04:10 chkit -1 lrwxrwxrwx 1 lindadb acs 5 Apr 23 04:11 chkmag -> chkit - - Notare che mentre i permessi di chkmag sono - aperti a tutti, poichè è linkato a - chkit, le caratteristiche dei permessi, del gruppo e - del proprietario di chkit saranno rispettate quando - chkmag viene invocato. - - Con un link simbolico, il link può esistere senza che il file - o la directory a cui è collegato esista. - - Un hard link può solamente essere creato - per un altro file sullo stesso file system, ma non per una directory - (eccetto per il super-user). Un hard link crea un nuovo elemento di - directory puntante allo stesso inode del file originale. Il file - linkato deve esistere prima che l'hard link possa essere creato. - Il file non sarà cancellato fino a quando tutti gli hard link - saranno rimossi. Per linkare i due file precedenti tramite un hard - link: - - &prompt.user; ln chkit chkmag - - Quindi un lungo listato mostra che il numero di - inode (742) è lo stesso per entrambi i - file: - - &prompt.user; ls -il chkit chkmag -742 -rwxr-x--- 2 lindadb acs 15927 Apr 23 04:10 chkit -742 -rwxr-x--- 2 lindadb acs 15927 Apr 23 04:10 chkmag - - - - sort - ordina il contenuto di un file - - Il comando &man.sort.1; viene usato per ordinare le linee - di un file. Si possono usare diverse opzioni per stabilire il modo di - ordinamento e su quali campi ordinare il file. Senza opzioni, - &man.sort.1; confronta intere linee di un file e produce un ordinamento - ASCII (prima i numeri, lettere maiuscole e quindi lettere - minuscole). - - Sintassi - - sort [opzioni] - [+pos1 [-pos2]] - file - - Opzioni generali - - - - - - - - - - ignora gli spazi bianchi iniziali (spazi e tab) quando si - stabiliscono i carattere di inizio e di fine per la chiave di - ordinamento - - - - - - ordinamento a dizionario, sono rilevanti solamente le - lettere, le cifre, spazi e tab - - - - - - uguaglia lettere maiuscole e minuscole - - - - - - ordinamento su chiavi specifiche (non disponibile su tutti - i sistemi) - - - - - - ignora i caratteri non stampabili - - - - - - ordinamento numerico - - - - - - file di output - - - - - - ribalta l'ordine - - - - - - usa car come il carattere di - separatore di campo - - - - - - unico; trascura multiple copie di linee uguali - (dopo l'ordinamento) - - - - - - (vecchio stile) fornisce funzionalità simili - all'opzione . - - - - - - Per gli elementi di posizione - (), pos1 è il - numero di parola di inizio, iniziando da 0 e - pos2 è il numero di parola di fine. - Quando -pos2 non è specificato, il - campo di ordinamento continua fino alla fine del file. Sia - pos1 che pos2 - possono essere specificati nella forma - w.c, dove - w è il numero di parola e - c è il carattere all'interno della - parola. Per c 0 si specifica il delimitatore che - precede il primo carattere e 1 è il primo - carattere della parola. Questi elementi possono essere seguiti da un - tipo di modificatore, esempio n per numerico, - b per saltare gli spazi bianchi ,ecc. - - Il campo chiave dell'opzione - ha la seguente sintassi: - - campo_inizio - [tipo] - [ ,campo_fine - [tipo] ] - - dove: - - - - - - - - campo_inizio, campo_fine - - definiscono le chiavi per restringere l'ordinamento su una - porzione di linea - - - - tipo - - modifica l'ordinamento: validi modificatori sono dati dai - singoli caratteri (bdfiMnr) derivanti dalle simili opzioni di - ordinamento, ad esempio un tipo b equivale - a , ma applicato solamente nello specifico - campo di azione - - - - - - Esempi: - - Dato il file users: - - jdoe John Doe 4/15/96 -lsmith Laura Smith 3/12/96 -pchen Paul Chen 1/5/96 -jhsu Jake Hsu 4/17/96 -sphilip Sue Phillip 4/2/96 - - ordinando con &man.sort.1; gli utenti si produce: - - jdoe John Doe 4/15/96 -jhsu Jake Hsu 4/17/96 -lsmith Laura Smith 3/12/96 -pchen Paul Chen 1/5/96 -sphilip Sue Phillip 4/2/96 - - Se, tuttavia, si desidera un elenco in ordine di nome, si usa - l'opzione per specificare su quale campo ordinare (i campi sono numerati - partendo da 0): - - &prompt.user; sort +2 users -pchen Paul Chen 1/5/96 -jdoe John Doe 4/15/96 -jhsu Jake Hsu 4/17/96 -sphilip Sue Phillip 4/2/96 -lsmith Laura Smith 3/12/96 - - Per ribaltare l'ordine: - - &prompt.user; sort -r users -sphilip Sue Phillip 4/2/96 -pchen Paul Chen 1/5/96 -lsmith Laura Smith 3/12/96 -jhsu Jake Hsu 4/17/96 -jdoe John Doe 4/15/96 - - Un'opzione particolarmente utile di ordinamento è l'opzione - , che elimina gli elementi duplicati nel file mentre - si ordina il file. Per esempio, il file - todays.logins: - - sphillip -jchen -jdoe -lkeres -jmarsch -ageorge -lkeres -proy -jchen - - mostra una lista di ogni username che ha effettuato il login nel - sistema in giornata. Se si vuole conoscere quanti unici utenti abbiano - effettuato il login nel sistema in giornata, usando &man.sort.1; - con l'opzione , la lista conterrà ciascun - utente una volta sola. (Il comando può essere mandato in pipe a - wc -l per ottenere direttamente il numero): - - &prompt.user; sort -u todays.logins -ageorge -jchen -jdoe -jmarsch -lkeres -proy -sphillip - - - - tee - copia l'output di un comando - - Il comando &man.tee.1; manda lo standard input nel file - specificato e anche nello standard output. Viene spesso usato in una - pipe di comandi. - - Sintassi - - tee [opzioni] - [file] - - Opzioni generali - - - - - - - - - - appende l'output ai file - - - - - - ignora gli interrupt - - - - - - Esempi: - - In questo primo esempio l'output di &man.who.1; è - visualizzato sullo schermo e memorizzato nel file - users.file: - - brigadier: condron [55]> who | tee users.file -condron ttyp0 Apr 22 14:10 (lcondron-pc.acs.) -frank ttyp1 Apr 22 16:19 (nyssa) -condron ttyp9 Apr 22 15:52 (lcondron-mac.acs) - - brigadier: condron [56]> cat users.file -condron ttyp0 Apr 22 14:10 (lcondron-pc.acs.) -frank ttyp1 Apr 22 16:19 (nyssa) -condron ttyp9 Apr 22 15:52 (lcondron-mac.acs) - - Nel prossimo esempio l'output di &man.who.1; viene mandato nei file - users.a e users.b. - Viene anche mandato in pipe con il comando &man.wc.1;, che riporta il - numero di linee. - - brigadier: condron [57]> who | tee users.a users.b | wc -l -3 - - brigadier: condron [58]> cat users.a -condron ttyp0 Apr 22 14:10 (lcondron-pc.acs.) -frank ttyp1 Apr 22 16:19 (nyssa) -condron ttyp9 Apr 22 15:52 (lcondron-mac.acs) - - Nell'esempio seguente un listato lungo di directory viene mandato - nel file files.long. Inoltre viene messo in pipe - con il comando &man.grep.1; che riporta quali file sono stati modificati - in Agosto. - - brigadier: condron [60]> ls -l | tee files.long |grep Aug -1 drwxr-sr-x 2 condron 512 Aug 8 1995 News/ -2 -rw-r--r-- 1 condron 1076 Aug 8 1995 magnus.cshrc -2 -rw-r--r-- 1 condron 1252 Aug 8 1995 magnus.login - - brigadier: condron [63]> cat files.long -total 34 -2 -rw-r--r-- 1 condron 1253 Oct 10 1995 #.login# -1 drwx------ 2 condron 512 Oct 17 1995 Mail/ -1 drwxr-sr-x 2 condron 512 Aug 8 1995 News/ -5 -rw-r--r-- 1 condron 4299 Apr 21 00:18 editors.txt -2 -rw-r--r-- 1 condron 1076 Aug 8 1995 magnus.cshrc -2 -rw-r--r-- 1 condron 1252 Aug 8 1995 magnus.login -7 -rw-r--r-- 1 condron 6436 Apr 21 23:50 resources.txt -4 -rw-r--r-- 1 condron 3094 Apr 18 18:24 telnet.ftp -1 drwxr-sr-x 2 condron 512 Apr 21 23:56 uc/ -1 -rw-r--r-- 1 condron 1002 Apr 22 00:14 uniq.tee.txt -1 -rw-r--r-- 1 condron 1001 Apr 20 15:05 uniq.tee.txt~ -7 -rw-r--r-- 1 condron 6194 Apr 15 20:18 Unixgrep.txt - - - - uniq - rimuove linee duplicate - - Il comando &man.uniq.1; filtra le linee adiacenti duplicate in un - file. - - Sintassi - - uniq [opzioni] - [+|-n] file - [nuovo.file] - - Opzioni generali - - - - - - - - - - solo una copia delle linee ripetute - - - - - - seleziona solamente le linee non ripetute - - - - - - ignora i primi n - caratteri - - - - - - come sopra (solamente SVR4) - - - - - - salta i primi n campi, spazi - inclusi (spazi e tab) - - - - - - come sopra (solamente SVR4) - - - - - - Esempi: - - Si consideri il seguente file e l'esempio, dove - &man.uniq.1; rimuove la quarta linea da file - e mette il risultato nel file nuovo.file. - - {Unix prompt 1} cat file -1 2 3 6 -4 5 3 6 -7 8 9 0 -7 8 9 0 - - {Unix prompt 2} uniq file nuovo.file - - {Unix prompt 3} cat nuovo.file -1 2 3 6 -4 5 3 6 -7 8 9 0 - - Qui sotto, l'opzione - del comando &man.uniq.1; viene usata per saltare i primi 2 campi - nel file e per filtrare le linee di uscita che sono duplicate dal terzo - campo in avanti. - - {Unix prompt 4} uniq -2 file -1 2 3 6 -7 8 9 0 - - - - strings - cerca stringhe ASCII - - Per cercare stringhe ASCII, stampabili, in un file binario si usa il - comando &man.strings.1;. Questo comando ricerca sequenze di quattro o - più caratteri ASCII terminanti con un carattere newline o - con un carattere null. &man.strings.1; risulta utile per ricercare nomi - di file e possibili messaggi di errore all'interno di un programma - compilato, di cui non si ha il codice sorgente. - - Sintassi - - strings [opzioni] - file - - Opzioni generali - - - - - - - - - - usa numero come la minima - lunghezza della stringa, piuttosto di 4 (solamente SVR4) - - - - numero - - come sopra - - - - - - fa precedere alla stringa l'offset di byte dall'inizio del - file; formato può essere: - d = decimale, o = - ottale x = esadecimale (solamente - SVR4) - - - - - - fa precedere alla stringa l'offset di byte in decimale - (solamente BSD) - - - - - - Esempi: - - &prompt.user; strings /bin/cut -SUNW_OST_OSCMD -nessun delimitatore specificato -delimitatore non valido -b:c:d:f:ns -cut: -n può solo essere usato con -b -cut: -d può solo essere usato con -f -cut: -s può solo essere usato con -f -nessuna lista specificata -cut: %s non si riesce ad aprire -il range specificato non è valido -troppi range specificati -i range devono essere crescenti -carattere non valido nel range -Errore interno nel processare l'input -carattere multibyte non valido -incapace di allocare memoria sufficiente -incapace di allocare memoria sufficiente -cut: -uso: cut -b lista [-n] [filename ...] - cut -c lista [filename ...] - cut -f lista [-d delim] [-s] [filename] - - - - file - mostra il tipo di file - - Il comando &man.file.1; esamina il file specificato e cerca di - determinare che tipo di file esso sia. Questo viene fatto leggendo i - primi byte del file e confrontandoli con la tabella - /etc/magic. Il comando &man.file.1; - può determinare file di testo ASCII, file formattati tar, file - compressi, ecc. - - Sintassi - - file [opzioni] - [-m file_magico] - [-f lista_file] - file - - Opzioni generali - - - - - - - - - - verifica il file magico per eventuali errori nel - formato - - - - - - lista_file - contiene la lista dei file da esaminare - - - - - - non segue i link simbolici (solamente SVR4) - - - - - - segue i link simbolici (solamente BSD) - - - - - - usa - file_magico - come il file magico al posto di - /etc/magic - - - - - - Esempi: - - Vengono elencati qui sotto gli output del comando - file filename per alcuni - file significativi. - - /etc/magic: File di testo ascii -/usr/local/bin/gzip: Eseguibile paginato SPARC Sun linkato dinamicamente -/usr/bin/cut: Eseguibile MSB a 32 bit ELF per SPARC versione 1, linkato dinamicamente, stripped -source.tar: Archivio tar USTAR -source.tar.Z: Blocchi di dati compressi 16 bit - - - - tr - traduce caratteri - - Il comando &man.tr.1; traduce caratteri da &man.stdin.4; a - &man.stdout.4;. - - Sintassi - - tr [opzioni] - stringa1 - [stringa2] - - Con nessuna opzione i caratteri di - stringa1 sono tradotti nei caratteri di - stringa2, carattere per carattere, - nell'ordine degli array di stringa. Il primo carattere di - stringa1 viene tradotto nel primo carattere - di stringa2, ecc. - - Un range di caratteri in una stringa viene specificato con un - trattino tra il carattere superiore e quello inferiore del range, ad - esempio per specificare tutte le lettere alfabetiche minuscole si usa - [a-z]. - - Ripetizioni di caratteri in stringa2 - possono essere rappresentate con la notazione - [x*n], - dove il carattere x viene ripetuto - n volte. Se n - è 0 o assente, il carattere - x viene assunto come valida corrispondenza - richiesta in stringa1. - - I caratteri possono includere le notazioni - \ottale (BSD e SVR4) e - \carattere (solamente - SVR4). Qui ottale viene - sostituito da una, due o tre cifre di interi ottali che codificano un - carattere ASCII e - carattere può - essere uno di questi: - - - - - - - - b - - back space - - - - f - - form feed - - - - n - - newline - - - - r - - return - - - - t - - tab - - - - v - - tab verticale - - - - - - La versione SVR4 di &man.tr.1; permette l'operando - :classe: nel campo stringa dove - classe può assumere uno dei seguenti - valori di classificazione carattere: - - - - - - - - alpha - - caratteri alfabetici - - - - lower - - caratteri alfabetici minuscoli - - - - upper - - caratteri alfabetici maiuscoli - - - - - - Opzioni generali - - - - - - - - - - completa il set di caratteri in - stringa1 - - - - - - cancella i caratteri in - stringa1 - - - - - - modifica una stringa di caratteri ripetuti in - stringa1 in caratteri singoli - - - - - - Esempi: - - L'esempio seguente usa come file di input una lista di libri di - P. G. Wodehouse Jeeves & Wooster. - - The Inimitable Jeeves [1923] The Mating Season [1949] -Carry On, Jeeves [1925] Ring for Jeeves [1953] -Very Good, Jeeves [1930] Jeeves and the Feudal Spirit [1954] -Thank You, Jeeves [1934] Jeeves in the Offing [1960] -Right Ho, Jeeves [1934] Stiff Upper Lip, Jeeves [1963] -The Code of the Woosters [1938] Much Obliged, Jeeves [1971] -Joy in the Morning [1946] Aunts Aren't Gentlemen [1974] - - Per tradurre tutte le lettere alfabetiche minuscole in maiuscole si - possono usare: - - tr '[a-z]' '[A-Z]' - - oppure - - tr '[:lower:]' '[:upper:]' - - Affinchè &man.tr.1; legga da &man.stdin.4; si usa &man.cat.1; - in pipe con &man.tr.1;, così: - - &prompt.user; cat wodehouse | tr '[a-z]' '[A-Z]' -THE INIMITABLE JEEVES [1923] THE MATING SEASON [1949] -CARRY ON, JEEVES [1925] RING FOR JEEVES [1953] -VERY GOOD, JEEVES [1930] JEEVES AND THE FEUDAL SPIRIT [1954] -THANK YOU, JEEVES [1934] JEEVES IN THE OFFING [1960] -RIGHT HO, JEEVES [1934] STIFF UPPER LIP, JEEVES [1963] -THE CODE OF THE WOOSTERS [1938] MUCH OBLIGED, JEEVES [1971] -JOY IN THE MORNING [1946] AUNTS AREN'T GENTLEMEN [1974] - - Ora si cancellano tutti i numeri con: - - &prompt.user; cat wodehouse | tr -d '[0-9]' -The Inimitable Jeeves [] The Mating Season [] -Carry On, Jeeves [] Ring for Jeeves [] -Very Good, Jeeves [] Jeeves and the Feudal Spirit [] -Thank You, Jeeves [] Jeeves in the Offing [] -Right Ho, Jeeves [] Stiff Upper Lip, Jeeves [] -The Code of the Woosters [] Much Obliged, Jeeves [] -Joy in the Morning [] Aunts Aren't Gentlemen [] - - Per trattenere tutte le occorrenze multiple dei caratteri e, r - e f: - - &prompt.user; cat wodehouse | tr -s 'erf' -The Inimitable Jeves [1923] The Mating Season [1949] -Cary On, Jeves [1925] Ring for Jeves [1953] -Very Good, Jeves [1930] Jeves and the Feudal Spirit [1954] -Thank You, Jeves [1934] Jeves in the Ofing [1960] -Right Ho, Jeves [1934] Stif Upper Lip, Jeves [1963] -The Code of the Woosters [1938] Much Obliged, Jeves [1971] -Joy in the Morning [1946] Aunts Aren't Gentlemen [1974] - - - - find - cerca file - - Il comando &man.find.1; può cercare file in modo - ricorsivo nell'albero di directory indicato, confrontando il tipo di - file o lo schema specificato. &man.find.1; può quindi elencare i - file o eseguire arbitrari comandi in base ai risultati. - - Sintassi - - find directory - [opzioni di ricerca] - [azioni] - - Opzioni generali - - Per l'opzione del tempo di ricerca, la notazione in giorni, - n è: - - - - - - - - - - più di n giorni - - - - n - - esattamente n giorni - - - - - - meno di n giorni - - - - - - Alcune caratteristiche dei file che &man.find.1; può - ricercare sono: - - la data dell'ultimo accesso o dell'ultima - modifica al file: - - - - - - - - - - data di accesso, vero se l'accesso è di - n giorni fà - - - - - - data di cambiamento, vero se lo stato del file è - stato modificato n giorni - fà - - - - - - data di modifica, vero se i dati del file sono stati - modificati n giorni fà - - - - - - vero se più recente del file specificato - - - - - - tipo di file, - dove tipo può essere: - - - - b - - file speciale a blocchi - - - - c - - file speciale a caratteri - - - - d - - directory - - - - l - - link simbolico - - - - p - - file pipe (fifo) - - - - f - - file regolare - - - - - - tipo di file - system, dove tipo - può essere un valido tipo di file system, esempio - ufs (Unix File System) e - nfs (Network File System) - - - - - - vero se il file appartiene all'utente specificato - - - - - - vero se il file appartiene al gruppo specificato - - - - - - permessi del file, dove modi - è la modalità ottale usata dal comando - &man.chmod.1;. Quando modi è - preceduto da un segno meno, solamente i bit che sono specificati - vengono confrontati. - - - - - - esegue il comando specificato. La fine del comando viene - indicata con un escape e punto e virgola (\;). L'argomento del - comando, {}, sostituisce il path name corrente. - - - - - - vero se il nome del file è quello specificato. - Confronti con schemi wild card sono permessi se il - meta-carattere viene messo in escape per la shell con un - backslash (\) - - - - - - sempre vero. Stampa una lista lunga del path name - corrente - - - - - - stampa i path name trovati (default per SVR4, non per - BSD) - - - - - - Sono permesse espressioni complesse. Le espressioni devono essere - raggruppate tra parentesi (mettendo in escape le parentesi con un - backslash per impedire alla shell di interpretarle). Il simbolo di - esclamazione (!) può essere usato per negare - un'espressione. Gli operatori: - (and) e - (or) vengono usati per raggruppare - espressioni. - - Esempi: - - &man.find.1; può ricercare in modo ricorsivo attraverso - sotto-directory, ma per lo scopo di questi esempi saranno usati i - seguenti file: - - 14 -rw-r--r-- 1 frank staff 6682 Feb 5 10:04 library - 6 -r--r----- 1 frank staff 3034 Mar 16 1995 netfile -34 -rw-r--r-- 1 frank staff 17351 Feb 5 10:04 standard - 2 -rwxr-xr-x 1 frank staff 386 Apr 26 09:51 tr25* - - Per trovare tutti i file più recenti del file - library: - - &prompt.user; find . -newer library -print -./tr25 -./standard - - Per trovare tutti i file con i permessi di lettura o esecuzione per - l'utenza altri e quindi modificare gli stessi in modo da - disabilitarli: - - &prompt.user; find . \( -perm -004 -o -perm -001 \) -exec chmod o-rx {} \; -exec ls -al {} \; --rw-r----- 1 frank staff 6682 Feb 5 10:04 ./library --rwxr-x--- 1 frank staff 386 Apr 26 09:51 ./tr25 --rw-r----- 1 frank staff 17351 Feb 5 10:04 ./standard - - Nell'esempio precedente le parentesi e i punti e virgola sono messi - in escape con un backslash per impedire alla shell di interpretarli. - Le parentesi graffe sono automaticamente rimpiazzate dai risultati della - precedente ricerca e il punto e virgola chiude il comando. - - Si possono ricercare alcuni nomi di file contenenti la stringa - ar con: - - &prompt.user; find . -name \*ar\* -ls -326584 7 -rw-r----- 1 frank staff 6682 Feb 5 10:04 ./library -326585 17 -rw-r----- 1 frank staff 17351 Feb 5 10:04 ./standard - - dove l'opzione mostra un listato lungo, numeri - di inode inclusi. - -
- - - Archiviazione, compressione e conversione di file - - - Comandi di archiviazione, compressione e conversione di - file - - - - - - - Comando/Sintassi - - Cosa fa - - - - - - compress/uncompress/zcat - [opzioni] - file[.Z] - - comprime o decomprime un file. I file compressi sono - memorizzati con l'estensione .Z - - - - dd [if=infile] - [of=outfile] - [operando=valore] - - copia un file, converte tra ASCII e EBCDIC o scambia - l'ordine dei byte, come specificato - - - - gzip/gunzip/zcat - [opzioni] - file[.gz] - - comprime o decomprime un file. I file compressi sono - memorizzati con l'estensione .gz - - - - od [opzioni] - file - - effettua un dump di un file binario in ottale, in ASCII, in - esadecimale, in decimale o in modo carattere. - - - - tar [opzioni] - [file] - - archivio a nastro - riferirsi alle pagine man per i dettagli - su come creare, visualizzare ed estrarre un archivio di file. I - file tar possono essere memorizzati su nastro o su disco. - - - - uudecode - [file] - - decodifica un file uuencoded, ricreando il file - originale - - - - uuencode [file] - nuovo_nome - - codifica un file binario in ASCII 7-bit; utile quando lo si - invia tramite email, per poi essere decodificato come - nuovo_nome alla - destinazione - - - -
- - - Compressione di file - - Il comando &man.compress.1; viene usato per ridurre lo spazio di - disco utilizzato da un file. Quando un file è stato compresso - usando il comando &man.compress.1;, il suffisso .Z - viene appeso al nome del file. I permessi, la data di accesso e di - modifica del file originale vengono preservati. Il comando - &man.uncompress.1; restituisce il file originale compresso con - &man.compress.1;. - - Sintassi - - compress [opzioni] - [file] - - uncompress [opzioni] - [file.Z] - - zcat [file.Z] - - Opzioni generali - - - - - - - - - - scrive su standard output e non crea o modifica alcun - file - - - - - - forza la compressione del file, anche se questa non riduce - la dimensione del file o se il file destinazione - (file.Z) esiste - già. - - - - - - verbose. Riporta la percentuale di riduzione del - file. - - - - - - &man.zcat.1; scrive su standard output. Equivale a - uncompress -c. - - Esempi: - - Dati i file: - - 96 -rw-r--r-- 1 lindadb acs 45452 Apr 24 09:13 logins.beauty -184 -rw-r--r-- 1 lindadb acs 90957 Apr 24 09:13 logins.bottom -152 -rw-r--r-- 1 lindadb acs 75218 Apr 24 09:13 logins.photon -168 -rw-r--r-- 1 lindadb acs 85970 Apr 24 09:13 logins.top - - Questi possono essere compressi con: - - &prompt.user; compress logins.* - - che crea i file: - - 24 -rw-r--r-- 1 lindadb acs 8486 Apr 24 09:13 logins.beauty.Z -40 -rw-r--r-- 1 lindadb acs 16407 Apr 24 09:13 logins.bottom.Z -24 -rw-r--r-- 1 lindadb acs 10909 Apr 24 09:13 logins.photon.Z -32 -rw-r--r-- 1 lindadb acs 16049 Apr 24 09:13 logins.top.Z - - I file originali sono persi. - - Per visualizzare un file compresso, viene usato il comando - &man.zcat.1;: - - &prompt.user; zcat logins.beauty.Z | head -beauty:01/22/94:#total logins,4338:#different UIDs,2290 -beauty:01/23/94:#total logins,1864:#different UIDs,1074 -beauty:01/24/94:#total logins,2317:#different UIDs,1242 -beauty:01/25/94:#total logins,3673:#different UIDs,2215 -beauty:01/26/94:#total logins,3532:#different UIDs,2216 -beauty:01/27/94:#total logins,3096:#different UIDs,1984 -beauty:01/28/94:#total logins,3724:#different UIDs,2212 -beauty:01/29/94:#total logins,3460:#different UIDs,2161 -beauty:01/30/94:#total logins,1408:#different UIDs,922 -beauty:01/31/94:#total logins,2175:#different UIDs,1194 - - Una visualizzazione del file utilizzando un altro comando al posto - di &man.zcat.1; può produrre un difficile risultato - binario. - - Il comando &man.uncompress.1; viene usato per far ritornare il file - compresso nel suo formato originale: - - &prompt.user; uncompress logins.*.Z ; ls -als logins.* - 96 -rw-r--r-- 1 lindadb acs 45452 Apr 24 09:13 logins.beauty -184 -rw-r--r-- 1 lindadb acs 90957 Apr 24 09:13 logins.bottom -152 -rw-r--r-- 1 lindadb acs 75218 Apr 24 09:13 logins.photon -168 -rw-r--r-- 1 lindadb acs 85970 Apr 24 09:13 logins.top - - In aggiunta alle utility standard di Unix &man.compress.1;, - &man.uncompress.1;, &man.zcat.1; ci sono un set di utility - GNU liberamente disponibili. Queste creano - persino un miglior lavoro di compressione utilizzando un algoritmo - più efficiente. I programmi GNU che forniscono - funzionalità simili ai precedenti sono spesso installati - rispettivamente come &man.gzip.1;, &man.gunzip.1; e &man.zcat.1;. - I nomi dei file compressi con &man.gzip.1; hanno l'estensione - .z o .gz. Il software GNU - può essere ottenuto via ftp anonimo: ftp://ftp.gnu.org/pub/gnu. - - - - tar - archivio di file - - Il comando &man.tar.1; raggruppa file in un dispositivo o in un file - per scopi di archiviazione. Il comando &man.tar.1; non comprime i file, - rende solamente più maneggevole una grande quantità di - file. - - Sintassi - - tar [opzioni] - [directory file] - - Opzioni generali - - - - - - - - - - crea un archivio (inizia scrivendo all'inizio del - file) - - - - - - visualizza il contenuto - - - - - - estrae da un archivio - - - - - - verbose - - - - - - nome del file di archivio - - - - - - dimensione del blocco di archivio - - - - - - &man.tar.1;, in generale, accetta le sue opzioni sia facendole - precedere da un trattino (-) sia senza trattino. Il file di archivio - può essere un file su disco, un dispositivo a nastro o - standard input/output. L'ultimo modo viene rappresentato tramite un - trattino. - - Esempi: - - Dati i file di dimensioni seguenti: - - 45 logs.beauty -89 logs.bottom -74 logs.photon -84 logs.top - - &man.tar.1; può combinare questi in un solo file, - logfile.tar: - - &prompt.user; tar -cf logfile.tar logs.* ; ls -s logfile.tar -304 logfile.tar - - In Internet, molti siti di archivio FTP anonimi memorizzano i loro - pacchetti in formati tar compressi, quindi i file finiscono in - .tar.Z o .tar.gz. Per - estrarre i file da uno di questi file archivio si può prima - decomprimerlo, o usare l'appropriato comando &man.zcat.1; e mandare in - pipe il risultato a &man.tar.1;, esempio: - - &prompt.user; zcat archive.tar.Z | tar -xvf - - - dove il trattino alla fine del comando &man.tar.1; indica che il - file è preso da &man.stdin.4;. - - - - uuencode/uudecode - codifica/decodifica un file - - Per codificare un file binario in ASCII 7-bit si usa il comando - &man.uuencode.1;. Per decodificare il file ASCII 7-bit in binario - si usa il comando &man.uudecode.1;. Il suffisso - uu nei nomi deriva dal fatto che - questi comandi fanno parte del set di comandi Unix-to-Unix CoPy (UUCP). - I comandi &man.uuencode.1; e &man.uudecode.1; sono generalmente usati - quando si mandano file binari via e-mail. Con l'e-mail non c'è - garanzia che file binari 8-bit siano trasferiti correttamente. Quindi - per garantire una corretta consegna si può codificare il file - binario, sia direttamente su linea di comando, includendo il file - codificato, sia indirettamente, lasciando al proprio programma di posta - MIME questo lavoro. In modo simile, l'utente decodifica il file - ricevuto. - - Sintassi - - uuencode [file_sorgente] - pathname_per_uudecode - [> nuovo_file] - - uudecode [-p] - file_uuencode - - Opzioni generali - - - - - - - - - - manda l'output su standard output piuttosto che nel file di - default - - - - - - Esempi: - - La prima linea di un file codificato con &man.uuencode.1; include i - permessi e il nome del file - originale che &man.uudecode.1; utilizzerà quando - decodificherà il file codificato. Il file inizia e finisce - rispettivamente con le parole chiavi begin e - end, esempio: - - begin 555 binary_filename - -M?T5,1@$" 0 " ( ! %"W #0 5"< T " -M!0 H !4 % 8 T $ - "@ H 4 P -M -0 !$ ! ! ! %" -M%P !0A< % $ $ 4(8 -"& W& W% < 0 -M @ !0B T(@ )@ !P O=7-R+VQI8B]L9"YS -M;RXQ ?< 'Y VP "O !VP )8 &6 !G0 -M %[ U0 %G !3 ;< #Q %Q ! -MEP :P !_ '@ !PP (P -M N0 =H _0 $D Y < #F /L -M01 $' $ & ! P #0A@ 4(8 -M" ! 0 !E !@ , T(@ %"( )@ $ -M 0 ( ;@ $ ' -"N !0K@ /H -M $ # ', ! P #1J 4:@ #8 ! -M !Y 0 , TH %* !=X 0 -M@ @ # -/X !3^ "E, $ (4 ! -M 4_> )0 0 ". P -; %0 P )@ $ - -end - - - - dd - copia di blocchi e conversione - - Il comando &man.dd.1; permette di copiare dati da dispositivi - grezzi, come dischi o nastri, specificando la dimensione dei blocchi - di input e di output. &man.dd.1; era originariamente conosciuto - come il programma di copia disco-a-disco. Inoltre con &man.dd.1; - si possono convertire file in differenti formati, per esempio da EBCDIC - a ASCII, cambiare l'ordine dei byte, ecc. - - Sintassi - - dd [if=dispositivo_input] - [of=dispositivo_output] - [operando=valore] - - Opzioni generali - - - - - - - - - - il dispositivo o file di input - - - - - - il dispositivo o file di output - - - - - - Se i dispositivi di input o di output non sono specificati, si - assume come default rispettivamente lo standard input e lo standard - output. - - Gli operandi possono essere: - - - - - - - - - - dimensione del blocco di input (blocchi da 512 byte di - default) - - - - - - dimensione del blocco di output (blocchi da 512 byte di - default) - - - - - - setta entrambe le dimensioni dei blocchi di input e di - output - - - - - - copia n file di input - - - - - - salta n blocchi di input prima - di iniziare la copia - - - - - - copia solamente n blocchi di - input - - - - - - dove valore può - essere: - - - - - - converte da EBCDIC a ASCII - - - - - - converte da ASCII a EBCDIC - - - - - - converte i caratteri maiuscoli in minuscoli - - - - - - converte i caratteri minuscoli in maiuscoli - - - - - - scambia ogni coppia di byte dei dati di input - - - - - - non ferma il processo su un errore in input - - - - - - riempie ogni blocco di input alla dimensione di - , apporrendo byte nulli se - necessario - - - - - - La dimensione dei blocchi viene specificata in byte e può - finire in k, b o - w per indicare rispettivamente 1024 (kilo), 512 - (blocco) o 2 (parola) byte. - - Esempi: - - Per copiare un file da un dispositivo a nastro in un altro: - - &prompt.user; dd if=/dev/rmt/0 of=/dev/rmt/1 -20+0 records in -20+0 records out - - Per copiare file posti in un dispositivo a nastro, scritti su una - macchina big endian con una dimensione di 20 blocchi, in file su - una machina little endian che ha un nastro inserito nel suo dispositivo, - si ha la necessità di scambiare le coppie di byte, in questo - modo: - - &prompt.user; dd if=/dev/rmt/0 of=new_file ibs=20b conv=swab -1072+0 records in -21440+0 records out - - A completamento dell'operazione, &man.dd.1; riporta il numero dei - blocchi totali e dei blocchi parziali per entrambi i file di - input e di output. - - - - od - dump ottale di un file - - Il comando &man.od.1; effettua un dump di un file su &man.stdout.4; - in differenti formati, incluso l'ottale, il decimale, virgola mobile, - esadecimale e formato carattere. - - Sintassi - - od [opzioni] - file - - Opzioni generali - - - - - - - - - - dump ottale - - - - | - - dump decimale (-d) o decimale esteso (-D) - - - - | - - dump decimale marcato (-s) o decimale marcato esteso - (-S) - - - - | - - dump in virgola mobile (-f) o virgola mobile estesa - (double) (-F) - - - - | - - dump esadecimale (-x) o esadecimale esteso (-X) - - - - | - - dump in formato carattere (byte singolo) o carattere esteso - (carattere singolo o multi-byte, a seconda dai settaggi - locali) - - - - - - modalità verbose - - - - - - Esempi: - - Per dare un'occhiata all'attuale contenuto del seguente file, un - elenco di romanzi di Wodehouse Lord Emsworth: - - Something Fresh [1915] Uncle Dynamite [1948] -Leave it to Psmith [1923] Pigs Have Wings [1952] -Summer Lightning [1929] Cocktail Time [1958] -Heavy Weather [1933] Service with a Smile [1961] -Blandings Castle and Elsewhere [1935] Galahad at Blandings [1965] -Uncle Fred in the Springtime [1939] A Pelican at Blandings [1969] -Full Moon [1947] Sunset at Blandings [1977] - - si può usare: - - &prompt.user; od -c wodehouse -0000000 S o m e t h i n g F r e s h -0000020 [ 1 9 1 5 ] \t U n c l e D y n -0000040 a m i t e [ 1 9 4 8 ] \n L e a -0000060 v e i t t o P s m i t h -0000100 [ 1 9 2 3 ] \t P i g s H a v e -0000120 W i n g s [ 1 9 5 2 ] \n S u -0000140 m m e r L i g h t n i n g [ -0000160 1 9 2 9 ] \t C o c k t a i l T -0000200 i m e [ 1 9 5 8 ] \n H e a v y -0000220 W e a t h e r [ 1 9 3 3 ] \t -0000240 S e r v i c e w i t h a S -0000260 m i l e [ 1 9 6 1 ] \n B l a n -0000300 d i n g s C a s t l e a n d -0000320 E l s e w h e r e [ 1 9 3 5 -0000340 ] \t G a l a h a d a t B l a -0000360 n d i n g s [ 1 9 6 5 ] \n U n -0000400 c l e F r e d i n t h e -0000420 S p r i n g t i m e [ 1 9 3 9 -0000440 ] \t A P e l i c a n a t B -0000460 l a n d i n g s [ 1 9 6 9 ] \n -0000500 F u l l M o o n [ 1 9 4 7 ] -0000520 \t S u n s e t a t B l a n d -0000540 i n g s [ 1 9 7 7 ] \n -0000554 - -
- - - Connessioni remote - - - Comandi per connessioni remote - - - - - - - Comando/Sintassi - - Cosa fa - - - - - - finger [opzioni] - user[@nomehost] - - riporta informazioni sugli utenti delle macchine locali - e remote - - - - ftp [opzioni] - host - - trasferisce file utilizzando il protocollo di trasferimento - di file - - - - rcp [opzioni] - nomehost - - copia file in remoto dalla macchina corrente in un'altra - macchina - - - - rlogin [opzioni] - nomehost - - effettua il login in remoto su un'altra macchina - - - - rsh [opzioni] - nomehost - - shell remota da eseguire su un'altra macchina - - - - telnet [host - [porta]] - - comunica con un altro host utilizzando il protocollo - telnet - - - -
- - - TELNET e FTP - protocollo di login remoto e di trasferimento di - file - - TELNET e FTP sono - protocolli del livello applicazione di Internet. Le specifiche dei - protocolli FTP e TELNET sono state realizzate da molte organizzazioni, - incluso il Centro Nazionale per le Applicazioni di Supercomputer (NCSA), - molti altri domini pubblici e organizzazioni collaborative. - - I programmi che implementano il protocollo - TELNET sono usualmente chiamati - telnet, ma non sempre. Alcune notevoli - eccezioni sono tn3270, WinQVT e - QWS3271, che implementano comunque il protocollo - TELNET. TELNET viene usato per effettuare il login remoto su un - altro computer in Internet. - - I programmi che implementano il protocollo FTP - sono usualmente chiamati ftp, ma esistono - anche delle eccezioni. Il programma chiamato Fetch, - distribuito dalla Dartmouth College, WS_FTP, scritto - e distribuito da John Junod e Ftptool, scritto da - Mike Sullivan, sono implementazioni del protocollo FTP con - un'interfaccia utente grafica. Esiste una versione migliore di FTP, - ncftp che ha caratteristiche aggiuntive, scritto da - Mike Gleason. Comunque, l'implementazione del protocollo FTP viene - spesso inclusa nei programmi che implementano TELNET, come quello - distribuito dalla NCSA. FTP viene usato per trasferire file tra - computer su Internet. - - &man.rlogin.1; è un servizio di login remoto che - è stato in passato un'esclusiva dello Unix BSD 4.3 di Berkeley. - Essenzialmente, offre le stesse funzionalità di &man.telnet.1;, - eccetto che &man.rlogin.1; lascia passare al computer remoto le - informazioni dell'ambiente di login dell'utente. Le macchine possono - essere configurate per permettere connessioni da fidati host senza - richiedere la password dell'utente. Una versione più sicura di - questo protocollo è la Sicura SHell - SSH, software scritto da Tatu Ylonen e - disponibile via: ftp://ftp.net.ohio-state.edu/pub/security/ssh. - - Da un prompt Unix, questi programmi possono essere invocati - digitando il comando (nome del comando) e il nome (Internet) della - macchina remota alla quale ci si vuole connettere. Inoltre si possono - specificare diverse opzioni per questi comandi, come mostrato di - seguito. - - Sintassi - - telnet [opzioni] - [host_remoto - [porta]] - - tn3270 [opzioni] - [host_remoto - [porta]] - - ftp [opzioni] - [host_remoto] - - Opzioni generali - - - - - - - - - ftp - - telnet - - Azione - - - - - - - - - - abilità la modalità di debugging - - - - - - - - come sopra (solamente SVR4) - - - - - - - - disabilita il prompt interattivo - - - - - - - - non tenta un auto-login su una connessione - - - - - - - - modalità verbose - - - - - - - - si connette all'host remoto con il nome utente specificato - (solamente SVR4) - - - - - - - - percorso dati 8-bit (solamente SVR4) - - - - - - &man.telnet.1; e tn3270 hanno un'opzione per - specificare il numero di porta a cui connettersi sull'host remoto. Per - entrambi i comandi, il numero di porta di default è 23, - la porta telnet. Altre porte vengono usate per il debugging dei servizi - di rete e per ragioni speciali. - - Esempi: - - &prompt.user; telnet oscar.us.ohio-state.edu - - &prompt.user; tn3270 ohstmvsa.acs.ohio-state.edu - - &prompt.user; ftp magnus.acs.ohio-state.edu - - La macchina remota richiederà di identificarsi tramite login - e password. Spesso, le macchine organizzate come archivi di - software o di informazioni, permettono connessioni ftp anonime. Ci si - collega tramite &man.ftp.1; alla macchina remota e si effettua il - login come anonymous (il login - ftp è equivalente su molte macchine) - cioè, quando viene richiesto il login si digita - anonymous (di solito per la password si inserisce - il proprio indirizzo email o qualsiasi altra cosa). - - Una volta che si è correttamente collegati a un computer - remoto tramite &man.telnet.1; e &man.rlogin.1; (e assumendo che sia - stata assegnata l'emulazione del terminale) si potrà utilizzare - la macchina come al solito. - - Una volta che si è correttamente collegati ad un computer - remoto tramite &man.ftp.1;, si può trasferire un file in quel - computer con il comando put o prenderlo da quel - computer con il comando get. La sintassi è la - seguente: - - put nome-file-locale - nome-file-remoto - - get nome-file-locale - nome-file-remoto - - Sono disponibili altri comandi per &man.ftp.1;, a seconda della - specifica implementazione dell'FTP locale e remoto. Il comando - help visualizza un elenco di comandi disponibili. - Il comando help può visualizzare lo scopo di - un comando specifico. Esempi di validi comandi sono mostrati di - seguito: - - - - - - - - help - - mostra un elenco di comandi disponibili - - - - help mget - - mostra lo scopo del comando mget - (prendere file multipli) - - - - pwd - - mostra la corrente directory di lavoro - - - - ls o dir - - elenca il contenuto delle directory - - - - cd - - cambia directory - - - - lcd - - cambia la directory locale - - - - open - - specifica la macchina alla quale si vuole - connettersi - - - - user - - specifica il proprio id di login (nel caso che non venga - richiesto direttamente) - - - - quit - - esce dal programma FTP - - - - - - - - finger - restituisce informazioni riguardo gli utenti - - Il comando &man.finger.1; mostra il file .plan - di un utente specifico o riporta chi è attualmente - loggato su una specifica macchina. L'utente deve - permettere i permessi di lettura generale sul file - .plan. - - Sintassi - - finger [opzioni] - [user[@nomehost]] - - Opzioni generali - - - - - - - - - - forza il formato lungo di output - - - - - - ottiene solo lo username, non il nome e cognome - reali - - - - - - forza il formato corto di output - - - - - - Esempi: - - brigadier:condron [77]> finger workshop@nyssa -Questo è un esempio di file .plan per l'id workshop di nyssa. -Questo id è stato usato in questa settimana da Frank Fiamingo, Linda -DeBula, e Linda Condron, mentre insegnavano ad usare una nuova versione -di Unix workshop sviluppata per l'UTS. - -Sperando di aver insegnato qualcosa. -Frank, Linda, & Linda - - brigadier: condron [77]> finger -Login Name TTY Idle When Where - -condron Linda S Condron p0 Sun 18:13 lcondron-mac.acs -frank Frank G. Fiamingo p1 Mon 16:19 nyssa - - - - Comandi remoti - - Alcune macchine Unix possono essere collegate tra loro per formare - una rete locale (LAN). In questo caso succede spesso che un utente di - una macchina possieda validi accessi di login su molte altre macchine - della rete locale. Per questo tipo di utente sono disponibili comandi - Unix che forniscono una certa praticità nel realizzare certe - operazioni comuni. Poichè questi comandi si focalizzano su - comunicazioni con host remoti nella rete locale (o in Internet), i nomi - dei comandi iniziano con la lettera r: - &man.rlogin.1;, &man.rsh.1; e &man.rcp.1;. La possibilità di - accesso remoto tramite questi comandi è sostenuta (opzionalmente) - attraverso il file ~/.rhosts di ogni singolo utente - e dal file generale di sistema /etc/hosts.equiv. - Per ragioni di sicurezza questi possono essere limitati ad alcuni - host. - - Il comando &man.rlogin.1; permette un accesso di login remoto - su un altro host della rete locale. &man.rlogin.1; passa - informazioni all'host remoto circa l'ambiente locale, incluso il valore - della variabile d'ambiente TERM. - - Il comando &man.rsh.1; fornisce la possibilità di invocare - una shell Unix su un host remoto della rete locale con lo scopo di - eseguirci comandi di shell. Questa capacità è simile alla - funzione shell escape disponibile generalmente all'interno di un - software di sistema Unix come editor ed email. - - Il comando &man.rcp.1; fornisce la possibilità di - copiare file dall'host locale ad un host remoto della rete - locale. - - Sintassi - - rlogin [-l username] - host_remoto - - rsh [-l username] - host_remoto - [comando] - - rcp - [[user1]@host1:]file_sorgente - [[user2]@host2:]file_destinazione - - dove le parti tra parentesi ([]) sono opzionali. - &man.rcp.1; non richiede password, quindi si deve avere il - permesso per eseguire comandi remoti su una specifica macchina. - - Opzioni generali - - - - - - - - - - si connette all' host remoto con il nome utente specificato - (&man.rlogin.1; & &man.rsh.1;) - - - - - - Il file .rhosts, se esiste nella directory home - dell'utente sull'host remoto, permette l'accesso tramite &man.rlogin.1;, - &man.rsh.1; e &man.rcp.1; agli host remoti senza richiedere la password - per tale account. Il file .rhosts contiene un - record per ogni coppia host remoto-username con il quale il proprietario - del file .rhosts desidera connettersi. Ogni record - nel file .rhosts è della forma: - - host_remoto utente_remoto - - dove l'elenco - utente_remoto è - opzionale. Per esempio, se Heather Jones vuole essere in grado di - connettersi alla macchina1 (dove il suo - username è heather) dalla - macchina2 (dove il suo username - è jones) o dalla - macchina3 (dove il suo username - è heather, lo stesso della - macchina1), lei potrebbe creare un file - .rhosts nella sua home directory sulla - macchina1. Il contenuto di questo file - potrebbe essere: - - macchina2 jones -macchina3 - --oppure- - -macchina2 jones -macchina3 heather - - Su alcuni sistemi il file /etc/hosts.equiv - presta lo stesso scopo per tutti gli utenti, al di fuori del super-user. - Così un file /etc/hosts.equiv - contenente: - - macchina_remota - - permette agli utenti provenienti da macchina_remota - che hanno gli stessi username della macchina corrente, di - connettersi a quest'ultima senza la necessita' di inserire la - password. - - Un file /etc/hosts.equiv che contiene: - - macchina_remota utente_remoto - - permette a - utente_remoto su macchina_remota - di connettersi alla macchina corrente allo stesso modo dell'utente - locale, tranne che per il super-user. - - I file /etc/hosts.equiv e - ~/.rhosts vanno usati con cautela. - - Le versioni dei programmi &man.rcp.1;, &man.rsh.1; e &man.rlogin.1; - basati sulla Secure SHell (SSH) sono - liberamente disponibili e forniscono molta più sicurezza. - -
-
Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/commands/chapter.xml ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/sgml \ No newline at end of property Index: head/it_IT.ISO8859-15/books/unix-introduction/editors/chapter.xml =================================================================== --- head/it_IT.ISO8859-15/books/unix-introduction/editors/chapter.xml (revision 52098) +++ head/it_IT.ISO8859-15/books/unix-introduction/editors/chapter.xml (nonexistent) @@ -1,1277 +0,0 @@ - - - - Editor - - Esistono numerose utility per la manipolazione del testo in Unix, come - è stato notato attraverso questo documento (esempio - &man.ed.1;, &man.ex.1;, &man.sed.1;, &man.awk.1;, la famiglia - grep e la famiglia - roff). Tra gli editor, l'editor visuale (o a - schermo pieno) standard su Unix è vi. - Questa applicazione comprende un super-set, per così dire, di - caratteristiche di &man.ed.1; e di &man.ex.1; (gli editor a linea di - Unix). - - &man.vi.1; è un editor modale. Questo significa che ha - modalità specifiche che permettono l'inserimento del testo, la - cancellazione del testo e l'inserimento dei comandi. Si può lasciare - la modalità di inserimento premendo il tasto escape. - In questo modo ci si porta nella modalità comando. L'editor - di linea &man.ex.1; è incorporato in &man.vi.1;. Si può - passare dalla modalità a schermo pieno a quella a linea di comando (e - viceversa) quando si desidera. In modalità vi - premere Q per andare in modalità - ex. In modaltà ex, al - prompt : digitare vi per ritornare in modalità - vi. Inoltre è disponibile una modalità - di &man.vi.1; in sola lettura, che può essere invocata con - &man.view.1;. - - Un altro editor comune nei sistemi Unix, specialmente nei college e - negli ambienti universitari, è emacs (che - sta per editing macros). Mentre &man.vi.1; è in - generale compreso nel sistema operativo Unix, &man.emacs.1; usualmente non - lo è. Emacs viene distribuito dalla Free - Software Foundation ed è discutibilmente il più potente editor - disponibile per Unix. Emacs è un software - di sistema molto grande ed è un grossa risorsa di sistema per un - utente di computer. - - La Free Software Foundation e il progetto GNU (del quale - emacs fa parte) sono stati fondati da Richard - Stallman e dai suoi soci, i quali credono (come specificato nel manifesto - GNU) che condividere il software sia l'atto fondamentale di amicizia - tra programmatori. La loro General Public License garantisce il - diritto d'uso, di modifica e di distribuzione di - emacs (incluso il suo codice sorgente) ed - è stata progettata specificatamente per impedire a qualcuno di - prendersi un profitto finanziario da emacs o da - altri software conseguiti attraverso la Free Software Foundation. Molti dei - loro software, incluso emacs, sono disponibili - via ftp://ftp.gnu.org/pub/gnu/ e - http://www.gnu.org/. - - Sia &man.vi.1; che &man.emacs.1; permettono di creare file di - inizializzazione che possono contenere macro per controllare i settaggi e le - funzioni degli editor. - - - Configurare la propria sessione vi - - Per configurare l'ambiente di &man.vi.1; certe opzioni possono essere - settate con il comando di linea dell'editor :set - durante una sessione di editing. In alternativa, le opzioni usate di - frequente possono essere automaticamente settate quando viene invocato - &man.vi.1;, attraverso il file .exrc. Inoltre, - questo file può contenere macro per mappare battute di tasti in - funzioni usando la funzione map. All'interno di - &man.vi.1; queste macro possono essere definite con il comando - :map. I caratteri di controllo possono essere inseriti - digitando prima - Ctrl - V - , quindi il carattere di controllo desiderato. Alcune opzioni - disponibili in &man.vi.1; sono mostrate qui sotto. Alcuni sistemi Unix - non accettano certe di queste opzioni. - - - - - - - - :set all - - visualizza tutti i settaggi delle opzioni - - - - :set ignorecase - - ignora il maiuscolo e minuscolo di un carattere in una - ricerca - - - - :set list - - visualizza tab e return - - - - :set nolist - - mette off l'opzione - - - - :set number - - visualizza i numeri di linea - - - - :set nonumber - - disattiva i numeri di linea - - - - :set showmode - - visualizza l'indicazione che la modalità di - inserimento è on - - - - :set noshowmode - - mette off l'opzione - - - - :set - wrapmargin=n - - mette on la modalità word-wrap a - n spazi dal margine destro - - - - :set wrapmargin=0 - - mette off l'opzione - - - - :set warn - - visualizza l'avvertimento Ultima modifica non - registrata - - - - :set nowarn - - mette off l'avvertimento di scrittura - - - - - - - Segue un esempio di file .exrc: - - set wrapmargin=10 -set number -set list -set warn -set ignorecase -map K {!}fmt -80 # riformatta questo paragrafo, {!}, usando fmt a - # 80 caratteri per linea -map ^Z :!spell # invoca spell, :!, per verificare lo splelling di - # una parola (ritorna a vi con Ctrl+D) - - - - Configurare la propria sessione emacs - - Configurare l'ambiente di &man.emacs.1; equivale a creare chiamate a - funzioni LISP. &man.emacs.1; è infinitamente personalizzabile - tramite variabili emacs, funzioni built-in e - attraverso la programmazione Emacs LISP. I settaggi possono essere - specificati dal minibuffer (o da linea di comando) durante una sessione - emacs. Alternativamente, i settaggi usati di - frequente possono essere attivati automaticamente quando viene invocato - &man.emacs.1;, usando il file .emacs. Benchè - una discussione del Emacs LISP vada oltre lo scopo di questo documento, - seguono alcuni esempi di configurazioni per &man.emacs.1;. - - Per settare o verificare variabili emacs o per - usare le sue funzioni built-in, si usa il tasto escape - (Meta è come &man.emacs.1; si riferisce a - questo) seguito dalla lettera x, quindi la variabile o - la funzione e i suoi argomenti. - - - - - - - - M, x - what-line - - quale linea è sul cursore? - - - - M, x - auto-fill-mode - - mette on word-wrap - - - - M, x - auto-fill-mode - - mette off word-wrap - - - - M, x - set-variable <return> - fill-column <return> 45 - - setta la lunghezza di linea a 45 caratteri - - - - M, x - set-variable <return> - auto-save-interval <return> - 300 - - salva automaticamente il file ogni 300 battute di - tasti - - - - M, x - goto-line <return> - 16 - - muove il cursore alla linea 16 - - - - M, x - help-for-help - - invoca l'help di emacs quando - Ctrl - h - è stato mappato al tasto - backspace - - - - - - Segue un esempio del file .emacs: - - (message "Loading ~/.emacs...") -; I commenti iniziano con un punto e virgola e continuano fino alla fine della linea. -(setq text-mode-hook 'turn-on-auto-fill) ;mette on word-wrap -(setq fill-column 45) ;lunghezza di linea pari a 45 caratteri -(setq auto-save-interval 300) ;salva il file ogni 300 battute di tasti -; Costruisce (o mappa) la funzione di rubout (Ctrl+h) nel tasto backspace -(global-set-key "\C-h" 'backward-delete-char-untabify) -; Costruisce la funzione help emacs per la sequenza di battitura "Ctrl+x ?" -(global-set-key "\C-x?" 'help-for-help) -; Per saltare alla linea 16, digitare M, #<return>16 -(global-set-key "\M-#" 'goto-line) -; Per sapere su che linea si è, digitare M, n -(global-set-key "\M-n" 'what-line) -(message "~/.emacs loaded.") -(message "") - - - - Veloce guida per vi - - Tutti i comandi in &man.vi.1; sono preceduti dalla pressione del tasto - escape. Ogni volta che si deve intraprendere un nuovo - comando si deve utilizzare il tasto di escape. - Diversamente da dove indicato, &man.vi.1; è case sensitive - (sensibile alla differenza minuscolo e maiuscolo). - - Comandi movimento cursore: - - (n) indica un numero ed è - opzionale - - - - - - - - (n)h - - (n) spazi a sinistra - - - - (n)j - - (n) spazi giù - - - - (n)k - - (n) spazi su - - - - (n)l - - (n) spazi a destra - - - - - - (Generalmente funzionano anche i tasti freccia) - - - - - - - - - Ctrl - F - - - avanti di una schermata - - - - - Ctrl - B - - - indietro di una schermata - - - - - Ctrl - D - - - giù di mezza schermata - - - - - Ctrl - U - - - su di mezza schermata - - - - - - (Ctrl indica il tasto control; il - case sensitive non è importante) - - - - - - - - H - - all'inizio della linea superiore della schermata - - - - M - - all'inizio della linea mediana della schermata - - - - L - - all'inizio dell'ultima linea della schermata - - - - G - - all'inizio dell'ultima linea del file - - - - (n)G - - all'inizio della linea (n) - - - - 0 - - (zero) all'inizio della linea - - - - $ - - alla fine della linea - - - - (n)w - - avanti (n) parole - - - - (n)b - - indietro (n) parole - - - - e - - fine della parola - - - - - - Inserimento testo: - - - - - - - - i - - inserimento testo prima del cursore - - - - a - - aggiunta testo dopo il cursore (non sovrascrive altro - testo) - - - - I - - inserimento testo all'inizio della linea - - - - A - - aggiunta testo alla fine della linea - - - - r - - sostituisce il carattere posto sotto il cursore con il - prossimo carattere digitato - - - - R - - sovrascrive i caratteri fino alla fine della linea (o fino a - quando il tasto escape viene digitato per - cambiare comando) - - - - o - - (alpha o) inserisce una nuova linea dopo la linea corrente - per inserire del testo - - - - O - - (alpha O) inserisce una nuova linea prima della linea - corrente per inserire del testo - - - - - - Cancellazione testo: - - - - - - - - dd - - cancella la linea corrente - - - - (n)dd - - cancella (n) linee - - - - (n)dw - - cancella (n) parole - - - - D - - cancella dal cursore fino alla fine della linea - - - - x - - cancella il carattere corrente - - - - (n)x - - cancella (n) caratteri - - - - X - - cancella il carattere precedente - - - - - - Comandi di modifica: - - - - - - - - (n)cc - - modifica (n) caratteri sulla linea - fino alla fine della linea (o fino a quando viene digitato il - tasto escape) - - - - cw - - modifica i caratteri di una parola fino alla fine della - parola (o fino a quando viene digitato il tasto - escape) - - - - (n)cw - - modifica i caratteri delle prossime - (n) parole - - - - c$ - - modifica il testo alla fine della linea - - - - ct(x) - - modifica il testo alla lettera - (x) - - - - C - - modifica il testo rimanente sulla linea corrente (fino a - quando viene digitato il tasto escape) - - - - ~ - - modifica il minuscolo/maiuscolo del carattere - corrente - - - - J - - unisce la linea corrente a quella successiva - - - - u - - annulla l'ultimo comando realizzato sulla linea - corrente - - - - . - - ripete l'ultima modifica - - - - s - - sostituisce il carattere corrente con il testo - digitato - - - - S - - sostituisce la linea corrente con il testo digitato - - - - :s - - sostituisce vecchie parole con nuove parole - :<linee considerate> - s/vecchio/nuovo/g - - - - & - - ripete l'ultimo comando di sostituzione - (:s) - - - - (n)yy - - strappa (n) linee - dal buffer - - - - y(n)w - - strappa (n) parole - dal buffer - - - - p - - inserisce il testo eliminato o strappato dopo - il cursore - - - - P - - inserisce il testo eliminato o strappato prima - del cursore - - - - - - Manipolazione file: - - - - - - - - :w - (file) - - scrive i cambiamenti nel file specificato (file corrente di - default) - - - - :wq - - scrive i cambiamenti nel file corrente e conclude la sessione - di editing - - - - :w! - (file) - - sovrascrive il file (file corrente di default) - - - - :q - - esce dalla sessione di editing se non sono stati creati - cambiamenti - - - - :q! - - esce dalla sessione di editing e scarta eventuali - cambiamenti non salvati - - - - :n - - edita il prossimo file nella lista dell'argomento - - - - :f - (nome) - - modifica il nome del file corrente in quello - specificato - - - - :r - (file) - - legge il contenuto del file specificato all'interno del - corrente editing e alla corrente posizione del cursore - (inserisce un file) - - - - :!(comando) - - escape di shell - - - - :r!(comando) - - inserisce il risultato del comando di shell specificato nella - posizione corrente - - - - ZZ - - scrive i cambiamenti nel file corrente ed esce - - - - - - - - Veloce guida per emacs - - I comandi di &man.emacs.1; sono realizzati sia tramite la - simultanea pressione del tasto control (indicato da - - Ctrl - - ), sia attraverso il primo colpo del tasto di - escape (indicato da M,). - - Comandi essenziali - - - - - - - - - Ctrl - h - - - help - - - - - Ctrl - x - , u - - undo (annulla operazione precedente) - - - - - Ctrl - x - , - Ctrl - g - - - esce dalla operazione o comando corrente - - - - - Ctrl - x - , - Ctrl - s - - - salva il file - - - - - Ctrl - x - , - Ctrl - c - - - chiude &man.emacs.1; - - - - - - Movimenti cursore - - - - - - - - - Ctrl - f - - - avanti di un carattere - - - - - Ctrl - b - - - indietro di un carattere - - - - - Ctrl - p - - - linea precedente - - - - - Ctrl - n - - - linea successiva - - - - - Ctrl - a - - - inizio linea - - - - - Ctrl - e - - - fine linea - - - - - Ctrl - l - - - al centro della corrente linea sullo schermo - - - - - Ctrl - v - - - sfoglia avanti - - - - M, - v - - sfoglia indietro - - - - M, - f - - avanti di una parola - - - - M, - b - - indietro di una parola - - - - M, - a - - inizio periodo - - - - M, - e - - fine periodo - - - - M, - { - - inizio paragrafo - - - - M, - } - - fine paragrafo - - - - M, - < - - inizio buffer - - - - M, - > - - fine buffer - - - - - - Altre funzioni importanti - - - - - - - - M, - (n) - - ripete il prossimo comando (n) - volte - - - - - Ctrl - d - - - cancella un carattere - - - - M, - d - - cancella una parola - - - - - Ctrl - k - - - elimina linea - - - - M, - k - - elimina periodo - - - - - Ctrl - s - - - ricerca in avanti - - - - - Ctrl - r - - - ricerca al rovescio - - - - M, - % - - sostituzione di query - - - - M, - c - - capitalizza parola - - - - M, - u - - parola in lettere maiuscole - - - - M, - l - - parola in lettere minuscole - - - - - Ctrl - t - - - commuta caratteri - - - - M, - t - - commuta parole - - - - - Ctrl - @ - - - marca l'inizio di una regione - - - - - Ctrl - w - - - taglia/cancella tutto dalla marcatura al punto - - - - - Ctrl - y - - - incolla il testo eliminato o strappato - all'interno della locazione corrente - - - - M, - q - - riformatta il paragrafo - - - - M, - g - - riformatta ogni paragrafo nella regione - - - - - - - - - - - - M, x - auto-fill-mode - - mette on word wrap - - - - M, x set-variable - <return> fill-column - <return> 45 - - setta la lunghezza di linea a 45 caratteri - - - - M, x goto-line - <return> 16 - - muove il cursore alla linea 16 - - - - - - - - - - - - M, - w - - copia la regione marcata - - - - - Ctrl - x - , - Ctrl - f - - - cerca un file e lo legge - - - - - Ctrl - x - , - Ctrl - v - - - cerca e legge un file alternativo - - - - - Ctrl - x - , i - - inserisce un file alla posizione corrente - - - - - Ctrl - x - , - Ctrl - s - - - salva il file - - - - - Ctrl - x - , - Ctrl - w - - - scrive il buffer in un file differente - - - - - Ctrl - x - , - Ctrl - c - - - esce da &man.emacs.1; e chiede di salvare - - - - - - Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/editors/chapter.xml ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/sgml \ No newline at end of property Index: head/it_IT.ISO8859-15/books/unix-introduction/structure/chapter.xml =================================================================== --- head/it_IT.ISO8859-15/books/unix-introduction/structure/chapter.xml (revision 52098) +++ head/it_IT.ISO8859-15/books/unix-introduction/structure/chapter.xml (nonexistent) @@ -1,165 +0,0 @@ - - - - Struttura di Unix - - - Il sistema operativo - - Unix è un sistema operativo a strati. Lo strato più - interno è l'hardware il quale fornisce servizi al OS. Il sistema - operativo (OS), riferito in Unix come al kernel, - interagisce direttamente con l'hardware e fornisce i servizi ai programmi - utente. I programmi utente non necessitano di conoscere informazioni - sull'hardware. Devono solo sapere come interagire con il kernel ed - è quest'ultimo a fornire i servizi richiesti. Uno dei più - grandi fattori che ha contribuito alla richiesta di Unix da parte dei - programmatori è stato che molti programmi utente corretti - sono indipendenti dall'hardware sottostante, e ciò li rende - facilmente trasportabili su nuovi sistemi. - - I programmi utente interagiscono con il kernel attraverso un set di - system call (chiamate di sistema) standard. Queste - system call chiedono dei servizi, servizi che saranno forniti dal kernel. - Così i servizi possono includere un accesso a un file: aprire, - chiudere, leggere, scrivere un file, creare un link o eseguire un file; - creare o aggiornare degli account (informazioni relative ad un utente come - nome, password, ecc.); cambiare il proprietario di un file o di una - directory; spostarsi in una nuova directory; creare, sospendere o - terminare un processo; abilitare l'accesso a un dispositivo hardware e - impostare dei limiti sulle risorse di sistema. - - Unix è un sistema operativo multi-user - (multi-utente) e multi-tasking (multi-processo). Si - possono avere molti utenti loggati simultaneamente nel - sistema (multi-user), ognuno dei quali esegue alcuni programmi - (multi-tasking). È compito del kernel mantenere ogni processo e - ogni utente separato e regolare l'accesso all'hardware di sistema, inclusa - la cpu, la memoria, il disco e altri dispositivi di I/O. - - -FIGURA 2.1 Struttura di un sistema Unix - - _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -| | -| Programmi | -| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | -| | | | -| | Kernel | | -| | _ _ _ _ _ _ _ _ _ _ _ _ _ _ | | -| | | Hardware | | | -| | |_ _ _ _ _ _ _ _ _ _ _ _ _ _| | | -| | | | -| | System Call | | -| |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _| | -| | -|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _| - - - - Il file system - - L'aspetto del file system di Unix è paragonabile alla struttura - rovesciata di un albero. Si parte dall'alto con la directory - root, denotata con /, per poi - scendere attraverso sotto-directory sottostanti la root. - - -FIGURA 2.2 Struttura del file system di Unix - - - /(root) 1 livello - | | | | | - bin dev etc tmp usr 2 livello - | | | | | | | | | - sh date csh ttya cua0 passwd group bin lib 3 livello - | - gcc 4 livello - - .... n livello - - Ogni nodo è o un file o una - directory di file, dove quest'ultima può - contenere altri file e directory. Un file o una directory vengono - specificati attraverso il loro path name (percorso - del nome del file o della directory), il quale può essere un path - name assoluto oppure un path name relativo ad un'altra locazione. Un path - name assoluto inizia con la directory root, /, - seguono poi i rami del file system, ognuno separato da /, - fino a raggiungere il file desiderato, come per esempio: - - /home/condron/source/xntp - - Un path name relativo specifica un percorso relativo ad un altro path - name, che usualmente è la directory di lavoro corrente in cui ci si - trova. Sono ora introdotte due directory speciali: - - . la directory corrente - - .. la directory padre della directory - corrente - - Quindi se si è in /home/frank e si - desidera specificare un path nel modo relativo si può usare: - - ../condron/source/xntp - - Questo indica che si deve prima salire di un livello di directory, - quindi passare attraverso la directory condron, - seguire la directory source e quindi - xntp. - - - - Directory, file e inode Unix - - Ogni directory e ogni file - sono inclusi nella loro directory padre. Nel caso della directory root, - la directory padre è se stessa. Una directory è un file - contenente una tabella che elenca i file contenuti nella directory stessa, - dove ai nomi dei file in lista vengono assegnati i corrispondenti numeri - di inode. Un inode è un file speciale, - progettato per essere letto dal kernel al fine di conoscere alcune - informazioni su ciascun file. Un inode specifica i permessi del file, il - proprietario del file, la data di creazione, quella dell'ultimo accesso e - quella dell'ultima modifica del file e la posizione fisica dei blocchi di - dati sul disco che contengono il file. - - Il sistema non richiede qualche struttura particolare per i dati - contenuti nel file. Il file può essere ASCII o binario o una - combinazione di questi e può rappresentare dati testuali, uno - script di shell, un codice oggetto compilato per un programma, una tabella - di directory, robaccia o qualunque cosa si voglia. - - Non c'è un'intestazione, una traccia, un'etichetta o il - carattere EOF come parte del file. - - - - Programmi Unix - - Un programma o un comando - interagisce con il kernel per fornire l'ambiente e realizzare le - funzioni richieste dall'utente. Un programma può essere: un file - di shell eseguibile, conosciuto come uno script di shell, un comando - interno (built-in) alla shell o un file sorgente compilato in codice - oggetto. - - La shell è un interprete a linea di - comando. L'utente interagisce con il kernel attraverso la shell. Si - può scrivere uno script ASCII (testo) in modo tale da essere - interpretato da una shell. - - I programmi di sistema sono generalmente in forma binaria, compilati - partendo da un codice sorgente in C. Questi si trovano in posti come - /bin, /usr/bin, - /usr/local/bin, /usr/ucb, ecc. - Questi comandi forniscono quelle funzionalità che normalmente si - pensano essere di Unix. Alcuni di questi sono &man.sh.1;, &man.csh.1;, - &man.date.1;, &man.who.1;, &man.more.1;, &man.ls.1; e molti altri. - - Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/structure/chapter.xml ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/sgml \ No newline at end of property Index: head/it_IT.ISO8859-15/books/unix-introduction/text-processing/chapter.xml =================================================================== --- head/it_IT.ISO8859-15/books/unix-introduction/text-processing/chapter.xml (revision 52098) +++ head/it_IT.ISO8859-15/books/unix-introduction/text-processing/chapter.xml (nonexistent) @@ -1,1114 +0,0 @@ - - - - Manipolazione del testo - - - Sintassi delle espressioni regolari - - Alcuni programmi di manipolazione del testo come - &man.grep.1;, &man.egrep.1;, &man.sed.1;, &man.awk.1; e &man.vi.1; - consentono di ricercare uno schema (pattern) piuttosto che una stringa - fissa. Questi schemi testuali sono conosciuti come espressioni - regolari. Si può formare un'espressione regolare - combinando caratteri normali con caratteri speciali, anche conosciuti - come meta-caratteri, secondo le successive regole. - Con queste espressioni regolari si può confrontare uno - schema su dati testuali. Le espressioni regolari si - presentano in tre diverse forme: - - - - - - - - Ancoraggi - - legano lo schema a una posizione sulla linea - - - - Serie di caratteri - - indicano un carattere in una singola posizione - - - - Modificatori - - specificano quante volte ripetere l'espressione - precedente - - - - - - Segue la sintassi delle espressioni regolari. Alcuni programmi - accettano tutte queste sintassi, altri ne accettano solo alcune: - - - - - - - - . - - indica un singolo carattere eccetto - quello di newline - - - - * - - indica zero o più istanze del - singolo carattere (o meta-carattere) che lo precede - - - - [abc] - - indica un carattere tra quelli racchiusi - - - - [a-d] - - indica un carattere tra quelli compresi nel range - - - - [^exp] - - indica un carattere tra quelli non - inclusi nell'espressione - - - - ^abc - - l'espressione regolare deve iniziare all'inizio - della linea (Ancoraggio) - - - - abc$ - - l'espressione regolare deve finire alla fine della - linea (Ancoraggio) - - - - \ - - tratta il carattere successivo letteralmente. Viene - normalmente usato per mantenere inalterato il significato di un - carattere speciale come . e *. - - - - \{n,m\} - - confronta l'espressione regolare precedente un numero minimo - n di volte e un numero massimo - m di volte - (n e m - possono assumere valori tra 0 e 255). I simboli \{ e \} - dovrebbero essere intesi come singoli operatori. In questo caso - il simbolo \ che precede le parentesi non è il carattere di - escape, ma assume un nuovo significato. - - - - \<abc\> - - confronta l'espressione regolare racchiusa trattandola come - una singola parola. I limiti della parola sono definiti iniziando - con un newline o qualche altra cosa, eccetto una lettera, una - cifra o un underscore ( _ ), e finendo con la stessa cosa o con un - carattere di fine linea. Ancora, i simboli \< e \> - dovrebbero essere intesi come singoli operatori. - - - - \(abc\) - - salva lo schema racchiuso in un buffer. Possono essere - salvati per ogni linea fino a nove schemi. È possibile - riferirsi a questi schemi tramite la combinazione di caratteri - \n. Ancora una volta i simboli \( e \) - dovrebbero essere intesi come singoli operatori. - - - - \n - - dove n varia tra 1 e 9. Confronta - l'n-sima espressione precedentemente - salvata per la linea corrente. Le espressioni sono numerate - partendo da sinistra. Il simbolo \n - dovrebbe essere inteso come un singolo operatore. - - - - & - - mostra lo schema di ricerca precedente (usato al posto della - stringa) - - - - - - Ci sono alcuni meta-caratteri usati solamente da &man.awk.1; e - &man.egrep.1;. Questi sono: - - - - - - - - + - - confronta una o più delle espressioni precedenti (a - questo simbolo) - - - - ? - - confronta zero o alcune delle espressioni precedenti (a - questo simbolo) - - - - | - - separatore. Confronta sia l'espressione precedente (a questo - simbolo) sia quella seguente - - - - ( ) - - raggruppa le espressioni regolari all'interno delle parentesi - e applica una serie di confronti - - - - - - Alcuni esempi di espressioni regolari comuni - sono: - - - - - - - - espressione regolare - - indica - - - - - - cat - - la stringa cat - - - - .at - - alcune occorrenze di un carattere precedente ad - at, come cat, rat, mat, bat, fat, hat - - - - xy*z - - alcune occorrenze di un x, seguite da - zero o più y e seguite da una - z. - - - - ^cat - - cat all'inizio della linea - - - - cat$ - - cat alla fine della linea - - - - \* - - alcune occorrenze di un asterisco - - - - [cC]at - - cat o Cat - - - - [^a-zA-Z] - - alcune occorrenze di caratteri non alfabetici - - - - [0-9]$ - - alcune linee che finiscono con un numero - - - - [A-Z][A-Z]* - - una o più lettere maiuscole - - - - [A-Z]* - - zero o alcune lettere maiuscole (in altre parole, - qualcosa) - - - - - - - - Comandi di manipolazione del testo - - - Comandi di manipolazione del testo - - - - - - - Comando/Sintassi - - Cosa fa - - - - - - awk/nawk [opzioni] - file - - esamina gli schemi (pattern) all'interno di un file ed - elabora i risultati - - - - grep/egrep/fgrep - [opzioni] - 'stringa di ricerca' - file - - ricerca nell'argomento (in questo caso probabilmente un - file) tutte le occorrenze della stringa di ricerca e le - elenca - - - - sed [opzioni] - file - - editor di flusso per manipolare file da uno script o da - linea di comando - - - -
- - - grep - - Questa sezione fornisce un'introduzione all'uso delle - espressioni regolari con &man.grep.1;. - - L'utility &man.grep.1; viene usata per ricercare espressioni - regolari comuni che si presentano nei file Unix. Le espressioni - regolari, come quelle viste in precedenza, sono meglio specificate - all'interno di apostrofi (o caratteri di quoting singoli) quando - usate con l'utility &man.grep.1;. L'utility &man.egrep.1; fornisce - una capacità di ricerca attraverso un set esteso di - meta-caratteri. La sintassi dell'utility &man.grep.1;, alcune delle - possibili opzioni e alcuni semplici esempi sono mostrati di - seguito. - - Sintassi - - grep [opzioni] - expreg - [file] - - Opzioni generali - - - - - - - - - - ignora la differenza tra caratteri maiuscoli e - minuscoli - - - - - - riporta solamente la somma del numero di linee contenenti - le corrispondenze, non le corrispondenze stesse - - - - - - inverte la ricerca, visualizzando solo le linee senza - corrispondenza - - - - - - mostra un numero di linea insieme alla linea su cui - è stata trovata una corrispondenza - - - - - - lavora in silenzio, riportando solo lo stato - finale: - - - - - - 0, per corrispondenze trovate - - - - - - 1, per nessuna corrispondenza - - - - - - 2, per errori - - - - - - elenca i nomi dei file, ma non le linee, nei quali sono - state trovate corrispondenze - - - - - - Esempi: - - Si consideri il seguente file: - - {Unix prompt 5} cat num.list - 1 15 fifteen - 2 14 fourteen - 3 13 thirteen - 4 12 twelve - 5 11 eleven - 6 10 ten - 7 9 nine - 8 8 eight - 9 7 seven -10 6 six -11 5 five -12 4 four -13 3 three -14 2 two -15 1 one - - Ecco alcuni esempi di &man.grep.1; usando tale file. - Nel primo si ricerca il numero 15: - - {Unix prompt 6} grep '15' num.list - 1 15 fifteen -15 1 one - - Ora si usa l'opzione per contare il numero di - linee che corrispondono al precedente criterio di ricerca: - - {Unix prompt 7} grep -c '15' num.list -2 - - Qui la ricerca è più generale: si selezionano tutte le - linee che contengono il carattere 1 seguito da un - 1 o un 2 o un - 5: - - {Unix prompt 8} grep '1[125]' num.list - 1 15 fifteen - 4 12 twelve - 5 11 eleven -11 5 five -12 4 four -15 1 one - - Ora si ricercano tutte le linee che iniziano - con uno spazio: - - {Unix prompt 9} grep '^ ' num.list - 1 15 fifteen - 2 14 fourteen - 3 13 thirteen - 4 12 twelve - 5 11 eleven - 6 10 ten - 7 9 nine - 8 8 eight - 9 7 seven - - Ora tutte le linee che non iniziano con uno - spazio: - - {Unix prompt 10} grep '^[^ ]' num.list -10 6 six -11 5 five -12 4 four -13 3 three -14 2 two -15 1 one - - L'ultimo esempio può anche essere realizzato usando l'opzione - insieme all stringa di ricerca originale, - esempio: - - {Unix prompt 11} grep -v '^ ' num.list -10 6 six -11 5 five -12 4 four -13 3 three -14 2 two -15 1 one - - Ora si ricercano tutte le linee che iniziano - con carattere compreso tra 1 e - 9: - - {Unix prompt 12} grep '^[1-9]' num.list -10 6 six -11 5 five -12 4 four -13 3 three -14 2 two -15 1 one - - In questo esempio si ricercano alcune istanze di - t seguite da zero o alcune - occorrenze di e: - - {Unix prompt 13} grep 'te*' num.list - 1 15 fifteen - 2 14 fourteen - 3 13 thirteen - 4 12 twelve - 6 10 ten - 8 8 eight -13 3 three -14 2 two - - In questo esempio si ricercano alcune istanze di - t seguite da una o alcune - occorrenze di e: - - {Unix prompt 14} grep 'tee*' num.list -1 15 fifteen -2 14 fourteen -3 13 thirteen -6 10 ten - - Si può prendere il proprio input da un programma, - anzichè da un file. Qui si riportano alcune linee di output del - comando &man.who.1; che iniziano con la lettera - l. - - {Unix prompt 15} who | grep '^l' -lcondron ttyp0 Dec 1 02:41 (lcondron-pc.acs.) - - - - sed - - L'editor di flusso non interattivo &man.sed.1; manipola un - flusso di input, linea per linea, creando specifici cambiamenti e - mandando il risultato su standard output. - - Sintassi - - sed [opzioni] - comando_di_editing - [file] - - Il formato per i comandi di editing è: - - [indirizzo1[,indirizzo2]] - [funzione] - [argomenti] - - dove gli indirizzi sono facoltativi e possono essere separati dalla - funzione tramite spazi o tab. La funzione è obbligatoria. - L'argomento può essere facoltativo o obbligatorio a seconda della - funzione usata. - - Gli indirizzi di linea numerati sono numeri - decimali di linea che partono dalla prima linea di input e si - incrementano di uno per ogni linea. Se vengono stabiliti più - file di input il contatore continua cumulativamente attraverso i file. - L'ultima linea di input può essere specificata con il carattere - $. - - Gli indirizzi di contesto sono schemi di - espressioni regolari racchiusi tra caratteri di slashe (/). - - I comandi possono avere 0, 1 o 2 indirizzi separati da virgola con i - seguenti effetti: - - - - - - - - # indirizzi - - linee considerate - - - - - - 0 - - tutte le linee di input - - - - 1 - - solamente le linee che corrispondono agli indirizzi - specificati - - - - 2 - - dalla prima linea che corrisponde al primo indirizzo fino - alla linea che corrisponde al secondo indirizzo, inclusa. Il - processo viene ripetuto per le linee interne. - - - - - - Le funzioni di sostituzione permettono di - ricercare contesti e sono specificate nella forma: - - s/schema_espressione_regolare/stringa_di_rimpiazzo/flag - - e possono essere quotate con caratteri di quoting singoli (') se - sono specificate opzioni o funzioni aggiuntive. Questi schemi sono - identici agli indirizzi di contesto, eccetto che, mentre questi sono - normalmente chiusi tra slashe (/), nelle funzioni sono permessi alcuni - normali caratteri per specificare i delimitatori, oltre a newline e - spazio. La stringa di rimpiazzo non è uno schema di - espressione regolare; qui i caratteri non hanno significati speciali, - fatta eccezione di: - - - - - - - - & - - che sostituisce tale simbolo con la stringa - schema_espressione_regolare - - - - \n - - sostituisce tale simbolo con - l'n-esima stringa corrispondente a - schema_espressione_regolare chiusa - tra una coppia di '\(','\)' - - - - - - Questi caratteri speciali possono essere messi in escape con il - carattere backslash (\) per rimuovere il loro significato - speciale. - - Opzioni generali - - - - - - - - - - script di editing - - - - - - non stampa l'output di default, ma solamente quelle linee - specificate dalle funzioni p o - s///p - - - - - - prende lo script di editing dal file specificato - - - - - - Alcune valide flag per le funzioni sostitutive sono: - - - - - - - - - - cancella lo schema - - - - - - sostituzione globale dello schema - - - - - - stampa le linee - - - - - - Esempi: - - Questo esempio modifica tutte le accidentali virgole (,) in una - virgola seguita da uno spazio (, ) quindi crea l'output: - - &prompt.user; cat filey | sed s/,/,\ /g - - Il seguente esempio rimuove tutte le accidentali - Jr precedute da uno spazio - (Jr) all'interno del file - filey: - - &prompt.user; cat filey | sed s/\ Jr//g - - Per realizzare operazioni multiple sull'input, si precede ogni - operazione con l'opzione (edit) e si quota la - stringa. Ad esempio, per filtrare le linee contenenti Date: - e From: e rimpiazzarle senza i due punti - (:): - - &prompt.user; sed -e 's/Date: /Date /' -e 's/From: /From /' - - Per visualizzare solamente le linee del file che iniziano con - Date: e includerne una che inizia con - Name:: - - &prompt.user; sed -n '/^Date:/,/^Name:/p' - - Per stampare solamente le prime 10 linee dell'input (un rimpiazzo di - &man.head.1;): - - &prompt.user; sed -n 1,10p - - - - awk, nawk, gawk - - &man.awk.1; è un linguaggio di elaborazione e ricerca di - schemi. Il suo nome deriva dalle ultime iniziali dei tre autori: - Alfred. V. Aho, Peter. J.Weinberger e Brian. W. Kernighan. - nawk è un nuovo - &man.awk.1;, una nuova versione del programma e &man.gawk.1; è - il gnu &man.awk.1;, da parte della Free Software - Foundation. Ogni versione è leggermente differente. Qui ci si - limiterà ad illustrare semplici esempi che potrebbero andar bene - per tutte le versioni. In alcuni sistemi operativi &man.awk.1; è - in realtà nawk. - - &man.awk.1; ricerca schemi nel suo input e realizza le operazioni - specificate su ogni linea o sui campi di linea che contengono tali - schemi. Le espressioni dello schema di confronto per &man.awk.1; - possono essere specificate sia attraverso linea di comando, sia - inserendole in un file e usando l'opzione . - - Sintassi - - awk programma - [file] - - dove programma è composto da uno o - più dei seguenti campi: - - schema - { azione } - - Ogni linea di input viene verificata con lo schema di confronto - insieme alla specifica azione che bisogna realizzare per ogni - corrispondenza trovata. Questo continua attraverso la completa sequenza - di schemi, quindi la prossima linea di input viene verificata. - - L'input è diviso tra - record e campi. Il separatore - di record di default è newline e la - variabile NR tiene il conto dei record. Il - separatore di campo di default è uno spazio - bianco, spazi e tab, e la - variabile NF tiene il conto dei campi. I separatori - di input del campo, FS e del record, - RS, possono essere settati in qualsiasi momento per - farli corrispondere a singoli caratteri specifici. I separatori di - output del campo, OFS e del record, - ORS, possono essere modificati, se si desidera, con - singoli caratteri specifici. - $n, dove - n è un intero, viene usato per - rappresentare l'n-esimo campo di un record - di input, mentre $0 rappresenta l'intero record - di input. - - BEGIN e END sono speciali - schemi che vengono verificati rispettivamente all'inizio dell'input, - prima che il primo campo sia letto e alla fine dell'input, dopo che - l'ultimo campo è stato letto. - - La stampa è permessa attraverso - l'istruzione print e l'istruzione per la stampa - formattata printf. - - Gli schemi (pattern) possono essere - espressioni regolari, espressioni aritmetiche relazionali, espressioni - di valutazione di stringhe e combinazioni buleane di alcune di queste. - In quest'ultimo caso gli schemi possono essere combinati con i seguenti - operatori buleani, usando le parentesi per definire le - combinazioni: - - - - - - - - || - - or - - - - && - - and - - - - ! - - not - - - - - - La separazione di schemi con virgole definisce un - range in cui lo schema è applicabile, - esempio: - - /primo/,/ultimo/ - - seleziona tutte le linee partendo con quella che contiene - primo e continuando inclusivamente fino alla - linea che contiene ultimo. - - Per selezionare le linee da 15 a 20 si usa il seguente - schema: - - NR==15 , NR==20 - - Le espressioni regolari devono essere chiuse - tra slashe (/) e i meta-caratteri possono essere messi in escape con il - carattere di backslash (\). Le espressioni regolari possono essere - raggruppate con gli operatori seguenti: - - - - - - - - | - - per alternative separate - - - - + - - una o più - - - - ? - - zero o una - - - - - - Un confronto di espressione regolare può essere specificato - con: - - - - - - - - ~ - - contiene l'espressione - - - - !~ - - non contiene l'espressione - - - - - - Quindi il programma: - - $1 ~ /[Ff]rank/ - - è vero se il primo campo, $1, contiene "Frank" o "frank" - dovunque all'interno del campo. Per confrontare un campo identico a - "Frank" o "frank" si usa: - - $1 ~ /^[Ff]rank$/ - - Le espressioni relazionali sono permesse usando - i seguenti operatori relazionali: - - - - - - - - < - - minore di - - - - <= - - minore o uguale a - - - - = = - - uguale a - - - - >= - - maggiore o uguale a - - - - != - - non uguale a - - - - > - - maggiore di - - - - - - Non si può conoscere su due piedi se le variabili sono - stringhe o numeri. Se nessun operando è riconosciuto per essere - un numero, sono realizzati confronti di stringhe. Altrimenti, viene - realizzata una comparazione numerica. In mancanza di informazioni per - il contrario, viene realizzata una comparazione di stringa, così - questa: - - $1 > $2 - - verrà valutata con valori di tipo stringa. Per assicurarsi - una valutazione numerica, costruire qualcosa simile a: - - ( $1 + 0 ) > $2 - - Le funzioni matematiche exp, log e sqrt sono di - tipo built-in. - - Altre funzioni built-in sono: - - - - - - - - index(s,t) - - ritorna la posizione della stringa - s dove si presenta il primo - t o 0 se non esiste - - - - lenght(s) - - ritorna la lunghezza della stringa - s - - - - substr(s,m,n) - - ritorna l'n-esimo carattere della - sottostringa di s, iniziando dalla - posizione m - - - - - - Gli array sono dichiarati automaticamente - quando vengono usati, per esempio: - - arr[i]=$1 - - assegna il primo campo del corrente record di input all'i-esimo - elemento dell'array. - - Le espressioni di controllo di flusso if-else, - while e for sono permesse con - la sintassi del C: - - for (i=1; i <= NF; i++) {azioni} - - while (i<=NF) {azioni} - - if (i<NF) {azioni} - - Opzioni generali - - - - - - - - - - legge i comandi dal file specificato - - - - - - usa il carattere c come il - carattere di separatore di campo - - - - - - Esempi: - - &prompt.user; cat filex | tr a-z A-Z | awk -F: '{printf("7R %-6s %-9s %-24s \n",$1,$2,$3)}' > upload.file - - effettua cat su filex, che - è formattato in questo modo: - - nfb791:99999999:smith -7ax791:999999999:jones -8ab792:99999999:chen -8aa791:999999999:mcnulty - - cambiando tutti i caratteri minuscoli in caratteri maiuscoli con - l'utility &man.tr.1; e formattando il file come mostrato di seguito, il - quale viene scritto nel file upload.file - - 7R NFB791 99999999 SMITH -7R 7AX791 999999999 JONES -7R 8AB792 99999999 CHEN -7R 8AA791 999999999 MCNULTY - -
-
Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/text-processing/chapter.xml ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/sgml \ No newline at end of property Index: head/it_IT.ISO8859-15/books/unix-introduction/shell-programming/chapter.xml =================================================================== --- head/it_IT.ISO8859-15/books/unix-introduction/shell-programming/chapter.xml (revision 52098) +++ head/it_IT.ISO8859-15/books/unix-introduction/shell-programming/chapter.xml (nonexistent) @@ -1,1692 +0,0 @@ - - - - Programmazione di shell - - - Script di shell - - Si possono scrivere programmi di shell creando script contenenti - alcuni comandi di shell. La prima linea dello script deve iniziare con - #!, che indica al kernel che lo script è direttamente eseguibile. - Si fa immediatamente seguire a quel simbolo il nome della shell - o del programma da eseguire (gli spazi sono permessi), usando un path name - assoluto. Generalmente si possono avere fino a 32 caratteri, forse di - più su alcuni sistemi e si può includere qualche opzione. - Quindi per inizializzare uno script per la shell Bourne la prima linea - dovrà essere: - - #! /bin/sh - - e per la shell C: - - #! /bin/csh -f - - dove l'opzione indica che la shell non deve - leggere il file .cshrc. Alcuni spazi bianchi - seguenti il magico simbolo, #!, sono opzionali. - - Inoltre si deve specificare che lo script è eseguibile, - settando gli opportuni bit sul file con il comando &man.chmod.1;, - esempio: - - &prompt.user; chmod +x shell_script - - All'interno degli script il simbolo # indica un commento da quel punto - fino alle fine della linea; #! è un caso speciale se trovato come - primo carattere del file. - - - - Settare i valori dei parametri - - I valori di un parametro, ad esempio param, sono - assegnati così: - - - - - - - - Shell Bourne - - Shell C - - - - - - param=valore - - set param = - valore - - - - - - dove valore è una valida stringa che - può essere chiusa tra caratteri di quoting singoli - ('valore') o doppi - ("valore") per permettere alcuni spazi bianchi - all'interno del valore della stringa. Quando viene racchiusa con dei - caratteri backquote (`valore`) la stringa viene - prima valutata dalla shell e viene sostituita con il risultato ottenuto - dalla valutazione. Questo viene spesso usato per eseguire un comando, - sostituendo l'output del comando a valore, - esempio: - - $ day=`date +%a` - - $ echo $day -Wed - - Dopo che il valore del parametro è stato assegnato, si accede - al valore corrente del parametro usando la notazione - $param o ${param}. - - - - Quoting - - Le stringhe possono essere quotate per controllare il modo in cui la - shell interpreta alcuni parametri o variabili all'interno della stringa. - Per delimitare le stringhe si possono usare i caratteri di quoting singoli - (') o doppi ("). I caratteri di quoting doppi definiscono la stringa e - permettono la sostituzione di variabile. I carattere di quoting singoli - definiscono la stringa ma impediscono la sostituzione di variabile. - Un backslash (\) prima di un carattere viene posto per effettuare un - escape su di esso, specificando che il sistema deve considerare il - carattere letteralmente, senza assegnarli alcun significato speciale. - Queste tecniche di quoting possono essere usate per separare una variabile - da una stringa fissa. Come esempio si consideri la variabile - var, a cui è stata assegnata il valore - bat, e la stringa costante man. Se - si vuole combinare queste stringhe per ottenere come risultato la stringa - batman si può sperimentare: - - $varman - - ma questo non funzionerà, poichè la shell tenta di - valutare una variabile chiamata varman, che non esiste. - Per ottenere il risultato desiderato si ha la necessità di separare - le stringhe tramite quoting o di isolare la variabile con delle parentesi - graffe ({}), in questo modo: - - - - - - - - "$var"man - - - quoting sulla variabile - - - - $var""man - - - separazione di parametri - - - - $var"man" - - - quoting sulla costante - - - - $var''man - - - separazione di parametri - - - - $var'man' - - - quoting sulla costante - - - - $var\man - - - separazione di parametri - - - - ${var}man - - - si isola la variabile - - - - - - Queste funzionano tutte poichè ", ', \, { e } non sono validi - caratteri per un nome di variabile. - - Non si può usare - - '$var'man - - \$varman - - poichè impediscono che la sostituzione della variabile - prenda posto. - - Quando si usano le parentesi graffe, queste devono circondare - solamente la variabile, senza includere il $, altrimenti saranno incluse - come parte del risultato della stringa, esempio: - - &prompt.user; echo {$var}man -{bat}man - - - - Variabili - - Alcune variabili sono automaticamente inizializzate all'avvio della - shell. Queste variabili permettono di riferirsi agli argomenti su linea - di comando. - - Queste variabili di shell sono: - - - Variabili di shell - - - - - - - - - - - - - Variabile - - Uso - - sh - - csh - - - - - - $# - - numero di argomenti su linea di comando - - x - - - - - - $- - - opzioni fornite alla shell - - x - - - - - - $? - - valore di uscita dell'ultimo comando eseguito - - x - - - - - - $$ - - numero id del processo corrente - - x - - x - - - - $! - - numero di processo dell'ultimo comando messo in - background - - x - - - - - - $n - - argomento su linea di comando, dove - n varia tra 1 e 9, leggendo da sinistra - a destra - - x - - x - - - - $0 - - il nome della shell corrente o del programma corrente - - x - - x - - - - $* - - tutti gli argomenti su linea di comando ("$1 $2 ... - $9") - - x - - x - - - - $@ - - tutti gli argomenti su linea di comando, ciascuno quotato - separatamente ("$1" "$2" ... "$9") - - x - - - - - - $argv[n] - - seleziona l'n-esima parola dalla - lista di input - - - - x - - - - ${argv[n]} - - come sopra - - - - x - - - - $#argv - - riporta il numero di parole della lista di input - - - - x - - - -
- - L'uso di queste variabili può essere illustrato con alcuni - semplici script. Per la shell Bourne lo script potrebbe essere: - - #!/bin/sh -echo "$#:" $# -echo '$#:' $# -echo '$-:' $- -echo '$?:' $? -echo '$$:' $$ -echo '$!:' $! -echo '$3:' $3 -echo '$0:' $0 -echo '$*:' $* -echo '$@:' $@ - - Quando viene eseguito con alcuni argomenti, mostra i valori delle - variabili di shell, esempio: - - $ ./variables.sh one two three four five -5: 5 -$#: 5 -$-: -$?: 0 -$$: 12417 -$!: -$3: three -$0: ./variables.sh -$*: one two three four five -$@: one two three four five - - Come si può notare, si ha la necessità di usare un - carattere di quoting singolo per impedire alla shell di assegnare - significati speciali a $. Il carattere di quoting doppio, come nella - prima struttura echo, permette di rimpiazzare il nome - della variabile con il suo valore. - - Similmente, per le variabili della shell C si possono illustrare le - sostituzioni di variabili tramite il seguente script: - - #!/bin/csh -f -echo '$$:' $$ -echo '$3:' $3 -echo '$0:' $0 -echo '$*:' $* -echo '$argv[2]:' $argv[2] -echo '${argv[4]}:' ${argv[4]} -echo '$#argv:' $#argv - - che quando eseguito con alcuni argomenti mostra il risultato - seguente: - - &prompt.user; ./variables.csh one two three four five - -$$: 12419 -$3: three -$0: ./variables.csh -$*: one two three four five -$argv[2]: two -${argv[4]}: four -$#argv: 5 -
- - - Sostituzione di parametri - - Si può riferirsi ai parametri in modo astratto e sostituire i - loro valori in base a delle condizioni, usando gli operatori definiti qui - sotto. Ancora una volta si possono usare le parentesi graffe ({}) per - isolare la variabile e il suo operatore. - - - - - - - - $parametro - - sostituisce questa stringa con il valore di - parametro - - - - ${parametro} - - come sopra. Le parentesi sono d'aiuto se non c'è - separazione tra questo parametro e una stringa adiacente. - - - - $parametro= - - setta parametro a - null. - - - - ${parametro-default} - - se parametro non è settato - allora si usa default come valore. - parametro non viene resettato. - - - - ${parametro=default} - - se parametro non è settato - allora lo si setta a default e si usa - il nuovo valore - - - - ${parametro+nuovo_valore} - - se parametro è settato - allora si usa nuovo_valore altrimenti - non si usa nulla. parametro non viene - resettato. - - - - ${parametro?messaggio} - - se parametro non è settato - allora si visualizza il messaggio. Se - parametro è settato allora si - usa il valore corrente. - - - - - - Non ci sono spazi nei precedenti operatori. Se un due punti (:) viene - inserito prima di -, =, + o ? allora si effettua prima un test per vedere - se il parametro ha un settaggio non-nullo. - - La shell C ha alcuni modi aggiuntivi per la sostituzione di - parametri: - - - - - - - - $lista[n] - - seleziona l'n-esima parola dalla - lista - - - - ${lista[n]} - - come sopra - - - - $#lista - - riporta il numero di parole in lista - - - - $?parametro - - ritorna 1 se il parametro è settato, 0 - altrimenti - - - - ${?parametro} - - come sopra - - - - $< - - legge una linea da &man.stdin.4; - - - - - - Inoltre la shell C definisce l'array - $argv[n] per - contenere gli n argomenti della linea di - comando e $#argv per il numero di argomenti, come - specificato in Tabella - 9.1. - - Per illustrare alcune di queste caratteristiche si userà il - seguente script di prova: - - #!/bin/sh -param0=$0 -test -n "$1" && param1=$1 -test -n "$2" && param2=$2 -test -n "$3" && param3=$3 -echo 0: $param0 -echo "1: ${param1-1}: \c" ;echo $param1 -echo "2: ${param2=2}: \c" ;echo $param2 -echo "3: ${param3+3}: \c" ;echo $param3 - - Inizialmente nello script si verifica con &man.test.1; se la - variabile esiste; in tal caso si setta il parametro al suo valore. - Dopo si riportano i valori, effettuando le sostituzioni. - - Nella prima esecuzione dello script non vengono forniti - argomenti: - - $ ./parameter.sh -0: ./parameter.sh # trova sempre $0 -1: 1: # sostituisce 1, ma non assegna questo valore -2: 2: 2 # sostituisce 2 e assegna questo valore -3: : # non sostituisce - - In questa seconda esecuzione dello script si forniscono alcuni - argomenti: - - $ ./parameter one two three -0: ./parameter.sh # trova sempre $0 -1: one: one # non sostituisce, ha già un valore -2: two: two # non sostituisce, ha già un valore -3: 3: three # sostituisce 3 ma non assegna questo valore - - - - Here document - - Un here document è una forma di quoting - che permette alle variabili di shell di essere sostituite. È una - forma speciale di redirezione che inizia con una linea contenente - solamente <<PAROLA - e finisce con una linea contenete solamente - PAROLA. Nella shell - Bourne si può impedire la sostituzione di shell effettuando un - escape su PAROLA, mettendo - un \ davanti a PAROLA - sulla linea di redirezione, esempio - <<\PAROLA, ma non - sulla linea finale. Per avere lo stesso effetto con la shell C si mette - il \ davanti a PAROLA in - entrambi i posti. - - Gli script che seguono illustrano questo meccanismo: - - - - - - - - per la shell Bourne: - - e per la shell C: - - - - - - #!/bin/sh #!/bin/csh -f -fa=fa set fa = fa -non="" set non = "" -cat << EOF cat << EOF -Questo here document Questo here document -$non $fa $non $fa -sostituzione di variabile sostituzione di variabile -EOF EOF -cat << \EOF cat << \EOF -Questo here document Questo here document -$non $fa $non $fa -sostituzione di variabile sostituzione di variabile -EOF \EOF - - Entrambi gli output producono: - - Questo here document -fa -sostituzione di variabile -Questo here document -$non $fa -sostituzione di variabile - - Nella parte superiore dell'esempio le variabili di shell - $non e $fa sono sostituite. - Nella parte inferiore queste variabili vengono trattate come delle - semplici stringhe di testo senza effettuare la sostituzione. - - - - Input interattivo - - Gli script di shell possono accettare input interattivo per - inizializzare parametri all'interno dello script stesso. - - - Sh - - &man.sh.1; utilizza il comando built-in read per - leggere una linea di input, esempio: - - read param - - Questo può essere illustrato con un semplice script: - - #!/bin/sh -echo "Inserisci una frase \c" # /bin/echo che richiede "\c" per - # impedire un newline -read param -echo param=$param - - Quando questo script viene eseguito, viene richiesto l'input, che - viene poi mostrato nel risultato: - - $ ./read.sh -Inserisci una frase hello frank # E' stato digitato hello frank <return> -param=hello frank - - - - Csh - - &man.csh.1; usa il simbolo $< per leggere una - linea da &man.stdin.4;, esempio: - - set param = $< - - Gli spazi bianchi intorno al segno di uguale sono importanti. - Il seguente script illustra come usarlo: - - #!/bin/csh -f - echo -n "Inserisci una frase" # Questo echo built-in richiede -n - # per impedire un newline - set param = $< - echo param=$param - - Quindi chiede l'input e lo mostra nel risultato: - - &prompt.user; ./read.csh -Inserisci una frase hello frank # E' stato digitato hello frank <return> -param=hello frank - - - - - Funzioni - - La shell Bourne permette di definire funzioni. Queste sono molto - simili agli alias della shell C, ma permettono più - flessibilità. Una funzione ha la forma: - - funzione () { - comando; } - - dove lo spazio dopo { e il punto e virgola (;) sono obbligatori; - il punto e virgola può essere omesso facendo precedere a } un - newline. Spazi e newline aggiuntivi sono permessi. - Alcuni esempi di funzioni possono essere visti nel semplice file - .profile discusso nei primi capitoli, dove si avevano - delle funzioni per ls e ll: - - ls() { /bin/ls -sbF "$@";} - - ll() { ls -al "$@";} - - La prima funzione ridefinisce &man.ls.1; affinchè le opzioni - siano sempre fornite dal comando standard - /bin/ls e in modo da agire in base all'input fornito, - $@. La seconda di queste funzioni prende il valore - corrente di ls (la funzione precedente) e aggiunge le - opzioni . - - Le funzioni sono molto utili negli script di shell. Il seguente - script è una versione semplificata di uno script utilizzato per - effettuare automaticamente il backup su nastro delle partizioni di - sistema. - - #!/bin/sh -# Script cron per un completo backup del sistema -HOST=`/bin/uname -n` -admin=frank -Mt=/bin/mt -Dump=/usr/sbin/ufsdump -Mail=/bin/mailx -device=/dev/rmt/0n -Rewind="$Mt -f $device rewind" -Offline="$Mt -f $device rewoffl" -# Failure - exit -failure () { - $Mail -s "Backup fallito - $HOST" $admin << EOF_failure - $HOST - Script cron backup fallito. A quanto pare non c'è il nastro nel dispositivo. - EOF_failure - exit 1 - } -# Dump failure - exit -dumpfail () { - $Mail -s "Backup fallito - $HOST" $admin << EOF_dumpfail - $HOST - Script cron backup fallito. A quanto pare non c'è il nastro nel dispositivo. - EOF_dumpfail - exit 1 - } -# Success -success () { - $Mail -s "Backup completato con successo - $HOST" $admin << EOF_success - $HOST - Script cron backup apparentemente riuscito. Il file /etc/dumpdates è: - `/bin/cat /etc/dumpdates` - EOF_success - } -# Conferma nastro nel device -$Rewind || failure -$Dump 0uf $device / || dumpfail -$Dump 0uf $device /usr || dumpfail -$Dump 0uf $device /home || dumpfail -$Dump 0uf $device /var || dumpfail -($Dump 0uf $device /var/spool/mail || dumpfail) && success -$Offline - - Questo script illustra alcuni argomenti che sono stati trattati in - questo documento. Lo script inizia settando i valori di alcuni parametri. - HOST viene inizializzato dall'output di un comando, - admin è l'amministratore di sistema, - Mt, Dump e Mail - sono nomi di programmi, device è il dispositivo - speciale usato per accedere al nastro, Rewind e - Offline contengono i comandi rispettivamente per - riavvolgere e scaricare il nastro usando il riferimento - Mt e le necessarie opzioni. Vengono definite - tre funzioni: failure, dumpfail e - success. Tutte le funzioni in questo script utilizzano - la forma here document per realizzare il contenuto - della funzione stessa. Si introducono ora gli operatori logici - OR (||) e - AND (&&); ciascuno è - posizionato tra una coppia di comandi. Per l'operatore - OR, il secondo comando viene eseguito solamente se - il primo comando non è stato completato con successo. Per - l'operatore AND, il secondo comando viene - eseguito solamente se il primo comando è stato completato con - successo. - - Lo scopo principale dello script è realizzare i comandi - Dump, ad esempio copiando i file system specificati. - Prima si tenta di eseguire il riavvolgimento del nastro. Se questo - fallisce, || failure, si esegue la funzione - failure e si esce dal programma. Se invece questo ha - successo si procede con il backup a turno di ogni partizione, ogni volta - verificando che questa operazione sia completamente riuscita - (|| dumpfail). Se questa operazione non viene eseguita - completamente con successo si esegue la procedura - dumpfail e si esce. Se l'ultimo backup ha successo si - procede con la funzione success ((...) && - success). In fine si riavvolge il nastro e lo si manda fuori - linea affinchè altri utenti non possano accidentalmente scriverci - sopra. - - - - Comandi di controllo - - - Condizionale if - - L'espressione condizionale if è - disponibile in entrambe le shell, ma con una diversa sintassi. - - - Sh - - if condizione1 -then - lista di comandi se condizione1 è vera (true) -[elif condizione2 - then lista di comandi se condizione2 è vera (true)] -[else - lista di comandi se condizione1 è falsa (false)] -fi - - Le condizioni sono sottoposte usualmente al comando &man.test.1; o - [] (Vedere la sezione 9.9.6). - L'if e then devono essere - separati con un newline o un punto e virgola (;). - - #!/bin/sh -if [ $# -ge 2 ] -then - echo $2 -elif [ $# -eq 1 ]; then - echo $1 -else - echo Nessun input -fi - - Sono richiesti degli spazi nel formato della condizione di - &man.test.1;, uno dopo [ e uno prima di - ]. Questo script potrebbe comportarsi in modo - differente a seconda che ci siano zero, uno o più argomenti su - linea di comando. Iniziando con nessun argomento: - - $ ./if.sh -Nessun input - - Ora con un argomento: - - $ ./if.sh one -one - - E ora con due argomenti: - - $ ./if.sh one two -two - - - - Csh - - if (condizione) comando - -oppure- -if (condizione1) then - lista di comandi se condizione1 è vera (true) -[else if (condizione2) then - lista di comandi se condizione2 è vera (true)] -[else - lista di comandi se condizione1 è falsa (false)] -endif - - L'if e then devono stare - sulla stessa linea. - - #!/bin/csh -f -if ( $#argv >= 2 ) then - echo $2 -else if ( $#argv == 1 ) then - echo $1 -else - echo Nessun input -endif - - Di nuovo, questo script potrebbe comportarsi in modo differente a - seconda che ci siano zero, uno o più argomenti su linea di - comando. Iniziando con nessun argomento: - - &prompt.user; ./if.csh -Nessun input - - Ora con un argomento: - - &prompt.user; ./if.csh one -one - - E ora con due argomenti: - - &prompt.user; ./if.csh one two -two - - - - - Condizionale switch e case - - Per scegliere tra una serie di valori di tipo stringa relativi a un - parametro si usa case nella shell Bourne e - switch nella shell C. - - - Sh - - case parametro in - schema1[|schema1a]) lista1 di comandi;; - schema2) lista2 di comandi - lista2a di comandi;; - schema3) lista3 di comandi;; - *) ;; -esac - - Si possono usare validi nomi di file meta-caratteri all'interno - dello schema per il confronto. I ;; concludono ogni scelta e - possono essere sulla stessa linea della scelta o a seguito di un - newline, dopo l'ultimo comando per la scelta. Schemi alternativi - per la scelta di un particolare caso sono separati da una barra - verticale |, come nel primo schema dell'esempio precedente. I simboli - wild card ,? per indicare un generico carattere e * per far - corrispondere alcuni caratteri, possono essere usati singolarmente o - in modo adiacente per completare stringhe. - - Questo semplice esempio illustra come usare l'espressione - condizionale case. - - #!/bin/sh -case $1 in - aa|ab) echo A - ;; - b?) echo "B \c" - echo $1;; - c*) echo C;; - *) echo D;; -esac - - Quindi quando si esegue lo script con l'argomento posto sulla - colonna di sinistra, lo script risponde come sulla colonna di - destra: - - - - - - - - aa - - A - - - - ab - - A - - - - ac - - D - - - - bb - - B bb - - - - bbb - - D - - - - c - - C - - - - cc - - C - - - - fff - - D - - - - - - - - Csh - - switch (parametro) -case schema1: - lista1 di comandi - [breaksw] -case schema2: - lista2 di comandi - [breaksw] -default: - lista di comandi per il comportamento di default - [breaksw] -endsw - - breaksw è opzionale e può essere - usato per interrompere lo switch dopo che si è verificata una - corrispondenza del valore di tipo stringa del parametro confrontato. - Switch non accetta | nella lista degli schemi, ma - permette di unire insieme diverse strutture case - per fornire un simile risultato. Il seguente script di shell C ha lo - stesso comportamento dell'esempio precedente, riferito al - case della shell Bourne. - - #!/bin/csh -f -switch ($1) - case aa: - case ab: - echo A - breaksw - case b?: - echo -n "B " - echo $1 - breaksw - case c*: - echo C - breaksw - default: - echo D -endsw - - - - - for e foreach - - Per effettuare un ciclo tra una lista di valori di tipo - stringa si possono usare i comandi for e - foreach. - - - Sh - - for variabile [in lista_di_valori] -do - lista di comandi -done - - La lista_di_valori è opzionale, - presupponendo $@ se nulla viene specificato. Ogni - valore in questa lista viene sostituito sequenzialmente in - variabile fino a quando la lista risulta - vuota. Possono essere usati wild card, che vengono applicati ai - nomi dei file nella directory corrente. Di seguito si illustra il - ciclo for che copia tutti i file che finiscono con - .old negli stessi nomi che finiscono però - con .new. In questi esempi l'utility - &man.basename.1; estrae la parte base del nome affinchè - si possa modificarne l'estensione. - - #!/bin/sh -for file in *.old -do - newf=`basename $file .old` - cp $file $newf.new -done - - - - Csh - - foreach variabile (lista_di_valori) - lista di comandi -end - - L'equivalente script in shell C per copiare tutti i file con - estensione .old negli stessi file con estensione - .new è: - - #!/bin/csh -f -foreach file (*.old) - set newf = `basename $file .old` - cp $file $newf.new -end - - - - - while - - Il comando while permette di effettuare il ciclo - sempre che la condizione sia vera. - - - Sh - - while condizione -do - lista di comandi - [break] - [continue] -done - - Un semplice script per illustrare il ciclo - while è: - - #!/bin/sh -while [ $# -gt 0 ] -do - echo $1 - shift -done - - Questo script prende la lista degli argomenti, ne visualizza il - primo, quindi effettua uno shift nella lista verso sinistra, perdendo - il primo elemento originale. Il ciclo viene ripetuto fino a quando - tutti gli argomenti sono stati spostati fuori dalla lista. - - $ ./while.sh one two three -one -two -three - - - - Csh - - while (condizione) - lista di comandi - [break] - [continue] -end - - Se si vuole che la condizione sia sempre vera si specifica 1 - all'interno del test condizionale. - - Lo script di shell C equivalente a quello precedente - è: - - #!/bin/csh -f -while ($#argv != 0 ) - echo $argv[1] - shift -end - - - - - until - - Questo costrutto di ciclo è solamente disponibile per la - shell Bourne. - - until condizione -do - lista di comandi se la condizione è falsa -done - - La condizione viene verificata all'inizio di ogni ciclo e il ciclo - termina quando la condizione è vera. - - Uno script equivalente all'esempio del while - precedente è: - - #!/bin/sh -until [ $# -le 0 ] -do - echo $1 - shift -done - - Si noti che qui si verifica per minore o - uguale, piuttosto che per maggiore, - poichè il ciclo until viene abilitato da una - condizione falsa. - - Sia il ciclo until che il - while sono solamente eseguiti se la condizione - è soddisfatta. La condizione viene valutata prima - dell'esecuzione dei comandi. - - - - test - - Le espressioni condizionali vengono valutate per valori - veri o falsi. Questo, di - solito, viene realizzato con &man.test.1; o equivalentemente con i suoi - operatori []. Se la condizione viene valutata vera, - viene settato uno stato di uscita zero (TRUE), - altrimenti viene settato uno stato di uscita non-zero - (FALSE). Se non ci sono argomenti viene settato - uno stato di uscita non-zero. Gli operatori utilizzati nelle - espressioni condizionali della shell Bourne sono mostrati qui - sotto. - - Per i nomi di file le opzioni per - &man.test.1; sono date con la sintassi seguente: - - - filename - - Le opzioni di &man.test.1; disponibili per i - file includono: - - - - - - - - - - vero se il file esiste ed è leggibile - - - - - - vero se il file esiste ed è scrivibile - - - - - - vero se il file esiste ed è eseguibile - - - - - - vero se il file esiste ed è un file regolare (o per - &man.csh.1; esiste e non è una directory) - - - - - - vero se il file esiste ed è una directory - - - - o - - vero se il file esiste ed è un link - simbolico - - - - - - vero se il file esiste ed è un file speciale a - caratteri (ad esempio un dispositivo al quale si accede un - carattere alla volta) - - - - - - vero se il file esiste ed è un file speciale a - blocchi (ad esempio un dispositivo al quale si accede in blocchi - di dati) - - - - - - vero se il file esiste ed è un file pipe - (fifo) - - - - - - vero se il file esiste ed è setuid (ad esempio ha il - bit set-user-id settato a s o S nel terzo bit) - - - - - - vero se il file esiste ed è setgid (ad esempio ha il - bit set-group-id settato a s o S nel sesto bit) - - - - - - vero se il file esiste e ha lo sticky bit settato (una t - nel nono bit) - - - - - - vero se il file esiste ed ha una dimensione maggiore di - zero - - - - - - C'è un test per i descrittori di - file: - - - - - - - - - - vero se l'aperto descrittore del file specificato (1, - &man.stdout.4;, di default) è associato ad un - terminale - - - - - - Ci sono test per le stringhe: - - - - - - - - - - vero se la lunghezza della stringa è zero - - - - - - vero se la lunghezza della stringa non è - zero - - - - - - vero se stringa1 è - identica a stringa2 - - - - - - vero se stringa1 non è - identica a stringa2 - - - - stringa - - vero se la stringa non è nulla - - - - - - Ci sono dei confronti per gli interi: - - - - - - - - - - vero se gli interi n1 e - n2 sono uguali - - - - - - vero se gli interi n1 e - n2 non sono uguali - - - - - - vero se l'intero n1 è - maggiore dell'intero n2 - - - - - - vero se l'intero n1 è - maggiore o uguale dell'intero - n2 - - - - - - vero se l'intero n1 è - minore dell'intero n2 - - - - - - vero se l'intero n1 è - minore o uguale dell'intero - n2 - - - - - - Sono disponibili i seguenti operatori - logici: - - - - - - - - - - negazione (unaria) - - - - - - and (binario) - - - - - - or (binario) - - - - - - le espressioni all'interno di ( ) vengono raggruppate - insieme. Può essere necessario quotare le parentesi ( ) - per impedire alla shell di interpretarle. - - - - - - - - Operatori relazionali e logici della shell C - - La shell C possiede un suo set di operatori logici e relazionali - built-in. In ordine decrescente di priorità questi sono: - - - - - - - - (...) - - raggruppa espressioni con ( ) - - - - ~ - - inverso (il suo complemento) - - - - ! - - negazione logica - - - - *, /, % - - moltiplicazione, divisione, modulo - - - - +, - - - addizione, sottrazione - - - - <<, >> - - shift a sinistra di bit, shift a destra di bit - - - - <= - - minore o uguale - - - - >= - - maggiore o uguale - - - - < - - minore - - - - > - - maggiore - - - - = = - - uguale - - - - != - - non uguale - - - - =~ - - uguale a stringa - - - - !~ - - non uguale a stringa - - - - & - - AND bit - - - - ^ - - XOR bit (or esclusivo) - - - - | - - OR bit - - - - && - - AND logico - - - - || - - OR logico - - - - {comando} - - vero (1) se il comando termina con uno stato di uscita 0, - falso (0) altrimenti. - - - - - - Inoltre la shell C permette richieste sul tipo e sui permessi dei - file con gli operatori seguenti: - - - - - - - - - - ritorna vero (1) se il file esiste ed è leggibile, - altrimenti ritorna falso (0) - - - - - - vero se il file esiste ed è scrivibile - - - - - - vero se il file esiste ed è eseguibile - - - - - - vero se il file esiste e non è una directory - - - - - - vero se il file esiste ed è una directory - - - - - - vero se il file esiste - - - - - - vero se l'utente corrente è il proprietario del - file - - - - - - vero se il file ha una lunghezza zero (file vuoto) - - - - - - -
Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/shell-programming/chapter.xml ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/sgml \ No newline at end of property Index: head/it_IT.ISO8859-15/books/unix-introduction/history/chapter.xml =================================================================== --- head/it_IT.ISO8859-15/books/unix-introduction/history/chapter.xml (revision 52098) +++ head/it_IT.ISO8859-15/books/unix-introduction/history/chapter.xml (nonexistent) @@ -1,103 +0,0 @@ - - - - Storia di Unix - - 1965 Bell Laboratory con la collaborazione del MIT e della General - Eletric lavorano per la realizzazione di un nuovo sistema operativo, - Multics, il quale vuole fornire, come principali caratteristiche, - capacità multi-utente (multi-user), multi-processo (multi-processor) - e un file system multi-livello (gerarchico) - (multi-level file system). - - 1969 AT&T era infelice del progresso di Multics e abbandona il - progetto. Ken Thompson, Dennis Ritchie, Rudd Canaday e Doug McIlroy, - alcuni programmatori dei Bell Lab che avevano lavorato nel progetto Multics, - progettano e implementano su un PDP-7 la prima versione del file system Unix - insieme ad alcune utility. Il nome Unix è stato assegnato da parte - di Brian Kernighan come gioco di parole su Multics. - - 1 Gennaio 1970 Inizio di Unix. - - 1971 Il sistema ora gira su un PDP-11 con 16 Kbyte di memoria, di cui - 8 Kbyte per i programmi utente, e con un disco di 512 Kbyte. - - Il suo primo reale impiego è come strumento di manipolazione - del testo in esclusiva per il dipartimento dei Bell Lab. Quel tipo di - utilizzo giustifica ulteriormente la ricerca e lo sviluppo attraverso la - programmazione di gruppo. Unix attira i programmatori perchè - è stato progettato con queste caratteristiche: - - - - ambiente di programmazione; - - - - semplice interfaccia utente; - - - - semplici utility che possono essere combinate per realizzare potenti - funzioni; - - - - file system gerarchico (ad albero); - - - - semplice interfacciamento con i dispositivi, in armonia con il - formato dei file; - - - - sistema multi-utente e multi-processo; - - - - architettura indipendente e trasparente all'utente. - - - - 1973 Unix è riscritto prevalentemente in C, un nuovo linguaggio - di programmazione sviluppato da Dennis Ritchie. La codifica in questo - linguaggio di alto livello diminuisce fortemente lo sforzo necessario per - portare Unix su nuove macchine. - - 1974 Thompson e Ritchie descrivono in una relazione pubblicata in un - comunicato dell'ACM il nuovo sistema operativo Unix. Unix genera - entusiasmo nella comunità accademica che lo vede come un potente - strumento di insegnamento per lo studio della programmazione di sistemi. - Poichè il decreto del 1956 impedisce ad AT&T di - commercializzare il prodotto, viene concessa una licenza - all'Università per scopi educativi e una per esistenza - commerciale. - - 1977 Ci sono circa 500 siti Unix nel mondo. - - 1980 BSD 4.1 (software sviluppato da Berkeley). - - 1983 SunOS, BSD 4.2, Sys V. - - 1984 Ci sono circa 100.000 siti Unix che girano su differenti - piattaforme hardware, con differenti capacità. - - 1988 AT&T e Sun Microsystem sviluppano System V Release 4 (SVR4). - Questo sarà in futuro implementato in UnixWare e Solaris 2. - - 1993 Novell compra Unix da AT&T. - - 1994 Novell porta il nome UNIX a X/OPEN. - - 1995 Santa Cruz Operation compra UnixWare da Novell. Santa Cruz - Operation e Hewlett-Packard annunciano lo sviluppo di una versione di Unix a - 64 bit. - - 1996 International Data Corporation prevede che nel 1997 ci saranno 3 - milioni di sistemi Unix nel mondo. - Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/history/chapter.xml ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/sgml \ No newline at end of property Index: head/it_IT.ISO8859-15/books/unix-introduction/book.xml =================================================================== --- head/it_IT.ISO8859-15/books/unix-introduction/book.xml (revision 52098) +++ head/it_IT.ISO8859-15/books/unix-introduction/book.xml (nonexistent) @@ -1,105 +0,0 @@ - - %chapters; -]> - - - Introduzione a Unix - - - Frank G.Fiamingo -
fiamingo.1@osu.edu
-
- - LindaDeBula -
debula.2@osu.edu
-
- - LindaCondron -
condron.1@osu.edu
-
- - Settembre 1998 - - - 1996 - - 1997 - - 1998 - - University Technology Services, The Ohio State - University. - - - - © 1996-1998 University Technology Services, The Ohio State - University, Baker Systems Engineering Building, 1971 Neil Avenue, - Columbus, OH 43210. - - Tutti i diritti riservati. La ridistribuzione e l'uso, con o senza - modifiche, sono permesse purchè siano rispettate le seguenti - condizioni: - - - - La ridistribuzione deve contenere la precedente nota di - copyright, questa lista di condizioni, e il seguente - disclaimer. - - - - Né il nome dell'Università né i nomi dei - suoi contributori possono essere usati per appoggiare o promuovere - prodotti o servizi derivanti da questo documento senza un precedente - specifico permesso scritto. - - - - QUESTA PUBBLICAZIONE VIENE FORNITA COSÌ - COM'È SENZA NESSUN TIPO DI GARANZIA. QUESTA - PUBBLICAZIONE PUÒ CONTENERE IMPRECISIONI TECNICHE O ERRORI - TIPOGRAFICI. - - Unix è un marchio registrato della The Open Group, AT&T - è un marchio registrato della American Telephone and Telegraph, - Inc. - - - $FreeBSD$ - - - &trans.it.mark; - - Questo documento introduce il vasto mondo dei sistemi operativi - Unix e lo fa in stile manualistico. Unix non è un sistema - operativo unico, come molti potrebbero pensare, bensì è - una grande famiglia di sistemi operativi (come ad esempio FreeBSD, - NetBSD, OpenBSD, BSD, AIX, System V, SunOS, varie distribuzioni di - Linux, ecc.), aventi comandi e caratteristiche simili e disponibili per - molte architetture hardware (come ad esempio x86, alpha, ecc.). - - Copyright e URL rivisti nel Settembre 1998. - -
- - &chap.preface; - &chap.history; - &chap.structure; - &chap.getting-started; - &chap.system-resource; - &chap.shells; - &chap.special-features; - &chap.text-processing; - &chap.commands; - &chap.shell-programming; - &chap.editors; - &chap.command-summary; - &chap.bibliography; - &chap.glossary; -
Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/book.xml ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/sgml \ No newline at end of property Index: head/it_IT.ISO8859-15/books/unix-introduction/getting-started/chapter.xml =================================================================== --- head/it_IT.ISO8859-15/books/unix-introduction/getting-started/chapter.xml (revision 52098) +++ head/it_IT.ISO8859-15/books/unix-introduction/getting-started/chapter.xml (nonexistent) @@ -1,2211 +0,0 @@ - - - - Iniziamo - - - Effettuare il login - - Una volta che l'utente si è collegato a un sistema Unix, gli - viene chiesto di inserire un login username - (nome utente) e una password (codice segreto). Il - login username è il nome univoco dell'utente sul sistema. La - password è un codice modificabile conosciuto solo dall'utente. - Alla richiesta di login, l'utente deve inserire lo - username e alla richiesta della password, deve essere - inserita la password effettiva. - - - Unix è un sistema case sensitive (fa - distinzione tra caratteri minuscoli e maiuscoli). Quindi sia il - login username che la password - devono essere inseriti esattamente come sono stati creati; il login - username è normalmente in minuscolo. - - - - Tipi di terminali - - Molti sistemi sono configurati in modo tale da richiedere all'utente - il tipo di terminale da usare, il quale dovrebbe essere settato al tipo - di terminale usato nella fase di login. Molti computer lavorano - se si sceglie il tipo vt100. Gli utenti connessi - tramite una workstation Sun molto probabilmente useranno il tipo - sun; quelli che usano un Terminale-X molto - probabilmente useranno xterms oppure - xterm. - - Il tipo di terminale indica al sistema Unix come interagire quando - una sessione viene aperta. - - Può essere necessario risettare il tipo di terminale, - digitando il comando: - - - - - - - - setenv TERM <tipo di - terminale> - - -se si usa la shell C - (vedere Capitolo 5) - - - - - - (Inoltre su alcuni sistemi Unix, ad esempio MAGNUS, è - necessario dare il comando unsetenv - TERMCAP.) - - oppure - - - - - - - - TERM=<tipo di - terminale>; export TERM - - -se si usa la shell Bourne - (vedere Capitolo 5) - - - - - - dove <tipo di terminale> è - il tipo di terminale, come vt100, che si desidera - settare. - - - - Password - - Quando viene assegnato il proprio account, si riceve una password - iniziale. Questa password è importate sia per la sicurezza - del sistema sia per una sicurezza personale, perciò la password - per il proprio account può essere cambiata a propria scelta. Il - comando per cambiare una password è - &man.passwd.1;. Verrà chiesto di inserire sia la propria - vecchia password, sia la nuova password desiderata, quest'ultima due - volte. Se si sbaglia la propria vecchia password o non si inserisce - quella nuova nello stesso modo per due volte, il sistema - indicherà che la password non ha subito cambiamenti. - - Alcuni amministratori di sistema hanno programmi che verificano - l'accuratezza di una password (che deve essere sufficientemente criptica - per assicurare una certa sicurezza al sistema). Un cambiamento di - password può essere rifiutato da questi programmi. - - Quando si sceglie una password, è importante che questa non - sia in qualche modo indovinabile né per qualche sconosciuto - che tenta di scoprirla né per un conoscente. I suggerimenti per - scegliere e mantenere una password sono i seguenti: - - - - non usare una parola (o parole) di un linguaggio; - - - - non usare il proprio nome; - - - - non usare informazioni che possono essere trovate nel proprio - portafoglio; - - - - non usare informazioni comunemente conosciute circa se stessi - (come il soprannome, patente di guida, ecc.); - - - - non usare caratteri di controllo. Alcuni sistemi non li - accettano; - - - - non scrivere la password in qualche posto; - - - - non dare la propria password a *nessuno*; - - - - - - usare un mix di tipi di caratteri (alfabetici, numerici, - speciali); - - - - usare un mix di caratteri maiuscoli e caratteri - minuscoli; - - - - usare un minimo di 6 caratteri; - - - - scegliere una password in modo da poterla ricordare; - - - - cambiare di frequente la propria password; - - - - assicurarsi che nessuna persona vicino a voi vi guardi quando si - inserisce la propria password. - - - - - - Uscita - - - Ctrl - D - - indica la fine di un flusso di dati; - può far uscire dal sistema un utente. L'ultimo caso è - disabilitato su molti sistemi - - - Ctrl - C - - interruzione - - &man.logout.1; - rilascia il sistema - - &man.exit.1; - rilascia la shell - - - - Identità - - Il sistema identifica un utente attraverso il numero di utente e il - numero di gruppo (rispettivamente userid e - groupid) assegnati dall'amministratore di sistema. - Generalmente non è necessario conoscere il proprio userid e - groupid, poichè il sistema traduce in modo automatico lo userid - in username (e viceversa) ed il groupid in groupname (e viceversa). - Probabilmente si conosce già lo username: è il nome - utilizzato per il login. Il groupname non è ovvio, e in - realtà si può appartenere a più di un gruppo. Il - proprio gruppo primario è quello associato con il proprio - username nel file database delle password, configurato - dall'amministratore di sistema. Similmente, c'è un file database - per i gruppi, dove l'amministratore di sistema può assegnare - gruppi aggiuntivi ad un utente. - - Nei seguenti esempi il simbolo &prompt.user; è il proprio - prompt di shell e non va digitato. - - Si può determinare il proprio userid e la lista dei gruppi di - appartenenza con i comandi &man.id.1; e &man.groups.1;. Su alcuni - sistemi &man.id.1; mostra le informazioni sull'utente e le informazioni - sul gruppo primario, esempio: - - &prompt.user; id -uid=1101(frank) gid=10(staff) - - su altri sistemi mostra anche le informazioni sui gruppi aggiuntivi - di appartenenza: - - &prompt.user; id -uid=1101(frank) gid=10(staff) groups=10(staff),5(operator),14(sysadmin),110(uts) - - Il comando &man.groups.1; mostra le informazioni di tutti i gruppi - di appartenenza, esempio: - - &prompt.user; groups -staff sysadmin uts operator - - - - - Struttura della linea di comando di Unix - - Un comando è un programma che chiama - il sistema Unix per qualche compito. Un comando ha la forma: - - comando - [opzioni] - [argomenti] - - dove un argomento indica su cosa il comando deve - realizzare la sua azione, generalmente un file o una serie di file. - Un'opzione modifica il comando, cambiandone il modo di esecuzione. - - I comandi sono case sensitive (sensibili alle lettere maiuscole e - minuscole). comando - e Comando non sono - la stessa cosa. - - Le opzioni sono generalmente precedute da un - trattino (-) e per molti comandi, più opzioni - possono essere messe insieme nella forma: - - comando - -[opzione][opzione][opzione] - - esempio: - - ls -alR - - che mostrerà un listato lungo di tutti i file che si trovano - nella directory corrente e ricorsivamente anche quelli che si trovano in - tutte le sotto-directory. - - In molti comandi si possono separare le opzioni, facendole precedere - ognuna da un trattino, esempio: - - comando - -opzione1 -opzione2 -opzione3 - - come in: - - ls -a -l -R - - Alcuni comandi hanno opzioni che richiedono parametri. Le opzioni che - richiedono parametri sono di solito specificate separatamente, - esempio: - - lpr -Pprinter3 -#2 file - - che trasmetterà 2 copie del file specificato a - printer3. - - Ci sono delle convenzioni standard per i comandi. Comunque, non tutti - i comandi Unix seguono questo standard. Alcuni non richiedono il trattino - prima dell'opzione e alcuni non permettono di mettere insieme più - opzioni, per esempio alcuni possono richiedere che ogni opzione sia - preceduta da un trattino e separata con uno spazio bianco da un'altra - opzione o argomento. - - Le opzioni e la sintassi di un comando sono mostrate nelle - pagine man del comando. - - - - Tasti di controllo - - I tasti di controllo sono usati per realizzare - speciali funzioni su linea di comando o all'interno di un editor. - Queste funzioni possono essere generate premendo contemporaneamente il - tasto control e alcuni altri tasti. - Questa combinazione è generalmente indicata con - - Ctrl - Tasto - (oppure - ^ - Tasto - ). - Control - S - può essere scritto come - Ctrl - S - (oppure - ^ - S - ). Con i tasti di controllo le lettere maiuscole e minuscole - sono la stessa cosa, così - Ctrl - S - è lo stesso di - Ctrl - s - . Questo particolare esempio ( - Ctrl - S - ) è un segnale di stop e - dice al terminale di non accettare più input. Il terminale - rimarrà sospeso finchè un segnale di - start - Ctrl - Q - non sarà generato. - - - Ctrl - U - è normalmente il segnale di - cancellazione di linea per il proprio - terminale. Quando lo si digita, l'intera linea di input viene - cancellata. - - Nell'editor &man.vi.1; si possono inserire i tasti - di controllo all'interno del file di testo facendo seguire a - - Ctrl - V - il carattere di controllo desiderato; così per - inserire in un documento - Ctrl - H - si digita - Ctrl - V - , - Ctrl - H - . - - - - stty - controllo del terminale - - &man.stty.1; mostra o configura le opzioni di controllo del terminale. - L'abbreviazione tty risale fino ai - giorni dei teletypewrite, che erano associati alla - trasmissione di messaggi telegrafici ed erano primitivi modelli di - terminali di computer. - - Per i nuovi utenti, l'uso principale del comando &man.stty.1; riguarda - l'assegnazione della funzione di cancellazione di linea ad - un tasto specifico per i loro terminali. Per i programmatori di sistema o - per chi scrive script di shell, il comando &man.stty.1; fornisce uno - strumento prezioso per la configurazione di molti aspetti legati al - controllo di I/O di un dispositivo specifico, inclusi i seguenti: - - - - carattere di erase (eliminazione carattere) e di - line-kill (eliminazione linea); - - - - velocità di trasmissione dati; - - - - controllo di parità sulla trasmissione dati; - - - - controllo del flusso hardware; - - - - carattere di nuova linea (<NL>), di return (<CR>) e di - alimentazione linea (<LF>); - - - - interpretazione del carattere tab; - - - - modifica di un input grezzo; - - - - trasformazione di lettere minuscole in lettere maiuscole. - - - - Il comando &man.stty.1; è molto dipendente dal sistema, quindi - consultare le relative pagine man sul proprio sistema - per i dettagli. - - Sintassi - - stty [opzioni] - - Opzioni generali - - - - - - - - - - mostra i settaggi del terminale - - - - - - mostra tutte le opzioni - - - - - - richiama ERASE come BS-spazio-BS - - - - - - imposta la modalità specifica dei sistemi operativi - conformi al Digital Equipment Corporation (che distinguono ERASE - da BACKSPACE) (non disponibile su tutti i sistemi) - - - - - - imposta il carattere per LINE-KILL - - - - - - imposta il carattere per ERASE - - - - - - imposta il carattere per INTERRUPT - - - - - - Esempi: - - Con il comando &man.stty.1; si possono visualizzare e cambiare i - settaggi del proprio terminale di controllo. Per visualizzare tutti - () i settaggi correnti: - - &prompt.user; stty -a -speed 38400 baud, 24 rows, 80 columns -parenb -parodd cs7 -cstopb -hupcl cread -clocal -crtscts --ignbrk brkint ignpar -parmrk -inpck istrip -inlcr -igncr icrnl -iuclc -ixon -ixany -ixoff imaxbel -isig iexten icanon -xcase echo echoe echok -echonl -noflsh -tostop -echoctl -echoprt echoke -opost -olcuc onlcr -ocrnl -onocr -onlret -ofill -ofdel -erase kill werase rprnt flush lnext susp intr quit stop eof -^H ^U ^W ^R ^O ^V ^Z/^Y ^C ^\ ^S/^Q ^D - - Per cambiare i settaggi usando &man.stty.1;, ad esempio per cambiare - il carattere di erase da - Ctrl - ? - (il tasto elimina) a - Ctrl - H - : - - &prompt.user; stty erase ^H - - Questo setterà l'opzione del terminale solamente per la - sessione corrente. Per far in modo che questo comando sia eseguito - automaticamente ad ogni login, è possibile inserire tale comando - nel file .login o .profile di - cui si parlerà più avanti. - - - - Ottenere aiuto - - Il manuale di Unix, usualmente chiamato man page - (pagine man), è disponibile per spiegare l'uso del sistema Unix e - dei suoi comandi. Per servirsi di una pagina man digitare il comando - &man.man.1; al prompt di sistema seguito dal comando di cui si necessitano - informazioni. - - Sintassi - - man [opzioni] - nome_comando - - Opzioni generali - - - - - - - - - - mostra alcune linee riassuntive dei comandi contenenti la - parola chiave richiesta - - - - - - percorso per le pagine man - - - - - - mostra tutte le pagine man trovate (SVR4) - - - - - - Esempi: - - Si può usare &man.man.1; per ottenere una linea riassuntiva di - alcuni comandi che contengono la parola che si vuole ricercare con - l'opzione , ad esempio per cercare la parola - password, si digita: - - &prompt.user; man -k password -passwd (5) - password file -passwd (1) - cambia la password - - Il numero in parentesi indica la sezione delle pagine man dove sono - stati trovati i riferimenti. Si può accedere a quella pagina man - (di default si fa riferimento al numero di sezione più basso, ma si - può usare un'opzione su linea di comando per specificarne uno - differente) con: - - &prompt.user; man passwd -PASSWD(1) USER COMMANDS PASSWD(1) - -NOME -passwd - cambia password - -SINTASSI -passwd [ -e login_shell ] [ username ] - -DESCRIZIONE -passwd cambia (o setta) la password di un utente. -passwd chiede per due volte la nuova password, senza mostrarla. -Questo per prendere in considerazione la possibilità di digitare errori. -Solamente l'utente stesso e il super-user possono cambiare la password -di un utente. - -OPZIONI - --e Cambia la shell di login dell'utente. - - Qui l'output è stato parafrasato e troncato per una questione - di spazio e di copyright. - - - - Navigazione e controllo delle directory - - Il file system di Unix è organizzato come la struttura - ramificata di un albero a partire da root. La directory - root del sistema è rappresentata dal carattere - di slash in avanti (/). Le directory di sistema e - quelle degli utenti sono organizzate sotto la directory - root. In Unix l'utente non ha una directory root; - generalmente dopo il login gli utenti vengono posizionati nella loro - directory home. Gli utenti possono creare altre - directory sotto la loro directory home. La tabella - che segue mostra alcuni comandi per la navigazione tra directory. - - - Comandi di navigazione e controllo delle directory - - - - - - - Comando/Sintassi - - Cosa fa - - - - - - cd - [directory] - - cambia directory - - - - ls - [opzioni][directory - o file] - - lista il contenuto della directory o i permessi del - file specificato - - - - mkdir - [opzioni] - directory - - crea una directory - - - - pwd - - mostra la directory (corrente) di lavoro - - - - rmdir [opzioni] - directory - - rimuove una directory - - - -
- - Se si ha una certa familiarità con DOS la tabella che segue - paragona i suoi simili comandi a quelli Unix in modo tale da fornire un - appropriato quadro di riferimento. - - - Comandi di navigazione e controllo delle directory Unix vs - DOS - - - - - - - - - Comando - - Unix - - DOS - - - - - - lista il contenuto di una directory - - ls - - dir - - - - crea una directory - - mkdir - - md & - mkdir - - - - cambia directory - - cd - - cd & - chdir - - - - rimuove una directory - - rmdir - - rm & - rmdir - - - - ritorna alla directory home dell'utente - - cd - - cd\ - - - - mostra la directory corrente di lavoro - - pwd - - cd - - - -
- - - pwd - mostra la directory di lavoro - - In ogni momento si può determinare in che punto si è - nella gerarchia del file system mostrando la directory di lavoro con il - comando &man.pwd.1;, esempio: - - &prompt.user; pwd -/home/frank/src - - - - cd - cambia directory - - Ci si può portare in una nuova directory con il comando - &man.cd.1;, cambio di directory. &man.cd.1; accetta sia path name - (percorsi) assoluti sia path name relativi. - - Sintassi - - cd [directory] - - Esempi: - - - - - - - - cd (oppure chdir in - alcune shell) - - cambia directory - - - - cd - - si posiziona nella directory home dell'utente - - - - cd / - - si posiziona nella directory di sistema roor (/) - - - - cd .. - - sale di un livello di directory - - - - cd ../.. - - sale di due livelli di directory - - - - cd - /completo/path/name/da/root - - cambia directory rispetto a un path name assoluto - (notare lo slash iniziale) - - - - cd - path/da/posizione/corrente - - cambia directory rispetto a un path name relativo alla - posizione corrente (no slash iniziale) - - - - cd - ~username/directory - - cambia directory rispetto alla directory home dell'utente - specificato (il carattere ~ non è valido nella shell - Bourne; vedere il Capitolo 5). - - - - - - - - mkdir - crea una directory - - La gerarchia della propria directory home si estende creando - sotto-directory all'interno di essa. Questo è possibile con il - comando &man.mkdir.1;, crea directory. Di nuovo si può - specificare un path name assoluto o relativo della directory che si - vuole creare. - - Sintassi - - mkdir [opzioni] - directory - - Opzioni generali - - - - - - - - - - crea una directory intermedia (genitore), quando - necessario - - - - - - permessi di accesso (SVR4). (Si vedranno i - modi più avanti in questo - Capitolo) - - - - - - Esempi: - - &prompt.user; mkdir /home/frank/data - - oppure se la directory di lavoro corrente è - /home/frank, il seguente comando è - equivalente: - - &prompt.user; mkdir data - - - - rmdir - rimuove una directory - - Per rimuovere una directory è necessario che questa sia - vuota. Altrimenti bisogna prima rimuovere i file contenuti in essa. - Inoltre, non si può rimuovere una directory se questa è la - directory di lavoro corrente, bisogna prima uscire da - quest'ultima. - - Sintassi - - rmdir - directory - - Esempi: - - Per rimuovere la directory vuota - /home/frank/data mentre si è in - /home/frank usare: - - &prompt.user; rmdir data - - oppure - - &prompt.user; rmdir /home/frank/data - - - - ls - mostra i contenuti delle directory - - Il comando per visualizzare le proprie directory e i propri file - è &man.ls.1;. È possibile ottenere, attraverso le opzioni, - informazioni circa la dimensione, il tipo, i permessi, la data di - creazione, di modifica e di accesso del file. - - Sintassi - - ls [opzioni] - [argomenti] - - Opzioni generali - - Quando non viene usato nessun argomento, viene mostrato il contenuto - della directory corrente. Ci sono molte utili opzioni per il comando - &man.ls.1;. Segue una lista di alcune di queste. Quando si usa il - comando, le opzioni sono raggruppate insieme, precedute da un - trattino (-). - - - - - - - - - - mostra tutti i file, inclusi quelli che iniziano con - un punto (.) - - - - - - mostra solo i nomi delle directory, non i file - nella directory - - - - - - indica il tipo di elemento terminandolo con un - simbolo: - - - - - - directory / - - - - - - socket = - - - - - - link simbolico @ - - - - - - eseguibile * - - - - - - mostra il gruppo Unix assegnato al file, richiede l'opzione - (BSD solamente) o su una macchina SVR4, - esempio Solaris, questa opzione ha l'effetto opposto - - - - - - se il file è un link simbolico, mostra le - informazioni del file o della directory a cui il link si - riferisce, non le informazioni del link stesso - - - - - - listato lungo: mostra i modi, informazioni di link, il - proprietario, la dimensione, la data dell'ultima modifica del - file. Se il file è un link simbolico, una freccia - (-->) precede il percorso del file collegato. - - - - - - Il campo modi viene fornito dall'opzione - e consiste di 10 caratteri. Il primo carattere - è uno dei seguenti: - - - - - - - - CARATTERE - - SE L'ELEMENTO E' - - - - - - d - - directory - - - - - - - file ordinario - - - - b - - file speciale per dispositivi a blocchi - - - - c - - file speciale per dispositivi a caratteri - - - - l - - link simbolico - - - - s - - socket - - - - - - I 9 caratteri successivi sono raggruppati in 3 blocchi di 3 - caratteri ciascuno. Indicano i permessi di accesso al - file: i primi 3 caratteri si riferiscono ai permessi del - proprietario del file, i successivi 3 ai permessi - degli utenti del gruppo Unix assegnato al file e - gli ultimi 3 caratteri ai permessi degl'altri - utenti sul sistema. Possono assumere i seguenti simboli: - - - - - - - - r - - permesso di lettura - - - - w - - permesso di scrittura - - - - x - - permesso di esecuzione - - - - - - - permesso negato - - - - - - Esistono altri permessi, specificamente progettati per essere usati - in speciali situazioni. Questi sono spiegati nelle pagine man di - &man.ls.1;. - - Esempi: - - Per mostrare i file in una directory - - &prompt.user; ls -demofiles frank linda - - Per mostrare tutti i file in una directory, inclusi i file nascosti - (iniziano con un punto): - - &prompt.user; ls -a -. .cshrc .history .plan .rhosts frank -.. .emacs .login .profile demofiles linda - - Per avere un listato lungo: - - &prompt.user; ls -al -total 24 -drwxr-sr-x 5 workshop acs 512 Jun 7 11:12 . -drwxr-xr-x 6 root sys 512 May 29 09:59 .. --rwxr-xr-x 1 workshop acs 532 May 20 15:31 .cshrc --rw------- 1 workshop acs 525 May 20 21:29 .emacs --rw------- 1 workshop acs 622 May 24 12:13 .history --rwxr-xr-x 1 workshop acs 238 May 14 09:44 .login --rw-r--r-- 1 workshop acs 273 May 22 23:53 .plan --rwxr-xr-x 1 workshop acs 413 May 14 09:36 .profile --rw------- 1 workshop acs 49 May 20 20:23 .rhosts -drwx------ 3 workshop acs 512 May 24 11:18 demofiles -drwx------ 2 workshop acs 512 May 21 10:48 frank -drwx------ 3 workshop acs 512 May 24 10:59 linda - -
- - - Comandi di gestione dei file - - Per creare, copiare, rimuovere file e per modificarne i permessi - si possono usare i seguenti comandi. - - - Comandi di gestione dei file - - - - - - - Comando/Sintassi - - Cosa fa - - - - - - chgrp [opzioni] - gruppo file - - cambia il gruppo assegnato ad un file - - - - chmod [opzioni] - file - - cambia i permessi di accesso a file o directory - - - - chown [opzioni] - proprietario file - - cambia il proprietario di un file; può essere usato - solamente dal super-user - - - - cp [opzioni] - file1 file2 - - copia file1 - in file2; - file2 non dovrebbe - già esistere. Questo comando crea o sovrascrive - file2 - - - - mv [opzioni] - file1 file2 - - muove (rinomina) - file1 in - file2 - - - - rm [opzioni] - file - - elimina un file o una directory ( rimuove - ricorsivamente le directory e il loro contenuto) - ( chiede conferma prima di rimuove i - file) - - - -
- - Se si ha una certa familiarità con DOS la tabella che segue - paragona i suoi simili comandi a quelli Unix in modo tale da fornire un - appropriato quadro di riferimento. - - - Comandi di gestione dei file Unix vs DOS - - - - - - - - - Comando - - Unix - - Dos - - - - - - copia un file - - cp - - copy - - - - muove un file - - mv - - move (non supportato in tutte le - versioni di Dos) - - - - rinomina un file - - mv - - rename & - ren - - - - elimina un file - - rm - - erase & - del - - - - mostra un file a schermo - - cat - - type - - - - mostra un file a schermo, una pagina alla volta - - more, less, - pg - - type /p (non supportato in tutte - le versioni di Dos) - - - -
- - - cp - copia un file - - Il comando &man.cp.1; copia il contenuto di un file in un altro - file. - - Sintassi - - cp [opzioni] - filename1 filename2 - - Opzioni generali - - - - - - - - - - interattivo (chiede conferma prima di procedere) - - - - - - copia ricorsivamente una directory - - - - - - Esempi: - - &prompt.user; cp filename1 filename2 - - Si hanno due copie del file, ognuna con un identico contenuto. - Questi file sono completamente indipendenti tra loro e possono essere - editati e modificati entrambi quando necessario. Ciascuno di essi ha il - proprio inode, i propri blocchi di dati e il proprio elemento nella - tabella di directory. - - - - mv - sposta un file - - Il comando &man.mv.1; rinomina (sposta) un file. - - Sintassi - - mv [opzioni] - vecchio_file nuovo_file - - Opzioni generali - - - - - - - - - - interattivo (chiede conferma prima di procedere) - - - - - - non chiede la conferma quando si sovrascrive un file - esistente (ignora ) - - - - - - Esempi: - - &prompt.user; mv vecchio_file nuovo_file - - Il file nuovo_file - sostituisce - vecchio_file. - In realtà tutto quello che è stato fatto è aver - aggiornato l'elemento della tabella di directory per attribuire al file - il nuovo nome. Il contenuto del file rimane come era prima della - rinominazione. - - - - rm - elimina un file - - Il comando &man.rm.1; elimina un file. - - Sintassi - - rm [opzioni] - filename - - Opzioni generali - - - - - - - - - - interattivo (chiede conferma prima di procedere) - - - - - - rimuove una directory ricorsivamente, rimuovendo prima i file - e le directory sottostanti - - - - - - non chiede conferma prima di procedere - (ignora ) - - - - - - Esempi: - - &prompt.user; rm filename - - Visualizzando il contento della directory si vedrà che quel - file non esiste più. In realtà tutto quello che è - stato fatto è aver rimosso l'elemento dalla tabella di directory - e marcato l'inode come non usato. Il contenuto del file - è ancora sul disco, ma ora il sistema non ha più modo di - identificare quei blocchi di dati con il nome del file eliminato. Non - c'è un certo comando per - riprendere un file che è - stato eliminato in questo modo. Per questa ragione molti utenti alle - prime armi effettuano un alias del comando di eliminazione in - rm -i dove l'opzione chiede di - confermare prima di rimuovere il file. Simili alias sono generalmente - messi nel file .cshrc per la shell C (vedere il - Capitolo 5). - - - - Permessi dei file - - Ciascun file e directory ha permessi che stabiliscono chi può - leggerlo, scriverlo e/o - eseguirlo. Per scoprire i permessi assegnati a un - file, può essere usato il comando &man.ls.1; con l'opzione - . Quando si ha la necessità di conoscere il - gruppo per il quale i permessi sono stati assegnati si può usare - l'opzione insieme a ls -l - (solamente BSD). - - Quando si usa il comando ls -lg su un file - (ls -l su SysV) l'output sarà mostrato come - il seguente: - - -rwxr-x--- user Unixgroup size Month nn hh:mm filename - - La zona dedicata ai caratteri e trattini - (-rwxr-x---) è la zona che mostra il tipo di - file e i permessi del file, come spiegato nella precedente sezione. - Quindi la stringa di permessi dell'esempio, - -rwxr-x---, permette al proprietario - user del file di leggerlo, modificarlo ed - eseguirlo; gli utenti del gruppo Unixgroup del - file possono leggerlo ed eseguirlo; gli altri - utenti del sistema non possono accedere in alcun modo al file. - - - - chmod - cambio dei permessi del file - - Il comando per cambiare i permessi ad un elemento (file, directory, - ecc.) è &man.chmod.1; (cambio dei modi). La sintassi richiede - l'uso del comando con tre cifre (rappresentanti i permessi del - proprietario (u), i permessi - del gruppo (g) e i permessi - degli altri utenti (o)) - seguite da un argomento (che può essere un nome di un file o una - lista di file e directory). Oppure può essere usato con una - rappresentazione simbolica dei permessi, indicando a quale utenza questi - vanno applicati. - - Ogni tipo di permesso è rappresentato dal proprio numero - equivalente: - - lettura=4, scrittura=2, esecuzione=1 - - o da singoli caratteri: - - lettura=r, scrittura=w, esecuzione=x - - Il permesso 4 o r - specifica il permesso di lettura. Se i permessi - desiderati sono lettura e scrittura, il 4 (rappresentante la lettura) e - il 2 (rappresentante la scrittura) sono addizionati per ottenere il - permesso 6. Quindi, un permesso settato a 6 vorrà concedere un - permesso di lettura e di scrittura. - - Alternativamente si può usare una notazione simbolica che - usa un carattere rappresentativo per l'utenza a cui ci si riferisce, uno - per il permesso e uno per l'operazione, dove l'operazione può - essere: - - - - - - - - + - - aggiunge permessi - - - - - - - rimuove permessi - - - - = - - setta permessi - - - - - - Quindi per settare i permessi di lettura e di scrittura per il - proprietario del file si usa nella notazione simbolica - u=rw. - - Sintassi - - - - - - - - chmod nnn - [lista argomenti] - - modalità numerica - - - - chmod [chi] - op - [perm] - [lista argomenti] - - modalità simbolica - - - - - - dove nnn sono i tre numeri rappresentanti - i permessi del proprietario, del - gruppo e degli altri utenti; - chi può essere - u,g,o oppure a (tutti) e - perm può essere - r,w,x. Nella notazione simbolica si può - separare la specifica dei permessi con una virgola, come mostrato - nell'esempio qui sotto. - - Opzioni generali - - - - - - - - - - forza (nessun messaggio di errore viene generato se la - modifica non ha avuto successo) - - - - - - discesa ricorsiva attraverso la struttura delle directory - e cambio dei modi - - - - - - Esempi: - - Se i permessi desiderati per il file1 sono: - proprietario: lettura, scrittura ed esecuzione; - gruppo: lettura ed esecuzione; - altri: lettura ed esecuzione; il comando da usare - è: - - chmod 755 file1 oppure - chmod u=rwx,go=rx file1 - - - Quando si assegnano i permessi a un file per l'utenza - gruppo e per l'utenza altri - è necessario che il minimo permesso di esecuzione (inteso come - permesso di accesso) per la directory nella quale il file è - posizionato sia abilitato. Un semplice modo per far questo è - posizionarsi nella directory nella quale i permessi devo essere - garantiti e digitare: - - chmod 711 . oppure - chmod u=rw,+x . oppure - chmod u=rwx,go=x . - - dove il punto (.) indica la - directory corrente. - - - - - chown - cambio del proprietario del file - - Il proprietario di un file può essere cambiato con il comando - &man.chown.8;. Su molte versioni Unix questo può essere - realizzato solo dal super-user, ad esempio, un utente normale non - può attribuire i suoi file ad altri proprietari. &man.chown.8; - è usato come qui sotto, dove &prompt.root; rappresenta il prompt - di shell per il super-user. - - Sintassi - - - - - - - - chown [opzioni] - utente[:gruppo] - file - - (SVR4) - - - - chown [opzioni] - utente[.gruppo] - file - - (BSD) - - - - - - Opzioni generali - - - - - - - - - - discende ricorsivamente attraverso la struttura della - directory - - - - - - forza, non riporta errori - - - - - - Esempi: - - &prompt.root; chown nuovo_proprietario file - - - - chgrp - cambio del gruppo del file - - Con il comando &man.chgrp.1; tutti possono cambiare il gruppo dei - propri file in un altro gruppo di appartenenza. - - Sintassi - - chgrp [opzioni] - gruppo file - - Opzioni generali - - - - - - - - - - discende ricorsivamente attraverso la struttura della - directory - - - - - - forza, non riporta errori - - - - - - Esempi: - - &prompt.user; chgrp nuovo_gruppo file - -
- - - Comandi di visualizzazione - - Ci sono alcuni comandi che si possono usare per - visualizzare o esaminare un - file. Alcuni di questi sono editor che verranno trattati più - avanti. Qui si illustreranno alcuni comandi normalmente usati per - visualizzare un file. - - - Comandi di visualizzazione - - - - - - - Comando/Sintassi - - Cosa fa - - - - - - echo - [stringa] - - riporta in standard ouptut una stringa di testo - - - - cat [opzioni] - file - - concatena (lista) un file - - - - more (o less o - pg) - [opzioni] - file - - visualizzazione paginata di un file di testo - - - - head [-numero] - file - - visualizza le prime 10 (o -numero) - linee di un file - - - - tail [opzioni] - file - - visualizza le ultime linee (o parte) di un file - - - -
- - - echo - mostra un'espressione - - Il comando &man.echo.1; viene utilizzato per ripetere l'argomento - assegnato al comando nel dispositivo standard di uscita. Normalmente - l'argomento termina con un carattere di alimentazione di linea, ma si - può specificare un'opzione per impedirlo. - - Sintassi - - echo [stringa] - - Opzioni generali - - - - - - - - - - non stampa new-line (BSD, shell built-in) - - - - - - non stampa new-line (SVR4) - - - - - - dove n è il codice del - carattere ASCII a 8 bit (SVR4) - - - - - - tab (SVR4) - - - - - - form-feed (emissione carta) (SVR4) - - - - - - new-line (SVR4) - - - - - - tab verticale (SVR4) - - - - - - Esempi: - - &prompt.user; echo Hello Class - - oppure - - &prompt.user; echo "Hello Class" - - Per impedire il carattere di fine linea: - - &prompt.user; echo -n Hello Class - - oppure - - &prompt.user; echo "Hello Class \c" - - dove il modo utilizzato nell'ultimo esempio dipende dal comando - &man.echo.1; usato. - - L'opzione deve essere - interna a un paio di caratteri di quoting singoli o doppi, con o senza - altri caratteri di stringa. - - - - cat - concatena un file - - Il comando di concatenazione &man.cat.1; visualizza il contenuto di - un file. - - Sintassi - - cat [opzioni] - [file] - - Opzioni generali - - - - - - - - - - precede ogni linea con un numero - - - - - - visualizza i caratteri non stampabili, eccetto tab, - new-line e form-feed - - - - - - visualizza $ alla fine di ogni linea (prima di new-line) - (quando usato con l'opzione ) - - - - - - Esempi: - - &prompt.user; cat filename - - Si possono specificare una serie di file su linea di comando e - &man.cat.1; li concatenerà ciascuno a turno, seguendo lo stesso - ordine di immissione, esempio: - - &prompt.user; cat file1 file2 file3 - - - - more, less e pg - visualizzazione paginata di un file - - &man.more.1;, &man.less.1; e pg permettono di - visualizzare il contenuto di un file una schermata (pagina) alla volta. - Inoltre permettono di ritornare sulla precedente pagina, di cercare - parole, ecc. Questi comandi potrebbero non essere disponibili sul - proprio sistema Unix. - - Sintassi - - more [opzioni] - [+/schema] - [filename] - - less [opzioni] - [+/schema] - [filename] - - pg [opzioni] - [+/schema] - [filename] - - Opzioni - - - - - - - - - - - - more - - less - - pg - - Azione - - - - - - - - - - - - pulisce lo schermo prima di visualizzare - - - - - - - - - - ignora differenza tra maiuscole e minuscole - - - - - - default - - default - - non esce alla fine dell'input, ma si mette in attesa di - comandi - - - - - - - - - - # (numero di) linee di avanzamento - - - - - - - - - - ricerca lo schema (pattern) - - - - - - Controlli interni - - - - - - - - more - - visualizza (una schermata alla volta) il file - specificato - - - - <spazio> - - per vedere la schermata successiva - - - - <return>o<CR> - - per avanzare di una linea - - - - q - - per uscire - - - - h - - help - - - - b - - torna alla schermata precedente - - - - /parola - - cerca parola nel resto del - file - - - - - - vedere le pagine man per altre - opzioni - - - - less - - simile a &man.more.1;, vedere le - pagine man per le opzioni - - - - pg - - in SVR4 equivale a &man.more.1; (pagina) - - - - - - - - head - mostra l'inizio di un file - - Il comando &man.head.1; visualizza l'inizio di un file. - - Sintassi - - head [opzioni] - file - - Opzioni generali - - - - - - - - - - numero di linee da visualizzare partendo dall'inizio del - file - - - - - - come sopra - - - - - - Esempi: - - Di default &man.head.1; mostra le prime 10 linee del file. Si - possono visualizzare più (o meno) linee con l'opzione - o - , ad esempio, per - visualizzare le prime 40 linee: - - &prompt.user; head -40 filename - - oppure - - &prompt.user; head -n 40 filename - - - - tail - mostra la fine di un file - - Il comando &man.tail.1; visualizza la fine di un file. - - Sintassi - - tail [opzioni] - file - - Opzioni generali - - - - - - - - - - numero di linee da visualizzare, partendo dalla fine del - file - - - - - - Esempi: - - Di default &man.tail.1; mostra le ultime 10 linee del file, ma si - può specificare un numero differente di linee o di byte, o un - differente punto di inizio all'interno del file. Per visualizzare le - ultime 30 linee di un file, usare l'opzione - : - - &prompt.user; tail -30 filename - -
-
Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/getting-started/chapter.xml ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/sgml \ No newline at end of property Index: head/it_IT.ISO8859-15/books/unix-introduction/system-resource/chapter.xml =================================================================== --- head/it_IT.ISO8859-15/books/unix-introduction/system-resource/chapter.xml (revision 52098) +++ head/it_IT.ISO8859-15/books/unix-introduction/system-resource/chapter.xml (nonexistent) @@ -1,1191 +0,0 @@ - - - - Risorse di sistema e stampa - - - Risorse di sistema - - Comandi per gestire le risorse di sistema. - - - Comandi per le risorse di sistema - - - - - - - Comando/Sintassi - - Cosa fa - - - - - - chsh (passwd -e/-s) - username - login_shell - - cambia la shell di login dell'utente (spesso solo attraverso - il super-user) - - - - date - [opzioni] - - visualizza data e ora corrente - - - - df [opzioni] - [risorsa] - - riporta una sintesi dei blocchi del disco e degli inode - liberi e usati - - - - du [opzioni] - [directory o file] - - riporta la quantità di spazio di disco usato - - - - hostname/uname - - visualizza o setta (solamente super-user) il nome della - macchina in uso - - - - kill [opzioni] - [-SEGNALE] - [pid#] - [%job] - - manda un segnale al processo specificato dal numero di - processo id (pid#) o dal numero di - controllo del job (%n). Il segnale di - default termina il processo - - - - man [opzioni] - comando - - visualizza la pagina (man) del manuale - relativa al comando specificato - - - - passwd - [opzioni] - - setta o modifica la propria password - - - - ps - [opzioni] - - mostra lo stato dei processi attivi - - - - script - file - - salva tutto ciò che appare sullo schermo in un file - fino a quando viene eseguito il comando - exit - - - - stty - [opzioni] - - setta o visualizza le opzioni del terminale di - controllo - - - - whereis [opzioni] - comando - - riporta le posizioni del file binario, del sorgente e della - pagina man relative al comando specificato - - - - which - comando - - riporta il percorso (path) del comando specificato o l'alias - di shell in uso - - - - who oppure w - - riporta gli utenti loggati e i loro processi - in esecuzione - - - -
- - - df - riepiloga i blocchi del disco e lo spazio usato - - Il comando &man.df.1; è usato per riportare il numero di - blocchi del disco e di inode liberi e usati per ogni file system. - Il formato dell'output e le valide opzioni sono molto specifiche dal - sistema operativo e dalla versione del programma in uso. - - Sintassi - - df [opzioni] - [risorsa] - - Opzioni generali - - - - - - - - - - solo il file system locale (SVR4) - - - - - - riporta in kilobyte (SVR4) - - - - - - Esempi: - - {Unix prompt 1} df -Filesystem kbytes used avail capacity Mounted on - -/dev/sd0a 20895 19224 0 102% / -/dev/sd0h 319055 131293 155857 46% /usr -/dev/sd1g 637726 348809 225145 61% /usr/local -/dev/sd1a 240111 165489 50611 77% /home/guardian -peri:/usr/local/backup - 1952573 976558 780758 56% /usr/local/backup -peri:/home/peri 726884 391189 263007 60% /home/peri -peri:/usr/spool/mail - 192383 1081 172064 1% /var/spool/mail -peri:/acs/peri/2 - 723934 521604 129937 80% /acs/peri/2 - - - - du - mostra lo spazio del disco usato - - Il comando &man.du.1; riporta la quantità di spazio di disco - usato per i file o per le directory specificate. - - Sintassi - - du [opzioni] - [directory o file] - - Opzioni generali - - - - - - - - - - mostra l'uso del disco per ogni file, non solo per le - sotto-directory - - - - - - mostra solo la somma totale - - - - - - riporta in kilobyte (SVR4) - - - - - - Esempi: - - {Unix prompt 3} du - 1 ./.elm - 1 ./Mail - 1 ./News -20 ./uc -86 . - - {Unix prompt 4} du -a uc -7 uc/Unixgrep.txt -5 uc/editors.txt -1 uc/.emacs -1 uc/.exrc -4 uc/telnet.ftp -1 uc/uniq.tee.txt -20 uc - - - - ps - mostra lo stato dei processi attivi - - Il comando &man.ps.1; è usato per mostrare i processi - correntemente eseguiti sul sistema. Il formato dell'output e le - valide opzioni dipendono molto dal sistema operativo e dalla versione - del programma in uso. - - Sintassi - - ps [opzioni] - - Opzioni generali - - - - - - - - - - BSD - - SVR4 - - - - - - - - - - - - tutti i processi di tutti gli utenti - - - - - - - - ambiente di esecuzione - - - - - - - - processi del gruppo amministrativo come - well - - - - - - - - formato lungo - - - - - - - - relazione specifica di un utente - - - - - - - - anche i processi non eseguiti da terminali - - - - - - - - lista completa - - - - - - - - riporta i primi 132 caratteri per linea - - - - - - - Poichè il comando &man.ps.1; è molto dipendente dal - sistema, si raccomanda di consultare le pagine - man del proprio sistema per i dettagli delle opzioni e per - l'interpretazione dell'output di &man.ps.1;. - - - Esempi: - - {Unix prompt 5} ps -PID TT STAT TIME COMMAND -15549 p0 IW 0:00 -tcsh (tcsh) -15588 p0 IW 0:00 man nice -15594 p0 IW 0:00 sh -c less /tmp/man15588 -15595 p0 IW 0:00 less /tmp/man15588 -15486 p1 S 0:00 -tcsh (tcsh) -15599 p1 T 0:00 emacs Unixgrep.txt -15600 p1 R 0:00 ps - - - - kill - termina un processo - - Il comando &man.kill.1; manda un segnale a un processo, - generalmente per terminarlo. - - Sintassi - - kill [-SEGNALE] - id-processo - - Opzioni generali - - - - - - - - - - visualizza i segnali disponibili per kill - - - - - - Esempi: - - {Unix prompt 9} kill -l -HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM URG STOP -TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALRM PROF WINCH LOST USR1 USR2 - - Il segnale , anche specificato con - (a causa della nona posizione assunta nella lista - precedente), è il maggior segnale comunemente usato con - &man.kill.1;. A differenza di altri segnali, questo, una volta captato, - non può essere ignorato dal programma. - - {Unix prompt 10} kill -9 15599 -[1] + Killed emacs Unixgrep.txt - - - - who - mostra gli utenti attuali - - Il comando &man.who.1; riporta chi è correntemente - loggato nel sistema. - - Sintassi - - who [am i] - - Esempi: - - beauty condron> who -wmtell ttyp1 Apr 21 20:15 (apple.acs.ohio-s) -fbwalk ttyp2 Apr 21 23:21 (worf.acs.ohio-st) -stwang ttyp3 Apr 21 23:22 (127.99.25.8) -david ttyp4 Apr 21 22:27 (slip1-61.acs.ohi) -tgardner ttyp5 Apr 21 23:07 (picard.acs.ohio-) -awallace ttyp6 Apr 21 23:00 (ts31-4.homenet.o) -gtl27 ttyp7 Apr 21 23:24 (data.acs.ohio-st) -ccchang ttyp8 Apr 21 23:32 (slip3-10.acs.ohi) -condron ttypc Apr 21 23:38 (lcondron-mac.acs) -dgildman ttype Apr 21 22:30 (slip3-36.acs.ohi) -fcbetz ttyq2 Apr 21 21:12 (ts24-10.homenet.) - - beauty condron> who am i -beauty!condron ttypc Apr 21 23:38 (lcondron-mac.acs) - - - - whereis - riporta le locazioni del programma - - Il comando &man.whereis.1; riporta le locazioni del file - sorgente, di quello binario e del file delle pagine man associate al - comando. - - Sintassi - - whereis [opzioni] - comando - - Opzioni generali - - - - - - - - - - riporta solamente i file binari - - - - - - riporta solamente la sezione manuale - - - - - - riporta solamente i file sorgenti - - - - - - Esempi: - - brigadier: condron [69]> whereis Mail -Mail: /usr/ucb/Mail /usr/lib/Mail.help /usr/lib/Mail.rc /usr/man/man1/Mail.1 - - brigadier: condron [70]> whereis -b Mail -Mail: /usr/ucb/Mail /usr/lib/Mail.help /usr/lib/Mail.rc - - brigadier: condron [71]> whereis -m Mail -Mail: /usr/man/man1/Mail.1 - - - - which - riporta il comando trovato - - Il comando &man.which.1; riporta il nome del file che sarà - eseguito quando il comando specificato viene invocato. Questo - può essere un path name assoluto o il primo alias trovato nel - proprio path. - - Sintassi - - which comando - - Esempi: - - brigadier: condron [73]> which Mail -/usr/ucb/Mail - - - - hostname/uname - nome della macchina - - Il comando &man.hostname.1; (uname -u su SysV) - riporta il nome host della macchina nella quale l'utente è - loggato, esempio: - - brigadier: condron [91]> hostname -brigadier - - &man.uname.1; ha opzioni aggiuntive per visualizzare informazioni - circa l'hardware del sistema e la versione del software. - - - - script - memorizza la propria schermata di I/O - - Il comando &man.script.1; crea una documentazione della propria - sessione di I/O. Usando il comando &man.script.1; si possono catturare - tutti i dati trasmessi da e per il proprio terminale visuale fino - all'uscita (con exit) del programma stesso. - Può essere utile durante un processo di debugging, per - documentare le azioni che si stanno sperimentando o per avere una - copia stampabile per una attenta lettura successiva. - - Sintassi - - script [-a] - [file] <...> exit - - Opzioni generali - - - - - - - - - - appende l'output al file - - - - - - Di default, typescript è il nome del - file usato dal comando &man.script.1;. - - Ci si deve ricordare di digitare exit per - terminare la propria sessione script e chiudere così il file - typescript. - - Esempi: - - beauty condron> script -Script started, file is typescript - - beauty condron> ps -PID TT STAT TIME COMMAND -23323 p8 S 0:00 -h -i (tcsh) -23327 p8 R 0:00 ps -18706 pa S 0:00 -tcsh (tcsh) -23315 pa T 0:00 emacs -23321 pa S 0:00 script -23322 pa S 0:00 script -3400 pb I 0:00 -tcsh (tcsh) - - beauty condron> kill -9 23315 - - beauty condron> date -Mon Apr 22 22:29:44 EDT 1996 - - beauty condron> exit -exit -Script done, file is typescript -[1] + Killed emacs - - beauty condron> cat typescript -Script started on Mon Apr 22 22:28:36 1996 - -beauty condron>ps -PID TT STAT TIME COMMAND -23323 p8 S 0:00 -h -i (tcsh) -23327 p8 R 0:00 ps -18706 pa S 0:00 -tcsh (tcsh) -23315 pa T 0:00 emacs -23321 pa S 0:00 script -23322 pa S 0:00 script -3400 pb I 0:00 -tcsh (tcsh) - -beauty condron>kill -9 23315 - -beauty condron>date -Mon Apr 22 22:29:44 EDT 1996 - -beauty condron>exit -exit - -script done on Mon Apr 22 22:30:02 1996 - - beauty condron> - - - - date - data e ora corrente - - Il comando &man.date.1; mostra la data e l'ora corrente. - Un super-user può modificare la data e l'ora. - - Sintassi - - date [opzioni] - [+formato] - - Opzioni generali - - - - - - - - - - usa Universal Time (o Greenwich Mean Time) - - - - - - specifica il formato di output - - - - - - abbreviazione giorni, da Sabato a Domenica - - - - - - abbreviazione mesi, da Gennaio a Dicembre - - - - - - giorno dell'anno, da 001 a 366 - - - - - - new-line - - - - - - tab - - - - - - ultime due cifre dell'anno, da 00 a 99 - - - - - - formato data MM/DD/YY - - - - - - ora, da 00 a 23 - - - - - - minuti, da 00 a 59 - - - - - - secondi, da 00 a 59 - - - - - - formato ora HH:MM:SS - - - - - - Esempi: - - beauty condron> date -Mon Jun 10 09:01:05 EDT 1996 - - beauty condron> date -u -Mon Jun 10 13:01:33 GMT 1996 - - beauty condron> date +%a%t%D -Mon 06/10/96 - - beauty condron> date '+%y:%j' -96:162 - -
- - - Comandi di stampa - - - Comandi di stampa - - - - - - - Comando/Sintassi - - Cosa fa - - - - - - lpq (lpstat) - [opzioni] - - mostra lo stato dei job (lavori) di stampa - - - - lpr (lp) - [opzioni] - file - - stampa con una stampante specifica - - - - lprm (cancel) - [opzioni] - - rimuove un job di stampa dalla coda di stampa - - - - pr [opzioni] - [file] - - filtra il file e lo stampa sul terminale - - - -
- - I comandi di stampa permettono di stampare file sullo standard output - (&man.pr.1;) o attraverso una stampante (&man.lp.1; e &man.lpr.1;) fino a - filtrare l'output. I comandi di stampa di BSD e - SysV usano diversi nomi e diverse opzioni per - produrre lo stesso risultato: &man.lpr.1;, &man.lprm.1; e &man.lpq.1; - contro &man.lp.1;, cancel e lpstat - rispettivamente per BSD e SysV, sottopongono, cancellano e verificano lo - stato di un job (lavoro) di stampa. - - - lp/lpr - sottopone un job di stampa - - Il comando &man.lp.1; o &man.lpr.1; sottopone il file specificato o - lo standard input al demone di stampa per essere stampato. Ad ogni job - viene assegnato un unico id di richiesta che può essere usato - in seguito per verificare o cancellare il job mentre è nella - coda di stampa. - - Sintassi - - lp [opzioni] - filename - - lpr [opzioni] - filename - - Opzioni generali - - - - - - - - - - lp - - lpr - - funzione - - - - - - - - - - numero di copie - - - - - - - - titolo del job - - - - - - - - nome della stampante - - - - - - (default) - - copia il file in coda prima di stamparlo - - - - (default) - - - - non copia il file in coda prima di stamparlo - - - - - - - - opzioni addizionali, esempio - - - - - - - I file che iniziano con i simboli %! sono - considerati file contenenti comandi PostScript. - - Esempi: - - Per stampare il file ssh.ps: - - &prompt.user; lp ssh.ps -request id is lp-153 (1 file(s)) - - Questo sottopone il job nella coda della stampante di default, - lp, con l'id di richiesta - lp-153. - - - - lpstat/lpq - verifica lo stato di un job di stampa - - Si può verificare lo stato del proprio job di stampa con il - comando lpstat o &man.lpq.1;. - - Sintassi - - lpstat - [opzioni] - - lpq [opzioni] - [job#] - [username] - - Opzioni generali - - - - - - - - - - - - lpstat - - lpq - - funzione - - - - - - - - (lp di default) - - lista dei sistemi destinazione di default - - - - - - - - riassume lo stato di stampa - - - - - - - - stampa tutte le informazioni dello stato di stampa - - - - - - - - lista dell'utente specificato - - - - - - - - elenca le stampanti conosciute dal sistema - - - - - - - - stampa lo stato della stampante specificata - - - - - - Esempi: - - &prompt.user; lpstat -lp-153 frank 208068 Apr 29 15:14 on lp - - - - cancel/lprm - cancella un job di stampa - - Alcuni utenti possono cancellare solamente i loro job di - stampa. - - Sintassi - - cancel [id-richiesta] - [stampante] - - lprm [opzioni] - [job#] - [username] - - Opzioni generali - - - - - - - - - - - - cancel - - lprm - - funzione - - - - - - - - - - specifica la stampante - - - - - - - - tutti i job dell'utente - - - - - - - - lista dell'utente - - - - - - Esempi: - - Per cancellare il job sottomesso in precedenza: - - &prompt.user; cancel lp-153 - - - - pr - prepara file per la stampa - - Il comando &man.pr.1; stampa l'intestazione e le informazioni - traccia che circoscrivono il file formattato. Si può specificare - il numero di pagine da stampare, le linee per pagina, le colonne, le - linee bianche, si può specificare la larghezza di pagina, - l'intestazione e le informazioni traccia e in che modo trattare il - carattere tab. - - Sintassi - - pr [opzioni] - file - - Opzioni generali - - - - - - - - - - inizia a stampare al numero di pagina specificato - - - - - - numero di colonne - - - - - - modifica l'opzione -colonne per - riempire le colonne nell'ordine round-robin - - - - - - doppio spazio - - - - - - spazio tab - - - - - - intestazione per ogni pagina - - - - - - linee per pagina - - - - - - non stampa l'intestazione e la traccia per ogni - pagina - - - - - - larghezza di pagina - - - - - - Esempi: - - Il file contenente la lista di libri di P. G. Wodehouse Lord - Emsworth dovrebbe essere stampato con 14 linee per pagina (incluse 5 di - intestazione e 5 (vuote) linee traccia), dove l'opzione - specifica in che modo convertire i tab: - - &prompt.user; pr -l 14 -e42 wodehouse - - - - - -Apr 29 11:11 1996 wodehouse_emsworth_books Page 1 - - - - -Something Fresh [1915] Uncle Dynamite [1948] -Leave it to Psmith [1923] Pigs Have Wings [1952] -Summer Lightning [1929] Cocktail Time [1958] -Heavy Weather [1933] Service with a Smile [1961] - - - - - -Apr 29 11:11 1996 wodehouse_emsworth_books Page 2 - - - - -Blandings Castle and Elsewhere [1935] Galahad at Blandings [1965] -Uncle Fred in the Springtime [1939] A Pelican at Blandings [1969] -Full Moon [1947] Sunset at Blandings [1977] - -
-
Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/system-resource/chapter.xml ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/sgml \ No newline at end of property Index: head/it_IT.ISO8859-15/books/unix-introduction/Makefile =================================================================== --- head/it_IT.ISO8859-15/books/unix-introduction/Makefile (revision 52098) +++ head/it_IT.ISO8859-15/books/unix-introduction/Makefile (nonexistent) @@ -1,43 +0,0 @@ -# -# $FreeBSD$ -# -# Crea l'Introduzione a Unix. -# - -MAINTAINER= ale@FreeBSD.org - -DOC?= book - -FORMATS?= html-split - -INSTALL_COMPRESSED?= gz -INSTALL_ONLY_COMPRESSED?= - -# -# SRCS lista i singoli files XML che compongono il documento. Modifiche -# a qualunque di questi files obbligano la ricreazione -# - -# Contenuto XML -SRCS = book.xml -SRCS+= bibliography/chapter.xml -SRCS+= command-summary/chapter.xml -SRCS+= commands/chapter.xml -SRCS+= editors/chapter.xml -SRCS+= getting-started/chapter.xml -SRCS+= glossary/chapter.xml -SRCS+= history/chapter.xml -SRCS+= preface/chapter.xml -SRCS+= shell-programming/chapter.xml -SRCS+= shells/chapter.xml -SRCS+= special-features/chapter.xml -SRCS+= structure/chapter.xml -SRCS+= system-resource/chapter.xml -SRCS+= text-processing/chapter.xml - -# Entities -SRCS+= chapters.ent - -DOC_PREFIX?= ${.CURDIR}/../../.. - -.include "${DOC_PREFIX}/share/mk/doc.project.mk" Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/Makefile ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Index: head/it_IT.ISO8859-15/books/Makefile =================================================================== --- head/it_IT.ISO8859-15/books/Makefile (revision 52098) +++ head/it_IT.ISO8859-15/books/Makefile (revision 52099) @@ -1,10 +1,9 @@ # $FreeBSD$ SUBDIR = handbook -SUBDIR+= unix-introduction ROOT_SYMLINKS= handbook DOC_PREFIX?= ${.CURDIR}/../.. .include "${DOC_PREFIX}/share/mk/doc.project.mk"