aboutsummaryrefslogtreecommitdiff
path: root/it_IT.ISO8859-15
diff options
context:
space:
mode:
authorEitan Adler <eadler@FreeBSD.org>2018-08-11 01:23:04 +0000
committerEitan Adler <eadler@FreeBSD.org>2018-08-11 01:23:04 +0000
commit7820081803d64f03e525b5c507176a41c64d3c48 (patch)
treea853a09076bcd918451ac926564fff824fb3e063 /it_IT.ISO8859-15
parent870a8a1d4da10d876bf11034d23bc16cb3d26982 (diff)
downloaddoc-7820081803d64f03e525b5c507176a41c64d3c48.tar.gz
doc-7820081803d64f03e525b5c507176a41c64d3c48.zip
doc: remove much of the Italian translations
The Italian translation has not been updated since r31375 on 2008-01-27. Future commits were either mechanical or global. - The committers guide still references CVS - The handbook still references sysinstall - Both still reference GNATS In general the documentation is out of date sufficient and not being updated. The hard work of the previous contributors is much appreciated. Leave the handbook as there is interest in continuing the project.
Notes
Notes: svn path=/head/; revision=52099
Diffstat (limited to 'it_IT.ISO8859-15')
-rw-r--r--it_IT.ISO8859-15/Makefile1
-rw-r--r--it_IT.ISO8859-15/articles/Makefile12
-rw-r--r--it_IT.ISO8859-15/articles/Makefile.inc5
-rw-r--r--it_IT.ISO8859-15/articles/committers-guide/Makefile21
-rw-r--r--it_IT.ISO8859-15/articles/committers-guide/article.xml1818
-rw-r--r--it_IT.ISO8859-15/articles/explaining-bsd/Makefile19
-rw-r--r--it_IT.ISO8859-15/articles/explaining-bsd/article.xml615
-rw-r--r--it_IT.ISO8859-15/articles/filtering-bridges/Makefile18
-rw-r--r--it_IT.ISO8859-15/articles/filtering-bridges/article.xml429
-rw-r--r--it_IT.ISO8859-15/articles/new-users/Makefile18
-rw-r--r--it_IT.ISO8859-15/articles/new-users/article.xml1073
-rw-r--r--it_IT.ISO8859-15/articles/vm-design/Makefile22
-rw-r--r--it_IT.ISO8859-15/articles/vm-design/article.xml1036
-rw-r--r--it_IT.ISO8859-15/books/Makefile1
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/Makefile43
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/bibliography/chapter.xml179
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/book.xml105
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/chapters.ent28
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/command-summary/chapter.xml671
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/commands/chapter.xml3021
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/editors/chapter.xml1277
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/getting-started/chapter.xml2211
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/glossary/chapter.xml558
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/history/chapter.xml103
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/preface/chapter.xml97
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/shell-programming/chapter.xml1692
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/shells/chapter.xml1157
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/special-features/chapter.xml554
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/structure/chapter.xml165
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/system-resource/chapter.xml1191
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/text-processing/chapter.xml1114
31 files changed, 0 insertions, 19254 deletions
diff --git a/it_IT.ISO8859-15/Makefile b/it_IT.ISO8859-15/Makefile
index bff03f518f..f6e7373eab 100644
--- a/it_IT.ISO8859-15/Makefile
+++ b/it_IT.ISO8859-15/Makefile
@@ -1,6 +1,5 @@
# $FreeBSD$
-SUBDIR = articles
SUBDIR+= books
COMPAT_SYMLINK = it
diff --git a/it_IT.ISO8859-15/articles/Makefile b/it_IT.ISO8859-15/articles/Makefile
deleted file mode 100644
index ef1a5ebb3e..0000000000
--- a/it_IT.ISO8859-15/articles/Makefile
+++ /dev/null
@@ -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"
diff --git a/it_IT.ISO8859-15/articles/Makefile.inc b/it_IT.ISO8859-15/articles/Makefile.inc
deleted file mode 100644
index 0ff2b6dcad..0000000000
--- a/it_IT.ISO8859-15/articles/Makefile.inc
+++ /dev/null
@@ -1,5 +0,0 @@
-#
-# $FreeBSD$
-#
-
-DESTDIR?= ${DOCDIR}/it_IT.ISO8859-15/articles/${.CURDIR:T}
diff --git a/it_IT.ISO8859-15/articles/committers-guide/Makefile b/it_IT.ISO8859-15/articles/committers-guide/Makefile
deleted file mode 100644
index 692b28fedb..0000000000
--- a/it_IT.ISO8859-15/articles/committers-guide/Makefile
+++ /dev/null
@@ -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"
diff --git a/it_IT.ISO8859-15/articles/committers-guide/article.xml b/it_IT.ISO8859-15/articles/committers-guide/article.xml
deleted file mode 100644
index c3806a24fb..0000000000
--- a/it_IT.ISO8859-15/articles/committers-guide/article.xml
+++ /dev/null
@@ -1,1818 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-15"?>
-<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
- "http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
-<!--
- The FreeBSD Italian Documentation Project
-
- $FreeBSD$
- Original revision: 1.219
--->
-<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="it">
- <info><title>Guida del Committer</title>
-
-
- <authorgroup>
- <author><personname><surname>The FreeBSD Italian Documentation Project</surname></personname></author>
- </authorgroup>
-
- <copyright>
- <year>1999</year>
-
- <year>2000</year>
-
- <year>2001</year>
-
- <year>2002</year>
-
- <year>2003</year>
-
- <year>2004</year>
-
- <holder>The FreeBSD Italian Documentation Project</holder>
- </copyright>
-
- <legalnotice xml:id="trademarks" role="trademarks">
- &tm-attrib.freebsd;
- &tm-attrib.cvsup;
- &tm-attrib.ibm;
- &tm-attrib.intel;
- &tm-attrib.sparc;
- &tm-attrib.general;
- </legalnotice>
-
- <pubdate>$FreeBSD$</pubdate>
-
- <releaseinfo>$FreeBSD$</releaseinfo>
-
- <abstract>
- <para>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.</para>
-
- &trans.it.alex;
- </abstract>
- </info>
-
- <sect1 xml:id="admin">
- <title>Dettagli Amministrativi</title>
-
- <informaltable frame="none" orient="port" pgwide="1">
- <tgroup cols="2">
- <tbody>
- <row>
- <entry><emphasis>Host con il Repository
- Principale</emphasis></entry>
-
- <entry><systemitem class="fqdomainname">ncvs.FreeBSD.org</systemitem></entry>
- </row>
-
- <row>
- <entry><emphasis>Metodi di Accesso</emphasis></entry>
-
- <entry>&man.ssh.1;, solo protocollo 2</entry>
- </row>
-
- <row>
- <entry><emphasis>CVSROOT Principale</emphasis></entry>
-
- <entry><systemitem class="fqdomainname">ncvs.FreeBSD.org</systemitem><literal>:</literal><filename>/home/ncvs</filename>
- (guarda anche la <xref linkend="cvs.operations"/>).</entry>
- </row>
-
- <row>
- <entry><emphasis>&a.cvsadm; Principali</emphasis></entry>
-
- <entry>&a.peter; e &a.markm;, così come &a.joe; e &a.marcus;
- per i <filename>ports/</filename></entry>
- </row>
-
- <row>
- <entry><emphasis>Mailing List</emphasis></entry>
-
- <entry>&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
- <filename>/home/mail/repository-name-developers-archive</filename>
- e
- <filename>/home/mail/repository-name-committers-archive</filename>
- sul cluster di <systemitem class="fqdomainname">FreeBSD.org</systemitem>.)</entry>
- </row>
-
- <row>
- <entry><emphasis>Report mensili del Core Team</emphasis></entry>
- <entry><filename>/home/core/public/monthly-report</filename>
- sul cluster di <systemitem class="fqdomainname">FreeBSD.org</systemitem>.</entry>
- </row>
-
- <row>
- <entry><emphasis>Tag CVS Degni di Nota</emphasis></entry>
-
- <entry><literal>RELENG_4</literal> (4.X-STABLE),
- <literal>RELENG_5</literal> (5.X-STABLE),
- <literal>HEAD</literal> (-CURRENT)</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>È 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 <xref linkend="ssh.guide"/>.</para>
- </sect1>
-
- <sect1 xml:id="committer.types">
- <title>Tipi di Bit di Commit</title>
-
- <para>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.</para>
-
- <informaltable frame="none" pgwide="1">
- <tgroup cols="3">
- <tbody>
- <row>
- <entry><emphasis>Tipo di Committer</emphasis></entry>
-
- <entry><emphasis>Responsabile</emphasis></entry>
-
- <entry><emphasis>Componenti dell'Albero</emphasis></entry>
- </row>
-
- <row>
- <entry>src</entry>
-
- <entry>core@</entry>
-
- <entry>src/, doc/ soggetta ad appropriata revisione</entry>
- </row>
-
- <row>
- <entry>doc</entry>
-
- <entry>doceng@</entry>
-
- <entry>doc/, www/, documentazione src/</entry>
- </row>
-
- <row>
- <entry>ports</entry>
-
- <entry>portmgr@</entry>
-
- <entry>ports/</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>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.</para>
-
- <para>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.</para>
-
- <sect2>
- <title>Regolamento dell'attività del <filename>doc/</filename>
- committer in <filename>src/</filename></title>
-
- <itemizedlist>
- <listitem>
- <para>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.</para>
- </listitem>
-
- <listitem>
- <para>I doc committer possono effettuare commit riguardanti piccole
- modifiche e correzioni ai sorgenti, come correzioni per la
- compilazione, piccole funzionalità, ecc., con un
- <quote>Approved by</quote> di un src committer.</para>
- </listitem>
-
- <listitem>
- <para>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
- <filename>access</filename> ed inizierà il normale periodo
- sotto la guida del mentore, che implica l'aggiunta di
- <quote>Approved by</quote> per un certo periodo.</para>
- </listitem>
-
- <listitem>
- <para><quote>Approved by</quote> può essere usato solamente
- se l'approvazione è di un src committer senza mentore &mdash;
- i committer ancora sotto la guida di un mentore possono fornire al
- più un <quote>Reviewed by</quote> ma non un
- <quote>Approved by</quote>.</para>
- </listitem>
- </itemizedlist>
- </sect2>
- </sect1>
-
- <sect1 xml:id="cvs.operations">
- <title>Operazioni sul CVS</title>
-
- <para>Si assume che tu abbia già familiarità con le operazioni
- di base di CVS.</para>
-
- <para>I &a.cvsadm; sono i <quote>proprietari</quote> 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 <command>cvs import</command> o
- <command>cvs tag</command>, 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&mdash;non solo un'area
- specifica&mdash;puoi contattare i &a.cvsadm;. <emphasis>Non</emphasis>
- contattare i &a.cvsadm; per copie di repository o altre cose che possono
- gestire i team più specifici.</para>
-
- <para>Gli unici che hanno il
- permesso di manipolare direttamente i bit del repository sono i
- <quote>repomeister</quote>. Per questo non ci sono shell di login
- disponibili sulle macchine del repository, tranne che per i
- repomeister.</para>
-
- <note>
- <para>A seconda dell'area interessata del repository CVS, dovresti
- mandare la tua richiesta a uno dei seguenti indirizzi email:</para>
-
- <itemizedlist>
- <listitem>
- <para>ncvs@ - a proposito di <filename>/home/ncvs</filename>, il repository dei
- src</para>
- </listitem>
-
- <listitem>
- <para>pcvs@ - a proposito di <filename>/home/pcvs</filename>, il repository dei
- port</para>
- </listitem>
-
- <listitem>
- <para>dcvs@ - a proposito di <filename>/home/dcvs</filename>, il repository dei
- doc</para>
- </listitem>
-
- <listitem>
- <para>projcvs@ - a proposito di <filename>/home/projcvs</filename>, il repository dei
- progetti di terze parti</para>
- </listitem>
- </itemizedlist>
- </note>
-
- <para>L'albero CVS è attualmente diviso in quattro repository
- differenti, ovvero <literal>doc</literal>, <literal>ports</literal>,
- <literal>projects</literal> e <literal>src</literal>. Questi vengono
- ricomposti sotto un unico <literal>CVSROOT</literal> quando vengono
- distribuiti tramite <application>CVSup</application> per la convenienza
- dei nostri utenti.</para>
-
- <note>
- <para>Nota che il modulo <literal>www</literal> che contiene i sorgenti
- del <link xlink:href="http://www.FreeBSD.org">sito web di FreeBSD</link>
- è contenuto all'interno del repository
- <literal>doc</literal>.</para>
- </note>
-
- <para>I repository CVS sono ospitati sulle macchine repository.
- Attualmente, ognuno dei repository elencati qui sopra risiede sulla stessa
- macchina fisica, <systemitem class="fqdomainname">ncvs.FreeBSD.org</systemitem>, 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.</para>
-
- <table frame="none" xml:id="cvs-repositories-and-hosts">
- <title>Repository CVS, Host e Directory di &os;</title>
-
- <tgroup cols="3">
- <thead>
- <row>
- <entry>Repository</entry>
-
- <entry>Host</entry>
-
- <entry>Directory</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry>doc</entry>
-
- <entry>dcvs.FreeBSD.org</entry>
-
- <entry>/home/dcvs</entry>
- </row>
-
- <row>
- <entry>ports</entry>
-
- <entry>pcvs.FreeBSD.org</entry>
-
- <entry>/home/pcvs</entry>
- </row>
-
- <row>
- <entry>projects</entry>
-
- <entry>projcvs.FreeBSD.org</entry>
-
- <entry>/home/projcvs</entry>
- </row>
-
- <row>
- <entry>src</entry>
-
- <entry>ncvs.FreeBSD.org</entry>
-
- <entry>/home/ncvs</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <para>Le operazioni sul CVS sono fatte da remoto impostando la variabile di
- ambiente <envar>CVSROOT</envar> a <systemitem class="fqdomainname">ncvs.FreeBSD.org</systemitem><literal>:</literal><filename>/home/ncvs</filename>
- e la variabile <envar>CVS_RSH</envar> a <command>ssh</command>, e
- quindi effettuando le appropriate operazioni di check-out/check-in.
- Molti committer definiscono degli alias che si espandono nella corretta
- invocazione di <application>cvs</application> per il repository
- appropriato. Per esempio, un utente di &man.tcsh.1; può aggiungere
- le seguenti righe al suo <filename>.cshrc</filename> per questo
- scopo:</para>
-
- <programlisting>alias dcvs env CVS_RSH=ssh cvs -d <replaceable>user</replaceable>@dcvs.FreeBSD.org:/home/dcvs
-alias pcvs env CVS_RSH=ssh cvs -d <replaceable>user</replaceable>@pcvs.FreeBSD.org:/home/pcvs
-alias projcvs env CVS_RSH=ssh cvs -d <replaceable>user</replaceable>@projcvs.FreeBSD.org:/home/projcvs
-alias scvs env CVS_RSH=ssh cvs -d <replaceable>user</replaceable>@ncvs.FreeBSD.org:/home/ncvs</programlisting>
-
- <para>In questo modo è possibile fare tutte le operazioni di
- CVS localmente ed usare <command>Xcvs
- commit</command> 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 <command>cvs
- import</command>. Guarda come riferimento la pagina man di &man.cvs.1;
- per l'utilizzo.</para>
-
- <note>
- <para>Per favore <emphasis>non</emphasis> usare <command>cvs
- checkout</command> o <command>update</command> 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 <command>cvsup</command> per ottenere i bit del
- repository, ed esegui solamente l'operazione di
- <command>commit</command> sull'host con il repository.
- Forniamo un'estesa rete di mirror cvsup per questo scopo, così
- come diamo accesso al <systemitem>cvsup-master</systemitem> se hai veramente
- bisogno di essere aggiornato alle ultime modifiche.
- Il <systemitem>cvsup-master</systemitem> ha la potenza necessaria a gestire
- questa cosa, il repository principale no. &a.kuriyama; è a capo
- del <systemitem>cvsup-master</systemitem>.</para>
- </note>
-
- <para>Se devi usare le operazioni <command>add</command> e
- <command>delete</command> di CVS come se fosse un'operazione &man.mv.1;,
- allora va effettuata una copia nel repository piuttosto che usare
- <command>add</command> e <command>delete</command> di CVS. In una
- copia nel repository, un <link linkend="conventions">CVS Meister</link>
- 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.</para>
-
- <para>Informazioni di riferimento, tutorial, e FAQ su CVS possono
- essere trovate su: <uri xlink:href="http://www.cvshome.org/docs/">http://www.cvshome.org/docs/</uri>.
- Anche le informazioni contenute nei <link xlink:href="http://cvsbook.red-bean.com/cvsbook.html">capitoli di Karl Fogel
- da <quote>Open Source Development with CVS</quote></link> sono molto
- utili.</para>
-
- <para>&a.des; ha fornito inoltre il seguente <quote>mini manuale</quote> su
- CVS.</para>
-
- <orderedlist>
- <listitem>
- <para>Effettua il check out di un modulo con il comando
- <command>co</command> o <command>checkout</command>.</para>
-
- <screen>&prompt.user; <userinput>cvs checkout shazam</userinput></screen>
-
- <para>Questo estrae una copia del modulo <filename>shazam</filename>. Se
- non c'è alcun modulo <filename>shazam</filename> nel file dei
- moduli, cercherà allora una directory di primo livello chiamata
- <filename>shazam</filename>.</para>
-
- <table frame="none">
- <title>Opzioni utili con <command>cvs checkout</command></title>
-
- <tgroup cols="2">
- <tbody>
- <row>
- <entry><option>-P</option></entry>
-
- <entry>Non crea le directory vuote</entry>
- </row>
-
- <row>
- <entry><option>-l</option></entry>
-
- <entry>Estrae solo un livello, non le sottodirectory</entry>
- </row>
-
- <row>
- <entry><option>-r<replaceable>ver</replaceable></option></entry>
-
- <entry>Estrai la versione, il ramo, o il tag
- <replaceable>ver</replaceable></entry>
- </row>
-
- <row>
- <entry><option>-D<replaceable>data</replaceable></option></entry>
-
- <entry>Estrai i sorgenti com'erano in data
- <replaceable>data</replaceable></entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <para>Esempi pratici su FreeBSD:</para>
-
- <itemizedlist>
- <listitem>
- <para>Estrai il modulo <filename>miscfs</filename>, che
- corrisponde a <filename>src/sys/miscfs</filename>:</para>
-
- <screen>&prompt.user; <userinput>cvs co miscfs</userinput></screen>
-
- <para>Ora hai una directory chiamata <filename>miscfs</filename>
- con le sottodirectory <filename>CVS</filename>,
- <filename>deadfs</filename>, <filename>devfs</filename>, e
- così via. Una di queste (<filename>linprocfs</filename>)
- è vuota.</para>
- </listitem>
-
- <listitem>
- <para>Estrai gli stessi file, ma con il percorso completo:</para>
-
- <screen>&prompt.user; <userinput>cvs co src/sys/miscfs</userinput></screen>
-
- <para>Ora hai una directory chiamata <filename>src</filename>,
- con le sottodirectory <filename>CVS</filename> e
- <filename>sys</filename>. La directory
- <filename>src/sys</filename> ha le
- sottodirectory <filename>CVS</filename> e
- <filename>miscfs</filename>, ecc.</para>
- </listitem>
-
- <listitem>
- <para>Estrai gli stessi file, ma elimina le directory vuote:</para>
-
- <screen>&prompt.user; <userinput>cvs co -P miscfs</userinput></screen>
-
- <para>Ora hai una directory chiamata <filename>miscfs</filename>
- con le sottodirectory <filename>CVS</filename>,
- <filename>deadfs</filename>, <filename>devfs</filename>... ma nota
- che non c'è nessuna sottodirectory
- <filename>linprocfs</filename>, perché non contiene alcun
- file.</para>
- </listitem>
-
- <listitem>
- <para>Estrai la directory <filename>miscfs</filename>, ma nessuna
- delle sue sottodirectory:</para>
-
- <screen>&prompt.user; <userinput>cvs co -l miscfs</userinput></screen>
-
- <para>Ora hai una a directory chiamata <filename>miscfs</filename>
- con solo una sottodirectory chiamata
- <filename>CVS</filename>.</para>
- </listitem>
-
- <listitem>
- <para>Estrai il modulo <filename>miscfs</filename> com'è nel
- ramo 4.X:</para>
-
- <screen>&prompt.user; <userinput>cvs co -rRELENG_4 miscfs</userinput></screen>
-
- <para>Puoi modificare i sorgenti ed effettuare il commit su questo
- ramo.</para>
- </listitem>
-
- <listitem>
- <para>Estrai il modulo <filename>miscfs</filename> com'era nella
- 3.4-RELEASE.</para>
-
- <screen>&prompt.user; <userinput>cvs co -rRELENG_3_4_0_RELEASE miscfs</userinput></screen>
-
- <para>Non potrai effettuare il commit delle modifiche, visto che
- <literal>RELENG_3_4_0_RELEASE</literal> corrisponde ad un
- preciso istante di tempo, non a un ramo.</para>
- </listitem>
-
- <listitem>
- <para>Estrai il modulo <filename>miscfs</filename> com'era il 15
- gennaio 2000.</para>
-
- <screen>&prompt.user; <userinput>cvs co -D'01/15/2000' miscfs</userinput></screen>
-
- <para>Non potrai effettuare modifiche.</para>
- </listitem>
-
- <listitem>
- <para>Estrai il modulo <filename>miscfs</filename> com'era una
- settimana fa.</para>
-
- <screen>&prompt.user; <userinput>cvs co -D'last week' miscfs</userinput></screen>
-
- <para>Non potrai effettuare modifiche.</para>
- </listitem>
- </itemizedlist>
-
- <para>Tieni presente che cvs salva i metadati in sottodirectory chiamate
- <filename>CVS</filename>.</para>
-
- <para>Gli argomenti di <option>-D</option> e <option>-r</option>
- sono fissi, che vuol dire che cvs se li ricorderà in seguito,
- ad esempio quando farai un <command>cvs update</command>.</para>
- </listitem>
-
- <listitem>
- <para>Controlla lo stato dei file estratti con il comando
- <command>status</command>.</para>
-
- <screen>&prompt.user; <userinput>cvs status shazam</userinput></screen>
-
- <para>Questo visualizza lo stato del file <filename>shazam</filename> o
- di ogni file nella directory <filename>shazam</filename>. Per ogni
- file, lo stato è uno fra:</para>
-
- <informaltable frame="none" pgwide="1">
- <tgroup cols="2">
- <tbody>
- <row>
- <entry>Up-to-date</entry>
-
- <entry>Il file à aggiornato e non è stato
- modificato.</entry>
- </row>
-
- <row>
- <entry>Needs Patch</entry>
-
- <entry>Il file non è stato modificato, ma c'è una
- nuova versione nel repository.</entry>
- </row>
-
- <row>
- <entry>Locally Modified</entry>
-
- <entry>Il file è aggiornato, ma è stato
- modificato.</entry>
- </row>
-
- <row>
- <entry>Needs Merge</entry>
-
- <entry>Il file è stato modificato, e c'è una nuova
- versione nel repository.</entry>
- </row>
-
- <row>
- <entry>File had conflicts on merge</entry>
-
- <entry>Ci sono stati conflitti l'ultima volta che il file
- è stato aggiornato, e non sono ancora stati
- risolti.</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Vedrai anche la versione e la data locale, il numero dell'ultima
- versione appropriata (<quote>ultima appropriata</quote> 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.</para>
- </listitem>
-
- <listitem>
- <para>Dopo avere estratto qualcosa, puoi aggiornarlo con il comando
- <command>update</command>.</para>
-
- <screen>&prompt.user; <userinput>cvs update shazam</userinput></screen>
-
- <para>Questo aggiorna il file <filename>shazam</filename> o il contenuto
- della directory <filename>shazam</filename> all'ultima versione sul
- ramo che hai estratto. Se hai estratto un <quote>preciso instante di
- tempo</quote>, non fa nulla a meno che i tag non siano stati
- spostati nel repository o qualche altra strana cosa sia in
- corso.</para>
-
- <para>Opzioni utili, in aggiunta a quelle elencate sopra, con
- <command>checkout</command>:</para>
-
- <informaltable frame="none" pgwide="1">
- <tgroup cols="2">
- <tbody>
- <row>
- <entry><option>-d</option></entry>
-
- <entry>Estrae ogni directory aggiuntiva mancante.</entry>
- </row>
-
- <row>
- <entry><option>-A</option></entry>
-
- <entry>Scarica l'ultima versione del ramo principale.</entry>
- </row>
-
- <row>
- <entry><option>-j<replaceable>ver</replaceable></option></entry>
-
- <entry>Altre magie (guarda sotto).</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Se hai estratto un modulo con <option>-r</option> o
- <option>-D</option>, l'esecuzione di <command>cvs update</command>
- con un argomento differente di <option>-r</option> o
- <option>-D</option> o con <option>-A</option> selezionerà un
- nuovo ramo, una nuova versione o una nuova data.
- L'opzione <option>-A</option> elimina tutti i tag, le date o le
- versioni fissate mentre <option>-r</option> e <option>-D</option> ne
- impostano di nuove.</para>
-
- <para>Teoricamente, specificando <literal>HEAD</literal> come argomento
- di <option>-r</option> avrai lo stesso risultato di
- <option>-A</option>, ma è solo in teoria.</para>
-
- <para>L'opzione <option>-d</option> è utile se:</para>
-
- <itemizedlist>
- <listitem>
- <para>qualcuno ha aggiunto delle sottodirectory al modulo che hai
- estratto dopo averlo estratto.</para>
- </listitem>
-
- <listitem>
- <para>hai estratto con <option>-l</option>, e dopo cambi idea e
- vuoi estrarre anche le sottodirectory.</para>
- </listitem>
-
- <listitem>
- <para>hai cancellato delle sottodirectory e vuoi estrarle
- nuovamente.</para>
- </listitem>
- </itemizedlist>
-
- <para><emphasis>Osserva l'output di <command>cvs update</command> con
- cura</emphasis>. La lettera all'inizio di ogni file indica cosa
- è stato fatto su di esso:</para>
-
- <informaltable frame="none" pgwide="1">
- <tgroup cols="2">
- <tbody>
- <row>
- <entry><literal>U</literal></entry>
-
- <entry>Il file è stato aggiornato senza problemi.</entry>
- </row>
-
- <row>
- <entry><literal>P</literal></entry>
-
- <entry>Il file è stato aggiornato senza problemi (vedrai
- questo solo quando lavorerai su un repository remoto).</entry>
- </row>
-
- <row>
- <entry><literal>M</literal></entry>
-
- <entry>Il file è stato modificato, ed è stato
- fuso senza conflitti.</entry>
- </row>
-
- <row>
- <entry><literal>C</literal></entry>
-
- <entry>Il file è stato modificato, ed è stato
- fuso con dei conflitti.</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>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 <command>cvs
- update</command>. 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).</para>
-
- <para>CVS stamperà una <literal>M</literal> davanti ad ogni file
- modificato localmente anche se non c'è una nuova versione nel
- repository, quindi <command>cvs update</command> è adatto
- per avere un resoconto di quello che hai cambiato in locale.</para>
-
- <para>Se appare una <literal>C</literal>, 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 <command>cvs</command> 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 <literal>&lt;</literal>,
- <literal>=</literal> e <literal>&gt;</literal>. Per ogni conflitto,
- ci sarà una linea di demarcazione formata da sette
- <literal>&lt;</literal> 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 <literal>=</literal>, seguita dalla porzione
- corrispondente presente nella versione del repository, seguita da una
- riga di separazione con sette <literal>&gt;</literal> e il numero di
- versione che stai aggiornando.</para>
-
- <para>L'opzione <option>-j</option> è un po' voodoo. Aggiorna
- il file locale alla versione specificata come se avessi usato
- <option>-r</option>, 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.</para>
-
- <para>Per esempio, supponiamo che ti abbia effettuato il commit di una
- modifica a <filename>shazam/shazam.c</filename> in &os.current; e che
- più tardi tu voglia effettuare l'MFC. Le modifiche che vuoi
- fondere sono nella versione 1.15:</para>
-
- <itemizedlist>
- <listitem>
- <para>Estrai la versione &os.stable; del modulo
- <filename>shazam</filename>:</para>
-
- <screen>&prompt.user; <userinput>cvs co -rRELENG_5 shazam</userinput></screen>
- </listitem>
-
- <listitem>
- <para>Applica le modifiche tra la ver 1.14 e la 1.15:</para>
-
- <screen>&prompt.user; <userinput>cvs update -j1.14 -j1.15 shazam/shazam.c</userinput></screen>
- </listitem>
- </itemizedlist>
-
- <para>Quasi certamente avrai un conflitto a causa delle righe
- <literal>$Id$</literal> (o nel caso di FreeBSD, <literal>$FreeBSD$</literal>),
- quindi dovrai modificare a mano il file per risolvere il conflitto
- (rimuovi le righe di separazione e la seconda linea
- <literal>$Id$</literal>, lasciando la linea <literal>$Id$</literal>
- originale intatta).</para>
- </listitem>
-
- <listitem>
- <para>Guarda le differenze tra la versione locale e quella sul
- repository con il comando <command>diff</command>.</para>
-
- <screen>&prompt.user; <userinput>cvs diff shazam</userinput></screen>
-
- <para>mostra ogni modifica che hai fatto al file o al modulo
- <filename>shazam</filename>.</para>
-
- <table frame="none">
- <title>Opzioni utili con <command>cvs diff</command></title>
-
- <tgroup cols="2">
- <tbody>
- <row>
- <entry><option>-u</option></entry>
-
- <entry>Utilizza il formato diff unificato.</entry>
- </row>
-
- <row>
- <entry><option>-c</option></entry>
-
- <entry>Utilizza il formato diff contestuale.</entry>
- </row>
-
- <row>
- <entry><option>-N</option></entry>
-
- <entry>Visualizza i file mancanti o aggiunti.</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <para>Vorrai sempre utilizzare <option>-u</option>, 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 <option>-c</option> 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
- <literal>@</literal> 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 <literal>-</literal>) sono quelle
- eliminate e altre ancora (precedute da un <literal>+</literal>) sono
- quelle aggiunte.</para>
-
- <para>Puoi anche effettuare una diff con una versione differente
- rispetto a quella che hai estratto specificando la versione con
- <option>-r</option> o <option>-D</option> come per il
- <command>checkout</command> o l'<command>update</command>,
- o anche visualizzare le differenze tra due versioni arbitrarie
- (indipendentemente da quella che hai localmente) specificando
- <emphasis>due</emphasis> versioni con <option>-r</option> o
- <option>-D</option>.</para>
- </listitem>
-
- <listitem>
- <para>Guarda le righe di log con il comando
- <command>log</command>.</para>
-
- <screen>&prompt.user; <userinput>cvs log shazam</userinput></screen>
-
- <para>Se <filename>shazam</filename> è un file, questo
- stamperà un'<emphasis>intestazione</emphasis> con le
- informazioni sul file, come la locazione nel repository dove il file
- è salvato, a quale versione è l'<literal>HEAD</literal>
- 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.</para>
-
- <para>Se <filename>shazam</filename> è 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
- <option>-l</option> a <command>log</command>, vengono stampati anche
- i log per tutte le sottodirectory di <filename>shazam</filename>, in
- maniera ricorsiva.</para>
-
- <para>Usa il comando <command>log</command> 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 <option>-r<replaceable>ver</replaceable></option> al
- comando <command>log</command>:</para>
-
- <screen>&prompt.user; <userinput>cvs log -r1.2 shazam</userinput></screen>
-
- <para>Questo stamperà solamente il messaggio di log per la
- versione <literal>1.2</literal> del file <filename>shazam</filename>
- se è un file, oppure i messaggi di log per le versioni 1.2 di
- ogni file sotto <filename>shazam</filename> se è una
- directory.</para>
- </listitem>
-
- <listitem>
- <para>Guarda chi ha fatto cosa con il comando
- <command>annotate</command>. Questo comando visualizza ogni riga del
- file o dei file specificati, insieme all'utente che ha modificato
- più recentemente quella riga.</para>
-
- <screen>&prompt.user; <userinput>cvs annotate shazam</userinput></screen>
- </listitem>
-
- <listitem>
- <para>Aggiungi nuovi file con il comando <command>add</command>.</para>
-
- <para>Crea il file, usa <command>cvs add</command> su di esso, quindi
- <command>cvs commit</command>.</para>
-
- <para>In modo analogo, puoi aggiungere nuove directory creandole e poi
- utilizzando <command>cvs add</command> su di esse. Nota che non
- c'è bisogno di usare il commit sulle directory.</para>
- </listitem>
-
- <listitem>
- <para>Rimuovi i file obsoleti con il comando
- <command>remove</command>.</para>
-
- <para>Rimuovi il file, quindi usa <command>cvs rm</command> su di esso,
- ed infine <command>cvs commit</command>.</para>
- </listitem>
-
- <listitem>
- <para>Effettua il commit con il comando <command>commit</command> o
- <command>checkin</command>.</para>
-
- <table frame="none">
- <title>Opzioni utili con <command>cvs commit</command></title>
-
- <tgroup cols="2">
- <tbody>
- <row>
- <entry><option>-f</option></entry>
-
- <entry>Forza il commit di un file non modificato.</entry>
- </row>
-
- <row>
- <entry><option>-m<replaceable>msg</replaceable></option></entry>
-
- <entry>Specifica un messaggio di commit sulla riga di comando
- anziché invocare un editor.</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <para>Usa l'opzione <option>-f</option> se ti accorgi che hai lasciato
- fuori informazioni importanti dal messaggio di commit.</para>
-
- <para>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.</para>
-
- <para>I messaggi di commit devono essere chiari, concisi, e fornire
- un ragionevole sommario per dare un'indicazione di cosa è stato
- cambiato e perché.</para>
-
- <para>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.</para>
-
- <para>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.</para>
-
- <para>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.</para>
-
- <para>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.</para>
-
- <para>Prima di effettuare il commit, devi
- <emphasis>sempre</emphasis>:</para>
-
- <itemizedlist>
- <listitem>
- <para>verificare su che ramo stai effettuando il commit, tramite
- <command>cvs status</command>.</para>
- </listitem>
-
- <listitem>
- <para>revisionare i tuoi cambiamenti, con
- <command>cvs diff</command></para>
- </listitem>
- </itemizedlist>
-
- <para>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 - <command>cvs
- commit</command> senza argomenti effettuerà il commit di ogni
- modifica nella directory corrente ed ogni sottodirectory.</para>
- </listitem>
- </orderedlist>
-
- <para>Suggerimenti e trucchi aggiuntivi:</para>
-
- <orderedlist>
- <listitem>
- <para>Puoi inserire le opzioni più comunemente usate nel tuo
- <filename>~/.cvsrc</filename>, come in questo caso:</para>
-
- <programlisting>cvs -z3
-diff -Nu
-update -Pd
-checkout -P</programlisting>
-
- <para>Questo esempio dice:</para>
-
- <itemizedlist>
- <listitem>
- <para>usa sempre il livello di compressione 3 quando si parla con un
- server remoto. Questo è un salvavita quando si lavora su
- una connessione lenta.</para>
- </listitem>
-
- <listitem>
- <para>usa sempre le opzioni <option>-N</option> (visualizza i file
- aggiunti o rimossi) e <option>-u</option> (formato diff unificato)
- con &man.diff.1;.</para>
- </listitem>
-
- <listitem>
- <para>usa sempre le opzioni <option>-P</option> (elimina le
- directory vuote) e <option>-d</option> (estrai le nuove directory)
- quando si effettua l'update.</para>
- </listitem>
-
- <listitem>
- <para>usa sempre l'opzione <option>-P</option> (elimina le
- directory vuote) quando si estrae.</para>
- </listitem>
- </itemizedlist>
- </listitem>
-
- <listitem>
- <para>Usa lo script <command>cdiff</command> 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).</para>
-
- <para><package>textproc/cdiff</package></para>
-
- <para>Semplicemente usalo al posto di &man.more.1; o
- &man.less.1;:</para>
-
- <screen>&prompt.user; <userinput>cvs diff -Nu shazam | cdiff</userinput></screen>
-
- <para>Alternativamente alcuni editor come &man.vim.1;
- (<package>editors/vim5</package>) 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.</para>
-
- <screen>&prompt.user; <userinput>echo "syn on" &gt;&gt; ~/.vimrc </userinput>
-&prompt.user; <userinput>cvs diff -Nu shazam | vim -</userinput>
-&prompt.user; <userinput>cvs log shazam | vim -</userinput> </screen>
- </listitem>
-
- <listitem>
- <para>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;).</para>
- </listitem>
-
- <listitem>
- <para>Non lasciare il comando <command>cvs commit</command> nella
- modalità di inserimento del messaggio di commit per troppo
- tempo (più di 2&ndash;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
- <command>cvs commit</command> e inseriscilo successivamente oppure
- salvalo in un file prima di effettuare il commit ed usa l'opzione
- <option>-F</option> di CVS per leggere il messaggio di commit da
- quel file, cioè:</para>
-
- <screen>&prompt.user; <userinput>vi logmsg</userinput>
-&prompt.user; <userinput>cvs ci -F logmsg shazam</userinput></screen>
-
- <para>Questo è il metodo più veloce per passare un
- messaggio di commit a CVS ma devi stare attento quando modifichi
- il file <filename>logmsg</filename> prima del commit, perché
- CVS non ti darà la possibilità di modificare il
- messaggio quando effettuerai realmente il commit.</para>
- </listitem>
- </orderedlist>
- </sect1>
-
- <sect1 xml:id="conventions">
- <title>Convenzioni e Tradizioni</title>
-
- <para>Come nuovo committer ci sono alcune cose che dovresti fare
- all'inizio.</para>
-
- <itemizedlist>
- <listitem>
- <para>Aggiungi la tua entity di autore in
- <filename>doc/en_US.ISO8859-1/share/xml/authors.ent</filename>;
- 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/.</para>
-
- <para>Questo è un compito relativamente semplice, ma rimane una
- buona prima prova delle tue abilità con CVS.</para>
- </listitem>
-
- <listitem>
- <para>Aggiungi te stesso alla sezione <quote>Developers</quote> della
- <link xlink:href="&url.articles.contributors.en;/index.html">Contributors
- List</link> e
- rimuovere te stesso dalla sezione <quote>Additional
- Contributors</quote>.</para>
- </listitem>
-
- <listitem>
- <para>Aggiungi una voce per te stesso in
- <filename>www/en/news/news.xml</filename>. Guarda le altre voci che
- assomigliano a <quote>A new committer</quote> e segui il
- formato.</para>
- </listitem>
-
- <listitem>
- <para>Dovresti aggiungere la tua chiave PGP o GnuPG in
- <filename>doc/share/pgpkeys</filename> (e se non ce l'hai, dovresti
- creartene una). Non dimenticare di effettuare il commit del file
- <filename>doc/share/pgpkeys/pgpkeys.ent</filename> aggiornato.</para>
-
- <para>&a.des; ha scritto uno script di shell per rendere questa
- operazione molto semplice. Guarda il file <link xlink:href="http://cvsweb.FreeBSD.org/doc/share/pgpkeys/README">README</link>
- per maggiori informazioni.</para>
-
- <note>
- <para>È 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
- <systemitem class="fqdomainname">FreeBSD.org</systemitem> è disponibile
- su <link xlink:href="&url.base;/doc/pgpkeyring.txt">http://www.FreeBSD.org/doc/pgpkeyring.txt</link>.</para>
- </note>
- </listitem>
-
- <listitem>
- <para>Alcune persone aggiungono una voce per se stessi in
- <filename>ports/astro/xearth/files/freebsd.committers.markers</filename>.</para>
- </listitem>
-
- <listitem>
- <para>Alcune persone aggiungono una voce per se stessi in
- <filename>src/usr.bin/calendar/calendars/calendar.freebsd</filename>.</para>
- </listitem>
-
- <listitem>
- <para>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!</para>
- </listitem>
-
- <listitem>
- <para>Loggati su <systemitem>hub.FreeBSD.org</systemitem> e crea un file
- <filename>/var/forward/utente</filename>
- (dove <replaceable>utente</replaceable> è il tuo nome utente)
- contenente l'indirizzo e-mail dove vuoi che i messaggi indirizzati a
- <replaceable>tuonomeutente</replaceable>@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
- <systemitem>hub</systemitem> spesso vengono <quote>accidentalmente</quote>
- troncate senza preavviso, quindi inoltra o leggi i messaggi in modo da
- non perderli.</para>
-
- <para>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 <filename>~/.spam_lover</filename> nella tua
- directory home su <systemitem class="fqdomainname">freefall.FreeBSD.org</systemitem>.</para>
- </listitem>
-
- <listitem>
- <para>Se sei iscritto alla &a.cvsall;, probabilmente vorrai
- disiscriverti per evitare di ricevere copie doppie dei messaggi di
- commit e della loro evoluzione.</para>
- </listitem>
- </itemizedlist>
-
- <para>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
- <filename>access</filename>) 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 <literal>Approved by:</literal>
- nel messaggio di commit.</para>
-
- <para>Tutti i commit <filename>src</filename> 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;.</para>
- </sect1>
-
- <sect1 xml:id="pref-license">
- <title>Licenza Preferita per i Nuovi File</title>
-
- <para>Attualmente il &os; Project suggerisce di usare il seguente testo
- come schema di licenza preferito:</para>
-
-<programlisting>Copyright &copy; &lt;Year&gt; &lt;Author&gt;. 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.</programlisting>
-
- <para>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.</para>
-
- <para>Il progetto &os; scoraggia completamente nuove licenze e variazioni
- sulle licenze standard. Nuove licenze richiedono l'approvazione di
- <email>core@FreeBSD.org</email> 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.</para>
- </sect1>
-
- <sect1 xml:id="developer.relations">
- <title>Relazioni tra Sviluppatori</title>
-
- <para>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
- <literal>cvs-committers</literal> 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
- <varname>MAINTAINER</varname> specificato nel
- <filename>Makefile</filename>. Per altre parti del repository, se non sei
- sicuro di chi possa essere il maintainer attivo, potrebbe essere utile
- scorrere l'output di <command>cvs log</command> 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 <systemitem>freefall</systemitem> in
- <filename>~fenner/bin/whodid</filename>. 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.</para>
-
- <para>Se non sei sicuro di un commit per qualunque motivo, fallo revisionare
- da <literal>-hackers</literal> 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 &ndash; con CVS possiamo
- sempre tornare indietro.</para>
-
- <para>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.</para>
-
- <para>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.</para>
-
- <para>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.</para>
-
- <para>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.</para>
- </sect1>
-
- <sect1 xml:id="gnats">
- <title>GNATS</title>
-
- <para>Il FreeBSD Project utilizza <application>GNATS</application> per
- gestire i bug e le richieste di cambiamenti. Assicurati di usare
- <command>edit-pr numero-pr</command> su
- <systemitem>freefall</systemitem> quando effettui il commit di una correzione o di
- un suggerimento trovato in un PR <application>GNATS</application> 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.</para>
-
- <para>Puoi trovare di più su <application>GNATS</application>
- su:</para>
-
- <itemizedlist>
- <listitem>
- <para><link xlink:href="http://www.cs.utah.edu/csinfo/texinfo/gnats/gnats.html">http://www.cs.utah.edu/csinfo/texinfo/gnats/gnats.html</link></para>
- </listitem>
-
- <listitem>
- <para><link xlink:href="&url.base;/support.html">http://www.FreeBSD.org/support.html</link></para>
- </listitem>
-
- <listitem>
- <para>&man.send-pr.1;</para>
- </listitem>
- </itemizedlist>
-
- <para>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
- <command>tkgnats</command>. Questo ti permette di interrogare il database
- dei PR senza bisogno di essere connesso a Internet.</para>
-
- <procedure>
- <title>Utilizzo di un albero GNATS locale</title>
-
- <step>
- <para>Se non stai già scaricando l'albero GNATS, aggiungi questa
- riga al tuo <filename>supfile</filename>, 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
- <filename>supfile</filename> esistente deve apparire prima di ogni
- voce <quote>tag=</quote> dato che queste rimangono attive una volta
- impostate.</para>
-
- <programlisting>gnats release=current prefix=/usr</programlisting>
-
- <para>Questo metterà l'albero GNATS di FreeBSD in
- <filename>/usr/gnats</filename>. Puoi usare un file
- <emphasis>refuse</emphasis> per controllare quali categorie ricevere.
- Per esempio, per ricevere solo i PR <literal>docs</literal>, metti
- questa riga in <filename>/usr/local/etc/cvsup/sup/refuse</filename>
- <footnote>
- <para>Il percorso preciso dipende dall'impostazione
- <literal>*default base</literal> nel tuo
- <filename>supfile</filename>.</para>
- </footnote>.</para>
-
- <programlisting>gnats/[a-ce-z]*</programlisting>
-
- <para>Il resto di questi esempi assume che tu abbia scaricato solo la
- categoria <literal>docs</literal>. Modificali quando è
- necessario, a seconda delle categorie che tieni in sincronia.</para>
- </step>
-
- <step>
- <para>Installa il port GNATS da
- <filename>ports/databases/gnats</filename>. Questo metterà le
- varie directory GNATS sotto
- <filename>$PREFIX/share/gnats</filename>.</para>
- </step>
-
- <step>
- <para>Crea un symlink per le directory GNATS che aggiorni tramite CVSup
- sotto la versione di GNATS che hai installato.</para>
-
- <screen>&prompt.root; <userinput>cd /usr/local/share/gnats/gnats-db</userinput>
-&prompt.root; <userinput>ln -s /usr/gnats/docs</userinput></screen>
-
- <para>Ripeti tante volte quanto necessario, a seconda di quante
- categorie GNATS tieni in sincronia.</para>
- </step>
-
- <step>
- <para>Aggiorna il file <filename>categories</filename> di GNATS con
- queste categorie. Il file è
- <filename>$PREFIX/share/gnats/gnats-db/gnats-adm/categories</filename>.</para>
-
- <programlisting># Questa categoria è obbligatoria
-pending:Categoria per i PR errati:gnats-admin:
-#
-# Categorie di FreeBSD
-#
-docs:Bug di Documentazione:freebsd-doc:</programlisting>
- </step>
-
- <step>
- <para>Esegui <filename>$PREFIX/libexec/gnats/gen-index</filename> per
- ricreare l'indice GNATS. L'output deve essere reindirizzato su
- <filename>$PREFIX/share/gnats/gnats-db/gnats-adm/index</filename>.
- Puoi fare questo periodicamente da &man.cron.8;, o eseguire
- &man.cvsup.1; da uno script di shell che fa anche questo.</para>
-
- <screen>&prompt.root; <userinput>/usr/local/libexec/gnats/gen-index \
- &gt; /usr/local/share/gnats/gnats-db/gnats-adm/index</userinput></screen>
- </step>
-
- <step>
- <para>Verifica la configurazione interrogando il database dei PR.
- Questo comando visualizza i PR <literal>docs</literal> aperti.</para>
-
- <screen>&prompt.root; <userinput>query-pr -c docs -s open</userinput></screen>
-
- <para>Anche altre interfacce, come quella fornita dal port <package>databases/tkgnats</package>, dovrebbero funzionare
- correttamente.</para>
- </step>
-
- <step>
- <para>Prendi un PR e chiudilo.</para>
- </step>
- </procedure>
-
- <note>
- <para>Questa procedura funziona solo per permetterti di visualizzare ed
- interrogare i PR localmente. Per modificarli o chiuderli dovrai ancora
- loggarti su <systemitem>freefall</systemitem> e farlo da lì.</para>
- </note>
- </sect1>
-
- <sect1 xml:id="people">
- <title>Chi è Chi</title>
-
- <para>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:</para>
-
- <variablelist>
- <varlistentry>
- <term>&a.jhb;</term>
-
- <listitem>
- <para>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.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>&a.jake;, &a.tmm;</term>
-
- <listitem>
- <para>Jake e Thomas sono i maintainer del port sull'architettura
- &sparc64;.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>&a.doceng;</term>
-
- <listitem>
- <para>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 <link xlink:href="http://www.FreeBSD.org/internal/doceng.html">statuto</link>.
- I committer interessati a contribuire
- alla documentazione dovrebbero familiarizzare con il <link xlink:href="&url.books.fdp-primer.en;/index.html">Documentation
- Project Primer</link>.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>&a.ru;</term>
-
- <listitem>
- <para>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.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>&a.bde;</term>
-
- <listitem>
- <para>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.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>&a.gallatin;</term>
- <term>&a.mjacob;</term>
- <term>&a.dfr;</term>
- <term>&a.obrien;</term>
-
- <listitem>
- <para>Questi sono gli sviluppatori e i supervisori primari della
- piattaforma DEC Alpha AXP.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>&a.dg;</term>
-
- <listitem>
- <para>David è il supervisore del sistema VM. Se hai in mente
- una modifica al sistema VM, coordinala con David.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>&a.dfr;</term>
- <term>&a.marcel;</term>
- <term>&a.peter;</term>
- <term>&a.ps;</term>
-
- <listitem>
- <para>Questi sono i principali sviluppatori e supervisori della
- piattaforma Intel IA-64, ufficialmente conosciuta come l'&itanium;
- Processor Family (IPF).</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>&a.murray;</term>
- <term>&a.steve;</term>
- <term>&a.rwatson;</term>
- <term>&a.jhb;</term>
- <term>&a.scottl;</term>
- <term>&a.kensmith;</term>
- <term>&a.hrs;</term>
-
- <listitem>
- <para>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.</para>
-
- <para>Hiroki è anche l'autore della documentazione di
- release (<filename>src/release/doc/*</filename>). 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.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>&a.benno;</term>
-
- <listitem>
- <para>Benno è il maintainer ufficiale del port per
- &powerpc;.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>&a.brian;</term>
-
- <listitem>
- <para>Maintainer ufficiale di
- <filename>/usr/sbin/ppp</filename>.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>&a.nectar;</term>
-
- <listitem>
- <para>Jacques è il <link xlink:href="&url.base;/security/">FreeBSD
- Security Officer</link> e supervisiona il
- &a.security-officer;.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>&a.wollman;</term>
-
- <listitem>
- <para>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.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>&a.committers;</term>
-
- <listitem>
- <para>cvs-committers è l'entità che CVS usa per inviarti
- tutti i messaggi di commit. Non devi <emphasis>mai</emphasis>
- inviare email direttamente a questa lista. Puoi solamente
- rispondere a questa lista quando i messaggi sono brevi e
- direttamente correlati a un commit.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>&a.developers;</term>
-
- <listitem>
- <para>Tutti i committer sono iscritti a -developers. Questa lista
- è stata creata per essere un forum sulle questioni della
- <quote>comunità</quote> dei committer. Esempi sono le
- votazioni per il Core, annunci, ecc. Questa lista
- <emphasis>non</emphasis> è 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 <quote>pubbliche</quote>.
- Ultimo, ma non per importanza <emphasis>mai e poi mai invia un
- messaggio alla &a.developers; mettendo in CC:/BCC: un'altra lista
- FreeBSD</emphasis>.
- 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.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </sect1>
-
- <sect1 xml:id="ssh.guide">
- <title>Guida Rapida a SSH</title>
-
- <procedure>
- <step>
- <para>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 <package>security/openssh</package>. Potresti anche voler
- estrarre l'ssh1 originale dal port <package>security/ssh</package>, ma sii certo di porre la
- dovuta attenzione alla sua licenza. Nota che questi port non possono
- essere installati contemporaneamente.</para>
- </step>
-
- <step>
- <para>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 <filename>.xsession</filename> o
- <filename>.xinitrc</filename>. Guarda &man.ssh-agent.1; per i
- dettagli.</para>
- </step>
-
- <step>
- <para>Genera un paio di chiavi con &man.ssh-keygen.1;. Le chiavi
- finiranno nella tua directory
- <filename>$HOME/.ssh/</filename>.</para>
- </step>
-
- <step>
- <para>Invia la tua chiave pubblica
- (<filename>$HOME/.ssh/id_dsa.pub</filename> o
- <filename>$HOME/.ssh/id_rsa.pub</filename>)
- alla persona che ti sta configurando come committer in modo che possa
- inserirla nel file
- <filename>tualogin</filename> su
- <systemitem>freefall</systemitem>.</para>
- </step>
- </procedure>
-
- <para>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 <command>ssh-add -d</command>
- la rimuoverà.</para>
-
- <para>Verifica facendo qualcosa come <command>ssh freefall.FreeBSD.org ls
- /usr</command>.</para>
-
- <para>Per maggiori informazioni, guarda <package>security/openssh</package>, &man.ssh.1;,
- &man.ssh-add.1;, &man.ssh-agent.1;, &man.ssh-keygen.1;, e
- &man.scp.1;.</para>
- </sect1>
-
- <sect1 xml:id="rules">
- <title>Il Lungo Elenco di Regole dei Committer di FreeBSD</title>
-
- <para>Traduzione in corso</para>
- </sect1>
-
- <sect1 xml:id="archs">
- <title>Supporto per Diverse Architetture</title>
-
- <para>Traduzione in corso</para>
- </sect1>
-
- <sect1 xml:id="ports">
- <title>FAQ Specifiche sui Port</title>
-
- <para>Traduzione in corso</para>
- </sect1>
-
- <sect1 xml:id="perks">
- <title>Benefici del Lavoro</title>
-
- <para>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:</para>
-
- <variablelist>
- <varlistentry>
- <term>Accesso diretto al <systemitem>cvsup-master</systemitem></term>
-
- <listitem>
- <para>Come committer, puoi chiedere a &a.kuriyama; accesso diretto
- a <systemitem class="fqdomainname">cvsup-master.FreeBSD.org</systemitem>,
- fornendo l'output della tua chiave pubblica tramite
- <command>cvpasswd
- yourusername@FreeBSD.org
- freefall.FreeBSD.org</command>. Nota: devi specificare
- <systemitem>freefall.FreeBSD.org</systemitem> sulla riga di comando si
- <command>cvpasswd</command> anche se il server attuale è
- <systemitem>cvsup-master</systemitem>. L'accesso al
- <systemitem>cvsup-master</systemitem> non dovrebbe essere abusato visto che
- è una macchina carica di lavoro.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Un abbonamento gratuito al set da 4 CD o DVD</term>
-
- <listitem>
- <para><link xlink:href="http://www.freebsdmall.com">FreeBSD Mall,
- Inc.</link> 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
- <email>developers@FreeBSD.org</email> dopo ogni release.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </sect1>
-
- <sect1 xml:id="misc">
- <title>Domande Generali</title>
-
- <para>Traduzione in corso</para>
- </sect1>
-</article>
diff --git a/it_IT.ISO8859-15/articles/explaining-bsd/Makefile b/it_IT.ISO8859-15/articles/explaining-bsd/Makefile
deleted file mode 100644
index 39733a2b9e..0000000000
--- a/it_IT.ISO8859-15/articles/explaining-bsd/Makefile
+++ /dev/null
@@ -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"
diff --git a/it_IT.ISO8859-15/articles/explaining-bsd/article.xml b/it_IT.ISO8859-15/articles/explaining-bsd/article.xml
deleted file mode 100644
index 7d6d3ac4ea..0000000000
--- a/it_IT.ISO8859-15/articles/explaining-bsd/article.xml
+++ /dev/null
@@ -1,615 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-15"?>
-<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
- "http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
-<!--
- The FreeBSD Italian Documentation Project
-
- $FreeBSD$
- Original revision: 1.22
--->
-<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="it">
- <info><title>Panoramica su BSD</title>
-
-
- <author><personname><firstname>Greg</firstname><surname>Lehey</surname></personname><affiliation>
- <address><email>grog@FreeBSD.org</email></address>
- </affiliation></author>
-
- <legalnotice xml:id="trademarks" role="trademarks">
- &tm-attrib.freebsd;
- &tm-attrib.amd;
- &tm-attrib.apple;
- &tm-attrib.linux;
- &tm-attrib.opengroup;
- &tm-attrib.sun;
- &tm-attrib.xfree86;
- &tm-attrib.general;
- </legalnotice>
-
- <pubdate>$FreeBSD$</pubdate>
-
- <releaseinfo>$FreeBSD$</releaseinfo>
-
- <abstract>
- <para>Nel mondo open source, la parola <quote>Linux</quote> è quasi
- sinonimo di <quote>Sistema Operativo</quote>, ma non si tratta del solo
- sistema operativo &unix; open source. Secondo
- l'<link xlink:href="http://www.leb.net/hzo/ioscount/data/r.9904.txt">Internet
- Operating System Counter</link>, 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 <link xlink:href="http://www.yahoo.com/">Yahoo!</link>, usano BSD. Il server
- FTP più affollato del mondo nel 1999 (ora defunto), <link xlink:href="ftp://ftp.cdrom.com/">ftp.cdrom.com</link>, usa BSD per
- trasferire 1.4 TB di dati al giorno. Chiaramente questo non è
- un mercato di nicchia: BSD è un segreto ben mantenuto.</para>
-
- <para>Dunque, qual è il segreto? Perché BSD non è
- conosciuto meglio? Questo documento risponde a questa e ad altre
- domande.</para>
-
- <para>In questo documento, le differenze tra BSD e Linux verranno
- evidenziate <emphasis>così</emphasis>.</para>
-
- &trans.it.surrender;
- </abstract>
- </info>
-
- <sect1 xml:id="what-is-bsd">
- <title>Cos'è BSD?</title>
-
- <para>BSD sta per <quote>Berkeley Software Distribution</quote>. È
- 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&amp;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:</para>
-
- <itemizedlist>
- <listitem>
- <para>Il kernel BSD, che gestisce lo scheduling dei processi, l'utilizzo
- della memoria, il supporto multiprocessore (SMP), i driver dei
- vari dispositivi, ecc.</para>
-
- <para><emphasis>Diversamente dal kernel Linux, ci sono differenti
- kernel BSD con differenti caratteristiche.</emphasis></para>
- </listitem>
-
- <listitem>
- <para>La libreria C, le API di base per il sistema.</para>
-
- <para><emphasis>La libreria C BSD è basata su codice proveniente
- da Berkeley, non dal progetto GNU.</emphasis></para>
- </listitem>
-
- <listitem>
- <para>Utilità come shell, file manager, compilatori e
- linker.</para>
-
- <para><emphasis>Alcune delle applicazioni derivano dal
- progetto GNU, altre no.</emphasis></para>
- </listitem>
-
- <listitem>
- <para>L'X Window System, che gestisce la visualizzazione grafica.</para>
-
- <para>L'X Window System usato nella maggior parte delle versioni di
- BSD viene mantenuto da uno dei due progetti separati, il
- <link xlink:href="http://www.XFree86.org/">progetto &xfree86;</link> e il
- <link xlink:href="http://www.X.org/">progetto X.Org</link>.
- Questo è lo stesso codice usato da Linux. BSD in genere non
- specifica un <quote>desktop grafico</quote> come GNOME o KDE,
- anche se questi sono disponibili.</para>
- </listitem>
-
- <listitem>
- <para>Molti altri programmi ed utilità.</para>
- </listitem>
- </itemizedlist>
- </sect1>
-
- <sect1 xml:id="what-a-real-unix">
- <title>Cosa, un vero &unix;?</title>
-
- <para>I sistemi operativi BSD non sono cloni, ma derivati open source
- del sistema operativo &unix; dell'AT&amp;T Research, che è anche
- l'antenato del moderno &unix; System V. Questo potrebbe sorprendere.
- Come è potuto accadere questo, se la AT&amp;T non ha mai rilasciato
- il suo codice come open source?</para>
-
- <para>È vero che lo &unix; AT&amp;T non è open source, e nel
- senso del copyright BSD in definitiva <emphasis>non è</emphasis>
- &unix;, ma d'altro canto l'AT&amp;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 <emphasis>Berkeley Software Distribution</emphasis> o
- <emphasis>BSD</emphasis>.</para>
-
- <para>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 <emphasis>Internet Protocols</emphasis>,
- e in seguito come <emphasis>TCP/IP</emphasis>, ai nomi dei protocolli
- più importanti. La prima implementazione distribuita in maniera
- estesa fu parte di 4.2BSD, nel 1982.</para>
-
- <para>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&amp;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 <emphasis>csh</emphasis> e l'editor <emphasis>vi</emphasis>.
- Complessivamente, questi miglioramenti furono conosciuti
- come le <emphasis>Estensioni Berkeley</emphasis>.</para>
-
- <para>Il nastro BSD conteneva codice AT&amp;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&amp;T.
- Ciò accadde infine con il <emphasis>Networking Tape 2</emphasis>,
- in genere noto come <emphasis>Net/2</emphasis>. 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 <emphasis>386BSD</emphasis>.
- Allo stesso tempo, un altro gruppo di ex membri del CSRG formò una
- compagnia chiamata <link xlink:href="http://www.bsdi.com/">Berkeley Software
- Design Inc.</link> e rilasciò una versione beta di un sistema
- operativo chiamato <link xlink:href="http://www.bsdi.com/">BSD/386</link>,
- che era basato sugli stessi sorgenti. Il nome del sistema operativo
- è cambiato di recente in BSD/OS.</para>
-
- <para>386BSD non divenne mai un sistema operativo stabile. Invece, due
- altri progetti se ne distaccarono nel 1993:
- <link xlink:href="http://www.NetBSD.org/">NetBSD</link> e
- <link xlink:href="&url.base;/index.html">FreeBSD</link>.
- 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,
- <link xlink:href="http://www.OpenBSD.org/">OpenBSD</link> si ramificò
- da NetBSD, e nel 2003,
- <link xlink:href="http://www.dragonflybsd.org/">DragonFlyBSD</link> si
- ramificò da FreeBSD.</para>
- </sect1>
-
- <sect1 xml:id="why-is-bsd-not-better-known">
- <title>Perché BSD non è più conosciuto?</title>
-
- <para>Per un certo numero di ragioni, BSD è relativamente
- sconosciuto:</para>
-
- <orderedlist>
- <listitem>
- <para>Gli sviluppatori BSD sono spesso più interessati
- a ripulire il loro codice che a fagli pubblicità.</para>
- </listitem>
-
- <listitem>
- <para>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.</para>
- </listitem>
-
- <listitem>
- <para>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.</para>
- </listitem>
-
- <listitem>
- <para>Nel 1992, l'AT&amp;T citò in giudizio
- <link xlink:href="http://www.bsdi.com/">BSDI</link>,
- il produttore di BSD/386, sostenendo che il prodotto conteneva
- codice sotto copyright della AT&amp;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 <quote>concluso
- recentemente</quote>.</para>
-
- <para>Un dettaglio che venne chiarito dall'azione legale fu il nome:
- negli anni '80, BSD era stato conosciuto come <quote>BSD
- &unix;</quote>.
- Con l'eliminazione delle ultima vestigia del codice AT&amp;T da BSD,
- si era perso anche il diritto di usare il nome &unix;. Per questo
- noterete riferimenti nei libri al <quote>sistema operativo 4.3BSD
- &unix;</quote> ed al <quote>sistema operativo 4.4BSD</quote>.</para>
- </listitem>
-
- <listitem>
- <para>C'è una certa percezione che il progetto BSD sia
- frammentato e belligerante. Il <link xlink:href="http://interactive.wsj.com/bin/login?Tag=/&amp;URI=/archive/retrieve.cgi%253Fid%253DSB952470579348918651.djm&amp;">Wall
- Street Journal</link> parlò di
- <quote>balcanizzazione</quote> dei progetti BSD. Come per l'azione
- legale, questa percezione si basa principalmente su vecchie
- storie.</para>
- </listitem>
- </orderedlist>
- </sect1>
-
- <sect1 xml:id="comparing-bsd-and-linux">
- <title>Paragone tra BSD e Linux</title>
-
- <para>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.</para>
-
- <sect2>
- <title>Chi possiede BSD?</title>
-
- <para>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.</para>
- </sect2>
-
- <sect2>
- <title>Come viene sviluppato ed aggiornato BSD?</title>
-
- <para>I kernel BSD vengono sviluppati ed aggiornati
- seguendo il modello di sviluppo open source. Ogni progetto mantiene
- un <emphasis>albero dei sorgenti</emphasis> liberamente accessibile in
- un <link xlink:href="http://www.cvshome.org/">Concurrent Versions
- System</link>, 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 <quote>estrarre</quote> (in sostanza,
- estrarre una copia di) ogni versione desiderata del sistema.</para>
-
- <para>Un grande numero di sviluppatori da tutto il mondo contribuisce al
- miglioramento di BSD. Essi sono divisi in tre grandi gruppi:</para>
-
- <itemizedlist>
- <listitem>
- <para>I <firstterm>contributor</firstterm> 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 <emphasis>committer</emphasis>.</para>
- </listitem>
-
- <listitem>
- <para>I <firstterm>committer</firstterm> 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.</para>
-
- <para>
- È 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 <firstterm>marcia
- indietro</firstterm>.
- Tutti i committer ricevono una lettera che descrive ogni
- modifica individuale, dunque non è possibile effettuare un
- commit segretamente.</para>
- </listitem>
-
- <listitem>
- <para>Il <firstterm>Core Team</firstterm>. 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.</para>
- </listitem>
- </itemizedlist>
-
- <para>Questa organizzazione differisce da Linux in vari modi:</para>
-
- <orderedlist>
- <listitem>
- <para>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.</para>
- </listitem>
-
- <listitem>
- <para>D'altra parte, <emphasis>c'è</emphasis> un deposito
- centrale, un punto singolo dove è possibile trovare i
- sorgenti dell'intero sistema, incluse tutte le vecchie
- versioni.</para>
- </listitem>
-
- <listitem>
- <para>I progetti BSD mantengono l'intero <quote>Sistema
- Operativo</quote>, 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.</para>
- </listitem>
-
- <listitem>
- <para>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.</para>
- </listitem>
- </orderedlist>
- </sect2>
-
- <sect2>
- <title>Release di BSD</title>
-
- <para>FreeBSD, NetBSD and OpenBSD forniscono il sistema in tre
- <quote>release</quote> 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:</para>
-
- <orderedlist>
- <listitem>
- <para>la versione di sviluppo del sistema è chiamata
- <firstterm>CURRENT</firstterm>. 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
- (<quote>OpenBSD-current</quote>).
- Tutti gli sviluppi del sistema vanno in questo ramo.</para>
- </listitem>
-
- <listitem>
- <para>A intervalli regolari, tra le due e le quattro volte all'anno, i
- progetti fanno uscire una versione <firstterm>RELEASE</firstterm>
- 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
- <emphasis>patch release</emphasis>, versioni con solo piccole
- correzioni, con una terza cifra, ad esempio NetBSD 1.4.2.</para>
- </listitem>
-
- <listitem>
- <para>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
- <firstterm>STABLE</firstterm>, 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.</para>
- </listitem>
- </orderedlist>
-
- <para><emphasis>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 <quote>TurboLinux 6.0 con kernel
- 2.2.14</quote></emphasis></para>
- </sect2>
-
- <sect2>
- <title>Quali versioni di BSD sono disponibili?</title>
-
- <para>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.</para>
-
- <para>È difficile catalogare gli obiettivi di ogni progetto:
- le differenze sono molto soggettive. Di base,</para>
-
- <itemizedlist>
- <listitem>
- <para>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 (<quote>PC</quote>), 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.</para>
- </listitem>
-
- <listitem>
- <para>NetBSD punta alla massima portabilità: <quote>of course
- it runs NetBSD</quote>, 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.</para>
- </listitem>
-
- <listitem>
- <para>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.</para>
- </listitem>
-
- <listitem>
- <para>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.</para>
- </listitem>
- </itemizedlist>
-
- <para>Ci sono anche altri due sistemi operativi BSD che non sono open
- source, BSD/OS e il &macos; X della Apple:</para>
-
- <itemizedlist>
- <listitem>
- <para>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.</para>
- </listitem>
-
- <listitem>
- <para><link xlink:href="http://www.apple.com/macosx/server/">&macos;
- X</link> è l'ultima versione del sistema operativo per
- la linea &macintosh; della <link xlink:href="http://www.apple.com/">Apple
- Computer Inc.</link>. L'anima BSD &unix; di questo sistema
- operativo, <link xlink:href="http://developer.apple.com/darwin/">Darwin</link>, è
- 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.</para>
- </listitem>
- </itemizedlist>
- </sect2>
-
- <sect2>
- <title>Come differisce la licenza BSD dalla GNU Public?</title>
-
- <para>Linux è disponibile con licenza <link xlink:href="http://www.fsf.org/copyleft/gpl.html">GNU General Public
- License</link> (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 <link xlink:href="http://www.opensource.org/licenses/bsd-license.html">licenza
- BSD</link> è meno restrittiva: le distribuzioni dei soli
- binari sono permesse. Ciò è particolarmente attraente per
- le applicazioni embedded.</para>
- </sect2>
-
- <sect2>
- <title>Cos'altro dovrei sapere?</title>
-
- <para>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.</para>
-
- <para>La natura <quote>tutto da una sola fonte</quote> 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.</para>
- </sect2>
-
- <sect2>
- <title>Cosa dovrei usare, BSD o Linux?</title>
-
- <para>Cosa significa tutto questo in pratica? Chi dovrebbe usare BSD, chi
- dovrebbe usare Linux?</para>
-
- <para>Questa è una domanda molto difficile a cui rispondere. Qui
- ci sono alcune linee guida:</para>
-
- <itemizedlist>
- <listitem>
- <para><quote>Se non è rotto, non aggiustarlo</quote>: se usi
- già un sistema operativo open source, e ne sei soddisfatto,
- probabilmente non c'è ragione di cambiare.</para>
- </listitem>
-
- <listitem>
- <para>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.</para>
- </listitem>
-
- <listitem>
- <para>In generale, i sistemi BSD hanno una reputazione migliore di
- affidabilità, principalmente come risultato di una base di
- codice più maturo.</para>
- </listitem>
-
- <listitem>
- <para>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.</para>
- </listitem>
-
- <listitem>
- <para>La licenza BSD può essere più attraente della
- GPL.</para>
- </listitem>
-
- <listitem>
- <para>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.</para>
- </listitem>
- </itemizedlist>
- </sect2>
-
- <sect2>
- <title>Chi fornisce supporto, servizi, e training su BSD?</title>
-
- <para>BSDi / <link xlink:href="http://www.freebsdmall.com">FreeBSD
- Mall, Inc.</link> forniscono contratti di supporto per
- FreeBSD da quasi un decennio.</para>
-
- <para>Inoltre, ognuno dei progetti ha una lista di consulenti a pagamento:
- <link xlink:href="&url.base;/commercial/consult_bycat.html">FreeBSD</link>,
- <link xlink:href="http://www.netbsd.org/gallery/consultants.html">NetBSD</link>,
- e <link xlink:href="http://www.openbsd.org/support.html">OpenBSD</link>.</para>
- </sect2>
- </sect1>
-</article>
diff --git a/it_IT.ISO8859-15/articles/filtering-bridges/Makefile b/it_IT.ISO8859-15/articles/filtering-bridges/Makefile
deleted file mode 100644
index 25cdb8103e..0000000000
--- a/it_IT.ISO8859-15/articles/filtering-bridges/Makefile
+++ /dev/null
@@ -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"
diff --git a/it_IT.ISO8859-15/articles/filtering-bridges/article.xml b/it_IT.ISO8859-15/articles/filtering-bridges/article.xml
deleted file mode 100644
index 3d15c380c4..0000000000
--- a/it_IT.ISO8859-15/articles/filtering-bridges/article.xml
+++ /dev/null
@@ -1,429 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-15"?>
-<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
- "http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
-<!--
- The FreeBSD Italian Documentation Project
-
- $FreeBSD$
- Original revision: 1.21
--->
-<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="it">
- <info><title>Filtering Bridges</title>
-
-
- <authorgroup>
- <author><personname><firstname>Alex</firstname><surname>Dupre</surname></personname><affiliation>
- <address><email>ale@FreeBSD.org</email></address>
- </affiliation></author>
- </authorgroup>
-
- <legalnotice xml:id="trademarks" role="trademarks">
- &tm-attrib.freebsd;
- &tm-attrib.3com;
- &tm-attrib.intel;
- &tm-attrib.general;
- </legalnotice>
-
- <pubdate>$FreeBSD$</pubdate>
-
- <releaseinfo>$FreeBSD$</releaseinfo>
-
- <abstract>
- <para>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.</para>
-
- <para>Un bridge funziona individuando gli indirizzi del livello
- <acronym>MAC</acronym> (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.</para>
- </abstract>
- </info>
-
- <sect1 xml:id="filtering-bridges-why">
- <title>Perché usare un filtering bridge?</title>
-
- <para>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 (<acronym>ISP</acronym>), vuoi perché il router non
- supporta tali funzionalità. È in questi casi che l'utilizzo
- di un filtering bridge diventa altamente consigliato.</para>
-
- <para>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.</para>
-
- <note>
- <para>La traduzione italiana di <quote>firewall</quote> è
- <quote>muro anti incendio</quote>, <emphasis>non</emphasis>
- <quote>muro di fuoco</quote> come molti pensano. Nel corso
- dell'articolo, comunque, manterrò i termini tecnici nella loro
- lingua originale in modo da non creare confusione o
- ambiguità.</para>
- </note>
- </sect1>
-
- <sect1 xml:id="filtering-bridges-how">
- <title>Metodi d'installazione</title>
-
- <para>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.</para>
-
- <important>
- <para><emphasis>Non</emphasis> seguite entrambe le istruzioni: le
- procedure sono <emphasis>a esclusione</emphasis>. Scegliete
- l'alternativa che meglio si adatta alle vostre esigenze e
- capacità.</para>
- </important>
-
- <para>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
- &etherexpress; 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.</para>
-
- <sect2 xml:id="filtering-bridges-kernel">
- <title>Configurazione del Kernel</title>
-
- <para>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:</para>
-
- <programlisting>options BRIDGE
-options IPFIREWALL
-options IPFIREWALL_VERBOSE</programlisting>
-
- <para>La prima riga serve a compilare il supporto per il bridge, la
- seconda il firewall e la terza le funzioni di logging del firewall.
- </para>
-
- <para>Adesso è necessario compilare e installare il nuovo kernel.
- Si possono trovare le istruzioni nella sezione <link xlink:href="&url.books.handbook;/kernelconfig-building.html">
- Building and Installing a Custom Kernel</link> dell'handbook.</para>
- </sect2>
-
- <sect2 xml:id="filtering-bridges-modules">
- <title>Caricamento dei Moduli</title>
-
- <para>Se avete deciso di usare il nuovo e più semplice metodo di
- installazione, l'unica cosa da fare è aggiungere la seguente riga
- al file <filename>/boot/loader.conf</filename>:</para>
-
- <programlisting>bridge_load="YES"</programlisting>
-
- <para>In questo modo all'avvio della macchina verrà caricato
- insieme al kernel anche il modulo <filename>bridge.ko</filename>. Non
- è necessario invece aggiungere una riga per il modulo
- <filename>ipfw.ko</filename> in quanto verrà caricato in
- automatico dallo script <filename>/etc/rc.network</filename> dopo aver
- seguito i passi della prossima sezione.</para>
- </sect2>
- </sect1>
-
- <sect1 xml:id="filtering-bridges-finalprep">
- <title>Preparativi finali</title>
-
- <para>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 <filename>/etc/rc.conf</filename>. La regola di
- default del firewall è di rifiutare tutti i pacchetti IP. Per
- iniziare attiviamo il firewall in modalità <option>open</option>,
- 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 <filename>/etc/rc.conf</filename>:</para>
-
- <programlisting>firewall_enable="YES"
-firewall_type="open"
-firewall_quiet="YES"
-firewall_logging="YES"</programlisting>
-
- <para>La prima riga serve ad attivare il firewall (e a caricare il modulo
- <filename>ipfw.ko</filename> nel caso non fosse già compilato nel
- kernel), la seconda a impostarlo in modalità
- <option>open</option> (come descritto nel file
- <filename>/etc/rc.firewall</filename>), la terza a non
- visualizzare il caricamento delle regole e la quarta ad abilitare il
- supporto per il logging.</para>
-
- <para>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 <acronym>DNS</acronym>), visto che il
- bridge verrà attivato alla fine della procedura di avvio. Questo
- vuol dire che l'interfaccia <filename>fxp0</filename> (nel nostro
- caso) deve essere menzionata nella sezione ifconfig del file
- <filename>/etc/rc.conf</filename>, mentre la <filename>xl0</filename>
- 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.</para>
-
- <para>C'è un'altra cosa importante da sapere. Quando si utilizza IP
- sopra Ethernet ci sono due protocolli Ethernet in uso: uno è IP,
- l'altro è <acronym>ARP</acronym>. <acronym>ARP</acronym> permette
- la conversione dell'indirizzo IP di una macchina nel suo indirizzo
- Ethernet (livello <acronym>MAC</acronym>). Affinché due macchine
- separate dal bridge riescano a comunicare tra loro è necessario che
- il bridge lasci passare i pacchetti <acronym>ARP</acronym>. 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
- <acronym>ARP</acronym>) verranno inoltrati senza essere filtrati, anche se
- il firewall è configurato per non lasciar passare nulla.</para>
-
- <para>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à <option>open</option>, non impedirà nessuna
- operazione.</para>
-
- <para>Se ci dovessero essere dei problemi, è il caso di scoprire ora
- da cosa derivino e risolverli prima di continuare.</para>
- </sect1>
-
- <sect1 xml:id="filtering-bridges-enabling">
- <title>Attivazione del Bridge</title>
-
- <para>A questo punto, per attivare il bridge, bisogna eseguire i seguenti
- comandi (avendo l'accortezza di sostituire i nomi delle due interfacce di
- rete <filename>fxp0</filename> e <filename>xl0</filename> con i
- propri):</para>
-
- <screen>&prompt.root; <userinput>sysctl net.link.ether.bridge.config=fxp0:0,xl0:0</userinput>
-&prompt.root; <userinput>sysctl net.link.ether.bridge.ipfw=1</userinput>
-&prompt.root; <userinput>sysctl net.link.ether.bridge.enable=1</userinput></screen>
-
- <para>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.</para>
-
- <note>
- <para>Se hai &os;&nbsp;5.1-RELEASE o precedenti le variabili sysctl
- sono chiamate in modo differente. Guarda &man.bridge.4; per i
- dettagli.</para>
- </note>
-
- <para>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
- <literal>net.link.ether.bridge.[blah]=[blah]</literal>
- di queste righe al file <filename>/etc/sysctl.conf</filename>, in modo che
- vengano eseguite all'avvio della macchina.</para>
- </sect1>
-
- <sect1 xml:id="filtering-bridges-ipfirewall">
- <title>Configurazione del Firewall</title>
-
- <para>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 <option>out</option>
- oppure <option>xmit</option> non verrà mai eseguita. Personalmente
- uso <option>in via</option> che è una sintassi più antica,
- ma che ha un senso quando la si legge.
- Un'altra limitazione è che si possono usare solo i comandi
- <option>pass</option> e <option>drop</option> per i pacchetti filtrati
- dal bridge. Cose avanzate come <option>divert</option>,
- <option>forward</option> o <option>reject</option> 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).</para>
-
- <para>Nuovo in FreeBSD 4.0 è il concetto di stateful filtering.
- Questo è un grande miglioramento per il traffico
- <acronym>UDP</acronym>, 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ò
- <quote>ricordarsi</quote> di un pacchetto <acronym>UDP</acronym> in
- uscita e permette una risposta nei minuti successivi, gestire i
- servizi <acronym>UDP</acronym> è semplice.
- L'esempio seguente mostra come fare. La stessa cosa è
- possibile farla con i pacchetti <acronym>TCP</acronym>. 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.</para>
-
- <para>Vediamo un esempio di configurazione. Bisogna notare che all'inizio
- del file <filename>/etc/rc.firewall</filename> ci sono già delle
- regole standard per l'interfaccia di loopback
- <filename>lo0</filename>, quindi non ce ne occuperemo più ora.
- Le regole personalizzate andrebbero messe in un file a parte (per esempio
- <filename>/etc/rc.firewall.local</filename>) e caricate all'avvio
- modificando la riga del file <filename>/etc/rc.conf</filename> dove era
- stata definita la modalità <option>open</option> con:</para>
-
- <programlisting>firewall_type="/etc/rc.firewall.local"</programlisting>
-
- <important>
- <para>Bisogna specificare il path <emphasis>completo</emphasis>
- del file, altrimenti non verrà caricato con il rischio di
- rimanere tagliati fuori dalla rete.</para>
- </important>
-
- <para>Per il nostro esempio immaginiamo di avere l'interfaccia
- <filename>fxp0</filename> collegata all'esterno (Internet) e la
- <filename>xl0</filename> verso l'interno (<acronym>LAN</acronym>).
- La macchina bridge ha assegnato l'IP
- <systemitem class="ipaddress">1.2.3.4</systemitem>
- (è impossibile che il vostro <acronym>ISP</acronym> vi assegni un
- indirizzo simile a questo, ma per l'esempio va bene).</para>
-
- <programlisting># 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</programlisting>
-
- <para>Coloro che hanno configurato un firewall in precedenza potrebbero aver
- notato che manca qualcosa. In particolare, non ci sono regole contro lo
- spoofing, difatti <emphasis>non</emphasis> abbiamo aggiunto:</para>
-
- <programlisting>add deny all from 1.2.3.4/8 to any in via fxp0</programlisting>
-
- <para>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'è <emphasis>almeno</emphasis> un host
- sull'interfaccia esterna che non si può ignorare: il router.
- Solitamente, però, gli <acronym>ISP</acronym> eseguono il controllo
- anti-spoof sui loro router e quindi non ce ne dobbiamo preoccupare.</para>
-
- <para>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.</para>
-
- <para>Ci sono due regole per permettere il traffico <acronym>SMTP</acronym>
- e <acronym>DNS</acronym> 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é
- <quote>relay</quote> e <quote>ns</quote>
- siano interpretati correttamente, la risoluzione dei nomi deve funzionare
- <emphasis>prima</emphasis> 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).</para>
-
- <para>Le persone che sono solite configurare un firewall probabilmente
- avranno sempre usato una regola <option>reset</option> o
- <option>forward</option> per i pacchetti
- ident (porta 113 <acronym>TCP</acronym>). 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
- <acronym>IRC</acronym> (le richieste ident devono andare in
- timeout).</para>
-
- <para>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 <literal>in via
- fxp0</literal> funzionano in entrambi i casi.
- In generale, se usate regole <option>in via</option> attraverso il
- packet filter, dovrete fare un'eccezione per i pacchetti generati
- localmente, in quanto non entrano tramite nessuna interfaccia.</para>
- </sect1>
-
- <sect1 xml:id="filtering-bridges-contributors">
- <title>Contributi</title>
-
- <para>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.</para>
-
- <para>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.</para>
- </sect1>
-</article>
diff --git a/it_IT.ISO8859-15/articles/new-users/Makefile b/it_IT.ISO8859-15/articles/new-users/Makefile
deleted file mode 100644
index 9254148082..0000000000
--- a/it_IT.ISO8859-15/articles/new-users/Makefile
+++ /dev/null
@@ -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"
diff --git a/it_IT.ISO8859-15/articles/new-users/article.xml b/it_IT.ISO8859-15/articles/new-users/article.xml
deleted file mode 100644
index 35a3de90cb..0000000000
--- a/it_IT.ISO8859-15/articles/new-users/article.xml
+++ /dev/null
@@ -1,1073 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-15"?>
-<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
- "http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
-<!--
- The FreeBSD Italian Documentation Project
-
- $FreeBSD$
- Original revision: 1.48
--->
-<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="it">
- <info><title>Per chi è alle Prime Armi sia con FreeBSD che con
- &unix;</title>
-
-
- <authorgroup>
- <author><personname><firstname>Annelise</firstname><surname>Anderson</surname></personname><affiliation>
- <address><email>andrsn@andrsn.stanford.edu</email></address>
- </affiliation></author>
- </authorgroup>
-
- <pubdate>15 Agosto 1997</pubdate>
-
- <legalnotice xml:id="trademarks" role="trademarks">
- &tm-attrib.freebsd;
- &tm-attrib.ibm;
- &tm-attrib.microsoft;
- &tm-attrib.netscape;
- &tm-attrib.opengroup;
- &tm-attrib.general;
- </legalnotice>
-
- <releaseinfo>$FreeBSD$</releaseinfo>
-
- <abstract>
- <para>Congratulazioni per aver installato FreeBSD! Questa introduzione
- é per chi é alle prime armi con FreeBSD
- <emphasis>e</emphasis> &unix;&mdash;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)&mdash;e sei probabilmente abbastanza bravo
- con DOS/&windows; o &os2;.</para>
-
- &trans.it.max;
- </abstract>
- </info>
-
- <sect1>
- <title>Entrare ed Uscire dal Sistema</title>
-
- <para>Entra (quando vedi <prompt>login:</prompt>) come l'utente che
- hai creato durante l'installazione oppure come
- <systemitem class="username">root</systemitem>. (La tua installazione di FreeBSD dovrebbe
- già avere un account di <systemitem class="username">root</systemitem>; 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 <systemitem class="username">root</systemitem>.</para>
-
- <para>Per uscire (e ritrovarsi con un nuovo prompt <prompt>login:</prompt>)
- scrivi</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>exit</userinput></screen>
- </informalexample>
-
- <para>tante volte quanto serve. Sì, premi
- <keysym>invio</keysym> dopo ogni comando, e ricordati che &unix; fa
- distinzione tra maiuscole e minuscole&mdash;perciò
- <command>exit</command>, non <command>EXIT</command>.</para>
-
- <para>Per spegnere il computer digita</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>/sbin/shutdown -h now</userinput></screen>
- </informalexample>
-
- <para>O per riavviarlo digita</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>/sbin/shutdown -r now</userinput></screen>
- </informalexample>
-
- <para>oppure</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>/sbin/reboot</userinput></screen>
- </informalexample>
-
- <para>Puoi anche riavviarlo premendo
- <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>Canc</keycap></keycombo>.
- Lasciagli un po' di tempo per compiere il suo lavoro. Questo equivale a
- <command>/sbin/reboot</command> nelle versioni più recenti di
- FreeBSD ed è molto meglio che premere il bottone di reset.
- Non vorrai mica reinstallare tutto da capo, vero?</para>
- </sect1>
-
- <sect1>
- <title>Aggiungere un Utente con Privilegi di Root</title>
-
- <para>Se non hai creato un utente durante l'installazione e quindi
- sei entrato nel sistema come <systemitem class="username">root</systemitem>, dovresti
- probabilmente crearne uno ora tramite</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>adduser</userinput></screen>
- </informalexample>
-
- <para>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
- <command>sh</command> come default. Altrimenti premi solo invio
- per accettare i valori proposti. Questi dati vengono salvati in
- <filename>/etc/adduser.conf</filename>, un file modificabile
- successivamente a mano.</para>
-
- <para>Supponiamo che tu voglia creare l'utente <systemitem class="username">jack</systemitem> di
- nome reale <emphasis>Jack Benimble</emphasis>. Assegna a
- <systemitem class="username">jack</systemitem> 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
- <systemitem class="username">jack</systemitem> in un altro gruppo, digita
- <systemitem class="groupname">wheel</systemitem></para>
-
- <informalexample>
- <screen>Login group is ``jack''. Invite jack into other groups: <userinput>wheel</userinput></screen>
- </informalexample>
-
- <para>Questo ti permetterà di entrare come l'utente
- <systemitem class="username">jack</systemitem> e usare il comando &man.su.1;
- per diventare <systemitem class="username">root</systemitem>. A quel punto non sarai
- più preso in giro per essere entrato direttamente come
- <systemitem class="username">root</systemitem>.</para>
-
- <para>Puoi uscire da <command>adduser</command> in qualsiasi momento
- premendo <keycombo><keycap>Ctrl</keycap><keycap>C</keycap></keycombo>,
- e alla fine avrai l'opportunità di approvare il nuovo utente oppure
- premere <keycap>n</keycap> per non farlo. Potresti voler creare un
- secondo utente cosicché quando andrai a modificare i file
- di <systemitem class="username">jack</systemitem> avrai un'ancora di salvezza in caso qualcosa
- vada male.</para>
-
- <para>Una volta fatto questo, usa <command>exit</command> per tornare al
- prompt di login ed entrare come <systemitem class="username">jack</systemitem>.
- In generale è meglio cercare di lavorare da utente normale
- in modo da non avere il potere&mdash;e il rischio&mdash;di
- <systemitem class="username">root</systemitem>.</para>
-
- <para>Se hai già creato un utente e vuoi che quell'utente sia in
- grado di usare <command>su</command> per diventare
- <systemitem class="username">root</systemitem>, puoi entrare come <systemitem class="username">root</systemitem> e
- modificare il file <filename>/etc/group</filename>, aggiungendo
- <systemitem class="username">jack</systemitem> alla prima linea (il gruppo
- <systemitem class="groupname">wheel</systemitem>). Ma prima devi fare pratica con
- &man.vi.1;, l'editor di testo&mdash;oppure usa il più semplice
- &man.ee.1;, installato sulle recenti versioni di FreeBSD.</para>
-
- <para>Per cancellare un utente, usa il comando
- <command>rmuser</command>.</para>
- </sect1>
-
- <sect1>
- <title>Diamoci un'occhiata in giro</title>
-
- <para>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.</para>
-
- <para>Ecco qui una lista di comandi e le loro funzioni:</para>
-
- <variablelist>
- <varlistentry>
- <term><command>id</command></term>
-
- <listitem>
- <para>Ti dice chi sei!</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>pwd</command></term>
-
- <listitem>
- <para>Ti mostra dove sei&mdash;la directory in cui stai
- lavorando.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>ls</command></term>
-
- <listitem>
- <para>Ti mostra una lista dei file contenuti nella directory.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>ls -F</command></term>
-
- <listitem>
- <para>Ti mostra un elenco dei file contenuti nella directory ponendo
- <literal>*</literal> dopo i file eseguibili,
- <literal>/</literal> dopo le directory, e
- <literal>@</literal> dopo i collegamenti simbolici.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>ls -l</command></term>
-
- <listitem>
- <para>Mostra un elenco di file nel formato lungo&mdash;grandezza,
- data, permessi.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>ls -a</command></term>
-
- <listitem>
- <para>Mostra una lista dei file nascosti, cioè con un
- <quote>punto</quote> davanti al nome, insieme agli altri.
- Se sei <systemitem class="username">root</systemitem>, i file <quote>puntati</quote>
- vengono mostrati anche senza l'opzione <option>-a</option>.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>cd</command></term>
-
- <listitem>
- <para>Cambia la directory di lavoro. <command>cd
- ..</command> torna alla directory
- superiore; nota lo spazio dopo <command>cd</command>. <command>cd
- /usr/local</command> va nella directory
- specificata. <command>cd ~</command> va
- nella directory home dell'utente collegato in quel
- momento&mdash;per esempio, <filename>/usr/home/jack</filename>.
- Prova <command>cd /cdrom</command>, e poi
- <command>ls</command>, per scoprire se il tuo CDROM è
- montato e funziona.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>view
- nomefile</command></term>
-
- <listitem>
- <para>Mostra il contenuto del file (chiamato
- <replaceable>nomefile</replaceable>) senza modificarlo.
- Prova <command>view
- /etc/fstab</command>.
- Digita <command>:q</command> per uscire.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>cat nomefile</command></term>
-
- <listitem>
- <para>Mostra <replaceable>nomefile</replaceable> sullo schermo.
- Se è troppo lungo e ne puoi vedere solo la fine,
- premi <keycap>BlocScorr</keycap> e usa
- <keycap>freccia-su</keycap> per muoverti in alto; puoi usare
- <keycap>BlocScorr</keycap> anche con le pagine man. Premi ancora
- <keycap>BlocScorr</keycap> per uscire dallo scorrimento. Potresti
- provare <command>cat</command> con alcuni dei file
- nascosti presenti nella tua directory home&mdash;<command>cat
- .cshrc</command>, <command>cat
- .login</command>, <command>cat
- .profile</command>.</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <para>Noterai degli alias in <filename>.cshrc</filename> per
- alcuni dei comandi <command>ls</command> (sono molto
- convenienti). Puoi creare degli altri alias modificando
- <filename>.cshrc</filename>. Puoi far sì che questi alias
- diventino disponibili a tutti gli utenti mettendoli nel file
- di configurazione generale di <command>csh</command>,
- <filename>/etc/csh.cshrc</filename>.</para>
- </sect1>
-
- <sect1>
- <title>Ottenere Aiuto e Informazioni</title>
-
- <para>Ecco alcune risorse utili per ottenere aiuto.
- <replaceable>Testo</replaceable> è qualcosa che puoi
- digitare a tuo piacere&mdash;normalmente si tratta di un comando
- o del nome di un file.</para>
-
- <variablelist>
- <varlistentry>
- <term><command>apropos
- testo</command></term>
-
- <listitem>
- <para>Tutto ciò che contiene la stringa
- <replaceable>testo</replaceable> nel <database>database
- whatis</database>.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>man
- testo</command></term>
-
- <listitem>
- <para>Mostra la pagina man di <replaceable>testo</replaceable>,
- la maggior risorsa di documentazione per i sistemi Un*x.
- <command>man ls</command> ti dirà
- tutti i modi possibili per usare il comando <command>ls</command>.
- Premi <keycap>Invio</keycap> per muoverti nel testo,
- <keycombo><keycap>Ctrl</keycap><keycap>B</keycap></keycombo>
- per andare indietro di una pagina,
- <keycombo><keycap>Ctrl</keycap><keycap>F</keycap></keycombo>
- per andare avanti, <keycap>q</keycap> oppure
- <keycombo><keycap>Ctrl</keycap><keycap>C</keycap></keycombo>
- per uscire.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>which
- testo</command></term>
-
- <listitem>
- <para>Ti dice dove si trova il comando
- <replaceable>testo</replaceable> nel path dell'utente.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>locate
- testo</command></term>
-
- <listitem>
- <para>Ti dice tutte le directory nei path dell'utente in cui si trova
- il comando <replaceable>testo</replaceable>.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>whatis
- testo</command></term>
-
- <listitem>
- <para>Ti dice che cosa fa il comando
- <replaceable>testo</replaceable> e la sua pagina man.
- Digitando <command>whatis *</command> ti verranno presentate tutte
- le pagine man associate agli eseguibili presenti nella directory
- corrente.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>whereis
- testo</command></term>
-
- <listitem>
- <para>Trova il file <replaceable>testo</replaceable>, dandoti il suo
- percorso completo.</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <para>Potresti voler provare ad usare <command>whatis</command> con
- alcuni comandi utili come <command>cat</command>,
- <command>more</command>, <command>grep</command>,
- <command>mv</command>, <command>find</command>,
- <command>tar</command>, <command>chmod</command>,
- <command>chown</command>, <command>date</command>, e
- <command>script</command>. <command>more</command> ti permette
- di leggere una pagina alla volta come in DOS, ad esempio, <command>ls -l |
- more</command> oppure <command>more
- nomefile</command>.
- <literal>*</literal> ha valore assoluto&mdash;per esempio, <command>ls
- w*</command> mostra tutti i file che cominciano con
- <literal>w</literal>.</para>
-
- <para>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
- <systemitem class="username">root</systemitem> e lascia loro il tempo di finire il lavoro
- prima di farne partire un altro.</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>periodic daily</userinput>
-<lineannotation>output tralasciato</lineannotation>
-&prompt.root; <userinput>periodic weekly</userinput>
-<lineannotation>output tralasciato</lineannotation>
-&prompt.root; <userinput>periodic monthly</userinput>
-<lineannotation>output tralasciato</lineannotation></screen>
- </informalexample>
-
- <para>Se ti stufi di aspettare, premi
- <keycombo><keycap>Alt</keycap><keycap>F2</keycap></keycombo> per
- avere un'altra <firstterm>console virtuale</firstterm>, e poterti loggare
- nuovamente. Dopotutto è un sistema multi-utente, e multi-tasking.
- Probabilmente questi comandi produrranno dei messaggi sullo
- schermo quando lavorano; puoi digitare
- <command>clear</command> per pulire lo schermo.
- Quando hanno finito, dovresti dare un'occhiata a
- <filename>/var/mail/root</filename> e
- <filename>/var/log/messages</filename>.</para>
-
- <para>Usare tali comandi fa parte dell'amministrazione di
- sistema&mdash;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 <systemitem class="username">root</systemitem>
- è 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 <citetitle>UNIX System Administration
- Handbook</citetitle> di Evi Nemeth et.al. (Prentice-Hall, 1995,
- ISBN 0-13-15051-7)&mdash;la seconda edizione con la copertina rossa;
- oppure <citetitle>Essential System Administration</citetitle> di
- &AElig;leen Frisch (O'Reilly &amp; Associates, 2002, ISBN 0-596-00343-9).
- Io ho usato quello di Nemeth.</para>
- </sect1>
-
- <sect1>
- <title>Modificare File di Testo</title>
-
- <para>Per poter configurare il tuo sistema, devi modificare dei file. Molti
- di questi saranno in <filename>/etc</filename>; e avrai bisogno
- del comando <command>su</command> per diventare <systemitem class="username">root</systemitem>
- e poter così modificarli. Puoi usare il semplice editor
- <command>ee</command>, ma alla lunga risulta più utile imparare
- <command>vi</command>. C'é un eccellente tutorial su
- <command>vi</command> in
- <filename>/usr/src/contrib/nvi/docs/tutorial</filename> se hai installato
- i sorgenti di sistema.</para>
-
- <para>Prima di modificare un file, dovresti farne una copia.
- Supponiamo tu voglia modificare <filename>/etc/rc.conf</filename>. Puoi
- semplicemente usare <command>cd /etc</command> per andare in
- <filename>/etc</filename> e fare:</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>cp rc.conf rc.conf.orig</userinput></screen>
- </informalexample>
-
- <para>Questo copierà <filename>rc.conf</filename> in
- <filename>rc.conf.orig</filename>, e potrai successivamente copiare
- <filename>rc.conf.orig</filename> in
- <filename>rc.conf</filename> per tornare all'originale. Ma ancora meglio
- sarà spostare (rinominare) il file per poi ricopiarlo con il nome
- originale:</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>mv rc.conf rc.conf.orig</userinput>
-&prompt.root; <userinput>cp rc.conf.orig rc.conf</userinput></screen>
- </informalexample>
-
- <para>perché il comando <command>mv</command> mantiene
- la data e il proprietario originali del file. Puoi ora modificare
- <filename>rc.conf</filename>. Se vuoi tornare all'originale,
- potresti fare <userinput>mv rc.conf rc.conf.myedit</userinput>
- (assumendo che vuoi tenere la versione modificata) e
- quindi fare</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>mv rc.conf.orig rc.conf</userinput></screen>
- </informalexample>
-
- <para>per tornare allo stato iniziale.</para>
-
- <para>Per modificare un file, digita</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>vi nomefile</userinput></screen>
- </informalexample>
-
- <para>Muoviti nel testo con i tasti freccia.
- <keycap>Esc</keycap> mette <command>vi</command>
- in modalità comando. Ecco qui alcuni dei comandi:</para>
-
- <variablelist>
- <varlistentry>
- <term><command>x</command></term>
-
- <listitem>
- <para>cancella la lettera su cui si trova il cursore</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>dd</command></term>
-
- <listitem>
- <para>cancella l'intera riga (anche se va a capo sullo schermo)</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>i</command></term>
-
- <listitem>
- <para>inserisci del testo nella posizione del cursore</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>a</command></term>
-
- <listitem>
- <para>inserisci del testo dopo il cursore</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <para>Quando digiti <command>i</command> o <command>a</command>,
- puoi inserire del testo. <command>Esc</command> ti riporta in
- modalità comando dove puoi digitare</para>
-
- <variablelist>
- <varlistentry>
- <term><command>:w</command></term>
-
- <listitem>
- <para>per salvare le modifiche sul disco e continuare a
- modificare il file</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>:wq</command></term>
-
- <listitem>
- <para>per salvare le modifiche e uscire</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>:q!</command></term>
-
- <listitem>
- <para>per uscire senza salvare le modifiche</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>/testo</command></term>
-
- <listitem>
- <para>per spostare il cursore su <replaceable>testo</replaceable>;
- <command>/Invio</command>
- per trovare la prossima occorrenza di
- <replaceable>testo</replaceable>.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>G</command></term>
-
- <listitem>
- <para>per andare alla fine del file</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>nG</command></term>
-
- <listitem>
- <para>per andare alla riga <replaceable>n</replaceable> del
- file, dove <replaceable>n</replaceable> è un numero</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><keycombo><keycap>Ctrl</keycap><keycap>L</keycap></keycombo></term>
-
- <listitem>
- <para>per ridisegnare lo schermo</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><keycombo><keycap>Ctrl</keycap><keycap>b</keycap></keycombo> e
- <keycombo><keycap>Ctrl</keycap><keycap>f</keycap></keycombo></term>
-
- <listitem>
- <para>vai avanti e indietro di una pagina, come succede con
- <command>more</command> e <command>view</command>.</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <para>Fai un po' di pratica con <command>vi</command> nella tua directory
- home creando un nuovo file digitando <command>vi
- nomefile</command> e aggiungendo
- e cancellando del testo, salvando il file, e riaprendolo di nuovo.
- <command>vi</command> è 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 <command>vi</command>&mdash;è più potente
- dell'EDIT del DOS&mdash;scopri il comando <command>:r</command>)
- Usa <keycap>Esc</keycap> una o più volte per essere sicuro di
- essere in modalità comando e continua da lì quando hai dei
- problemi, salva spesso con <command>:w</command>, e usa
- <command>:q!</command> per uscire e ricominciare (dal tuo ultimo
- <command>:w</command>) quando ne hai bisogno.</para>
-
- <para>Ora puoi usare <command>cd</command> per andare in
- <filename>/etc</filename>, <command>su</command> per diventare
- <systemitem class="username">root</systemitem>, <command>vi</command> per modificare il file
- <filename>/etc/group</filename>, e aggiungere un utente al gruppo
- <systemitem class="groupname">wheel</systemitem> cosicché possa avere privilegi di
- <systemitem class="username">root</systemitem>. Aggiungi solo una virgola e il nome di login
- dell'utente alla fine della prima riga del file, premi
- <keycap>Esc</keycap>, e usa <command>:wq</command> per salvare
- il file su disco e uscire. La modifica ha effetto immediato. (Non hai
- lasciato uno spazio dopo la virgola, vero?)</para>
- </sect1>
-
- <sect1>
- <title>Stampa di File da DOS</title>
-
- <para>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 <command>man chmod</command> per leggere come
- fare. Il comando</para>
-
- <informalexample>
- <screen>&prompt.user; <userinput>man chmod | col -b &gt; chmod.txt</userinput></screen>
- </informalexample>
-
- <para>toglierà gli elementi di formattazione e manderà il
- tutto sul file <filename>chmod.txt</filename> al posto di mostrare il
- contenuto sullo schermo. Ora metti un dischetto formattato DOS nel
- lettore, digita <command>su</command> per diventare
- <systemitem class="username">root</systemitem>, e scrivi</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>/sbin/mount -t msdos /dev/fd0 /mnt</userinput></screen>
- </informalexample>
-
- <para>per montare il floppy su <filename>/mnt</filename>.</para>
-
- <para>Ora (non hai più bisogno di essere <systemitem class="username">root</systemitem>,
- e puoi digitare <command>exit</command> per tornare ad essere l'utente
- <systemitem class="username">jack</systemitem>) puoi andare nella directory in cui hai creato
- <filename>chmod.txt</filename> e copiare il file sul floppy
- digitando:</para>
-
- <informalexample>
- <screen>&prompt.user; <userinput>cp chmod.txt /mnt</userinput></screen>
- </informalexample>
-
- <para>e usare <command>ls /mnt</command> per vedere il
- contenuto di <filename>/mnt</filename>, che dovrebbe contenere il file
- <filename>chmod.txt</filename>.</para>
-
- <para>In particolare potresti voler creare un file con l'output di
- <filename>/sbin/dmesg</filename> digitando</para>
-
- <informalexample>
- <screen>&prompt.user; <userinput>/sbin/dmesg &gt; dmesg.txt</userinput></screen>
- </informalexample>
-
- <para>e copiare <filename>dmesg.txt</filename> sul floppy.
- <command>/sbin/dmesg</command> è 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&mdash;del tipo <quote>FreeBSD non trova il mio drive
- per i nastri, che cosa faccio?</quote>&mdash;la gente vorrà
- sapere cosa mostra il tuo <command>dmesg</command>.</para>
-
- <para>Ora devi smontare il floppy (da <systemitem class="username">root</systemitem>) per poter
- togliere il disco</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>/sbin/umount /mnt</userinput></screen>
- </informalexample>
-
- <para>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 <command>print</command>. (Copiare i file
- da FreeBSD su una partizione DOS montata è ancora in alcuni casi
- rischioso.)</para>
-
- <para>Far funzionare la stampante sotto FreeBSD consiste nel creare
- un opportuno elemento in <filename>/etc/printcap</filename> e
- creare una directory di spool corrispondente in
- <filename>/var/spool/output</filename>. Se la tua stampante è su
- <hardware>lpt0</hardware> (ciò che DOS chiama
- <hardware>LPT1</hardware>), devi solo andare in
- <filename>/var/spool/output</filename> e (da <systemitem class="username">root</systemitem>)
- creare la directory <filename>lpd</filename> digitando: <command>mkdir
- lpd</command>, se non è già presente. A quel punto la
- stampante dovrebbe rispondere quando il sistema parte, e
- <command>lp</command> o <command>lpr</command> dovrebbero mandare un
- file alla stampante. Che il file venga stampato o meno è solo
- questione di configurazione, che è discussa nel <link xlink:href="&url.books.handbook;/index.html">Manuale di FreeBSD</link>.</para>
- </sect1>
-
- <sect1>
- <title>Altri Comandi Utili</title>
-
- <variablelist>
- <varlistentry>
- <term><command>df</command></term>
-
- <listitem>
- <para>mostra lo spazio disponibile e tutte le partizioni
- montate.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>ps aux</command></term>
-
- <listitem>
- <para>mostra i processi in esecuzione. <command>ps ax</command>
- è una forma contratta.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>rm nomefile</command></term>
-
- <listitem>
- <para>cancella <replaceable>nomefile</replaceable>.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>rm -R dir</command></term>
-
- <listitem>
- <para>cancella la directory <replaceable>dir</replaceable> e tutte le
- sottodirectory&mdash;attenzione!</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>ls -R</command></term>
-
- <listitem>
- <para>mostra il contenuto della directory e delle sue
- sottodirectory; io usavo una variante, <command>ls -AFR &gt;
- where.txt</command>, per avere una lista dei file in
- <filename>/</filename> e (separatamente)
- <filename>/usr</filename> prima che scoprissi dei metodi migliori
- per cercare i file.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>passwd</command></term>
-
- <listitem>
- <para>per cambiare la password dell'utente (o di
- <systemitem class="username">root</systemitem>)</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>man hier</command></term>
-
- <listitem>
- <para>pagina man sul file system di &unix;</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <para>Usa <command>find</command> per trovare <filename>nomefile</filename>
- in <filename>/usr</filename> o nelle sue sottodirectory digitando</para>
-
- <informalexample>
- <screen>&prompt.user; <userinput>find /usr -name "nomefile"</userinput></screen>
- </informalexample>
-
- <para>Puoi usare <literal>*</literal> come identificatore universale in
- <parameter>"<replaceable>nomefile</replaceable>"</parameter>
- (che dovrebbe essere tra virgolette). Se dici a
- <command>find</command> di cercare in <filename>/</filename>
- anziché <filename>/usr</filename> cercherà il/i file su
- tutti i file system montati, inclusi i CDROM e le partizioni DOS.</para>
-
- <para>Un libro eccellente che tratta i comandi e le utility di &unix;
- è <citetitle>Unix for the Impatient</citetitle> di Abrahams &amp;
- Larson (2nd ed., Addison-Wesley, 1996).
- Ci sono anche un sacco di informazioni su &unix; su Internet.</para>
- </sect1>
-
- <sect1>
- <title>Prossimi Passi</title>
-
- <para>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 <link xlink:href="&url.base;/it/index.html">sito web di FreeBSD</link>. 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 <command>pkg_add
- /cdrom/packages/All/nomepackage</command>,
- dove <replaceable>nomepackage</replaceable> è il nome del file del
- package). Il CDROM ha una lista di package e di port
- con delle brevi descrizioni in <filename>cdrom/packages/index</filename>,
- <filename>cdrom/packages/index.txt</filename>, e
- <filename>cdrom/ports/index</filename>, e con descrizioni più ampie
- in <filename>/cdrom/ports/*/*/pkg/DESCR</filename>, dove
- <literal>*</literal> rappresenta rispettivamente sottodirectory di tipi di
- programmi e nomi di programmi.</para>
-
- <para>Se trovi il manuale troppo difficile su come installare i port dal
- CDROM (con il sistema di <command>lndir</command> e altro), ecco come
- funziona normalmente:</para>
-
- <para>Trova il port che vuoi, supponiamo <command>kermit</command>.
- Ci sarà una directory per lui sul CDROM. Copia la
- sottodirectory in <filename>/usr/local</filename> (un buon posto
- perché il software che aggiungi sia disponibile a tutti gli utenti)
- con:</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>cp -R /cdrom/ports/comm/kermit /usr/local</userinput></screen>
- </informalexample>
-
- <para>Questo dovrebbe portarti ad avere la sottodirectory
- <filename>/usr/local/kermit</filename> che contiene tutti i file
- presenti nella sottodirectory <command>kermit</command> del CDROM.</para>
-
- <para>Ora, crea la directory
- <filename>/usr/ports/distfiles</filename> se non esiste ancora,
- usando <command>mkdir</command>. Poi controlla
- <filename>/cdrom/ports/distfiles</filename> cercando un file
- con il nome che indica che si tratta del port esatto. Copia quel file in
- <filename>/usr/ports/distfiles</filename>; nelle versioni più
- recenti puoi saltare questo passo, perché FreeBSD lo farà
- per te. Nel caso di <command>kermit</command>, non c'è nessun
- distfile.</para>
-
- <para>Quindi entra con <command>cd</command> nella sottodirectory di
- <filename>/usr/local/kermit</filename> che contiene il file
- <filename>Makefile</filename>. Digita</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>make all install</userinput></screen>
- </informalexample>
-
- <para>Durante questo processo il port userà FTP per scaricare
- i file compressi che non ha trovato sul CDROM o in
- <filename>/usr/ports/distfiles</filename>. Se la tua connessione
- non funziona ancora e non c'è nessun file per il port in
- <filename>/cdrom/ports/distfiles</filename>, dovrai
- recuperare il distfile usando un'altra macchina e poi copiarlo in
- <filename>/usr/ports/distfiles</filename> da un dischetto o dalla
- partizione DOS. Leggi <filename>Makefile</filename> (usando
- <command>cat</command> o <command>more</command> oppure
- <command>view</command>) 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 <filename>/usr/ports/distfiles</filename> dovrai
- rinominarlo (usando il comando <command>mv</command>) nel suo
- nome originale cosicché possa essere trovato. (Usa il
- trasferimento di file binario!)
- Quindi torna in <filename>/usr/local/kermit</filename>, trova la
- directory contenente <filename>Makefile</filename>, e digita
- <command>make all install</command>.</para>
-
- <para>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 <errorname>can't find
- unzip</errorname> o simile, potresti dover installare il
- package o il port di unzip prima di proseguire.</para>
-
- <para>Una volta installato, digita <command>rehash</command> per far
- sì che FreeBSD rilegga i file contenuti nel path e sappia quali
- sono presenti.
- (Se trovi un sacco di messaggi <errorname>path not found</errorname>
- quando usi <command>whereis</command> o which, dovresti
- fare delle aggiunte all'elenco delle directory nel
- file <filename>.cshrc</filename> 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
- <filename>./</filename> prima del nome del comando; niente
- spazio dopo la barra.)</para>
-
- <para>Potresti volere la versione più recente di &netscape;
- dal loro <link xlink:href="ftp://ftp.netscape.com/">sito FTP</link>.
- (&netscape; necessita dell'X Window System.) Ora c'é una versione
- per FreeBSD, quindi dà un'occhiata in giro. Usa solo
- <command>gunzip nomefile</command> e
- <command>tar xvf nomefile</command> sul file,
- sposta il binario in <filename>/usr/local/bin</filename> o qualche altro
- posto in cui vengono tenuti i binari, esegui <command>rehash</command>, e
- quindi aggiungi le seguenti linee a <filename>.cshrc</filename> in tutte
- le directory home degli utenti oppure (più semplicemente) in
- <filename>/etc/csh.cshrc</filename>, il file di configurazione globale di
- <command>csh</command>:</para>
-
- <informalexample>
- <programlisting>setenv XKEYSYMDB /usr/X11R6/lib/X11/XKeysymDB
-setenv XNLSPATH /usr/X11R6/lib/X11/nls</programlisting>
- </informalexample>
-
- <para>Questo assume che il file <filename>XKeysymDB</filename>
- e la directory <filename>nls</filename> siano in
- <filename>/usr/X11R6/lib/X11</filename>; se non lo sono, trovale
- e mettile lì.</para>
-
- <para>Se hai originariamente installato &netscape; dal CDROM (o via
- FTP), non sostituire <filename>/usr/local/bin/netscape</filename>
- 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 <filename>netscape.bin</filename> e rimpiazza il
- vecchio binario, che dovrebbe essere
- <filename>/usr/local/netscape/netscape</filename>.</para>
- </sect1>
-
- <sect1>
- <title>Il tuo Ambiente di Lavoro</title>
-
- <para>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.</para>
-
- <para>Due shell vengono normalmente installate con FreeBSD:
- <command>csh</command> e <command>sh</command>.
- <command>csh</command> è buona per lavoro da linea di comando, ma
- gli script dovrebbero essere scritti usando <command>sh</command> (o
- <command>bash</command>). Puoi scoprire che shell hai
- digitando <command>echo $SHELL</command>.</para>
-
- <para><command>csh</command> è una buona shell, ma
- <command>tcsh</command> fa tutto ciò che <command>csh</command>
- 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 (<command>csh</command> usa <keycap>Esc</keycap>), e
- ti permette di tornare alla directory in cui eri digitando
- <command>cd -</command>. È anche più semplice alterare il
- prompt con <command>tcsh</command>. Ti rende la vita più
- facile.</para>
-
- <para>Ecco tre semplici passi per installare una nuova shell:</para>
-
- <procedure>
- <step>
- <para>Installa la shell tramite port o package, come faresti
- con un qualsiasi altro port o package. Usa
- <command>rehash</command> e <command>which tcsh</command>
- (assumendo che tu stia installando <command>tcsh</command>) per
- essere sicuro di averla installata.</para>
- </step>
-
- <step>
- <para>Da <systemitem class="username">root</systemitem>, modifica
- <filename>/etc/shells</filename>, aggiungendo una riga nel file per
- la nuova shell, in questo caso
- <filename>/usr/local/bin/tcsh</filename>, e salva il file.
- (Alcuni port lo fanno per te.)</para>
- </step>
-
- <step>
- <para>Usa il comando <command>chsh</command> per cambiare
- permanentemente la tua shell in <command>tcsh</command>, o digita
- <command>tcsh</command> al prompt per cambiare la shell senza
- dover uscire dal sistema per poi rientrare.</para>
- </step>
- </procedure>
-
- <note>
- <para>Può essere pericoloso cambiare la shell di
- <systemitem class="username">root</systemitem> in qualcosa di diverso da
- <command>sh</command> o <command>csh</command> 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 <command>su -m</command> per diventare
- <systemitem class="username">root</systemitem>, che ti dà <command>tcsh</command> come
- shell di <systemitem class="username">root</systemitem>, poiché la shell è
- parte del tuo ambiente. Puoi rendere tutto ciò permanente
- aggiungendo al tuo <filename>.tcshrc</filename> un alias con:</para>
- <programlisting>alias su su -m</programlisting>
- </note>
-
- <para>Quando <command>tcsh</command> parte, legge i file
- <filename>/etc/csh.cshrc</filename> e
- <filename>/etc/csh.login</filename>, come farebbe
- <command>csh</command>. Leggerà anche il file
- <filename>.login</filename> nella tua directory home ed anche
- <filename>.cshrc</filename>, a meno che tu non abbia un file
- <filename>.tcshrc</filename>. Puoi crearlo copiando
- <filename>.cshrc</filename> in <filename>.tcshrc</filename>.</para>
-
- <para>Ora che hai installato <command>tcsh</command>, puoi sistemare
- il tuo prompt. Puoi trovare i dettagli nella pagina man di
- <command>tcsh</command>, ma ecco qui una linea da mettere nel tuo
- <filename>.tcshrc</filename> che ti dirà quanti comandi hai
- digitato, che ore sono, e in che directory
- ti trovi. Produce anche un <literal>&gt;</literal> se sei un
- utente normale e un <literal>#</literal> se sei <systemitem class="username">root</systemitem>,
- ma <command>tcsh</command> lo farebbe in ogni caso:</para>
-
- <para>set prompt = "%h %t %~ %# "</para>
-
- <para>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 <filename>.tcshrc</filename> digitando
- <command>source .tcshrc</command>.</para>
-
- <para>Puoi avere una lista delle variabili di sistema che sono state
- impostate digitando <command>env</command> 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
- è <command>setenv TERM vt100</command>.</para>
- </sect1>
-
- <sect1>
- <title>Altro</title>
-
- <para>Da <command>tcsh</command> puoi smontare il CDROM con
- <command>/sbin/umount /cdrom</command>, toglilo dal lettore,
- inseriscine un altro, e montalo con
- <command>/sbin/mount_cd9660 /dev/cd0a /cdrom</command> assumendo che
- <hardware>cd0a</hardware> sia il nome di dispositivo del tuo lettore di
- CDROM. La versione più recente di FreeBSD ti permette di montare
- il CDROM solo con <command>/sbin/mount /cdrom</command>.</para>
-
- <para>Usare il <quote>live file system</quote>&mdash;il secondo cd del set
- di FreeBSD&mdash;è
- 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
- <command>lndir</command>, che viene installato con l'X Window
- System, per dire ai programmi dove trovare i file necessari, poiché
- questi si trovano nel file system <filename>/cdrom</filename>
- anziché <filename>/usr</filename> e le sue
- sottodirectory, che è dove dovrebbero essere. Leggi
- <command>man lndir</command> per avere più informazioni.</para>
- </sect1>
-
- <sect1>
- <title>I Commenti sono Benvenuti</title>
-
- <para>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.</para>
-
- <para>Annelise Anderson, <email>andrsn@andrsn.stanford.edu</email></para>
-
- <para>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.</para>
-
- <para>Massimiliano Stucchi, <email>stucchi@willystudios.com</email></para>
- </sect1>
-</article>
diff --git a/it_IT.ISO8859-15/articles/vm-design/Makefile b/it_IT.ISO8859-15/articles/vm-design/Makefile
deleted file mode 100644
index f4d95d0958..0000000000
--- a/it_IT.ISO8859-15/articles/vm-design/Makefile
+++ /dev/null
@@ -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"
diff --git a/it_IT.ISO8859-15/articles/vm-design/article.xml b/it_IT.ISO8859-15/articles/vm-design/article.xml
deleted file mode 100644
index 1b30d5b48e..0000000000
--- a/it_IT.ISO8859-15/articles/vm-design/article.xml
+++ /dev/null
@@ -1,1036 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-15"?>
-<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
- "http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
-<!--
- The FreeBSD Italian Documentation Project
-
- $FreeBSD$
- Original revision: 1.16
--->
-<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="it">
- <info><title>Elementi di progettazione del sistema di VM di FreeBSD</title>
-
-
- <authorgroup>
- <author><personname><firstname>Matthew</firstname><surname>Dillon</surname></personname><affiliation>
- <address>
- <email>dillon@apollo.backplane.com</email>
- </address>
- </affiliation></author>
- </authorgroup>
-
- <legalnotice xml:id="trademarks" role="trademarks">
- &tm-attrib.freebsd;
- &tm-attrib.linux;
- &tm-attrib.microsoft;
- &tm-attrib.opengroup;
- &tm-attrib.general;
- </legalnotice>
-
- <pubdate>$FreeBSD$</pubdate>
-
- <releaseinfo>$FreeBSD$</releaseinfo>
-
- <abstract>
- <para>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 <quote>un lavoretto necessario</quote>.
- 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.</para>
-
- &trans.it.surrender;
- </abstract>
-
- <legalnotice xml:id="legalnotice">
- <para>Questo articolo è stato pubblicato in origine nel numero di
- gennaio 2000 di <link xlink:href="http://www.daemonnews.org/">DaemonNews</link>.
- 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.</para>
- </legalnotice>
- </info>
-
- <sect1 xml:id="introduction">
- <title>Introduzione</title>
-
- <para>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 <quote>vecchio</quote>
- da alcune persone, quelli di noi che lavorano su di esso tendono
- a considerarlo come una base di codice <quote>matura</quote>
- 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&mdash;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&mdash;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 <quote>non è stato progettato
- qui</quote> e di <quote>abbiamo sempre ragione perché il nostro
- dipartimento marketing dice così</quote>. Io ho pochissima
- tolleranza per chiunque non impari dalla storia.</para>
-
- <para>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 <quote>Ottimizzazione del Percorso Critico</quote>.
- 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&mdash;così come i
- paralleli con il design algoritmico e la generalizzazione del
- codice.</para>
- </sect1>
-
- <sect1 xml:id="vm-objects">
- <title>Oggetti VM</title>
-
- <para>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 <footnote>
- <para>I dati copy on write sono dati che vengono copiati solo al momento
- della loro effettiva modifica</para>
- </footnote>. Il BSS del programma è solamente una zona di memoria
- allocata e riempita con degli zero su richiesta, detta in inglese
- <quote>demand zero page fill</quote>.
- 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.</para>
-
- <para>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.</para>
-
- <para>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&mdash;ognuno con il proprio spazio di indirizzamento privato,
- inclusa ogni modifica fatta dal processo originale prima della chiamata a
- <function>fork()</function>. Sarebbe stupido per un sistema di VM creare
- una copia completa dei dati al momento della <function>fork()</function>
- 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.</para>
-
- <para>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 <footnote>
- <para>Un page fault, o <quote>mancanza di pagina</quote>,
- 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.</para>
- </footnote> 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 <function>fork()</function> è 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:</para>
-
- <mediaobject>
- <imageobject>
- <imagedata fileref="fig1"/>
- </imageobject>
-
- <textobject>
- <literallayout class="monospaced">+---------------+
-| A |
-+---------------+</literallayout>
- </textobject>
-
- <textobject>
- <phrase>Un'immagine</phrase>
- </textobject>
- </mediaobject>
-
- <para>A rappresenta il file&mdash;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 <footnote>
- <para>La copia dalla memoria al disco, l'opposto del page in, la
- mappatura in memoria.</para>
- </footnote> e sovrascrivere l'eseguibile.
- Il sistema della VM crea dunque un secondo livello, B, che verrà
- copiato fisicamente dallo spazio di swap:</para>
-
- <mediaobject>
- <imageobject>
- <imagedata fileref="fig2"/>
- </imageobject>
-
- <textobject>
- <literallayout class="monospaced">+---------------+
-| B |
-+---------------+
-| A |
-+---------------+</literallayout>
- </textobject>
- </mediaobject>
-
- <para>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&mdash;C1 per il padre e C2 per il
- figlio&mdash;che restano sopra a B:</para>
-
- <mediaobject>
- <imageobject>
- <imagedata fileref="fig3"/>
- </imageobject>
-
- <textobject>
- <literallayout class="monospaced">+-------+-------+
-| C1 | C2 |
-+-------+-------+
-| B |
-+---------------+
-| A |
-+---------------+</literallayout>
- </textobject>
- </mediaobject>
-
- <para>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 <quote>vero</quote> 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 <function>exec()</function>. 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:</para>
-
- <mediaobject>
- <imageobject>
- <imagedata fileref="fig4"/>
- </imageobject>
-
- <textobject>
- <literallayout class="monospaced">+-------+
-| C1 |
-+-------+-------+
-| B |
-+---------------+
-| A |
-+---------------+</literallayout>
- </textobject>
- </mediaobject>
-
- <para>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 <function>exec()</function>.</para>
-
- <para>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.</para>
-
- <para>FreeBSD risolve il problema della profondità dei livelli con
- un'ottimizzazione speciale detta <quote>All Shadowed Case</quote> (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-&gt;B-&gt;A e C2-&gt;B-&gt;A adesso
- abbiamo C1-&gt;A e C2-&gt;B-&gt;A.
- ma si noti cos'altro è accaduto&mdash;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-&gt;A e C2-&gt;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.</para>
-
- <para>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ì
- è.</para>
-
- <para>Il vantaggio del modello ad Oggetti VM è che
- <function>fork()</function> è 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.</para>
- </sect1>
-
- <sect1 xml:id="swap-layers">
- <title>Livelli di SWAP</title>
-
- <para>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.</para>
-
- <para>Su FreeBSD 3.X la gestione della struttura di swap prealloca un
- array che contiene l'intero oggetto che necessita di subire
- swap&mdash;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 <quote>lista dei buchi</quote>
- nella memoria del kernel, ed anche questa tende ad essere pesantemente
- frammentata. Poiché la <quote>lista dei buchi</quote> è 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.</para>
-
- <para>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 <quote>puntatore di
- supportoall'allocazione</quote> 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.</para>
- </sect1>
-
- <sect1 xml:id="freeing-pages">
- <title>Quando liberare una pagina</title>
-
- <para>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.</para>
-
- <para>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.</para>
-
- <para>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).</para>
-
- <para>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.</para>
-
- <sidebar>
- <title>E se l'hardware non ha un page-used bit?</title>
-
- <para>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.</para>
- </sidebar>
-
- <para>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
- <quote>immediatamente liberabili</quote> e verranno riutilizzate con un
- metodo LRU (least-recently used <footnote>
- <para>Usate meno recentemente. Le pagine che non vengono usate da molto
- tempo probabilmente non saranno necessarie a breve, e possono essere
- liberate.</para>
- </footnote>) quando il sistema avrà bisogno di allocare nuova
- memoria.</para>
-
- <para>È 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 <command>systat -vm</command> 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.</para>
- </sect1>
-
- <sect1 xml:id="prefault-optimizations">
- <title>Pre-Faulting e Ottimizzazioni di Azzeramento</title>
-
- <para>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
- <command>vmstat 1</command> 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.</para>
-
- <para>Una larga percentuale dei page fault che accadono è composta di
- zero-fill fault. In genere è possibile notare questo fatto
- osservando l'output di <command>vmstat -s</command>.
- 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.</para>
- </sect1>
-
- <sect1 xml:id="page-table-optimizations">
- <title>Ottimizzazioni della Tabella delle Pagine </title>
-
- <para>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
- <function>mmap()</function>.
- 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 <literal>pv_entry</literal> che è integrata con la
- struttura <literal>vm_page</literal>. FreeBSD può semplicemente
- operare attraverso quelle mappature di cui è certa l'esistenza,
- mentre Linux deve controllare tutte le tabelle delle pagine che
- <emphasis>potrebbero</emphasis> 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 <literal>pv_entry</literal>.</para>
-
- <para>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.</para>
- </sect1>
-
- <sect1 xml:id="page-coloring-optimizations">
- <title>Colorazione delle Pagine</title>
-
- <para>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&mdash;portando all'eliminazione prematura di dati
- immagazzinabili in cache e riducendo le prestazioni della cache.
- Ciò è vero anche con cache set-associative <footnote>
- <para>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.</para>
- </footnote> a molte vie (anche se l'effetto viene in qualche maniera
- mitigato).</para>
-
- <para>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.</para>
- </sect1>
-
- <sect1 xml:id="conclusion">
- <title>Conclusione</title>
-
- <para>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.</para>
- </sect1>
-
- <sect1 xml:id="allen-briggs-qa">
- <title>Sessione Bonus di Domande e Risposte di Allen Briggs
- <email>briggs@ninthwonder.com</email></title>
-
- <qandaset>
- <qandaentry>
- <question>
- <para>Cos'è <quote>l'algoritmo di interleaving</quote> a cui
- fai riferimento nell'elenco delle debolezze della gestione dello
- swap in FreeBSD 3.X ?</para>
- </question>
-
- <answer>
- <para>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 <quote>quattro aree di
- swap</quote> 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:</para>
-
- <literallayout>A B C D A B C D A B C D A B C D</literallayout>
-
- <para>FreeBSD 3.X usa una <quote>lista sequenziale delle
- regioni libere </quote> per registrare le aree di swap libere.
- L'idea è che grandi blocchi di spazio libero e lineare
- possano essere rappresentati con un nodo singolo
- (<filename>kern/subr_rlist.c</filename>).
- 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
- <quote>liberi</quote> e C e D come <quote>totalmente
- allocati</quote>. 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.</para>
-
- <para>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.</para>
-
- <para>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.</para>
-
- <para>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.</para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>Non ho capito questo:</para>
-
- <blockquote>
- <para>È 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 <command>systat -vm</command>
- vedrai sistemi con contatori della coda di cache bassi e contatori
- della coda delle pagine attive molto alti.</para>
- </blockquote>
-
- <para>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 <command>systat -vm</command>? I dati di systat derivano
- da una fusione delle pagine attive e sporche per la coda delle
- pagine attive?</para>
- </question>
-
- <answer>
- <para>Si, questo può confondere. La relazione è
- <quote>obiettivo</quote> contro <quote>realtà</quote>. Il
- nostro obiettivo è separare le pagine ma la realtà
- è che se non siamo in crisi di memoria, non abbiamo bisogno
- di farlo.</para>
-
- <para>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 -&gt; coda pagine inattive) quando il sistema non
- è sotto sforzo, anche se non vengono effettivamente
- usate.</para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para> Nell'esempio di &man.ls.1; / <command>vmstat 1</command>,
- 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?</para>
- </question>
-
- <answer>
- <para>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, <emphasis>effettua</emphasis> la mappatura preventiva
- delle pagine che sono presenti nella sua cache.</para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>Nella sezione sull'ottimizzazione della tabella delle pagine,
- potresti fornire maggiori dettagli su <literal>pv_entry</literal> e
- <literal>vm_page</literal> (forse vm_page dovrebbe essere
- <literal>vm_pmap</literal>&mdash;come in 4.4, cf. pp. 180-181 di
- McKusick, Bostic, Karel, Quarterman)? Specificamente, che tipo di
- operazioni/reazioni richiederebbero la scansione delle
- mappature?</para>
-
- <para>Come funziona Linux nel caso in cui FreeBSD fallisce
- (la condivisione di un grosso file mappato tra molti
- processi)?</para>
- </question>
-
- <answer>
- <para>Una <literal>vm_page</literal> rappresenta una tupla
- (oggetto,indice#).
- Una <literal>pv_entry</literal> 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
- <literal>vm_page</literal> singola e da tre strutture
- <literal>pv_entry</literal>.</para>
-
- <para>Le strutture <literal>pv_entry</literal> rappresentano solo
- le pagine mappate dalla MMU (una <literal>pv_entry</literal>
- rappresenta un pte). Ciò significa che è necessario
- rimuovere tutti i riferimenti hardware a <literal>vm_page</literal>
- (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
- <literal>pv_entry</literal> associate con quella
- <literal>vm_page</literal> per rimuovere o modificare i pte
- dalla loro tabella delle pagine.</para>
-
- <para>Sotto Linux non c'è una lista collegata del genere. Per
- poter rimuovere tutte le mappature della tabella delle pagine
- hardware per una <literal>vm_page</literal> linux deve indicizzare
- ogni oggetto VM che <emphasis>potrebbe</emphasis> 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.</para>
-
- <para>FreeBSD ha aggiunto complessità (lo schema
- <literal>pv_entry</literal>) in modo da incrementare le prestazioni
- (per limitare gli accessi alla tabella delle pagine
- <emphasis>solo</emphasis> a quelle pte che necessitino di essere
- modificate).</para>
-
- <para>Ma FreeBSD ha un problema di scalabilità che linux non ha
- nell'avere un numero limitato di strutture
- <literal>pv_entry</literal> e questo provoca problemi quando si
- hanno condivisioni massicce di dati. In questo caso c'è la
- possibilità che finiscano le strutture
- <literal>pv_entry</literal> anche se c'è ancora una grande
- quantità di memoria disponibile.
- Questo può essere risolto abbastanza facilmente
- aumentando il numero di struttre <literal>pv_entry</literal> nella
- configurazione del kernel, ma c'è veramente bisogno di
- trovare un modo migliore di farlo.</para>
-
- <para>Riguardo il sovrapprezzo in memoria di una tabella delle pagine
- rispetto allo schema delle <literal>pv_entry</literal>: Linux usa
- tabelle delle pagine <quote>permanenti</quote> che non vengono
- liberate, ma non necessita una <literal>pv_entry</literal> per ogni
- pte potenzialmente mappato.
- FreeBSD usa tabelle delle pagine <quote>throw away</quote>,
- eliminabili, ma aggiunge una struttura <literal>pv_entry</literal>
- 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.</para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>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.</para>
- </question>
-
- <answer>
- <para>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
- <emphasis>stessi</emphasis> 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!</para>
-
- <para>Ora, sto semplificando di molto. Ciò che ho appena
- descritto è quella che viene detta memoria cache a
- <quote>corrispondenza diretta</quote>, 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.</para>
-
- <para>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.</para>
-
- <para>È estremamente importante &hellip;
- <emphasis>estremamente</emphasis> 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 <footnote>
- <para>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.</para>
- </footnote> 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 <emphasis>centinaia</emphasis> di istruzioni
- attendendo che la lettura dalla memoria principale venga
- completata. La memoria principale (la RAM che metti nel tuo
- computer) è <emphasis>lenta</emphasis>, se comparata alla
- velocità del nucleo di un moderno processore.</para>
-
- <para>Ok, ora parliamo della colorazione dele pagine:
- tutte le moderne cache sono del tipo noto come cache
- <emphasis>fisiche</emphasis>. 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.</para>
-
- <para>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 <emphasis>fisiche</emphasis>
- 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 <emphasis>fisica</emphasis>.</para>
-
- <para>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).</para>
-
- <para>Questo è ciò che viene fatto dalla colorazione
- delle pagine.
- Invece di assegnare pagine fisiche <emphasis>casuali</emphasis> agli
- indirizzi virtuali, che potrebbe causare prestazioni non ottimali
- della cache, la colorazione dele pagine assegna pagine fisiche
- <emphasis>ragionevolmente contigue</emphasis>.
- 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.</para>
-
- <para>Si note ho detto <quote>ragionevolmente</quote> contigue invece
- che semplicemente <quote>contigue</quote>. 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 <emphasis>non</emphasis> 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.</para>
- </answer>
- </qandaentry>
- </qandaset>
- </sect1>
-</article>
diff --git a/it_IT.ISO8859-15/books/Makefile b/it_IT.ISO8859-15/books/Makefile
index 0f97424134..6bee2d7230 100644
--- a/it_IT.ISO8859-15/books/Makefile
+++ b/it_IT.ISO8859-15/books/Makefile
@@ -1,7 +1,6 @@
# $FreeBSD$
SUBDIR = handbook
-SUBDIR+= unix-introduction
ROOT_SYMLINKS= handbook
diff --git a/it_IT.ISO8859-15/books/unix-introduction/Makefile b/it_IT.ISO8859-15/books/unix-introduction/Makefile
deleted file mode 100644
index 76cb3e1b17..0000000000
--- a/it_IT.ISO8859-15/books/unix-introduction/Makefile
+++ /dev/null
@@ -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"
diff --git a/it_IT.ISO8859-15/books/unix-introduction/bibliography/chapter.xml b/it_IT.ISO8859-15/books/unix-introduction/bibliography/chapter.xml
deleted file mode 100644
index 58d6f4a1a2..0000000000
--- a/it_IT.ISO8859-15/books/unix-introduction/bibliography/chapter.xml
+++ /dev/null
@@ -1,179 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-15"?>
-<!--
- The FreeBSD Italian Documentation Project
-
- $FreeBSD$
--->
-<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="bibliography">
- <title>Una breve bibliografia Unix</title>
-
- <table frame="all" xml:id="bibliography-table">
- <title>Una breve bibliografia Unix</title>
-
- <tgroup cols="4">
- <colspec colwidth="3in"/>
- <colspec colwidth="1.8in"/>
- <colspec colwidth="1in"/>
-
- <thead>
- <row>
- <entry align="center">Titolo</entry>
-
- <entry align="center">Autori</entry>
-
- <entry align="center">Editore</entry>
-
- <entry align="center">Anno pub.</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><emphasis>UNIX: concetti, strutture,
- utilizzo</emphasis></entry>
-
- <entry>James R. Groff, Paul N. Weinberg</entry>
-
- <entry>Jackson</entry>
-
- <entry>1988</entry>
- </row>
-
- <row>
- <entry><emphasis>Guida completa Unix System V. Release
- 4</emphasis></entry>
-
- <entry>Coffin Steven</entry>
-
- <entry>Mc Graw Hill</entry>
-
- <entry>1991</entry>
- </row>
-
- <row>
- <entry><emphasis>Introduzione all'architettura di sistema
- Unix</emphasis></entry>
-
- <entry>Prabhat K. Andleigh</entry>
-
- <entry>Jackson</entry>
-
- <entry>1991</entry>
- </row>
-
- <row>
- <entry><emphasis>Usare Unix senza fatica</emphasis></entry>
-
- <entry>John R. Levine, Margaret Levine Young</entry>
-
- <entry>Mc Graw Hill</entry>
-
- <entry>1993</entry>
- </row>
-
- <row>
- <entry><emphasis>La grande guida Unix</emphasis></entry>
-
- <entry>John J. Valley</entry>
-
- <entry>Jackson</entry>
-
- <entry>1993</entry>
- </row>
-
- <row>
- <entry><emphasis>Shell Unix guida alla
- programmazione</emphasis></entry>
-
- <entry>Arthur, Burns</entry>
-
- <entry>Mc Graw Hill</entry>
-
- <entry>1998</entry>
- </row>
-
- <row>
- <entry><emphasis>Introduzione alla struttura interna di
- Unix</emphasis></entry>
-
- <entry>Le Van Huu</entry>
-
- <entry>Unicopli</entry>
-
- <entry>1998</entry>
- </row>
-
- <row>
- <entry><emphasis>Unix guida completa</emphasis></entry>
-
- <entry>Rosen, Host, Farber, Rosinski</entry>
-
- <entry>Mc Graw Hill</entry>
-
- <entry>1999</entry>
- </row>
-
- <row>
- <entry><emphasis>Gestione del sistema operativo Unix</emphasis></entry>
-
- <entry>Bruno Catalano, Ezio Raddi</entry>
-
- <entry>Città Studi</entry>
-
- <entry>2000</entry>
- </row>
-
- <row>
- <entry><emphasis>Guida a Unix seconda edizione</emphasis></entry>
-
- <entry>Hahn H.</entry>
-
- <entry>Mc Graw Hill</entry>
-
- <entry>2000</entry>
- </row>
-
- <row>
- <entry><emphasis>I segreti di Unix Seconda edizione</emphasis></entry>
-
- <entry>Armstrong James</entry>
-
- <entry>Apogeo</entry>
-
- <entry>2000</entry>
- </row>
-
- <row>
- <entry><emphasis>Guida a Unix con Linux</emphasis></entry>
-
- <entry>Jack Dent, Tony Gaddis</entry>
-
- <entry>Apogeo</entry>
-
- <entry>2001</entry>
- </row>
-
- <row>
- <entry><emphasis>Introduzione a Unix</emphasis></entry>
-
- <entry>David L. Schwartz</entry>
-
- <entry>Apogeo</entry>
-
- <entry>2001</entry>
- </row>
-
- <row>
- <entry><emphasis>Unix manuale per l'amministratore di sistema - terza
- edizione</emphasis></entry>
-
- <entry>Nemeth Evi, Snyder Garth, Seebass Scott, Hein Trent</entry>
-
- <entry>Pearson Education Italia</entry>
-
- <entry>2002</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-</chapter>
diff --git a/it_IT.ISO8859-15/books/unix-introduction/book.xml b/it_IT.ISO8859-15/books/unix-introduction/book.xml
deleted file mode 100644
index 0a4449a3c2..0000000000
--- a/it_IT.ISO8859-15/books/unix-introduction/book.xml
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-15"?>
-<!DOCTYPE book PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
- "http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd" [
-<!ENTITY % chapters SYSTEM "chapters.ent"> %chapters;
-]>
-<!--
- The FreeBSD Italian Documentation Project
-
- $FreeBSD$
--->
-<book xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="it">
- <info><title>Introduzione a Unix</title>
-
-
- <author><personname><firstname>Frank G.</firstname><surname>Fiamingo</surname></personname><affiliation>
- <address><email>fiamingo.1@osu.edu</email></address>
- </affiliation></author>
-
- <author><personname><firstname>Linda</firstname><surname>DeBula</surname></personname><affiliation>
- <address><email>debula.2@osu.edu</email></address>
- </affiliation></author>
-
- <author><personname><firstname>Linda</firstname><surname>Condron</surname></personname><affiliation>
- <address><email>condron.1@osu.edu</email></address>
- </affiliation></author>
-
- <pubdate>Settembre 1998</pubdate>
-
- <copyright>
- <year>1996</year>
-
- <year>1997</year>
-
- <year>1998</year>
-
- <holder>University Technology Services, The Ohio State
- University.</holder>
- </copyright>
-
- <legalnotice xml:id="legalnotice">
- <para>&copy; 1996-1998 University Technology Services, The Ohio State
- University, Baker Systems Engineering Building, 1971 Neil Avenue,
- Columbus, OH 43210.</para>
-
- <para>Tutti i diritti riservati. La ridistribuzione e l'uso, con o senza
- modifiche, sono permesse purchè siano rispettate le seguenti
- condizioni:</para>
-
- <orderedlist>
- <listitem>
- <para>La ridistribuzione deve contenere la precedente nota di
- copyright, questa lista di condizioni, e il seguente
- disclaimer.</para>
- </listitem>
-
- <listitem>
- <para>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.</para>
- </listitem>
- </orderedlist>
-
- <para>QUESTA PUBBLICAZIONE VIENE FORNITA <quote>COSÌ
- COM'È</quote> SENZA NESSUN TIPO DI GARANZIA. QUESTA
- PUBBLICAZIONE PUÒ CONTENERE IMPRECISIONI TECNICHE O ERRORI
- TIPOGRAFICI.</para>
-
- <para>Unix è un marchio registrato della The Open Group, AT&amp;T
- è un marchio registrato della American Telephone and Telegraph,
- Inc.</para>
- </legalnotice>
-
- <releaseinfo>$FreeBSD$</releaseinfo>
-
- <abstract>
- &trans.it.mark;
-
- <para>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.).</para>
-
- <para>Copyright e URL rivisti nel Settembre 1998.</para>
- </abstract>
- </info>
-
- &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;
-</book>
diff --git a/it_IT.ISO8859-15/books/unix-introduction/chapters.ent b/it_IT.ISO8859-15/books/unix-introduction/chapters.ent
deleted file mode 100644
index c534ff37dd..0000000000
--- a/it_IT.ISO8859-15/books/unix-introduction/chapters.ent
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-15"?>
-<!--
- The FreeBSD Italian Documentation Project
-
- Crea le entities per ogni capitolo dell'Introduzione a Unix.
- Ogni entity è chiamata chap.foo, dove foo è il valore
- dell'attributo id di quel capitolo, e corrisponde al nome della directory
- nella quale il file sgml del capitolo è salvato.
-
- I capitoli devono essere listati nell'ordine in cui sono referenziati.
-
- $FreeBSD$
--->
-
-<!ENTITY chap.preface SYSTEM "preface/chapter.xml">
-<!ENTITY chap.history SYSTEM "history/chapter.xml">
-<!ENTITY chap.structure SYSTEM "structure/chapter.xml">
-<!ENTITY chap.getting-started SYSTEM "getting-started/chapter.xml">
-<!ENTITY chap.system-resource SYSTEM "system-resource/chapter.xml">
-<!ENTITY chap.shells SYSTEM "shells/chapter.xml">
-<!ENTITY chap.special-features SYSTEM "special-features/chapter.xml">
-<!ENTITY chap.text-processing SYSTEM "text-processing/chapter.xml">
-<!ENTITY chap.commands SYSTEM "commands/chapter.xml">
-<!ENTITY chap.shell-programming SYSTEM "shell-programming/chapter.xml">
-<!ENTITY chap.editors SYSTEM "editors/chapter.xml">
-<!ENTITY chap.command-summary SYSTEM "command-summary/chapter.xml">
-<!ENTITY chap.bibliography SYSTEM "bibliography/chapter.xml">
-<!ENTITY chap.glossary SYSTEM "glossary/chapter.xml">
diff --git a/it_IT.ISO8859-15/books/unix-introduction/command-summary/chapter.xml b/it_IT.ISO8859-15/books/unix-introduction/command-summary/chapter.xml
deleted file mode 100644
index 2f3812ecb0..0000000000
--- a/it_IT.ISO8859-15/books/unix-introduction/command-summary/chapter.xml
+++ /dev/null
@@ -1,671 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-15"?>
-<!--
- The FreeBSD Italian Documentation Project
-
- $FreeBSD$
--->
-<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="command-summary">
- <title>Riassunto dei comandi Unix</title>
-
- <sect1 xml:id="command-summary-">
- <title>Comandi Unix</title>
-
- <para>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, <replaceable>file</replaceable> può essere un
- nome di file, una lista di nomi di file o input/output che potrebbe essere
- rediretto per o dal comando.</para>
-
- <table frame="all" xml:id="command-summary-table">
- <title>Comandi Unix</title>
-
- <tgroup cols="2">
- <colspec colwidth="4in"/>
-
- <thead>
- <row>
- <entry align="center">Comando/Sintassi</entry>
-
- <entry align="center">Cosa fa</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><command>awk/nawk [opzioni]
- file</command></entry>
-
- <entry>esamina schemi in un file e processa i risultati</entry>
- </row>
-
- <row>
- <entry><command>cat [opzioni]
- file</command></entry>
-
- <entry>concatena (lista) un file</entry>
- </row>
-
- <row>
- <entry><command>cd
- [directory]</command></entry>
-
- <entry>cambia directory</entry>
- </row>
-
- <row>
- <entry><command>chgrp [opzioni]
- gruppo file</command></entry>
-
- <entry>cambia il gruppo di appartenenza di un file</entry>
- </row>
-
- <row>
- <entry><command>chmod [opzioni]
- file</command></entry>
-
- <entry>cambia i permessi di accesso a file o directory</entry>
- </row>
-
- <row>
- <entry><command>chown [opzioni]
- proprietario file</command></entry>
-
- <entry>cambia il proprietario di un file; può essere solo
- fatto dal super-user</entry>
- </row>
-
- <row>
- <entry><command>chsh (passwd -e/-s) username
- login_shell</command></entry>
-
- <entry>cambia la shell di login dell'utente (spesso solamente
- attraverso il super-user)</entry>
- </row>
-
- <row>
- <entry><command>cmp [opzioni]
- file1 file2</command></entry>
-
- <entry>confronta due file e mostra dove avvengono le differenze
- (file di testo e file binari)</entry>
- </row>
-
- <row>
- <entry><command>compress [opzioni]
- file</command></entry>
-
- <entry>comprime il file specificato e lo salva con l'estensione
- <filename>.Z</filename></entry>
- </row>
-
- <row>
- <entry><command>cp [opzioni]
- file1 file2</command></entry>
-
- <entry>copia <filename>file1</filename>
- in <filename>file2</filename>;
- <filename>file2</filename> non dovrebbe
- già esistere. Questo comando crea o sovrascrive
- <filename>file2</filename></entry>
- </row>
-
- <row>
- <entry><command>cut (opzioni)
- [file]</command></entry>
-
- <entry>taglia specifici campi/caratteri dalle linee del file
- specificato</entry>
- </row>
-
- <row>
- <entry><command>date
- [opzioni]</command></entry>
-
- <entry>riporta data e ora corrente</entry>
- </row>
-
- <row>
- <entry><command>dd [if=infile]
- [of=outfile]
- [operando=valore]</command></entry>
-
- <entry>copia un file, converte tra ASCII e EBCDIC o scambia l'ordine
- di byte, come specificato</entry>
- </row>
-
- <row>
- <entry><command>diff [opzioni]
- file1 file2</command></entry>
-
- <entry>confronta i due file e visualizza le differenze (solamente
- file di testo)</entry>
- </row>
-
- <row>
- <entry><command>df [opzioni]
- [risorsa]</command></entry>
-
- <entry>riporta il sommario dei blocchi del disco e degli inode
- liberi e usati</entry>
- </row>
-
- <row>
- <entry><command>du [opzioni]
- [directory o
- file]</command></entry>
-
- <entry>riporta lo spazio di disco usato</entry>
- </row>
-
- <row>
- <entry><command>echo
- [stringa di testo]</command></entry>
-
- <entry>riporta la stringa di testo specificata in standard
- output</entry>
- </row>
-
- <row>
- <entry><command>ed</command> o <command>ex
- [opzioni]
- file</command></entry>
-
- <entry>editor a linea di comando</entry>
- </row>
-
- <row>
- <entry><command>emacs [opzioni]
- file</command></entry>
-
- <entry>editor a schermo-pieno</entry>
- </row>
-
- <row>
- <entry><command>expr
- argomenti</command></entry>
-
- <entry>valuta gli argomenti. Usato per l'aritmetica, ecc. in
- shell</entry>
- </row>
-
- <row>
- <entry><command>file [opzioni]
- file</command></entry>
-
- <entry>classifica il tipo di file</entry>
- </row>
-
- <row>
- <entry><command>find directory
- [opzioni]
- [azioni]</command></entry>
-
- <entry>cerca file basandosi sul tipo o su uno schema</entry>
- </row>
-
- <row>
- <entry><command>finger [opzioni]
- user[@nomehost]</command></entry>
-
- <entry>riporta informazioni circa gli utenti di macchine locali e
- remote</entry>
- </row>
-
- <row>
- <entry><command>ftp [opzioni]
- host</command></entry>
-
- <entry>trasferisce file utilizzando il protocollo di trasferimento
- di file (FTP)</entry>
- </row>
-
- <row>
- <entry><command>grep [opzioni]
- 'stringa di ricerca'
- argomento</command></entry>
-
- <entry morerows="2">ricerca nell'argomento (in questo caso
- probabilmente un file) tutte le occorrenze della stringa di
- ricerca specificata e le visualizza</entry>
- </row>
-
- <row>
- <entry><command>egrep [opzioni]
- 'stringa di ricerca'
- argomento</command></entry>
- </row>
-
- <row>
- <entry><command>fgrep [opzioni]
- 'stringa di ricerca'
- argomento</command></entry>
- </row>
-
- <row>
- <entry><command>gzip [opzioni]
- file</command></entry>
-
- <entry morerows="2">comprime o decomprime un file. I file compressi
- vengo memorizzati con l'estensione
- <filename>.gz</filename></entry>
- </row>
-
- <row>
- <entry><command>gunzip [opzioni]
- file</command></entry>
- </row>
-
- <row>
- <entry><command>zcat [opzioni]
- file</command></entry>
- </row>
-
- <row>
- <entry><command>head [-numero]
- file</command></entry>
-
- <entry>mostra le prime 10 (o numero di) linee di un file</entry>
- </row>
-
- <row>
- <entry><command>hostname</command></entry>
-
- <entry>mostra o setta (solamente super-user) il nome della macchina
- attuale</entry>
- </row>
-
- <row>
- <entry><command>kill [opzioni]
- [-SEGNALE]
- [pid#]
- [%job]</command></entry>
-
- <entry>manda un segnale al processo specificato dal numero di
- processo id (<replaceable>pid#</replaceable>) o dal numero di
- controllo del job (%<replaceable>n</replaceable>). Il segnale di
- default termina il processo</entry>
- </row>
-
- <row>
- <entry><command>ln [opzioni]
- sorgente
- destinazione</command></entry>
-
- <entry>crea un collegamento di nome
- <filename>destinazione</filename> a
- <filename>sorgente</filename></entry>
- </row>
-
- <row>
- <entry><command>lpq
- [opzioni]</command></entry>
-
- <entry morerows="1">mostra lo stato dei job di stampa</entry>
- </row>
-
- <row>
- <entry><command>lpstat
- [opzioni]</command></entry>
- </row>
-
- <row>
- <entry><command>lpr [opzioni]
- file</command></entry>
-
- <entry morerows="1">stampa sulla stampante specificata</entry>
- </row>
-
- <row>
- <entry><command>lp [opzioni]
- file</command></entry>
- </row>
-
- <row>
- <entry><command>lprm
- [opzioni]</command></entry>
-
- <entry morerows="1">rimuove un job di stampa dalla coda di
- stampa</entry>
- </row>
-
- <row>
- <entry><command>cancel
- [opzioni]</command></entry>
- </row>
-
- <row>
- <entry><command>ls [opzioni]
- [directory o
- file]</command></entry>
-
- <entry>elenca il contenuto della directory specificata o i permessi
- del file specificato</entry>
- </row>
-
- <row>
- <entry><command>mail [opzioni]
- [user]</command></entry>
-
- <entry morerows="2">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</entry>
- </row>
-
- <row>
- <entry><command>mailx [opzioni]
- [user]</command></entry>
- </row>
-
- <row>
- <entry><command>Mail [opzioni]
- [user]</command></entry>
- </row>
-
- <row>
- <entry><command>man [opzioni]
- comando</command></entry>
-
- <entry>mostra la pagina di manuale (<emphasis>man</emphasis>)
- del comando specificato</entry>
- </row>
-
- <row>
- <entry><command>mkdir [opzioni]
- directory</command></entry>
-
- <entry>crea una directory</entry>
- </row>
-
- <row>
- <entry><command>more [opzioni]
- file</command></entry>
-
- <entry morerows="2">impaginatore di un file testuale</entry>
- </row>
-
- <row>
- <entry><command>less [opzioni]
- file</command></entry>
- </row>
-
- <row>
- <entry><command>pg [opzioni]
- file</command></entry>
- </row>
-
- <row>
- <entry><command>mv [opzioni]
- file1 file2</command></entry>
-
- <entry>muove <filename>file1</filename>
- in <filename>file2</filename></entry>
- </row>
-
- <row>
- <entry><command>od [opzioni]
- file</command></entry>
-
- <entry>dump su un file binario, in ottale, in ASCII, in
- esadecimale, in decimale o in modalità carattere.</entry>
- </row>
-
- <row>
- <entry><command>passwd
- [opzioni]</command></entry>
-
- <entry>setta o modifica la propria password</entry>
- </row>
-
- <row>
- <entry><command>paste [opzioni]
- file</command></entry>
-
- <entry>incolla campi nelle linee del file specificato</entry>
- </row>
-
- <row>
- <entry><command>pr [opzioni]
- file</command></entry>
-
- <entry>filtra il file e lo stampa su un terminale</entry>
- </row>
-
- <row>
- <entry><command>ps
- [opzioni]</command></entry>
-
- <entry>mostra lo stato dei processi attivi</entry>
- </row>
-
- <row>
- <entry><command>pwd</command></entry>
-
- <entry>stampa la directory di lavoro (corrente)</entry>
- </row>
-
- <row>
- <entry><command>rcp [opzioni]
- nomehost</command></entry>
-
- <entry>copia file in remoto dalla macchina corrente in un'altra
- macchina</entry>
- </row>
-
- <row>
- <entry><command>rlogin [opzioni]
- nomehost</command></entry>
-
- <entry>effettua il login in remoto su un'altra macchina</entry>
- </row>
-
- <row>
- <entry><command>rm [opzioni]
- file</command></entry>
-
- <entry>rimuove (elimina) un file o una directory
- (<option>-r</option> elimina ricorsivamente la directory ed il suo
- contenuto) (<option>-i</option> chiede conferma prima di eliminare
- i file)</entry>
- </row>
-
- <row>
- <entry><command>rmdir [opzioni]
- directory</command></entry>
-
- <entry>rimuove una directory</entry>
- </row>
-
- <row>
- <entry><command>rsh [opzioni]
- nomehost</command></entry>
-
- <entry>shell remota da eseguire su un'altra macchina</entry>
- </row>
-
- <row>
- <entry><command>script
- file</command></entry>
-
- <entry>memorizza ogni cosa che appare sullo schermo in un file fino
- a quando si esegue <command>exit</command></entry>
- </row>
-
- <row>
- <entry><command>sed [opzioni]
- file</command></entry>
-
- <entry>editor di flusso per editare file da uno script o da linea di
- comando</entry>
- </row>
-
- <row>
- <entry><command>sort [opzioni]
- file</command></entry>
-
- <entry>ordina le linee del file specificato basandosi sulle opzioni
- scelte</entry>
- </row>
-
- <row>
- <entry><command>source
- file</command></entry>
-
- <entry morerows="1">legge i comandi dal file specificato
- e li esegue nella shell corrente. <command>source</command> per
- la shell C, <command>.</command> per la shell Bourne</entry>
- </row>
-
- <row>
- <entry><command>. file</command></entry>
- </row>
-
- <row>
- <entry><command>strings [opzioni]
- file</command></entry>
-
- <entry>riporta sequenze di 4 o più caratteri stampabili
- terminanti in &lt;NL&gt; o &lt;NULL&gt;. Generalmente viene usato
- per ricercare in file binari stringhe ASCII</entry>
- </row>
-
- <row>
- <entry><command>stty
- [opzioni]</command></entry>
-
- <entry>setta o visualizza le opzioni del terminale di
- controllo</entry>
- </row>
-
- <row>
- <entry><command>tail [opzioni]
- file</command></entry>
-
- <entry>mostra le ultime linee (o parte) di un file</entry>
- </row>
-
- <row>
- <entry><command>tar [opzioni]
- [file]</command></entry>
-
- <entry>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.</entry>
- </row>
-
- <row>
- <entry><command>tee [opzioni]
- file</command></entry>
-
- <entry>copia standard output in uno o più file</entry>
- </row>
-
- <row>
- <entry><command>telnet [host
- [porta]]</command></entry>
-
- <entry>comunica con un altro host usando il protocollo
- telnet</entry>
- </row>
-
- <row>
- <entry><command>touch [opzioni]
- [data/ora]
- file</command></entry>
-
- <entry>crea un file vuoto o aggiorna la data/ora di accesso di un
- file esistente</entry>
- </row>
-
- <row>
- <entry><command>tr [opzioni]
- stringa1 stringa2</command></entry>
-
- <entry>traduce i caratteri di <replaceable>stringa1</replaceable>
- provenienti da standard input in quelli di
- <replaceable>stringa2</replaceable> per standard output</entry>
- </row>
-
- <row>
- <entry><command>uncompress
- file.Z</command></entry>
-
- <entry>decomprime il file specificato e lo salva in un file</entry>
- </row>
-
- <row>
- <entry><command>uniq [opzioni]
- file</command></entry>
-
- <entry>rimuove le linee ripetute in un file</entry>
- </row>
-
- <row>
- <entry><command>uudecode
- [file]</command></entry>
-
- <entry>decodifica un file codificato con
- <command>uuencode</command>, riportandolo al file
- originale</entry>
- </row>
-
- <row>
- <entry><command>uuencode [file]
- nuovo_nome</command></entry>
-
- <entry>codifica un file binario in codice ASCII 7-bit; utile quando
- lo si trasmette via email, per essere poi decodificato come
- <filename>nuovo_nome</filename> alla
- destinazione</entry>
- </row>
-
- <row>
- <entry><command>vi [opzioni]
- file</command></entry>
-
- <entry>editor visuale, a pieno schermo</entry>
- </row>
-
- <row>
- <entry><command>wc [opzioni]
- [file]</command></entry>
-
- <entry>mostra il numero di parole (o di caratteri o di linee) del
- file specificato</entry>
- </row>
-
- <row>
- <entry><command>whereis [opzioni]
- comando</command></entry>
-
- <entry>riporta le locazioni del binario, del sorgente e della pagina
- man per il comando specificato</entry>
- </row>
-
- <row>
- <entry><command>which
- comando</command></entry>
-
- <entry>riporta il percorso del comando o l'alias di shell in
- uso</entry>
- </row>
-
- <row>
- <entry><command>who</command> o <command>w</command></entry>
-
- <entry>riporta chi è <quote>loggato</quote> e quali processi
- ha in esecuzione</entry>
- </row>
-
- <row>
- <entry><command>zcat
- file.Z</command></entry>
-
- <entry>concatena (lista) il file non compresso a video, lasciando il
- file compresso su disco</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </sect1>
-</chapter>
diff --git a/it_IT.ISO8859-15/books/unix-introduction/commands/chapter.xml b/it_IT.ISO8859-15/books/unix-introduction/commands/chapter.xml
deleted file mode 100644
index 6d0ec561ed..0000000000
--- a/it_IT.ISO8859-15/books/unix-introduction/commands/chapter.xml
+++ /dev/null
@@ -1,3021 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-15"?>
-<!--
- The FreeBSD Italian Documentation Project
-
- $FreeBSD$
--->
-<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="commands">
- <title>Altri comandi utili</title>
-
- <sect1 xml:id="commands-work-files">
- <title>Lavorare con i file</title>
-
- <para>Questa sezione descrive alcuni comandi che possono risultare utili
- nell'esaminare e manipolare il contenuto dei propri file.</para>
-
- <table frame="all" xml:id="commands-table-utilities-files">
- <title>Utilità file</title>
-
- <tgroup cols="2">
- <colspec colwidth="3in"/>
-
- <thead>
- <row>
- <entry align="center">Comando/Sintassi</entry>
-
- <entry align="center">Cosa fa</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><command>cmp [opzioni]
- file1 file2</command></entry>
-
- <entry>confronta due file e mostra dove avvengono le differenze
- (file di testo e file binari)</entry>
- </row>
-
- <row>
- <entry><command>cut [opzioni]
- [file]</command></entry>
-
- <entry>taglia specifici campi/caratteri dalle linee di un
- file</entry>
- </row>
-
- <row>
- <entry><command>diff [opzioni]
- file1 file2</command></entry>
-
- <entry>confronta due file e mostra le differenze
- (solamente file di testo)</entry>
- </row>
-
- <row>
- <entry><command>file [opzioni]
- file</command></entry>
-
- <entry>classifica il tipo di file</entry>
- </row>
-
- <row>
- <entry><command>find directory
- [opzioni]
- [azioni]</command></entry>
-
- <entry>cerca file basandosi sul tipo o su uno schema</entry>
- </row>
-
- <row>
- <entry><command>ln [opzioni]
- sorgente
- destinazione</command></entry>
-
- <entry>crea un link (collegamento) a
- <filename>sorgente</filename> chiamato
- <filename>destinazione</filename></entry>
- </row>
-
- <row>
- <entry><command>paste [opzioni]
- file</command></entry>
-
- <entry>aggiunge campi all'interno di un file</entry>
- </row>
-
- <row>
- <entry><command>sort [opzioni]
- file</command></entry>
-
- <entry>riordina le linee di un file in accordo con le opzioni
- specificate</entry>
- </row>
-
- <row>
- <entry><command>strings [opzioni]
- file</command></entry>
-
- <entry>riporta sequenze di 4 o più caratteri stampabili
- terminati con &lt;NL&gt; o &lt;NULL&gt;. Normalmente utilizzato
- per ricercare stringhe ASCII in file binari.</entry>
- </row>
-
- <row>
- <entry><command>tee [opzioni]
- file</command></entry>
-
- <entry>copia standard output in uno o più file</entry>
- </row>
-
- <row>
- <entry><command>touch [opzioni]
- [data/ora]
- file</command></entry>
-
- <entry>crea un file vuoto o aggiorna la data di accesso di un file
- esistente</entry>
- </row>
-
- <row>
- <entry><command>tr [opzioni]
- stringa1 stringa2</command></entry>
-
- <entry>traduce i caratteri di <replaceable>stringa1</replaceable>
- provenienti da standard input in quelli di
- <replaceable>stringa2</replaceable> per standard output</entry>
- </row>
-
- <row>
- <entry><command>uniq [opzioni]
- file</command></entry>
-
- <entry>rimuove le linee ripetute in un file</entry>
- </row>
-
- <row>
- <entry><command>wc [opzioni]
- [file]</command></entry>
-
- <entry>mostra il numero di parole (o di caratteri o di linee) di
- un file</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <sect2 xml:id="commands-work-files-cmp">
- <title>cmp - confronta contenuti di file</title>
-
- <para>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.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>cmp [opzioni]
- file1 file2
- [salto1]
- [salto2]</command></para>
-
- <para>I numeri di <emphasis>salto</emphasis> sono i numeri di byte da
- saltare in ogni file prima di iniziare il confronto.</para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="0.5in"/>
-
- <tbody>
- <row>
- <entry><option>-l</option></entry>
-
- <entry>riporta ogni differenza</entry>
- </row>
-
- <row>
- <entry><option>-s</option></entry>
-
- <entry>riporta solamente un valore di uscita, non le differenze
- tra i byte</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <para>Dati i file <filename>mon.logins</filename> e
- <filename>tues.logins</filename>:</para>
-
- <programlisting>ageorge ageorge
-bsmith cbetts
-cbetts jchen
-jchen jdoe
-jmarsch jmarsch
-lkeres lkeres
-mschmidt proy
-sphillip sphillip
-wyepp wyepp</programlisting>
-
- <para>Il confronto dei due file produce:</para>
-
- <screen>&prompt.user; <userinput>cmp mon.logins tues.logins</userinput>
-mon.logins tues.logins differ: char 9, line 2</screen>
-
- <para>Di default il comando riporta solamente la prima differenza
- trovata.</para>
-
- <para>Questo comando è utile nel determinare quale versione di un
- file dovrebbe essere mantenuta quando c'è più di una
- versione dello stesso file.</para>
- </sect2>
-
- <sect2 xml:id="commands-work-files-diff">
- <title>diff - differenze tra file</title>
-
- <para>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.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>diff [opzioni]
- file1 file2</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="0.5in"/>
-
- <tbody>
- <row>
- <entry><option>-b</option></entry>
-
- <entry>ignora spazi contigui</entry>
- </row>
-
- <row>
- <entry><option>-i</option></entry>
-
- <entry>ignora la differenza tra lettere minuscole e
- maiuscole</entry>
- </row>
-
- <row>
- <entry><option>-w</option></entry>
-
- <entry>ignora i caratteri di spazio e tab</entry>
- </row>
-
- <row>
- <entry><option>-e</option></entry>
-
- <entry>produce un formato di output da utilizzare con l'editor
- &man.ed.1;</entry>
- </row>
-
- <row>
- <entry><option>-r</option></entry>
-
- <entry>esegue &man.diff.1; ricorsivamente attraverso le
- sotto-directory</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <para>Per i file sopra citati <filename>mon.logins</filename> e
- <filename>tues.logins</filename>, le loro differenze sono:</para>
-
- <screen>&prompt.user; <userinput>diff mon.logins tues.logins</userinput>
-2d1
-&lt; bsmith
-4a4
-&gt; jdoe
-7c7
-&lt; mschmidt
----
-&gt; proy</screen>
-
- <para>Notare che l'output mostra sia l'elenco delle differenze sia in
- quale file queste esistono. Le linee del primo file sono precedute da
- &lt; e quelle del secondo file sono precedute da &gt;.</para>
- </sect2>
-
- <sect2 xml:id="commands-work-files-cut">
- <title>cut - seleziona parte di una linea di un file</title>
-
- <para>Il comando &man.cut.1; permette di estrarre una parte di
- un file che verrà utilizzata per un altro scopo.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>cut [opzioni]
- file</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="2in"/>
-
- <tbody>
- <row>
- <entry><option>-c
- <replaceable>lista_caratteri</replaceable></option></entry>
-
- <entry>posizioni dei caratteri da selezionare (il primo carattere
- è in posizione 1)</entry>
- </row>
-
- <row>
- <entry><option>-d
- <replaceable>delimitatore</replaceable></option></entry>
-
- <entry>delimitatore di campo (tab di default)</entry>
- </row>
-
- <row>
- <entry><option>-f
- <replaceable>lista_campi</replaceable></option></entry>
-
- <entry>campi da selezionare (il primo campo è 1)</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>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.</para>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <para>In questi esempi si userà il file
- <filename>users</filename>:</para>
-
- <programlisting>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</programlisting>
-
- <para>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:</para>
-
- <screen>&prompt.user; <userinput>cut -f 1,2 users</userinput>
-jdoe John Doe
-lsmith Laura Smith
-pchen Paul Chen
-jhsu Jake Hsu
-sphilip Sue Phillip</screen>
-
- <para>Il comando &man.cut.1; può essere usato con altre opzioni.
- L'opzione <option>-c</option> permette di selezionare caratteri. Per
- selezionare i primi 4 caratteri:</para>
-
- <screen>&prompt.user; <userinput>cut -c 1-4 users</userinput></screen>
-
- <para>che produrrà:</para>
-
- <screen>jdoe
-lsmi
-pche
-jhsu
-sphi</screen>
-
- <para>in questo modo si selezionano solamente i primi 4 caratteri di ogni
- linea.</para>
- </sect2>
-
- <sect2 xml:id="commands-work-files-paste">
- <title>paste - fusione di file</title>
-
- <para>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.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>paste [opzioni]
- file1 file2</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1in"/>
-
- <tbody>
- <row>
- <entry><option>-d
- <replaceable>lista</replaceable></option></entry>
-
- <entry>elenco dei caratteri di delimitazione</entry>
- </row>
-
- <row>
- <entry><option>-s</option></entry>
-
- <entry>concatena linee</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>L'elenco dei <emphasis>delimitatori</emphasis> può
- comprendere singoli caratteri come una virgola, una stringa quotata,
- uno spazio o alcune delle seguenti sequenze di escape:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="0.5in"/>
-
- <tbody>
- <row>
- <entry>\n</entry>
-
- <entry>carattere newline</entry>
- </row>
-
- <row>
- <entry>\t</entry>
-
- <entry>carattere tab</entry>
- </row>
-
- <row>
- <entry>\\</entry>
-
- <entry>carattere backslash</entry>
- </row>
-
- <row>
- <entry>\0</entry>
-
- <entry>stringa vuota (carattere non-null)</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Può essere necessario quotare i delimitatori che hanno
- significati speciali di shell.</para>
-
- <para>Un trattino (-) al posto di un nome di file viene usato per
- indicare che quel campo dovrebbe venire da standard input.</para>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <para>Dato il file <filename>users</filename>:</para>
-
- <programlisting>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</programlisting>
-
- <para>e il file <filename>phone</filename>:</para>
-
- <programlisting>John Doe 555-6634
-Laura Smith 555-3382
-Paul Chen 555-0987
-Jake Hsu 555-1235
-Sue Phillip 555-7623</programlisting>
-
- <para>il comando &man.paste.1; può essere usato in combinazione
- con il comando &man.cut.1; per creare un nuovo file,
- <filename>listing</filename>, 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
- <filename>temp.file</filename>:</para>
-
- <screen>&prompt.user; <userinput>cut -f2 phone &gt; temp.file</userinput>
-555-6634
-555-3382
-555-0987
-555-1235
-555-7623</screen>
-
- <para>Il risultato può essere incollato alla fine di ogni linea di
- <filename>users</filename> e quindi rediretto nel nuovo file,
- <filename>listing</filename>:</para>
-
- <screen>&prompt.user; <userinput>paste users temp.file &gt; listing</userinput>
-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</screen>
-
- <para>Tutto questo può anche essere realizzato su una linea senza
- il file temporaneo, con lo stesso risultato:</para>
-
- <screen>&prompt.user; <userinput>cut -f2 phone | paste users - &gt; listing</userinput></screen>
-
- <para>In questo caso il trattino (-) funge come sostituto per il campo di
- input (indica cioè l'output del comando &man.cut.1;).</para>
- </sect2>
-
- <sect2 xml:id="commands-work-files-touch">
- <title>touch - crea un file</title>
-
- <para>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.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>touch [opzioni]
- [data/ora1]
- file</command></para>
-
- <para><command>touch [opzioni]
- [-t data/ora2]
- file</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1.3in"/>
-
- <tbody>
- <row>
- <entry><option>-a</option></entry>
-
- <entry>cambia la data/ora di accesso al file
- (solamente SVR4)</entry>
- </row>
-
- <row>
- <entry><option>-c</option></entry>
-
- <entry>non crea il file se non esiste</entry>
- </row>
-
- <row>
- <entry><option>-f</option></entry>
-
- <entry>forza l'azione, nonostante i permessi di lettura/scrittura
- del file</entry>
- </row>
-
- <row>
- <entry><option>-m</option></entry>
-
- <entry>cambia la data/ora di modifica del file
- (solamente SVR4)</entry>
- </row>
-
- <row>
- <entry><option>-t
- <replaceable>data/ora2</replaceable></option></entry>
-
- <entry>usa la data/ora2 specificata, non la data/ora corrente
- (solamente SVR4)</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Quando si usa l'opzione <option>-t
- <replaceable>data/ora2</replaceable></option>, deve essere nella
- forma:</para>
-
- <para>[[<replaceable>CC</replaceable>]<replaceable>YY</replaceable>]
- <replaceable>MMDDhhmm</replaceable>[.<replaceable>SS</replaceable>]</para>
-
- <para>dove:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="0.5in"/>
-
- <tbody>
- <row>
- <entry><replaceable>CC</replaceable></entry>
-
- <entry>prime due cifre dell'anno</entry>
- </row>
-
- <row>
- <entry><replaceable>YY</replaceable></entry>
-
- <entry>seconde due cifre dell'anno</entry>
- </row>
-
- <row>
- <entry><replaceable>MM</replaceable></entry>
-
- <entry>mese, 01-12</entry>
- </row>
-
- <row>
- <entry><replaceable>DD</replaceable></entry>
-
- <entry>giorno del mese, 01-31</entry>
- </row>
-
- <row>
- <entry><replaceable>hh</replaceable></entry>
-
- <entry>ora del giorno, 00-23</entry>
- </row>
-
- <row>
- <entry><replaceable>mm</replaceable></entry>
-
- <entry>minuti, 00-59</entry>
- </row>
-
- <row>
- <entry><replaceable>SS</replaceable></entry>
-
- <entry>secondi, 00-59</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Il formato dell'opzione
- <option><replaceable>data/ora1</replaceable></option> è:</para>
-
- <para><option><replaceable>MMDDhhmm</replaceable>[<replaceable>YY</replaceable>]</option></para>
-
- <para>dove questi simboli hanno gli stessi significati dei simboli
- mostrati in precedenza.</para>
-
- <para>La data non può essere settata prima del 1969 o dopo il 18
- Gennaio 2038 (dipende dalle versione del sistema operativo Unix).</para>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <para>Per creare un file:</para>
-
- <screen>&prompt.user; <userinput>touch filename</userinput></screen>
- </sect2>
-
- <sect2 xml:id="commands-work-files-wc">
- <title>wc - conta le parole in un file</title>
-
- <para>&man.wc.1; sta per <quote>conta parole</quote>; il comando
- può essere usato per contare il numero di linee, di caratteri o
- di parole in un file.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>wc [opzioni]
- file</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="0.5in"/>
-
- <tbody>
- <row>
- <entry><option>-c</option></entry>
-
- <entry>conta byte</entry>
- </row>
-
- <row>
- <entry><option>-m</option></entry>
-
- <entry>conta caratteri (SVR4)</entry>
- </row>
-
- <row>
- <entry><option>-l</option></entry>
-
- <entry>conta linee</entry>
- </row>
-
- <row>
- <entry><option>-w</option></entry>
-
- <entry>conta parole</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Se nessuna opzione viene specificata, l'opzione di default è
- <option>-lwc</option>.</para>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <para>Dato il file <filename>users</filename>:</para>
-
- <programlisting>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</programlisting>
-
- <para>il risultato dell'uso del comando &man.wc.1; su tale file è
- il seguente:</para>
-
- <screen>&prompt.user; <userinput>wc users</userinput>
-5 20 121 users</screen>
-
- <para>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.</para>
-
- <para>Usando il comando &man.wc.1; con una delle opzioni sopra citate
- (<option>-l</option> per linee; <option>-w</option> per parole o
- <option>-c</option> per caratteri) si ottiene come risultato solo
- una delle precedenti informazioni. Per esempio,
- <command>wc -l users</command> produce il risultato seguente:</para>
-
- <screen>5 users</screen>
- </sect2>
-
- <sect2 xml:id="commands-work-files-ln">
- <title>ln - crea un link a un altro file</title>
-
- <para>Il comando &man.ln.1; crea un <quote>link</quote> (collegamento) o
- un modo aggiuntivo per accedere (o attribuisce un nome addizionale) a un
- altro file.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>ln [opzioni]
- sorgente
- [destinazione]</command></para>
-
- <para>Se non specificata, la
- <filename>destinazione</filename> di default
- è un file dello stesso nome di
- <filename>sorgente</filename> posto nella
- directory di lavoro corrente.</para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="0.5in"/>
-
- <tbody>
- <row>
- <entry><option>-f</option></entry>
-
- <entry>forza un link nonostante i permessi della
- destinazione; non riporta errori (solamente SVR4 )</entry>
- </row>
-
- <row>
- <entry><option>-s</option></entry>
-
- <entry>crea un link simbolico</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <para>Un <emphasis>link simbolico</emphasis> 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
- <command>chkmag</command>, ma il comando è stato riscritto e il
- nuovo nome è <command>chkit</command>, creando un link simbolico
- gli utenti eseguiranno automaticamente <command>chkit</command> quando
- digitano il comando <command>chkmag</command>, eliminando la transizione
- per il nuovo comando.</para>
-
- <para>Un link simbolico può essere creato nel modo seguente:</para>
-
- <screen>&prompt.user; <userinput>ln -s chkit chkmag</userinput></screen>
-
- <para>Ora il lungo listato per questi due file è il
- seguente:</para>
-
- <screen>16 -rwxr-x--- 1 lindadb acs 15927 Apr 23 04:10 chkit
-1 lrwxrwxrwx 1 lindadb acs 5 Apr 23 04:11 chkmag -&gt; chkit</screen>
-
- <para>Notare che mentre i permessi di <command>chkmag</command> sono
- aperti a tutti, poichè è linkato a
- <command>chkit</command>, le caratteristiche dei permessi, del gruppo e
- del proprietario di <command>chkit</command> saranno rispettate quando
- <command>chkmag</command> viene invocato.</para>
-
- <para>Con un link simbolico, il link può esistere senza che il file
- o la directory a cui è collegato esista.</para>
-
- <para>Un <emphasis>hard link</emphasis> 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:</para>
-
- <screen>&prompt.user; <userinput>ln chkit chkmag</userinput></screen>
-
- <para>Quindi un lungo listato mostra che il numero di
- <emphasis>inode</emphasis> (742) è lo stesso per entrambi i
- file:</para>
-
- <screen>&prompt.user; <userinput>ls -il chkit chkmag</userinput>
-742 -rwxr-x--- 2 lindadb acs 15927 Apr 23 04:10 chkit
-742 -rwxr-x--- 2 lindadb acs 15927 Apr 23 04:10 chkmag</screen>
- </sect2>
-
- <sect2 xml:id="commands-work-files-sort">
- <title>sort - ordina il contenuto di un file</title>
-
- <para>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).</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>sort [opzioni]
- [+pos1 [-pos2]]
- file</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1.5in"/>
-
- <tbody>
- <row>
- <entry><option>-b</option></entry>
-
- <entry>ignora gli spazi bianchi iniziali (spazi e tab) quando si
- stabiliscono i carattere di inizio e di fine per la chiave di
- ordinamento</entry>
- </row>
-
- <row>
- <entry><option>-d</option></entry>
-
- <entry>ordinamento a dizionario, sono rilevanti solamente le
- lettere, le cifre, spazi e tab</entry>
- </row>
-
- <row>
- <entry><option>-f</option></entry>
-
- <entry>uguaglia lettere maiuscole e minuscole</entry>
- </row>
-
- <row>
- <entry><option>-k
- <replaceable>chiave</replaceable></option></entry>
-
- <entry>ordinamento su chiavi specifiche (non disponibile su tutti
- i sistemi)</entry>
- </row>
-
- <row>
- <entry><option>-i</option></entry>
-
- <entry>ignora i caratteri non stampabili</entry>
- </row>
-
- <row>
- <entry><option>-n</option></entry>
-
- <entry>ordinamento numerico</entry>
- </row>
-
- <row>
- <entry><option>-o
- <replaceable>outfile</replaceable></option></entry>
-
- <entry>file di output</entry>
- </row>
-
- <row>
- <entry><option>-r</option></entry>
-
- <entry>ribalta l'ordine</entry>
- </row>
-
- <row>
- <entry><option>-t <replaceable>car</replaceable></option></entry>
-
- <entry>usa <replaceable>car</replaceable> come il carattere di
- separatore di campo</entry>
- </row>
-
- <row>
- <entry><option>-u</option></entry>
-
- <entry>unico; trascura multiple copie di linee uguali
- (dopo l'ordinamento)</entry>
- </row>
-
- <row>
- <entry><option>+<replaceable>pos1</replaceable>
- [-<replaceable>pos2</replaceable>]</option></entry>
-
- <entry>(vecchio stile) fornisce funzionalità simili
- all'opzione <option>-k
- <replaceable>chiave</replaceable></option>.</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Per gli elementi di <emphasis>posizione</emphasis>
- (<option>+/-</option>), <replaceable>pos1</replaceable> è il
- numero di parola di inizio, iniziando da <emphasis>0</emphasis> e
- <replaceable>pos2</replaceable> è il numero di parola di fine.
- Quando -<replaceable>pos2</replaceable> non è specificato, il
- campo di ordinamento continua fino alla fine del file. Sia
- <replaceable>pos1</replaceable> che <replaceable>pos2</replaceable>
- possono essere specificati nella forma
- <replaceable>w</replaceable>.<replaceable>c</replaceable>, dove
- <replaceable>w</replaceable> è il numero di parola e
- <replaceable>c</replaceable> è il carattere all'interno della
- parola. Per <emphasis>c 0</emphasis> si specifica il delimitatore che
- precede il primo carattere e <emphasis>1</emphasis> è il primo
- carattere della parola. Questi elementi possono essere seguiti da un
- tipo di modificatore, esempio <emphasis>n</emphasis> per numerico,
- <emphasis>b</emphasis> per saltare gli spazi bianchi ,ecc.</para>
-
- <para>Il campo <replaceable>chiave</replaceable> dell'opzione
- <option>-k</option> ha la seguente sintassi:</para>
-
- <para><replaceable>campo_inizio</replaceable>
- [<replaceable>tipo</replaceable>]
- [ ,<replaceable>campo_fine</replaceable>
- [<replaceable>tipo</replaceable>] ]</para>
-
- <para>dove:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="2.5in"/>
-
- <tbody>
- <row>
- <entry><replaceable>campo_inizio, campo_fine</replaceable></entry>
-
- <entry>definiscono le chiavi per restringere l'ordinamento su una
- porzione di linea</entry>
- </row>
-
- <row>
- <entry><replaceable>tipo</replaceable></entry>
-
- <entry>modifica l'ordinamento: validi modificatori sono dati dai
- singoli caratteri (bdfiMnr) derivanti dalle simili opzioni di
- ordinamento, ad esempio un tipo <emphasis>b</emphasis> equivale
- a <option>-b</option>, ma applicato solamente nello specifico
- campo di azione</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <para>Dato il file <filename>users</filename>:</para>
-
- <programlisting>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</programlisting>
-
- <para>ordinando con &man.sort.1; gli utenti si produce:</para>
-
- <programlisting>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</programlisting>
-
- <para>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):</para>
-
- <screen>&prompt.user; <userinput>sort +2 users</userinput>
-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</screen>
-
- <para>Per ribaltare l'ordine:</para>
-
- <screen>&prompt.user; <userinput>sort -r users</userinput>
-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</screen>
-
- <para>Un'opzione particolarmente utile di ordinamento è l'opzione
- <option>-u</option>, che elimina gli elementi duplicati nel file mentre
- si ordina il file. Per esempio, il file
- <filename>todays.logins</filename>:</para>
-
- <programlisting>sphillip
-jchen
-jdoe
-lkeres
-jmarsch
-ageorge
-lkeres
-proy
-jchen</programlisting>
-
- <para>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 <option>-u</option>, la lista conterrà ciascun
- utente una volta sola. (Il comando può essere mandato in pipe a
- <command>wc -l</command> per ottenere direttamente il numero):</para>
-
- <screen>&prompt.user; <userinput>sort -u todays.logins</userinput>
-ageorge
-jchen
-jdoe
-jmarsch
-lkeres
-proy
-sphillip</screen>
- </sect2>
-
- <sect2 xml:id="commands-work-files-tee">
- <title>tee - copia l'output di un comando</title>
-
- <para>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.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>tee [opzioni]
- [file]</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="0.5in"/>
-
- <tbody>
- <row>
- <entry><option>-a</option></entry>
-
- <entry>appende l'output ai file</entry>
- </row>
-
- <row>
- <entry><option>-i</option></entry>
-
- <entry>ignora gli interrupt</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <para>In questo primo esempio l'output di &man.who.1; è
- visualizzato sullo schermo e memorizzato nel file
- <filename>users.file</filename>:</para>
-
- <screen>brigadier: condron [55]&gt; <userinput>who | tee users.file</userinput>
-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)</screen>
-
- <screen>brigadier: condron [56]&gt; <userinput>cat users.file</userinput>
-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)</screen>
-
- <para>Nel prossimo esempio l'output di &man.who.1; viene mandato nei file
- <filename>users.a</filename> e <filename>users.b</filename>.
- Viene anche mandato in pipe con il comando &man.wc.1;, che riporta il
- numero di linee.</para>
-
- <screen>brigadier: condron [57]&gt; <userinput>who | tee users.a users.b | wc -l</userinput>
-3</screen>
-
- <screen>brigadier: condron [58]&gt; <userinput>cat users.a</userinput>
-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)</screen>
-
- <para>Nell'esempio seguente un listato lungo di directory viene mandato
- nel file <filename>files.long</filename>. Inoltre viene messo in pipe
- con il comando &man.grep.1; che riporta quali file sono stati modificati
- in Agosto.</para>
-
- <screen>brigadier: condron [60]&gt; <userinput>ls -l | tee files.long |grep Aug</userinput>
-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</screen>
-
- <screen>brigadier: condron [63]&gt; <userinput>cat files.long</userinput>
-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</screen>
- </sect2>
-
- <sect2 xml:id="commands-work-files-uniq">
- <title>uniq - rimuove linee duplicate</title>
-
- <para>Il comando &man.uniq.1; filtra le linee adiacenti duplicate in un
- file.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>uniq [opzioni]
- [+|-n] file
- [nuovo.file]</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1in"/>
-
- <tbody>
- <row>
- <entry><option>-d</option></entry>
-
- <entry>solo una copia delle linee ripetute</entry>
- </row>
-
- <row>
- <entry><option>-u</option></entry>
-
- <entry>seleziona solamente le linee non ripetute</entry>
- </row>
-
- <row>
- <entry><option>+<replaceable>n</replaceable></option></entry>
-
- <entry>ignora i primi <replaceable>n</replaceable>
- caratteri</entry>
- </row>
-
- <row>
- <entry><option>-s <replaceable>n</replaceable></option></entry>
-
- <entry>come sopra (solamente SVR4)</entry>
- </row>
-
- <row>
- <entry><option>-<replaceable>n</replaceable></option></entry>
-
- <entry>salta i primi <replaceable>n</replaceable> campi, spazi
- inclusi (spazi e tab)</entry>
- </row>
-
- <row>
- <entry><option>-f
- <replaceable>campi</replaceable></option></entry>
-
- <entry>come sopra (solamente SVR4)</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <para>Si consideri il seguente file e l'esempio, dove
- &man.uniq.1; rimuove la quarta linea da <filename>file</filename>
- e mette il risultato nel file <filename>nuovo.file</filename>.</para>
-
- <screen>{Unix prompt 1} <userinput>cat file</userinput>
-1 2 3 6
-4 5 3 6
-7 8 9 0
-7 8 9 0</screen>
-
- <screen>{Unix prompt 2} <userinput>uniq file nuovo.file</userinput></screen>
-
- <screen>{Unix prompt 3} <userinput>cat nuovo.file</userinput>
-1 2 3 6
-4 5 3 6
-7 8 9 0</screen>
-
- <para>Qui sotto, l'opzione <option>-<replaceable>n</replaceable></option>
- 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.</para>
-
- <screen>{Unix prompt 4} <userinput>uniq -2 file</userinput>
-1 2 3 6
-7 8 9 0</screen>
- </sect2>
-
- <sect2 xml:id="commands-work-files-strings">
- <title>strings - cerca stringhe ASCII</title>
-
- <para>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.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>strings [opzioni]
- file</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1in"/>
-
- <tbody>
- <row>
- <entry><option>-n
- <replaceable>numero</replaceable></option></entry>
-
- <entry>usa <replaceable>numero</replaceable> come la minima
- lunghezza della stringa, piuttosto di 4 (solamente SVR4)</entry>
- </row>
-
- <row>
- <entry><option>-</option><replaceable>numero</replaceable></entry>
-
- <entry>come sopra</entry>
- </row>
-
- <row>
- <entry><option>-t
- <replaceable>formato</replaceable></option></entry>
-
- <entry>fa precedere alla stringa l'offset di byte dall'inizio del
- file; <replaceable>formato</replaceable> può essere:
- <emphasis>d</emphasis> = decimale, <emphasis>o</emphasis> =
- ottale <emphasis>x</emphasis> = esadecimale (solamente
- SVR4)</entry>
- </row>
-
- <row>
- <entry><option>-o</option></entry>
-
- <entry>fa precedere alla stringa l'offset di byte in decimale
- (solamente BSD)</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <screen>&prompt.user; <userinput>strings /bin/cut</userinput>
-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]</screen>
- </sect2>
-
- <sect2 xml:id="commands-work-files-file">
- <title>file - mostra il tipo di file</title>
-
- <para>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
- <filename>/etc/magic</filename>. Il comando &man.file.1;
- può determinare file di testo ASCII, file formattati tar, file
- compressi, ecc.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>file [opzioni]
- [-m file_magico]
- [-f lista_file]
- file</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1.5in"/>
-
- <tbody>
- <row>
- <entry><option>-c</option></entry>
-
- <entry>verifica il file magico per eventuali errori nel
- formato</entry>
- </row>
-
- <row>
- <entry><option>-f
- <replaceable>lista_file</replaceable></option></entry>
-
- <entry><filename>lista_file</filename>
- contiene la lista dei file da esaminare</entry>
- </row>
-
- <row>
- <entry><option>-h</option></entry>
-
- <entry>non segue i link simbolici (solamente SVR4)</entry>
- </row>
-
- <row>
- <entry><option>-L</option></entry>
-
- <entry>segue i link simbolici (solamente BSD)</entry>
- </row>
-
- <row>
- <entry><option>-m
- <replaceable>file_magico</replaceable></option></entry>
-
- <entry>usa
- <filename>file_magico</filename>
- come il file magico al posto di
- <filename>/etc/magic</filename></entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <para>Vengono elencati qui sotto gli output del comando
- <command>file filename</command> per alcuni
- file significativi.</para>
-
- <screen>/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</screen>
- </sect2>
-
- <sect2 xml:id="commands-work-files-tr">
- <title>tr - traduce caratteri</title>
-
- <para>Il comando &man.tr.1; traduce caratteri da &man.stdin.4; a
- &man.stdout.4;.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>tr [opzioni]
- stringa1
- [stringa2]</command></para>
-
- <para>Con nessuna opzione i caratteri di
- <replaceable>stringa1</replaceable> sono tradotti nei caratteri di
- <replaceable>stringa2</replaceable>, carattere per carattere,
- nell'ordine degli array di stringa. Il primo carattere di
- <replaceable>stringa1</replaceable> viene tradotto nel primo carattere
- di <replaceable>stringa2</replaceable>, ecc.</para>
-
- <para>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
- <emphasis>[a-z]</emphasis>.</para>
-
- <para>Ripetizioni di caratteri in <replaceable>stringa2</replaceable>
- possono essere rappresentate con la notazione
- <emphasis>[<replaceable>x</replaceable>*<replaceable>n</replaceable>]</emphasis>,
- dove il carattere <replaceable>x</replaceable> viene ripetuto
- <replaceable>n</replaceable> volte. Se <replaceable>n</replaceable>
- è <emphasis>0</emphasis> o assente, il carattere
- <replaceable>x</replaceable> viene assunto come valida corrispondenza
- richiesta in <replaceable>stringa1</replaceable>.</para>
-
- <para>I caratteri possono includere le notazioni
- <emphasis>\<replaceable>ottale</replaceable></emphasis> (BSD e SVR4) e
- <emphasis>\<replaceable>carattere</replaceable></emphasis> (solamente
- SVR4). Qui <emphasis><replaceable>ottale</replaceable></emphasis> viene
- sostituito da una, due o tre cifre di interi ottali che codificano un
- carattere ASCII e
- <emphasis><replaceable>carattere</replaceable></emphasis> può
- essere uno di questi:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="0.5in"/>
-
- <tbody>
- <row>
- <entry><emphasis>b</emphasis></entry>
-
- <entry>back space</entry>
- </row>
-
- <row>
- <entry><emphasis>f</emphasis></entry>
-
- <entry>form feed</entry>
- </row>
-
- <row>
- <entry><emphasis>n</emphasis></entry>
-
- <entry>newline</entry>
- </row>
-
- <row>
- <entry><emphasis>r</emphasis></entry>
-
- <entry>return</entry>
- </row>
-
- <row>
- <entry><emphasis>t</emphasis></entry>
-
- <entry>tab</entry>
- </row>
-
- <row>
- <entry><emphasis>v</emphasis></entry>
-
- <entry>tab verticale</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>La versione SVR4 di &man.tr.1; permette l'operando
- :<replaceable>classe</replaceable>: nel campo stringa dove
- <replaceable>classe</replaceable> può assumere uno dei seguenti
- valori di classificazione carattere:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1in"/>
-
- <tbody>
- <row>
- <entry><emphasis>alpha</emphasis></entry>
-
- <entry>caratteri alfabetici</entry>
- </row>
-
- <row>
- <entry><emphasis>lower</emphasis></entry>
-
- <entry>caratteri alfabetici minuscoli</entry>
- </row>
-
- <row>
- <entry><emphasis>upper</emphasis></entry>
-
- <entry>caratteri alfabetici maiuscoli</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="0.5in"/>
-
- <tbody>
- <row>
- <entry><option>-c</option></entry>
-
- <entry>completa il set di caratteri in
- <replaceable>stringa1</replaceable></entry>
- </row>
-
- <row>
- <entry><option>-d</option></entry>
-
- <entry>cancella i caratteri in
- <replaceable>stringa1</replaceable></entry>
- </row>
-
- <row>
- <entry><option>-s</option></entry>
-
- <entry>modifica una stringa di caratteri ripetuti in
- <replaceable>stringa1</replaceable> in caratteri singoli</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <para>L'esempio seguente usa come file di input una lista di libri di
- P. G. Wodehouse Jeeves &amp; Wooster.</para>
-
- <programlisting>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]</programlisting>
-
- <para>Per tradurre tutte le lettere alfabetiche minuscole in maiuscole si
- possono usare:</para>
-
- <para><command>tr '[a-z]' '[A-Z]'</command></para>
-
- <para>oppure</para>
-
- <para><command>tr '[:lower:]' '[:upper:]'</command></para>
-
- <para>Affinchè &man.tr.1; legga da &man.stdin.4; si usa &man.cat.1;
- in pipe con &man.tr.1;, così:</para>
-
- <screen>&prompt.user; <userinput>cat wodehouse | tr '[a-z]' '[A-Z]'</userinput>
-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]</screen>
-
- <para>Ora si cancellano tutti i numeri con:</para>
-
- <screen>&prompt.user; <userinput>cat wodehouse | tr -d '[0-9]'</userinput>
-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 []</screen>
-
- <para>Per trattenere tutte le occorrenze multiple dei caratteri e, r
- e f:</para>
-
- <screen>&prompt.user; <userinput>cat wodehouse | tr -s 'erf'</userinput>
-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]</screen>
- </sect2>
-
- <sect2 xml:id="commands-work-files-find">
- <title>find - cerca file</title>
-
- <para>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.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>find directory
- [opzioni di ricerca]
- [azioni]</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <para>Per l'opzione del tempo di ricerca, la notazione in giorni,
- <emphasis>n</emphasis> è:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="0.5in"/>
-
- <tbody>
- <row>
- <entry><option>+<replaceable>n</replaceable></option></entry>
-
- <entry>più di <replaceable>n</replaceable> giorni</entry>
- </row>
-
- <row>
- <entry><replaceable>n</replaceable></entry>
-
- <entry>esattamente <replaceable>n</replaceable> giorni</entry>
- </row>
-
- <row>
- <entry><option>-<replaceable>n</replaceable></option></entry>
-
- <entry>meno di <replaceable>n</replaceable> giorni</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Alcune caratteristiche dei file che &man.find.1; può
- ricercare sono:</para>
-
- <para>la <emphasis>data</emphasis> dell'ultimo accesso o dell'ultima
- modifica al file:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1.5in"/>
-
- <tbody>
- <row>
- <entry align="center"><option>-atime
- <replaceable>n</replaceable></option></entry>
-
- <entry>data di accesso, vero se l'accesso è di
- <replaceable>n</replaceable> giorni fà</entry>
- </row>
-
- <row>
- <entry align="center"><option>-ctime
- <replaceable>n</replaceable></option></entry>
-
- <entry>data di cambiamento, vero se lo stato del file è
- stato modificato <replaceable>n</replaceable> giorni
- fà</entry>
- </row>
-
- <row>
- <entry align="center"><option>-mtime
- <replaceable>n</replaceable></option></entry>
-
- <entry>data di modifica, vero se i dati del file sono stati
- modificati <replaceable>n</replaceable> giorni fà</entry>
- </row>
-
- <row>
- <entry><option>-newer
- <replaceable>filename</replaceable></option></entry>
-
- <entry>vero se più recente del file specificato</entry>
- </row>
-
- <row>
- <entry><option>-type
- <replaceable>tipo</replaceable></option></entry>
-
- <entry><emphasis>tipo</emphasis> di <emphasis>file</emphasis>,
- dove <replaceable>tipo</replaceable> può essere:</entry>
- </row>
-
- <row>
- <entry align="center"><emphasis>b</emphasis></entry>
-
- <entry>file speciale a blocchi</entry>
- </row>
-
- <row>
- <entry align="center"><emphasis>c</emphasis></entry>
-
- <entry>file speciale a caratteri</entry>
- </row>
-
- <row>
- <entry align="center"><emphasis>d</emphasis></entry>
-
- <entry>directory</entry>
- </row>
-
- <row>
- <entry align="center"><emphasis>l</emphasis></entry>
-
- <entry>link simbolico</entry>
- </row>
-
- <row>
- <entry align="center"><emphasis>p</emphasis></entry>
-
- <entry>file pipe (fifo)</entry>
- </row>
-
- <row>
- <entry align="center"><emphasis>f</emphasis></entry>
-
- <entry>file regolare</entry>
- </row>
-
- <row>
- <entry><option>-fstype
- <replaceable>tipo</replaceable></option></entry>
-
- <entry><emphasis>tipo</emphasis> di <emphasis>file
- system</emphasis>, dove <replaceable>tipo</replaceable>
- può essere un valido tipo di file system, esempio
- <emphasis>ufs</emphasis> (Unix File System) e
- <emphasis>nfs</emphasis> (Network File System)</entry>
- </row>
-
- <row>
- <entry><option>-user
- <replaceable>username</replaceable></option></entry>
-
- <entry>vero se il file appartiene all'utente specificato</entry>
- </row>
-
- <row>
- <entry><option>-group
- <replaceable>groupname</replaceable></option></entry>
-
- <entry>vero se il file appartiene al gruppo specificato</entry>
- </row>
-
- <row>
- <entry><option>-perm
- [-]<replaceable>modi</replaceable></option></entry>
-
- <entry>permessi del file, dove <replaceable>modi</replaceable>
- è la modalità ottale usata dal comando
- &man.chmod.1;. Quando <replaceable>modi</replaceable> è
- preceduto da un segno meno, solamente i bit che sono specificati
- vengono confrontati.</entry>
- </row>
-
- <row>
- <entry><option>-exec
- <replaceable>comando</replaceable></option></entry>
-
- <entry>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.</entry>
- </row>
-
- <row>
- <entry><option>-name
- <replaceable>filename</replaceable></option></entry>
-
- <entry>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 (\)</entry>
- </row>
-
- <row>
- <entry><option>-ls</option></entry>
-
- <entry>sempre vero. Stampa una lista lunga del path name
- corrente</entry>
- </row>
-
- <row>
- <entry><option>-print</option></entry>
-
- <entry>stampa i path name trovati (default per SVR4, non per
- BSD)</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>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 <emphasis>negare</emphasis>
- un'espressione. Gli operatori: <option>-a</option>
- (<emphasis>and</emphasis>) e <option>-o</option>
- (<emphasis>or</emphasis>) vengono usati per raggruppare
- espressioni.</para>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <para>&man.find.1; può ricercare in modo ricorsivo attraverso
- sotto-directory, ma per lo scopo di questi esempi saranno usati i
- seguenti file:</para>
-
- <screen>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*</screen>
-
- <para>Per trovare tutti i file più recenti del file
- <filename>library</filename>:</para>
-
- <screen>&prompt.user; <userinput>find . -newer library -print</userinput>
-./tr25
-./standard</screen>
-
- <para>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:</para>
-
- <screen>&prompt.user; <userinput>find . \( -perm -004 -o -perm -001 \) -exec chmod o-rx {} \; -exec ls -al {} \;</userinput>
--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</screen>
-
- <para>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.</para>
-
- <para>Si possono ricercare alcuni nomi di file contenenti la stringa
- <quote>ar</quote> con:</para>
-
- <screen>&prompt.user; <userinput>find . -name \*ar\* -ls</userinput>
-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</screen>
-
- <para>dove l'opzione <option>-ls</option> mostra un listato lungo, numeri
- di inode inclusi.</para>
- </sect2>
- </sect1>
-
- <sect1 xml:id="commands-file-arch-comp-conv">
- <title>Archiviazione, compressione e conversione di file</title>
-
- <table frame="all" xml:id="commands-table-file-arch-comp-conv">
- <title>Comandi di archiviazione, compressione e conversione di
- file</title>
-
- <tgroup cols="2">
- <colspec colwidth="4in"/>
-
- <thead>
- <row>
- <entry align="center">Comando/Sintassi</entry>
-
- <entry align="center">Cosa fa</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><command>compress/uncompress/zcat
- [opzioni]
- file[.Z]</command></entry>
-
- <entry>comprime o decomprime un file. I file compressi sono
- memorizzati con l'estensione <filename>.Z</filename></entry>
- </row>
-
- <row>
- <entry><command>dd [if=infile]
- [of=outfile]
- [operando=valore]</command></entry>
-
- <entry>copia un file, converte tra ASCII e EBCDIC o scambia
- l'ordine dei byte, come specificato</entry>
- </row>
-
- <row>
- <entry><command>gzip/gunzip/zcat
- [opzioni]
- file[.gz]</command></entry>
-
- <entry>comprime o decomprime un file. I file compressi sono
- memorizzati con l'estensione <filename>.gz</filename></entry>
- </row>
-
- <row>
- <entry><command>od [opzioni]
- file</command></entry>
-
- <entry>effettua un dump di un file binario in ottale, in ASCII, in
- esadecimale, in decimale o in modo carattere.</entry>
- </row>
-
- <row>
- <entry><command>tar [opzioni]
- [file]</command></entry>
-
- <entry>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.</entry>
- </row>
-
- <row>
- <entry><command>uudecode
- [file]</command></entry>
-
- <entry>decodifica un file uuencoded, ricreando il file
- originale</entry>
- </row>
-
- <row>
- <entry><command>uuencode [file]
- nuovo_nome</command></entry>
-
- <entry>codifica un file binario in ASCII 7-bit; utile quando lo si
- invia tramite email, per poi essere decodificato come
- <filename>nuovo_nome</filename> alla
- destinazione</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <sect2 xml:id="commands-file-arch-comp-conv-compress-uncompress">
- <title>Compressione di file</title>
-
- <para>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 <filename>.Z</filename>
- 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;.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>compress [opzioni]
- [file]</command></para>
-
- <para><command>uncompress [opzioni]
- [file.Z]</command></para>
-
- <para><command>zcat [file.Z]</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="0.5in"/>
-
- <tbody>
- <row>
- <entry><option>-c</option></entry>
-
- <entry>scrive su standard output e non crea o modifica alcun
- file</entry>
- </row>
-
- <row>
- <entry><option>-f</option></entry>
-
- <entry>forza la compressione del file, anche se questa non riduce
- la dimensione del file o se il file destinazione
- (<filename>file.Z</filename>) esiste
- già.</entry>
- </row>
-
- <row>
- <entry><option>-v</option></entry>
-
- <entry>verbose. Riporta la percentuale di riduzione del
- file.</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>&man.zcat.1; scrive su standard output. Equivale a
- <command>uncompress -c</command>.</para>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <para>Dati i file:</para>
-
- <screen>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</screen>
-
- <para>Questi possono essere compressi con:</para>
-
- <screen>&prompt.user; <userinput>compress logins.*</userinput></screen>
-
- <para>che crea i file:</para>
-
- <screen>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</screen>
-
- <para>I file originali sono persi.</para>
-
- <para>Per visualizzare un file compresso, viene usato il comando
- &man.zcat.1;:</para>
-
- <screen>&prompt.user; <userinput>zcat logins.beauty.Z | head</userinput>
-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</screen>
-
- <para>Una visualizzazione del file utilizzando un altro comando al posto
- di &man.zcat.1; può produrre un difficile risultato
- binario.</para>
-
- <para>Il comando &man.uncompress.1; viene usato per far ritornare il file
- compresso nel suo formato originale:</para>
-
- <screen>&prompt.user; <userinput>uncompress logins.*.Z ; ls -als logins.*</userinput>
- 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</screen>
-
- <para>In aggiunta alle utility standard di Unix &man.compress.1;,
- &man.uncompress.1;, &man.zcat.1; ci sono un set di utility
- <emphasis>GNU</emphasis> 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
- <filename>.z</filename> o <filename>.gz</filename>. Il software GNU
- può essere ottenuto via ftp anonimo: <link xlink:href="ftp://ftp.gnu.org/pub/gnu"><systemitem class="fqdomainname">ftp://ftp.gnu.org/pub/gnu</systemitem></link>.</para>
- </sect2>
-
- <sect2 xml:id="commands-file-arch-comp-conv-tar">
- <title>tar - archivio di file</title>
-
- <para>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.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>tar [opzioni]
- [directory file]</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="0.5in"/>
-
- <tbody>
- <row>
- <entry><option>c</option></entry>
-
- <entry>crea un archivio (inizia scrivendo all'inizio del
- file)</entry>
- </row>
-
- <row>
- <entry><option>t</option></entry>
-
- <entry>visualizza il contenuto</entry>
- </row>
-
- <row>
- <entry><option>x</option></entry>
-
- <entry>estrae da un archivio</entry>
- </row>
-
- <row>
- <entry><option>v</option></entry>
-
- <entry>verbose</entry>
- </row>
-
- <row>
- <entry><option>f</option></entry>
-
- <entry>nome del file di archivio</entry>
- </row>
-
- <row>
- <entry><option>b</option></entry>
-
- <entry>dimensione del blocco di archivio</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>&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.</para>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <para>Dati i file di dimensioni seguenti:</para>
-
- <screen>45 logs.beauty
-89 logs.bottom
-74 logs.photon
-84 logs.top</screen>
-
- <para>&man.tar.1; può combinare questi in un solo file,
- <filename>logfile.tar</filename>:</para>
-
- <screen>&prompt.user; <userinput>tar -cf logfile.tar logs.* ; ls -s logfile.tar</userinput>
-304 logfile.tar</screen>
-
- <para>In Internet, molti siti di archivio FTP anonimi memorizzano i loro
- pacchetti in formati tar compressi, quindi i file finiscono in
- <filename>.tar.Z</filename> o <filename>.tar.gz</filename>. 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:</para>
-
- <screen>&prompt.user; <userinput>zcat archive.tar.Z | tar -xvf -</userinput></screen>
-
- <para>dove il trattino alla fine del comando &man.tar.1; indica che il
- file è preso da &man.stdin.4;.</para>
- </sect2>
-
- <sect2 xml:id="commands-file-arch-comp-conv-uuencode-uudecode">
- <title>uuencode/uudecode - codifica/decodifica un file</title>
-
- <para>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
- <quote><emphasis>uu</emphasis></quote> 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.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>uuencode [file_sorgente]
- pathname_per_uudecode
- [&gt; nuovo_file]</command></para>
-
- <para><command>uudecode [-p]
- file_uuencode</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="0.5in"/>
-
- <tbody>
- <row>
- <entry><option>-p</option></entry>
-
- <entry>manda l'output su standard output piuttosto che nel file di
- default</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <para>La prima linea di un file codificato con &man.uuencode.1; include i
- <emphasis>permessi</emphasis> e il <emphasis>nome</emphasis> del file
- originale che &man.uudecode.1; utilizzerà quando
- decodificherà il file codificato. Il file inizia e finisce
- rispettivamente con le parole chiavi <emphasis>begin</emphasis> e
- <emphasis>end</emphasis>, esempio:</para>
-
- <programlisting>begin 555 binary_filename
-
-M?T5,1@$" 0 " ( ! %"W #0 5"&lt; T "
-M!0 H !4 % 8 T $ - "@ H 4 P
-M -0 !$ ! ! ! %"
-M%P !0A&lt; % $ $ 4(8 -"&amp; W&amp; W% &lt; 0
-M @ !0B T(@ )@ !P O=7-R+VQI8B]L9"YS
-M;RXQ ?&lt; 'Y VP "O !VP )8 &amp;6 !G0
-M %[ U0 %G !3 ;&lt; #Q %Q !
-MEP :P !_ '@ !PP (P
-M N0 =H _0 $D Y &lt; #F /L
-M01 $' $ &amp; ! 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_&gt; )0 0 ". P
-; %0 P )@ $
-
-end</programlisting>
- </sect2>
-
- <sect2 xml:id="commands-file-arch-comp-conv-dd">
- <title>dd - copia di blocchi e conversione</title>
-
- <para>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.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>dd [if=dispositivo_input]
- [of=dispositivo_output]
- [operando=valore]</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="2in"/>
-
- <tbody>
- <row>
- <entry><option>if=<replaceable>dispositivo_input</replaceable></option></entry>
-
- <entry>il dispositivo o file di input</entry>
- </row>
-
- <row>
- <entry><option>of=<replaceable>dispositivo_output</replaceable></option></entry>
-
- <entry>il dispositivo o file di output</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Se i dispositivi di input o di output non sono specificati, si
- assume come default rispettivamente lo standard input e lo standard
- output.</para>
-
- <para>Gli operandi possono essere:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="2in"/>
-
- <tbody>
- <row>
- <entry><option>ibs=<replaceable>n</replaceable></option></entry>
-
- <entry>dimensione del blocco di input (blocchi da 512 byte di
- default)</entry>
- </row>
-
- <row>
- <entry><option>obs=<replaceable>n</replaceable></option></entry>
-
- <entry>dimensione del blocco di output (blocchi da 512 byte di
- default)</entry>
- </row>
-
- <row>
- <entry><option>bs=<replaceable>n</replaceable></option></entry>
-
- <entry>setta entrambe le dimensioni dei blocchi di input e di
- output</entry>
- </row>
-
- <row>
- <entry><option>files=<replaceable>n</replaceable></option></entry>
-
- <entry>copia <replaceable>n</replaceable> file di input</entry>
- </row>
-
- <row>
- <entry><option>skip=<replaceable>n</replaceable></option></entry>
-
- <entry>salta <replaceable>n</replaceable> blocchi di input prima
- di iniziare la copia</entry>
- </row>
-
- <row>
- <entry><option>count=<replaceable>n</replaceable></option></entry>
-
- <entry>copia solamente <replaceable>n</replaceable> blocchi di
- input</entry>
- </row>
-
- <row>
- <entry><option>conv=<replaceable>valore</replaceable>[,<replaceable>valore</replaceable>]</option></entry>
-
- <entry>dove <replaceable>valore</replaceable> può
- essere:</entry>
- </row>
-
- <row>
- <entry align="center"><option>ascii</option></entry>
-
- <entry>converte da EBCDIC a ASCII</entry>
- </row>
-
- <row>
- <entry align="center"><option>ebcdic</option></entry>
-
- <entry>converte da ASCII a EBCDIC</entry>
- </row>
-
- <row>
- <entry align="center"><option>lcase</option></entry>
-
- <entry>converte i caratteri maiuscoli in minuscoli</entry>
- </row>
-
- <row>
- <entry align="center"><option>ucase</option></entry>
-
- <entry>converte i caratteri minuscoli in maiuscoli</entry>
- </row>
-
- <row>
- <entry align="center"><option>swab</option></entry>
-
- <entry>scambia ogni coppia di byte dei dati di input</entry>
- </row>
-
- <row>
- <entry align="center"><option>noerror</option></entry>
-
- <entry>non ferma il processo su un errore in input</entry>
- </row>
-
- <row>
- <entry align="center"><option>sync</option></entry>
-
- <entry>riempie ogni blocco di input alla dimensione di
- <option>ibs</option>, apporrendo byte nulli se
- necessario</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>La dimensione dei blocchi viene specificata in byte e può
- finire in <emphasis>k</emphasis>, <emphasis>b</emphasis> o
- <emphasis>w</emphasis> per indicare rispettivamente 1024 (kilo), 512
- (blocco) o 2 (parola) byte.</para>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <para>Per copiare un file da un dispositivo a nastro in un altro:</para>
-
- <screen>&prompt.user; <userinput>dd if=/dev/rmt/0 of=/dev/rmt/1</userinput>
-20+0 records in
-20+0 records out</screen>
-
- <para>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:</para>
-
- <screen>&prompt.user; <userinput>dd if=/dev/rmt/0 of=new_file ibs=20b conv=swab</userinput>
-1072+0 records in
-21440+0 records out</screen>
-
- <para>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.</para>
- </sect2>
-
- <sect2 xml:id="commands-file-arch-comp-conv-od">
- <title>od - dump ottale di un file</title>
-
- <para>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.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>od [opzioni]
- file</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1in"/>
-
- <tbody>
- <row>
- <entry><option>-b</option></entry>
-
- <entry>dump ottale</entry>
- </row>
-
- <row>
- <entry><option>-d</option>|<option>-D</option></entry>
-
- <entry>dump decimale (-d) o decimale esteso (-D)</entry>
- </row>
-
- <row>
- <entry><option>-s</option>|<option>-S</option></entry>
-
- <entry>dump decimale marcato (-s) o decimale marcato esteso
- (-S)</entry>
- </row>
-
- <row>
- <entry><option>-f</option>|<option>-F</option></entry>
-
- <entry>dump in virgola mobile (-f) o virgola mobile estesa
- (double) (-F)</entry>
- </row>
-
- <row>
- <entry><option>-x</option>|<option>-X</option></entry>
-
- <entry>dump esadecimale (-x) o esadecimale esteso (-X)</entry>
- </row>
-
- <row>
- <entry><option>-c</option>|<option>-C</option></entry>
-
- <entry>dump in formato carattere (byte singolo) o carattere esteso
- (carattere singolo o multi-byte, a seconda dai settaggi
- locali)</entry>
- </row>
-
- <row>
- <entry><option>-v</option></entry>
-
- <entry>modalità verbose</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <para>Per dare un'occhiata all'attuale contenuto del seguente file, un
- elenco di romanzi di Wodehouse Lord Emsworth:</para>
-
- <programlisting>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]</programlisting>
-
- <para>si può usare:</para>
-
- <screen>&prompt.user; <userinput>od -c wodehouse</userinput>
-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</screen>
- </sect2>
- </sect1>
-
- <sect1 xml:id="commands-remote-connections">
- <title>Connessioni remote</title>
-
- <table frame="all" xml:id="commands-table-remote-connections">
- <title>Comandi per connessioni remote</title>
-
- <tgroup cols="2">
- <colspec colwidth="3in"/>
-
- <thead>
- <row>
- <entry align="center">Comando/Sintassi</entry>
-
- <entry align="center">Cosa fa</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><command>finger [opzioni]
- user[@nomehost]</command></entry>
-
- <entry>riporta informazioni sugli utenti delle macchine locali
- e remote</entry>
- </row>
-
- <row>
- <entry><command>ftp [opzioni]
- host</command></entry>
-
- <entry>trasferisce file utilizzando il protocollo di trasferimento
- di file</entry>
- </row>
-
- <row>
- <entry><command>rcp [opzioni]
- nomehost</command></entry>
-
- <entry>copia file in remoto dalla macchina corrente in un'altra
- macchina</entry>
- </row>
-
- <row>
- <entry><command>rlogin [opzioni]
- nomehost</command></entry>
-
- <entry>effettua il login in remoto su un'altra macchina</entry>
- </row>
-
- <row>
- <entry><command>rsh [opzioni]
- nomehost</command></entry>
-
- <entry>shell remota da eseguire su un'altra macchina</entry>
- </row>
-
- <row>
- <entry><command>telnet [host
- [porta]]</command></entry>
-
- <entry>comunica con un altro host utilizzando il protocollo
- telnet</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <sect2 xml:id="commands-remote-connections-telnet-ftp">
- <title>TELNET e FTP - protocollo di login remoto e di trasferimento di
- file</title>
-
- <para><emphasis>TELNET</emphasis> e <emphasis>FTP</emphasis> 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.</para>
-
- <para>I programmi che implementano il protocollo
- <emphasis>TELNET</emphasis> sono usualmente chiamati
- <application>telnet</application>, ma non sempre. Alcune notevoli
- eccezioni sono <command>tn3270</command>, <command>WinQVT</command> e
- <command>QWS3271</command>, che implementano comunque il protocollo
- TELNET. TELNET viene usato per effettuare il login remoto su un
- altro computer in Internet.</para>
-
- <para>I programmi che implementano il protocollo <emphasis>FTP</emphasis>
- sono usualmente chiamati <application>ftp</application>, ma esistono
- anche delle eccezioni. Il programma chiamato <command>Fetch</command>,
- distribuito dalla Dartmouth College, <command>WS_FTP</command>, scritto
- e distribuito da John Junod e <command>Ftptool</command>, scritto da
- Mike Sullivan, sono implementazioni del protocollo FTP con
- un'interfaccia utente grafica. Esiste una versione migliore di FTP,
- <command>ncftp</command> 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.</para>
-
- <para>&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
- <application>SSH</application>, software scritto da Tatu Ylonen e
- disponibile via: <link xlink:href="ftp://ftp.net.ohio-state.edu/pub/security/ssh"><systemitem class="fqdomainname">ftp://ftp.net.ohio-state.edu/pub/security/ssh</systemitem></link>.</para>
-
- <para>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.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>telnet [opzioni]
- [host_remoto
- [porta]]</command></para>
-
- <para><command>tn3270 [opzioni]
- [host_remoto
- [porta]]</command></para>
-
- <para><command>ftp [opzioni]
- [host_remoto]</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="3">
- <colspec colwidth="1in"/>
- <colspec colwidth="1in"/>
-
- <thead>
- <row>
- <entry>ftp</entry>
-
- <entry>telnet</entry>
-
- <entry>Azione</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><option>-d</option></entry>
-
- <entry/>
-
- <entry>abilità la modalità di debugging</entry>
- </row>
-
- <row>
- <entry/>
-
- <entry><option>-d</option></entry>
-
- <entry>come sopra (solamente SVR4)</entry>
- </row>
-
- <row>
- <entry><option>-i</option></entry>
-
- <entry/>
-
- <entry>disabilita il prompt interattivo</entry>
- </row>
-
- <row>
- <entry><option>-n</option></entry>
-
- <entry/>
-
- <entry>non tenta un auto-login su una connessione</entry>
- </row>
-
- <row>
- <entry><option>-v</option></entry>
-
- <entry/>
-
- <entry>modalità verbose</entry>
- </row>
-
- <row>
- <entry/>
-
- <entry><option>-l <replaceable>user</replaceable></option></entry>
-
- <entry>si connette all'host remoto con il nome utente specificato
- (solamente SVR4)</entry>
- </row>
-
- <row>
- <entry/>
-
- <entry><option>-8</option></entry>
-
- <entry>percorso dati 8-bit (solamente SVR4)</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>&man.telnet.1; e <command>tn3270</command> 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.</para>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <screen>&prompt.user; <userinput>telnet oscar.us.ohio-state.edu</userinput></screen>
-
- <screen>&prompt.user; <userinput>tn3270 ohstmvsa.acs.ohio-state.edu</userinput></screen>
-
- <screen>&prompt.user; <userinput>ftp magnus.acs.ohio-state.edu</userinput></screen>
-
- <para>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 <systemitem class="username">anonymous</systemitem> (il login
- <systemitem class="username">ftp</systemitem> è equivalente su molte macchine)
- cioè, quando viene richiesto il login si digita
- <systemitem class="username">anonymous</systemitem> (di solito per la password si inserisce
- il proprio indirizzo email o qualsiasi altra cosa).</para>
-
- <para>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.</para>
-
- <para>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 <command>put</command> o prenderlo da quel
- computer con il comando <command>get</command>. La sintassi è la
- seguente:</para>
-
- <para><command>put nome-file-locale
- nome-file-remoto</command></para>
-
- <para><command>get nome-file-locale
- nome-file-remoto</command></para>
-
- <para>Sono disponibili altri comandi per &man.ftp.1;, a seconda della
- specifica implementazione dell'FTP locale e remoto. Il comando
- <command>help</command> visualizza un elenco di comandi disponibili.
- Il comando <command>help</command> può visualizzare lo scopo di
- un comando specifico. Esempi di validi comandi sono mostrati di
- seguito:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1.5in"/>
-
- <tbody>
- <row>
- <entry><command>help</command></entry>
-
- <entry>mostra un elenco di comandi disponibili</entry>
- </row>
-
- <row>
- <entry><command>help mget</command></entry>
-
- <entry>mostra lo scopo del comando <command>mget</command>
- (prendere file multipli)</entry>
- </row>
-
- <row>
- <entry><command>pwd</command></entry>
-
- <entry>mostra la corrente directory di lavoro</entry>
- </row>
-
- <row>
- <entry><command>ls</command> o <command>dir</command></entry>
-
- <entry>elenca il contenuto delle directory</entry>
- </row>
-
- <row>
- <entry><command>cd</command></entry>
-
- <entry>cambia directory</entry>
- </row>
-
- <row>
- <entry><command>lcd</command></entry>
-
- <entry>cambia la directory locale</entry>
- </row>
-
- <row>
- <entry><command>open</command></entry>
-
- <entry>specifica la macchina alla quale si vuole
- connettersi</entry>
- </row>
-
- <row>
- <entry><command>user</command></entry>
-
- <entry>specifica il proprio id di login (nel caso che non venga
- richiesto direttamente)</entry>
- </row>
-
- <row>
- <entry><command>quit</command></entry>
-
- <entry>esce dal programma FTP</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect2>
-
- <sect2 xml:id="commands-remote-connections-finger">
- <title>finger - restituisce informazioni riguardo gli utenti</title>
-
- <para>Il comando &man.finger.1; mostra il file <filename>.plan</filename>
- di un utente specifico o riporta chi è attualmente
- <quote>loggato</quote> su una specifica macchina. L'utente deve
- permettere i permessi di lettura generale sul file
- <filename>.plan</filename>.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>finger [opzioni]
- [user[@nomehost]]</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="0.5in"/>
-
- <tbody>
- <row>
- <entry><option>-l</option></entry>
-
- <entry>forza il formato lungo di output</entry>
- </row>
-
- <row>
- <entry><option>-m</option></entry>
-
- <entry>ottiene solo lo username, non il nome e cognome
- reali</entry>
- </row>
-
- <row>
- <entry><option>-s</option></entry>
-
- <entry>forza il formato corto di output</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <screen>brigadier:condron [77]&gt; <userinput>finger workshop@nyssa</userinput>
-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, &amp; Linda</screen>
-
- <screen>brigadier: condron [77]&gt; <userinput>finger</userinput>
-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</screen>
- </sect2>
-
- <sect2 xml:id="commands-remote-connections-">
- <title>Comandi remoti</title>
-
- <para>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 <emphasis>r</emphasis>:
- &man.rlogin.1;, &man.rsh.1; e &man.rcp.1;. La possibilità di
- accesso remoto tramite questi comandi è sostenuta (opzionalmente)
- attraverso il file <filename>~/.rhosts</filename> di ogni singolo utente
- e dal file generale di sistema <filename>/etc/hosts.equiv</filename>.
- Per ragioni di sicurezza questi possono essere limitati ad alcuni
- host.</para>
-
- <para>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 <literal>TERM</literal>.</para>
-
- <para>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.</para>
-
- <para>Il comando &man.rcp.1; fornisce la possibilità di
- copiare file dall'host locale ad un host remoto della rete
- locale.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>rlogin [-l username]
- host_remoto</command></para>
-
- <para><command>rsh [-l username]
- host_remoto
- [comando]</command></para>
-
- <para><command>rcp
- [[user1]@host1:]file_sorgente
- [[user2]@host2:]file_destinazione</command></para>
-
- <para>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.</para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1.5in"/>
-
- <tbody>
- <row>
- <entry><option>-l
- <replaceable>username</replaceable></option></entry>
-
- <entry>si connette all' host remoto con il nome utente specificato
- (&man.rlogin.1; &amp; &man.rsh.1;)</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Il file <filename>.rhosts</filename>, 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 <filename>.rhosts</filename> contiene un
- record per ogni coppia host remoto-username con il quale il proprietario
- del file <filename>.rhosts</filename> desidera connettersi. Ogni record
- nel file <filename>.rhosts</filename> è della forma:</para>
-
- <para><replaceable>host_remoto utente_remoto</replaceable></para>
-
- <para>dove l'elenco
- <systemitem class="username"><replaceable>utente_remoto</replaceable></systemitem> è
- opzionale. Per esempio, se Heather Jones vuole essere in grado di
- connettersi alla <systemitem class="fqdomainname">macchina1</systemitem> (dove il suo
- username è <systemitem class="username">heather</systemitem>) dalla
- <systemitem class="fqdomainname">macchina2</systemitem> (dove il suo username
- è <systemitem class="username">jones</systemitem>) o dalla
- <systemitem class="fqdomainname">macchina3</systemitem> (dove il suo username
- è <systemitem class="username">heather</systemitem>, lo stesso della
- <systemitem class="fqdomainname">macchina1</systemitem>), lei potrebbe creare un file
- <filename>.rhosts</filename> nella sua home directory sulla
- <systemitem class="fqdomainname">macchina1</systemitem>. Il contenuto di questo file
- potrebbe essere:</para>
-
- <programlisting>macchina2 jones
-macchina3
-
--oppure-
-
-macchina2 jones
-macchina3 heather</programlisting>
-
- <para>Su alcuni sistemi il file <filename>/etc/hosts.equiv</filename>
- presta lo stesso scopo per tutti gli utenti, al di fuori del super-user.
- Così un file <filename>/etc/hosts.equiv</filename>
- contenente:</para>
-
- <para><replaceable>macchina_remota</replaceable></para>
-
- <para>permette agli utenti provenienti da <systemitem class="fqdomainname"><replaceable>macchina_remota</replaceable></systemitem>
- che hanno gli stessi username della macchina corrente, di
- connettersi a quest'ultima senza la necessita' di inserire la
- password.</para>
-
- <para>Un file <filename>/etc/hosts.equiv</filename> che contiene:</para>
-
- <para><replaceable>macchina_remota utente_remoto</replaceable></para>
-
- <para>permette a
- <systemitem class="username"><replaceable>utente_remoto</replaceable></systemitem> su <systemitem class="fqdomainname"><replaceable>macchina_remota</replaceable></systemitem>
- di connettersi alla macchina corrente allo stesso modo dell'utente
- locale, tranne che per il super-user.</para>
-
- <para>I file <filename>/etc/hosts.equiv</filename> e
- <filename>~/.rhosts</filename> vanno usati con cautela.</para>
-
- <para>Le versioni dei programmi &man.rcp.1;, &man.rsh.1; e &man.rlogin.1;
- basati sulla Secure SHell (<application>SSH</application>) sono
- liberamente disponibili e forniscono molta più sicurezza.</para>
- </sect2>
- </sect1>
-</chapter>
diff --git a/it_IT.ISO8859-15/books/unix-introduction/editors/chapter.xml b/it_IT.ISO8859-15/books/unix-introduction/editors/chapter.xml
deleted file mode 100644
index dbe01163c7..0000000000
--- a/it_IT.ISO8859-15/books/unix-introduction/editors/chapter.xml
+++ /dev/null
@@ -1,1277 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-15"?>
-<!--
- The FreeBSD Italian Documentation Project
-
- $FreeBSD$
--->
-<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="editors">
- <title>Editor</title>
-
- <para>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
- <application>grep</application> e la famiglia
- <application>roff</application>). Tra gli editor, l'editor visuale (o a
- schermo pieno) standard su Unix è <application>vi</application>.
- 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).</para>
-
- <para>&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 <keycap>escape</keycap>.
- 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à <emphasis>vi</emphasis>
- premere <keycap>Q</keycap> per andare in modalità
- <emphasis>ex</emphasis>. In modaltà <emphasis>ex</emphasis>, al
- prompt : digitare <command>vi</command> per ritornare in modalità
- <emphasis>vi</emphasis>. Inoltre è disponibile una modalità
- di &man.vi.1; in sola lettura, che può essere invocata con
- &man.view.1;.</para>
-
- <para>Un altro editor comune nei sistemi Unix, specialmente nei college e
- negli ambienti universitari, è <application>emacs</application> (che
- sta per <quote>editing macros</quote>). Mentre &man.vi.1; è in
- generale compreso nel sistema operativo Unix, &man.emacs.1; usualmente non
- lo è. <application>Emacs</application> viene distribuito dalla Free
- Software Foundation ed è discutibilmente il più potente editor
- disponibile per Unix. <application>Emacs</application> è un software
- di sistema molto grande ed è un grossa risorsa di sistema per un
- utente di computer.</para>
-
- <para>La Free Software Foundation e il progetto GNU (del quale
- <application>emacs</application> 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 <quote>l'atto fondamentale di amicizia
- tra programmatori</quote>. La loro General Public License garantisce il
- diritto d'uso, di modifica e di distribuzione di
- <application>emacs</application> (incluso il suo codice sorgente) ed
- è stata progettata specificatamente per impedire a qualcuno di
- prendersi un profitto finanziario da <application>emacs</application> o da
- altri software conseguiti attraverso la Free Software Foundation. Molti dei
- loro software, incluso <application>emacs</application>, sono disponibili
- via <link xlink:href="ftp://ftp.gnu.org/pub/gnu/"><systemitem class="fqdomainname">ftp://ftp.gnu.org/pub/gnu/</systemitem></link> e
- <link xlink:href="http://www.gnu.org/"><systemitem class="fqdomainname">http://www.gnu.org/</systemitem></link>.</para>
-
- <para>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.</para>
-
- <sect1 xml:id="editors-vi">
- <title>Configurare la propria sessione vi</title>
-
- <para>Per configurare l'ambiente di &man.vi.1; certe opzioni possono essere
- settate con il comando di linea dell'editor <command>:set</command>
- 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 <filename>.exrc</filename>. Inoltre,
- questo file può contenere macro per mappare battute di tasti in
- funzioni usando la funzione <command>map</command>. All'interno di
- &man.vi.1; queste macro possono essere definite con il comando
- <command>:map</command>. I caratteri di controllo possono essere inseriti
- digitando prima <keycombo action="simul">
- <keycap>Ctrl</keycap>
- <keycap>V</keycap>
- </keycombo>, 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.</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="2in"/>
-
- <tbody>
- <row>
- <entry><command>:set all</command></entry>
-
- <entry>visualizza tutti i settaggi delle opzioni</entry>
- </row>
-
- <row>
- <entry><command>:set ignorecase</command></entry>
-
- <entry>ignora il maiuscolo e minuscolo di un carattere in una
- ricerca</entry>
- </row>
-
- <row>
- <entry><command>:set list</command></entry>
-
- <entry>visualizza tab e return</entry>
- </row>
-
- <row>
- <entry><command>:set nolist</command></entry>
-
- <entry>mette off l'opzione <option>list</option></entry>
- </row>
-
- <row>
- <entry><command>:set number</command></entry>
-
- <entry>visualizza i numeri di linea</entry>
- </row>
-
- <row>
- <entry><command>:set nonumber</command></entry>
-
- <entry>disattiva i numeri di linea</entry>
- </row>
-
- <row>
- <entry><command>:set showmode</command></entry>
-
- <entry>visualizza l'indicazione che la modalità di
- inserimento è on</entry>
- </row>
-
- <row>
- <entry><command>:set noshowmode</command></entry>
-
- <entry>mette off l'opzione <option>showmode</option></entry>
- </row>
-
- <row>
- <entry><command>:set
- wrapmargin=n</command></entry>
-
- <entry>mette on la modalità word-wrap a
- <replaceable>n</replaceable> spazi dal margine destro</entry>
- </row>
-
- <row>
- <entry><command>:set wrapmargin=0</command></entry>
-
- <entry>mette off l'opzione <option>wrapmargin</option></entry>
- </row>
-
- <row>
- <entry><command>:set warn</command></entry>
-
- <entry>visualizza l'avvertimento <quote>Ultima modifica non
- registrata</quote></entry>
- </row>
-
- <row>
- <entry><command>:set nowarn</command></entry>
-
- <entry>mette off l'avvertimento di scrittura
- <option>warn</option></entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Segue un esempio di file <filename>.exrc</filename>:</para>
-
- <programlisting>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)</programlisting>
- </sect1>
-
- <sect1 xml:id="editors-emacs">
- <title>Configurare la propria sessione emacs</title>
-
- <para>Configurare l'ambiente di &man.emacs.1; equivale a creare chiamate a
- funzioni LISP. &man.emacs.1; è infinitamente personalizzabile
- tramite variabili <emphasis>emacs</emphasis>, funzioni built-in e
- attraverso la programmazione Emacs LISP. I settaggi possono essere
- specificati dal minibuffer (o da linea di comando) durante una sessione
- <emphasis>emacs</emphasis>. Alternativamente, i settaggi usati di
- frequente possono essere attivati automaticamente quando viene invocato
- &man.emacs.1;, usando il file <filename>.emacs</filename>. Benchè
- una discussione del Emacs LISP vada oltre lo scopo di questo documento,
- seguono alcuni esempi di configurazioni per &man.emacs.1;.</para>
-
- <para>Per settare o verificare variabili <emphasis>emacs</emphasis> o per
- usare le sue funzioni built-in, si usa il tasto <keycap>escape</keycap>
- (<emphasis>Meta</emphasis> è come &man.emacs.1; si riferisce a
- questo) seguito dalla lettera <keycap>x</keycap>, quindi la variabile o
- la funzione e i suoi argomenti.</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="3in"/>
-
- <tbody>
- <row>
- <entry><command>M, x
- what-line</command></entry>
-
- <entry>quale linea è sul cursore?</entry>
- </row>
-
- <row>
- <entry><command>M, x
- auto-fill-mode</command></entry>
-
- <entry>mette on word-wrap</entry>
- </row>
-
- <row>
- <entry><command>M, x
- auto-fill-mode</command></entry>
-
- <entry>mette off word-wrap</entry>
- </row>
-
- <row>
- <entry><command>M, x
- set-variable &lt;return&gt;
- fill-column &lt;return&gt; 45</command></entry>
-
- <entry>setta la lunghezza di linea a 45 caratteri</entry>
- </row>
-
- <row>
- <entry><command>M, x
- set-variable &lt;return&gt;
- auto-save-interval &lt;return&gt;
- 300</command></entry>
-
- <entry>salva automaticamente il file ogni 300 battute di
- tasti</entry>
- </row>
-
- <row>
- <entry><command>M, x
- goto-line &lt;return&gt;
- 16</command></entry>
-
- <entry>muove il cursore alla linea 16</entry>
- </row>
-
- <row>
- <entry><command>M, x
- help-for-help</command></entry>
-
- <entry>invoca l'help di emacs quando <keycombo action="simul">
- <keycap>Ctrl</keycap>
- <keycap>h</keycap>
- </keycombo> è stato mappato al tasto
- <keycap>backspace</keycap></entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Segue un esempio del file <filename>.emacs</filename>:</para>
-
- <programlisting>(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, #&lt;return&gt;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 "")</programlisting>
- </sect1>
-
- <sect1 xml:id="editors-vi-guide">
- <title>Veloce guida per vi</title>
-
- <para>Tutti i comandi in &man.vi.1; sono preceduti dalla pressione del tasto
- <keycap>escape</keycap>. Ogni volta che si deve intraprendere un nuovo
- comando si deve utilizzare il tasto di <keycap>escape</keycap>.
- Diversamente da dove indicato, &man.vi.1; è case sensitive
- (sensibile alla differenza minuscolo e maiuscolo).</para>
-
- <para><emphasis>Comandi movimento cursore:</emphasis></para>
-
- <para>(<replaceable>n</replaceable>) indica un numero ed è
- opzionale</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1.5in"/>
-
- <tbody>
- <row>
- <entry><command>(n)h</command></entry>
-
- <entry>(<replaceable>n</replaceable>) spazi a sinistra</entry>
- </row>
-
- <row>
- <entry><command>(n)j</command></entry>
-
- <entry>(<replaceable>n</replaceable>) spazi giù</entry>
- </row>
-
- <row>
- <entry><command>(n)k</command></entry>
-
- <entry>(<replaceable>n</replaceable>) spazi su</entry>
- </row>
-
- <row>
- <entry><command>(n)l</command></entry>
-
- <entry>(<replaceable>n</replaceable>) spazi a destra</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>(Generalmente funzionano anche i tasti freccia)</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1.5in"/>
-
- <tbody>
- <row>
- <entry><command>
- Ctrl
- F
- </command></entry>
-
- <entry>avanti di una schermata</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- B
- </command></entry>
-
- <entry>indietro di una schermata</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- D
- </command></entry>
-
- <entry>giù di mezza schermata</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- U
- </command></entry>
-
- <entry>su di mezza schermata</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>(<keycap>Ctrl</keycap> indica il tasto <keycap>control</keycap>; il
- case sensitive non è importante)</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1.5in"/>
-
- <tbody>
- <row>
- <entry><command>H</command></entry>
-
- <entry>all'inizio della linea superiore della schermata</entry>
- </row>
-
- <row>
- <entry><command>M</command></entry>
-
- <entry>all'inizio della linea mediana della schermata</entry>
- </row>
-
- <row>
- <entry><command>L</command></entry>
-
- <entry>all'inizio dell'ultima linea della schermata</entry>
- </row>
-
- <row>
- <entry><command>G</command></entry>
-
- <entry>all'inizio dell'ultima linea del file</entry>
- </row>
-
- <row>
- <entry><command>(n)G</command></entry>
-
- <entry>all'inizio della linea (<replaceable>n</replaceable>)</entry>
- </row>
-
- <row>
- <entry><command>0</command></entry>
-
- <entry>(zero) all'inizio della linea</entry>
- </row>
-
- <row>
- <entry><command>$</command></entry>
-
- <entry>alla fine della linea</entry>
- </row>
-
- <row>
- <entry><command>(n)w</command></entry>
-
- <entry>avanti (<replaceable>n</replaceable>) parole</entry>
- </row>
-
- <row>
- <entry><command>(n)b</command></entry>
-
- <entry>indietro (<replaceable>n</replaceable>) parole</entry>
- </row>
-
- <row>
- <entry><command>e</command></entry>
-
- <entry>fine della parola</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Inserimento testo:</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1.5in"/>
-
- <tbody>
- <row>
- <entry><command>i</command></entry>
-
- <entry>inserimento testo prima del cursore</entry>
- </row>
-
- <row>
- <entry><command>a</command></entry>
-
- <entry>aggiunta testo dopo il cursore (non sovrascrive altro
- testo)</entry>
- </row>
-
- <row>
- <entry><command>I</command></entry>
-
- <entry>inserimento testo all'inizio della linea</entry>
- </row>
-
- <row>
- <entry><command>A</command></entry>
-
- <entry>aggiunta testo alla fine della linea</entry>
- </row>
-
- <row>
- <entry><command>r</command></entry>
-
- <entry>sostituisce il carattere posto sotto il cursore con il
- prossimo carattere digitato</entry>
- </row>
-
- <row>
- <entry><command>R</command></entry>
-
- <entry>sovrascrive i caratteri fino alla fine della linea (o fino a
- quando il tasto <keycap>escape</keycap> viene digitato per
- cambiare comando)</entry>
- </row>
-
- <row>
- <entry><command>o</command></entry>
-
- <entry>(alpha o) inserisce una nuova linea dopo la linea corrente
- per inserire del testo</entry>
- </row>
-
- <row>
- <entry><command>O</command></entry>
-
- <entry>(alpha O) inserisce una nuova linea prima della linea
- corrente per inserire del testo</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Cancellazione testo:</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1.5in"/>
-
- <tbody>
- <row>
- <entry><command>dd</command></entry>
-
- <entry>cancella la linea corrente</entry>
- </row>
-
- <row>
- <entry><command>(n)dd</command></entry>
-
- <entry>cancella (<replaceable>n</replaceable>) linee</entry>
- </row>
-
- <row>
- <entry><command>(n)dw</command></entry>
-
- <entry>cancella (<replaceable>n</replaceable>) parole</entry>
- </row>
-
- <row>
- <entry><command>D</command></entry>
-
- <entry>cancella dal cursore fino alla fine della linea</entry>
- </row>
-
- <row>
- <entry><command>x</command></entry>
-
- <entry>cancella il carattere corrente</entry>
- </row>
-
- <row>
- <entry><command>(n)x</command></entry>
-
- <entry>cancella (<replaceable>n</replaceable>) caratteri</entry>
- </row>
-
- <row>
- <entry><command>X</command></entry>
-
- <entry>cancella il carattere precedente</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Comandi di modifica:</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1.5in"/>
-
- <tbody>
- <row>
- <entry><command>(n)cc</command></entry>
-
- <entry>modifica (<replaceable>n</replaceable>) caratteri sulla linea
- fino alla fine della linea (o fino a quando viene digitato il
- tasto <keycap>escape</keycap>)</entry>
- </row>
-
- <row>
- <entry><command>cw</command></entry>
-
- <entry>modifica i caratteri di una parola fino alla fine della
- parola (o fino a quando viene digitato il tasto
- <keycap>escape</keycap>)</entry>
- </row>
-
- <row>
- <entry><command>(n)cw</command></entry>
-
- <entry>modifica i caratteri delle prossime
- (<replaceable>n</replaceable>) parole</entry>
- </row>
-
- <row>
- <entry><command>c$</command></entry>
-
- <entry>modifica il testo alla fine della linea</entry>
- </row>
-
- <row>
- <entry><command>ct(x)</command></entry>
-
- <entry>modifica il testo alla lettera
- (<replaceable>x</replaceable>)</entry>
- </row>
-
- <row>
- <entry><command>C</command></entry>
-
- <entry>modifica il testo rimanente sulla linea corrente (fino a
- quando viene digitato il tasto <keycap>escape</keycap>)</entry>
- </row>
-
- <row>
- <entry><command>~</command></entry>
-
- <entry>modifica il minuscolo/maiuscolo del carattere
- corrente</entry>
- </row>
-
- <row>
- <entry><command>J</command></entry>
-
- <entry>unisce la linea corrente a quella successiva</entry>
- </row>
-
- <row>
- <entry><command>u</command></entry>
-
- <entry>annulla l'ultimo comando realizzato sulla linea
- corrente</entry>
- </row>
-
- <row>
- <entry><command>.</command></entry>
-
- <entry>ripete l'ultima modifica</entry>
- </row>
-
- <row>
- <entry><command>s</command></entry>
-
- <entry>sostituisce il carattere corrente con il testo
- digitato</entry>
- </row>
-
- <row>
- <entry><command>S</command></entry>
-
- <entry>sostituisce la linea corrente con il testo digitato</entry>
- </row>
-
- <row>
- <entry><command>:s</command></entry>
-
- <entry>sostituisce vecchie parole con nuove parole
- <command>:&lt;linee considerate&gt;
- s/vecchio/nuovo/g</command></entry>
- </row>
-
- <row>
- <entry><command>&amp;</command></entry>
-
- <entry>ripete l'ultimo comando di sostituzione
- (<command>:s</command>)</entry>
- </row>
-
- <row>
- <entry><command>(n)yy</command></entry>
-
- <entry><quote>strappa</quote> (<replaceable>n</replaceable>) linee
- dal buffer</entry>
- </row>
-
- <row>
- <entry><command>y(n)w</command></entry>
-
- <entry><quote>strappa</quote> (<replaceable>n</replaceable>) parole
- dal buffer</entry>
- </row>
-
- <row>
- <entry><command>p</command></entry>
-
- <entry>inserisce il testo eliminato o <quote>strappato</quote> dopo
- il cursore</entry>
- </row>
-
- <row>
- <entry><command>P</command></entry>
-
- <entry>inserisce il testo eliminato o <quote>strappato</quote> prima
- del cursore</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Manipolazione file:</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1.5in"/>
-
- <tbody>
- <row>
- <entry><command>:w
- (file)</command></entry>
-
- <entry>scrive i cambiamenti nel file specificato (file corrente di
- default)</entry>
- </row>
-
- <row>
- <entry><command>:wq</command></entry>
-
- <entry>scrive i cambiamenti nel file corrente e conclude la sessione
- di editing</entry>
- </row>
-
- <row>
- <entry><command>:w!
- (file)</command></entry>
-
- <entry>sovrascrive il file (file corrente di default)</entry>
- </row>
-
- <row>
- <entry><command>:q</command></entry>
-
- <entry>esce dalla sessione di editing se non sono stati creati
- cambiamenti</entry>
- </row>
-
- <row>
- <entry><command>:q!</command></entry>
-
- <entry>esce dalla sessione di editing e scarta eventuali
- cambiamenti non salvati</entry>
- </row>
-
- <row>
- <entry><command>:n</command></entry>
-
- <entry>edita il prossimo file nella lista dell'argomento</entry>
- </row>
-
- <row>
- <entry><command>:f
- (nome)</command></entry>
-
- <entry>modifica il nome del file corrente in quello
- specificato</entry>
- </row>
-
- <row>
- <entry><command>:r
- (file)</command></entry>
-
- <entry>legge il contenuto del file specificato all'interno del
- corrente editing e alla corrente posizione del cursore
- (inserisce un file)</entry>
- </row>
-
- <row>
- <entry><command>:!(comando)</command></entry>
-
- <entry>escape di shell</entry>
- </row>
-
- <row>
- <entry><command>:r!(comando)</command></entry>
-
- <entry>inserisce il risultato del comando di shell specificato nella
- posizione corrente</entry>
- </row>
-
- <row>
- <entry><keycap>ZZ</keycap></entry>
-
- <entry>scrive i cambiamenti nel file corrente ed esce</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect1>
-
- <sect1 xml:id="editors-emacs-guide">
- <title>Veloce guida per emacs</title>
-
- <para>I comandi di &man.emacs.1; sono realizzati sia tramite la
- simultanea pressione del tasto <keycap>control</keycap> (indicato da
- <keycombo action="simul">
- <keycap>Ctrl</keycap>
- <keycap/>
- </keycombo>), sia attraverso il primo colpo del tasto di
- <keycap>escape</keycap> (indicato da <keycap>M</keycap>,).</para>
-
- <para><emphasis>Comandi essenziali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1.5in"/>
-
- <tbody>
- <row>
- <entry><command>
- Ctrl
- h
- </command></entry>
-
- <entry>help</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- x
- , u</command></entry>
-
- <entry>undo (annulla operazione precedente)</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- x
- ,
- Ctrl
- g
- </command></entry>
-
- <entry>esce dalla operazione o comando corrente</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- x
- ,
- Ctrl
- s
- </command></entry>
-
- <entry>salva il file</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- x
- ,
- Ctrl
- c
- </command></entry>
-
- <entry>chiude &man.emacs.1;</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Movimenti cursore</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1.5in"/>
-
- <tbody>
- <row>
- <entry><command>
- Ctrl
- f
- </command></entry>
-
- <entry>avanti di un carattere</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- b
- </command></entry>
-
- <entry>indietro di un carattere</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- p
- </command></entry>
-
- <entry>linea precedente</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- n
- </command></entry>
-
- <entry>linea successiva</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- a
- </command></entry>
-
- <entry>inizio linea</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- e
- </command></entry>
-
- <entry>fine linea</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- l
- </command></entry>
-
- <entry>al centro della corrente linea sullo schermo</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- v
- </command></entry>
-
- <entry>sfoglia avanti</entry>
- </row>
-
- <row>
- <entry><command>M,
- v</command></entry>
-
- <entry>sfoglia indietro</entry>
- </row>
-
- <row>
- <entry><command>M,
- f</command></entry>
-
- <entry>avanti di una parola</entry>
- </row>
-
- <row>
- <entry><command>M,
- b</command></entry>
-
- <entry>indietro di una parola</entry>
- </row>
-
- <row>
- <entry><command>M,
- a</command></entry>
-
- <entry>inizio periodo</entry>
- </row>
-
- <row>
- <entry><command>M,
- e</command></entry>
-
- <entry>fine periodo</entry>
- </row>
-
- <row>
- <entry><command>M,
- {</command></entry>
-
- <entry>inizio paragrafo</entry>
- </row>
-
- <row>
- <entry><command>M,
- }</command></entry>
-
- <entry>fine paragrafo</entry>
- </row>
-
- <row>
- <entry><command>M,
- &lt;</command></entry>
-
- <entry>inizio buffer</entry>
- </row>
-
- <row>
- <entry><command>M,
- &gt;</command></entry>
-
- <entry>fine buffer</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Altre funzioni importanti</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1.5in"/>
-
- <tbody>
- <row>
- <entry><command>M,
- (n)</command></entry>
-
- <entry>ripete il prossimo comando (<replaceable>n</replaceable>)
- volte</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- d
- </command></entry>
-
- <entry>cancella un carattere</entry>
- </row>
-
- <row>
- <entry><command>M,
- d</command></entry>
-
- <entry>cancella una parola</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- k
- </command></entry>
-
- <entry>elimina linea</entry>
- </row>
-
- <row>
- <entry><command>M,
- k</command></entry>
-
- <entry>elimina periodo</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- s
- </command></entry>
-
- <entry>ricerca in avanti</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- r
- </command></entry>
-
- <entry>ricerca al rovescio</entry>
- </row>
-
- <row>
- <entry><command>M,
- %</command></entry>
-
- <entry>sostituzione di query</entry>
- </row>
-
- <row>
- <entry><command>M,
- c</command></entry>
-
- <entry>capitalizza parola</entry>
- </row>
-
- <row>
- <entry><command>M,
- u</command></entry>
-
- <entry>parola in lettere maiuscole</entry>
- </row>
-
- <row>
- <entry><command>M,
- l</command></entry>
-
- <entry>parola in lettere minuscole</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- t
- </command></entry>
-
- <entry>commuta caratteri</entry>
- </row>
-
- <row>
- <entry><command>M,
- t</command></entry>
-
- <entry>commuta parole</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- @
- </command></entry>
-
- <entry>marca l'inizio di una regione</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- w
- </command></entry>
-
- <entry>taglia/cancella tutto dalla marcatura al punto</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- y
- </command></entry>
-
- <entry>incolla il testo eliminato o <quote>strappato</quote>
- all'interno della locazione corrente</entry>
- </row>
-
- <row>
- <entry><command>M,
- q</command></entry>
-
- <entry>riformatta il paragrafo</entry>
- </row>
-
- <row>
- <entry><command>M,
- g</command></entry>
-
- <entry>riformatta ogni paragrafo nella regione</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="4.5in"/>
-
- <tbody>
- <row>
- <entry><command>M, x
- auto-fill-mode</command></entry>
-
- <entry>mette on word wrap</entry>
- </row>
-
- <row>
- <entry><command>M, x set-variable
- &lt;return&gt; fill-column
- &lt;return&gt; 45</command></entry>
-
- <entry>setta la lunghezza di linea a 45 caratteri</entry>
- </row>
-
- <row>
- <entry><command>M, x goto-line
- &lt;return&gt; 16</command></entry>
-
- <entry>muove il cursore alla linea 16</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1.5in"/>
-
- <tbody>
- <row>
- <entry><command>M,
- w</command></entry>
-
- <entry>copia la regione marcata</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- x
- ,
- Ctrl
- f
- </command></entry>
-
- <entry>cerca un file e lo legge</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- x
- ,
- Ctrl
- v
- </command></entry>
-
- <entry>cerca e legge un file alternativo</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- x
- , i</command></entry>
-
- <entry>inserisce un file alla posizione corrente</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- x
- ,
- Ctrl
- s
- </command></entry>
-
- <entry>salva il file</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- x
- ,
- Ctrl
- w
- </command></entry>
-
- <entry>scrive il buffer in un file differente</entry>
- </row>
-
- <row>
- <entry><command>
- Ctrl
- x
- ,
- Ctrl
- c
- </command></entry>
-
- <entry>esce da &man.emacs.1; e chiede di salvare</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect1>
-</chapter>
diff --git a/it_IT.ISO8859-15/books/unix-introduction/getting-started/chapter.xml b/it_IT.ISO8859-15/books/unix-introduction/getting-started/chapter.xml
deleted file mode 100644
index d941790a98..0000000000
--- a/it_IT.ISO8859-15/books/unix-introduction/getting-started/chapter.xml
+++ /dev/null
@@ -1,2211 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-15"?>
-<!--
- The FreeBSD Italian Documentation Project
-
- $FreeBSD$
--->
-<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="getting-started">
- <title>Iniziamo</title>
-
- <sect1 xml:id="getting-started-login">
- <title>Effettuare il login</title>
-
- <para>Una volta che l'utente si è collegato a un sistema Unix, gli
- viene chiesto di inserire un <emphasis>login</emphasis> username
- (nome utente) e una <emphasis>password</emphasis> (codice segreto). Il
- login username è il nome univoco dell'utente sul sistema. La
- password è un codice modificabile conosciuto solo dall'utente.
- Alla richiesta di <emphasis>login</emphasis>, l'utente deve inserire lo
- username e alla richiesta della <emphasis>password</emphasis>, deve essere
- inserita la password effettiva.</para>
-
- <note>
- <para><emphasis>Unix è un sistema case sensitive</emphasis> (fa
- distinzione tra caratteri minuscoli e maiuscoli). Quindi sia il
- <emphasis>login</emphasis> username che la <emphasis>password</emphasis>
- devono essere inseriti esattamente come sono stati creati; il login
- username è normalmente in minuscolo.</para>
- </note>
-
- <sect2 xml:id="getting-started-login-terminal-type">
- <title>Tipi di terminali</title>
-
- <para>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 <literal>vt100</literal>. Gli utenti connessi
- tramite una workstation Sun molto probabilmente useranno il tipo
- <literal>sun</literal>; quelli che usano un Terminale-X molto
- probabilmente useranno <literal>xterms</literal> oppure
- <literal>xterm</literal>.</para>
-
- <para>Il tipo di terminale indica al sistema Unix come interagire quando
- una sessione viene aperta.</para>
-
- <para>Può essere necessario risettare il tipo di terminale,
- digitando il comando:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="3.3in"/>
-
- <tbody>
- <row>
- <entry><command>setenv TERM &lt;tipo di
- terminale&gt;</command></entry>
-
- <entry>-se si usa la shell C
- (vedere <link linkend="shells">Capitolo 5</link>)</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>(Inoltre su alcuni sistemi Unix, ad esempio MAGNUS, è
- necessario dare il comando <command>unsetenv
- TERMCAP</command>.)</para>
-
- <para>oppure</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="3.3in"/>
-
- <tbody>
- <row>
- <entry><command>TERM=&lt;tipo di
- terminale&gt;; export TERM</command></entry>
-
- <entry>-se si usa la shell Bourne
- (vedere <link linkend="shells">Capitolo 5</link>)</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>dove <replaceable>&lt;tipo di terminale&gt;</replaceable> è
- il tipo di terminale, come <literal>vt100</literal>, che si desidera
- settare.</para>
- </sect2>
-
- <sect2 xml:id="getting-started-login-passwords">
- <title>Password</title>
-
- <para>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.</para>
-
- <para>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.</para>
-
- <para>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:</para>
-
- <itemizedlist>
- <listitem>
- <para>non usare una parola (o parole) di un linguaggio;</para>
- </listitem>
-
- <listitem>
- <para>non usare il proprio nome;</para>
- </listitem>
-
- <listitem>
- <para>non usare informazioni che possono essere trovate nel proprio
- portafoglio;</para>
- </listitem>
-
- <listitem>
- <para>non usare informazioni comunemente conosciute circa se stessi
- (come il soprannome, patente di guida, ecc.);</para>
- </listitem>
-
- <listitem>
- <para>non usare caratteri di controllo. Alcuni sistemi non li
- accettano;</para>
- </listitem>
-
- <listitem>
- <para>non scrivere la password in qualche posto;</para>
- </listitem>
-
- <listitem>
- <para>non dare la propria password a *nessuno*;</para>
- </listitem>
- </itemizedlist>
-
- <itemizedlist>
- <listitem>
- <para>usare un mix di tipi di caratteri (alfabetici, numerici,
- speciali);</para>
- </listitem>
-
- <listitem>
- <para>usare un mix di caratteri maiuscoli e caratteri
- minuscoli;</para>
- </listitem>
-
- <listitem>
- <para>usare un minimo di 6 caratteri;</para>
- </listitem>
-
- <listitem>
- <para>scegliere una password in modo da poterla ricordare;</para>
- </listitem>
-
- <listitem>
- <para>cambiare di frequente la propria password;</para>
- </listitem>
-
- <listitem>
- <para>assicurarsi che nessuna persona vicino a voi vi guardi quando si
- inserisce la propria password.</para>
- </listitem>
- </itemizedlist>
- </sect2>
-
- <sect2 xml:id="getting-started-login-exiting">
- <title>Uscita</title>
-
- <para><keycombo action="simul">
- <keycap>Ctrl</keycap>
- <keycap>D</keycap>
- </keycombo> - indica la fine di un flusso di dati;
- può far uscire dal sistema un utente. L'ultimo caso è
- disabilitato su molti sistemi</para>
-
- <para><keycombo action="simul">
- <keycap>Ctrl</keycap>
- <keycap>C</keycap>
- </keycombo> - interruzione</para>
-
- <para>&man.logout.1; - rilascia il sistema</para>
-
- <para>&man.exit.1; - rilascia la shell</para>
- </sect2>
-
- <sect2 xml:id="getting-started-login-identity">
- <title>Identità</title>
-
- <para>Il sistema identifica un utente attraverso il numero di utente e il
- numero di gruppo (rispettivamente <emphasis>userid</emphasis> e
- <emphasis>groupid</emphasis>) 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.</para>
-
- <para>Nei seguenti esempi il simbolo &prompt.user; è il proprio
- prompt di shell e non va digitato.</para>
-
- <para>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:</para>
-
- <screen>&prompt.user; <userinput>id</userinput>
-uid=1101(frank) gid=10(staff)</screen>
-
- <para>su altri sistemi mostra anche le informazioni sui gruppi aggiuntivi
- di appartenenza:</para>
-
- <screen>&prompt.user; <userinput>id</userinput>
-uid=1101(frank) gid=10(staff) groups=10(staff),5(operator),14(sysadmin),110(uts)</screen>
-
- <para>Il comando &man.groups.1; mostra le informazioni di tutti i gruppi
- di appartenenza, esempio:</para>
-
- <screen>&prompt.user; <userinput>groups</userinput>
-staff sysadmin uts operator</screen>
- </sect2>
- </sect1>
-
- <sect1 xml:id="getting-started-comm-line-struct">
- <title>Struttura della linea di comando di Unix</title>
-
- <para>Un <emphasis>comando</emphasis> è un programma che chiama
- il sistema Unix per qualche compito. Un comando ha la forma:</para>
-
- <para><command>comando
- [opzioni]
- [argomenti]</command></para>
-
- <para>dove un <emphasis>argomento</emphasis> 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.</para>
-
- <para>I comandi sono case sensitive (sensibili alle lettere maiuscole e
- minuscole). <command>comando</command>
- e <command>Comando</command> non sono
- la stessa cosa.</para>
-
- <para>Le <emphasis>opzioni</emphasis> sono generalmente precedute da un
- trattino (<keycap>-</keycap>) e per molti comandi, più opzioni
- possono essere messe insieme nella forma:</para>
-
- <para><command>comando
- -[opzione][opzione][opzione]</command></para>
-
- <para>esempio:</para>
-
- <para><command>ls -alR</command></para>
-
- <para>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.</para>
-
- <para>In molti comandi si possono separare le opzioni, facendole precedere
- ognuna da un trattino, esempio:</para>
-
- <para><command>comando
- -opzione1 -opzione2 -opzione3</command></para>
-
- <para>come in:</para>
-
- <para><command>ls -a -l -R</command></para>
-
- <para>Alcuni comandi hanno opzioni che richiedono parametri. Le opzioni che
- richiedono parametri sono di solito specificate separatamente,
- esempio:</para>
-
- <para><command>lpr -Pprinter3 -#2 file</command></para>
-
- <para>che trasmetterà 2 copie del file specificato a
- <filename>printer3</filename>.</para>
-
- <para>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.</para>
-
- <para>Le opzioni e la sintassi di un comando sono mostrate nelle
- <emphasis>pagine man</emphasis> del comando.</para>
- </sect1>
-
- <sect1 xml:id="getting-started-control-keys">
- <title>Tasti di controllo</title>
-
- <para>I <emphasis>tasti di controllo</emphasis> 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 <keycap>control</keycap> e alcuni altri <emphasis>tasti</emphasis>.
- Questa combinazione è generalmente indicata con
- <keycombo action="simul">
- <keycap>Ctrl</keycap>
- <keycap><replaceable>Tasto</replaceable></keycap>
- </keycombo> (oppure <keycombo action="simul">
- <keycap>^</keycap>
- <keycap><replaceable>Tasto</replaceable></keycap>
- </keycombo>). <keycombo action="simul">
- <keycap>Control</keycap>
- <keycap>S</keycap>
- </keycombo> può essere scritto come <keycombo action="simul">
- <keycap>Ctrl</keycap>
- <keycap>S</keycap>
- </keycombo> (oppure <keycombo action="simul">
- <keycap>^</keycap>
- <keycap>S</keycap>
- </keycombo>). Con i tasti di controllo le lettere maiuscole e minuscole
- sono la stessa cosa, così <keycombo action="simul">
- <keycap>Ctrl</keycap>
- <keycap>S</keycap>
- </keycombo> è lo stesso di <keycombo action="simul">
- <keycap>Ctrl</keycap>
- <keycap>s</keycap>
- </keycombo>. Questo particolare esempio (<keycombo action="simul">
- <keycap>Ctrl</keycap>
- <keycap>S</keycap>
- </keycombo>) è un segnale di <emphasis>stop</emphasis> e
- dice al terminale di non accettare più input. Il terminale
- rimarrà sospeso finchè un segnale di
- <emphasis>start</emphasis> <keycombo action="simul">
- <keycap>Ctrl</keycap>
- <keycap>Q</keycap>
- </keycombo> non sarà generato.</para>
-
- <para><keycombo action="simul">
- <keycap>Ctrl</keycap>
- <keycap>U</keycap>
- </keycombo> è normalmente il segnale di
- <quote><emphasis>cancellazione di linea</emphasis></quote> per il proprio
- terminale. Quando lo si digita, l'intera linea di input viene
- cancellata.</para>
-
- <para>Nell'editor &man.vi.1; si possono inserire i tasti
- di controllo all'interno del file di testo facendo seguire a
- <keycombo action="simul">
- <keycap>Ctrl</keycap>
- <keycap>V</keycap>
- </keycombo> il carattere di controllo desiderato; così per
- inserire in un documento <keycombo action="simul">
- <keycap>Ctrl</keycap>
- <keycap>H</keycap>
- </keycombo> si digita <keycombo action="simul">
- <keycap>Ctrl</keycap>
- <keycap>V</keycap>
- </keycombo>, <keycombo action="simul">
- <keycap>Ctrl</keycap>
- <keycap>H</keycap>
- </keycombo>.</para>
- </sect1>
-
- <sect1 xml:id="getting-started-stty">
- <title>stty - controllo del terminale</title>
-
- <para>&man.stty.1; mostra o configura le opzioni di controllo del terminale.
- L'abbreviazione <quote><emphasis>tty</emphasis></quote> risale fino ai
- giorni dei <quote>teletypewrite</quote>, che erano associati alla
- trasmissione di messaggi telegrafici ed erano primitivi modelli di
- terminali di computer.</para>
-
- <para>Per i nuovi utenti, l'uso principale del comando &man.stty.1; riguarda
- l'assegnazione della funzione di <quote>cancellazione di linea</quote> 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:</para>
-
- <itemizedlist>
- <listitem>
- <para>carattere di erase (eliminazione carattere) e di
- line-kill (eliminazione linea);</para>
- </listitem>
-
- <listitem>
- <para>velocità di trasmissione dati;</para>
- </listitem>
-
- <listitem>
- <para>controllo di parità sulla trasmissione dati;</para>
- </listitem>
-
- <listitem>
- <para>controllo del flusso hardware;</para>
- </listitem>
-
- <listitem>
- <para>carattere di nuova linea (&lt;NL&gt;), di return (&lt;CR&gt;) e di
- alimentazione linea (&lt;LF&gt;);</para>
- </listitem>
-
- <listitem>
- <para>interpretazione del carattere tab;</para>
- </listitem>
-
- <listitem>
- <para>modifica di un input grezzo;</para>
- </listitem>
-
- <listitem>
- <para>trasformazione di lettere minuscole in lettere maiuscole.</para>
- </listitem>
- </itemizedlist>
-
- <para>Il comando &man.stty.1; è molto dipendente dal sistema, quindi
- consultare le relative <emphasis>pagine man</emphasis> sul proprio sistema
- per i dettagli.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>stty [opzioni]</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1.5in"/>
-
- <tbody>
- <row>
- <entry><option>(none)</option></entry>
-
- <entry>mostra i settaggi del terminale</entry>
- </row>
-
- <row>
- <entry><option>all (-a)</option></entry>
-
- <entry>mostra tutte le opzioni</entry>
- </row>
-
- <row>
- <entry><option>echoe</option></entry>
-
- <entry>richiama ERASE come BS-spazio-BS</entry>
- </row>
-
- <row>
- <entry><option>dec</option></entry>
-
- <entry>imposta la modalità specifica dei sistemi operativi
- conformi al Digital Equipment Corporation (che distinguono ERASE
- da BACKSPACE) (non disponibile su tutti i sistemi)</entry>
- </row>
-
- <row>
- <entry><option>kill</option></entry>
-
- <entry>imposta il carattere per LINE-KILL</entry>
- </row>
-
- <row>
- <entry><option>erase</option></entry>
-
- <entry>imposta il carattere per ERASE</entry>
- </row>
-
- <row>
- <entry><option>intr</option></entry>
-
- <entry>imposta il carattere per INTERRUPT</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <para>Con il comando &man.stty.1; si possono visualizzare e cambiare i
- settaggi del proprio terminale di controllo. Per visualizzare tutti
- (<option>-a</option>) i settaggi correnti:</para>
-
- <screen>&prompt.user; <userinput>stty -a</userinput>
-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</screen>
-
- <para>Per cambiare i settaggi usando &man.stty.1;, ad esempio per cambiare
- il carattere di erase da <keycombo action="simul">
- <keycap>Ctrl</keycap>
- <keycap>?</keycap>
- </keycombo> (il tasto elimina) a <keycombo action="simul">
- <keycap>Ctrl</keycap>
- <keycap>H</keycap>
- </keycombo>:</para>
-
- <screen>&prompt.user; <userinput>stty erase ^H</userinput></screen>
-
- <para>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 <filename>.login</filename> o <filename>.profile</filename> di
- cui si parlerà più avanti.</para>
- </sect1>
-
- <sect1 xml:id="getting-started-get-help">
- <title>Ottenere aiuto</title>
-
- <para>Il manuale di Unix, usualmente chiamato <emphasis>man page</emphasis>
- (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.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>man [opzioni]
- nome_comando</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1.5in"/>
-
- <tbody>
- <row>
- <entry><option>-k
- <replaceable>parola_chiave</replaceable></option></entry>
-
- <entry>mostra alcune linee riassuntive dei comandi contenenti la
- parola chiave richiesta</entry>
- </row>
-
- <row>
- <entry><option>-M <replaceable>path</replaceable></option></entry>
-
- <entry>percorso per le pagine man</entry>
- </row>
-
- <row>
- <entry><option>-a</option></entry>
-
- <entry>mostra tutte le pagine man trovate (SVR4)</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <para>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 <option>-k</option>, ad esempio per cercare la parola
- <emphasis>password</emphasis>, si digita:</para>
-
- <screen>&prompt.user; <userinput>man -k password</userinput>
-passwd (5) - password file
-passwd (1) - cambia la password</screen>
-
- <para>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:</para>
-
- <screen>&prompt.user; <userinput>man passwd</userinput>
-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.</screen>
-
- <para>Qui l'output è stato parafrasato e troncato per una questione
- di spazio e di copyright.</para>
- </sect1>
-
- <sect1 xml:id="getting-started-directory-nav-control">
- <title>Navigazione e controllo delle directory</title>
-
- <para>Il file system di Unix è organizzato come la struttura
- ramificata di un albero a partire da root. La directory
- <emphasis>root</emphasis> del sistema è rappresentata dal carattere
- di slash in avanti (<filename>/</filename>). Le directory di sistema e
- quelle degli utenti sono organizzate sotto la directory
- <emphasis>root</emphasis>. In Unix l'utente non ha una directory root;
- generalmente dopo il login gli utenti vengono posizionati nella loro
- directory <emphasis>home</emphasis>. Gli utenti possono creare altre
- directory sotto la loro directory <emphasis>home</emphasis>. La tabella
- che segue mostra alcuni comandi per la navigazione tra directory.</para>
-
- <table frame="all" xml:id="getting-started-table-directory-nav-control">
- <title>Comandi di navigazione e controllo delle directory</title>
-
- <tgroup cols="2">
- <colspec colwidth="3in"/>
-
- <thead>
- <row>
- <entry align="center">Comando/Sintassi</entry>
-
- <entry align="center">Cosa fa</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><command>cd
- [directory]</command></entry>
-
- <entry>cambia directory</entry>
- </row>
-
- <row>
- <entry><command>ls
- [opzioni][directory
- o file]</command></entry>
-
- <entry>lista il contenuto della directory o i permessi del
- file specificato</entry>
- </row>
-
- <row>
- <entry><command>mkdir
- [opzioni]
- directory</command></entry>
-
- <entry>crea una directory</entry>
- </row>
-
- <row>
- <entry><command>pwd</command></entry>
-
- <entry>mostra la directory (corrente) di lavoro</entry>
- </row>
-
- <row>
- <entry><command>rmdir [opzioni]
- directory</command></entry>
-
- <entry>rimuove una directory</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <para>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.</para>
-
- <table frame="all" xml:id="getting-started-table-directory-nav-control-unix-vs-dos">
- <title>Comandi di navigazione e controllo delle directory Unix vs
- DOS</title>
-
- <tgroup cols="3">
- <colspec colwidth="3in"/>
-
- <colspec colwidth="2in"/>
-
- <thead>
- <row>
- <entry align="center">Comando</entry>
-
- <entry align="center">Unix</entry>
-
- <entry align="center">DOS</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry>lista il contenuto di una directory</entry>
-
- <entry><command>ls</command></entry>
-
- <entry><command>dir</command></entry>
- </row>
-
- <row>
- <entry>crea una directory</entry>
-
- <entry><command>mkdir</command></entry>
-
- <entry><command>md</command> &amp;
- <command>mkdir</command></entry>
- </row>
-
- <row>
- <entry>cambia directory</entry>
-
- <entry><command>cd</command></entry>
-
- <entry><command>cd</command> &amp;
- <command>chdir</command></entry>
- </row>
-
- <row>
- <entry>rimuove una directory</entry>
-
- <entry><command>rmdir</command></entry>
-
- <entry><command>rm</command> &amp;
- <command>rmdir</command></entry>
- </row>
-
- <row>
- <entry>ritorna alla directory home dell'utente</entry>
-
- <entry><command>cd</command></entry>
-
- <entry><command>cd\</command></entry>
- </row>
-
- <row>
- <entry>mostra la directory corrente di lavoro</entry>
-
- <entry><command>pwd</command></entry>
-
- <entry><command>cd</command></entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <sect2 xml:id="getting-started-directory-nav-control-pwd">
- <title>pwd - mostra la directory di lavoro</title>
-
- <para>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:</para>
-
- <screen>&prompt.user; <userinput>pwd</userinput>
-/home/frank/src</screen>
- </sect2>
-
- <sect2 xml:id="getting-started-directory-nav-control-cd">
- <title>cd - cambia directory</title>
-
- <para>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.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>cd [directory]</command></para>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="3.2in"/>
-
- <tbody>
- <row>
- <entry><command>cd</command> (oppure <command>chdir</command> in
- alcune shell)</entry>
-
- <entry>cambia directory</entry>
- </row>
-
- <row>
- <entry><command>cd</command></entry>
-
- <entry>si posiziona nella directory home dell'utente</entry>
- </row>
-
- <row>
- <entry><command>cd /</command></entry>
-
- <entry>si posiziona nella directory di sistema roor (/)</entry>
- </row>
-
- <row>
- <entry><command>cd ..</command></entry>
-
- <entry>sale di un livello di directory</entry>
- </row>
-
- <row>
- <entry><command>cd ../..</command></entry>
-
- <entry>sale di due livelli di directory</entry>
- </row>
-
- <row>
- <entry><command>cd
- /completo/path/name/da/root</command></entry>
-
- <entry>cambia directory rispetto a un path name assoluto
- (notare lo slash iniziale)</entry>
- </row>
-
- <row>
- <entry><command>cd
- path/da/posizione/corrente</command></entry>
-
- <entry>cambia directory rispetto a un path name relativo alla
- posizione corrente (no slash iniziale)</entry>
- </row>
-
- <row>
- <entry><command>cd
- ~username/directory</command></entry>
-
- <entry>cambia directory rispetto alla directory home dell'utente
- specificato (il carattere ~ non è valido nella shell
- Bourne; vedere il <link linkend="shells">Capitolo 5</link>).</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect2>
-
- <sect2 xml:id="getting-started-directory-nav-control-mkdir">
- <title>mkdir - crea una directory</title>
-
- <para>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.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>mkdir [opzioni]
- directory</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1.5in"/>
-
- <tbody>
- <row>
- <entry><option>-p</option></entry>
-
- <entry>crea una directory intermedia (genitore), quando
- necessario</entry>
- </row>
-
- <row>
- <entry><option>-m <replaceable>modi</replaceable></option></entry>
-
- <entry>permessi di accesso (SVR4). (Si vedranno i
- <quote>modi</quote> più avanti in questo
- Capitolo)</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <screen>&prompt.user; <userinput>mkdir /home/frank/data</userinput></screen>
-
- <para>oppure se la directory di lavoro corrente è
- <filename>/home/frank</filename>, il seguente comando è
- equivalente:</para>
-
- <screen>&prompt.user; <userinput>mkdir data</userinput></screen>
- </sect2>
-
- <sect2 xml:id="getting-started-directory-nav-control-rmdir">
- <title>rmdir - rimuove una directory</title>
-
- <para>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.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>rmdir
- directory</command></para>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <para>Per rimuovere la directory vuota
- <filename>/home/frank/data</filename> mentre si è in
- <filename>/home/frank</filename> usare:</para>
-
- <screen>&prompt.user; <userinput>rmdir data</userinput></screen>
-
- <para>oppure</para>
-
- <screen>&prompt.user; <userinput>rmdir /home/frank/data</userinput></screen>
- </sect2>
-
- <sect2 xml:id="getting-started-directory-nav-control-ls">
- <title>ls - mostra i contenuti delle directory</title>
-
- <para>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.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>ls [opzioni]
- [argomenti]</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <para>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 (-).</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="0.7in"/>
-
- <tbody>
- <row>
- <entry><option>-a</option></entry>
-
- <entry>mostra tutti i file, inclusi quelli che iniziano con
- un punto (.)</entry>
- </row>
-
- <row>
- <entry><option>-d</option></entry>
-
- <entry>mostra solo i nomi delle directory, non i file
- nella directory</entry>
- </row>
-
- <row>
- <entry><option>-F</option></entry>
-
- <entry>indica il tipo di elemento terminandolo con un
- simbolo:</entry>
- </row>
-
- <row>
- <entry/>
-
- <entry><emphasis>directory</emphasis> /</entry>
- </row>
-
- <row>
- <entry/>
-
- <entry><emphasis>socket</emphasis> =</entry>
- </row>
-
- <row>
- <entry/>
-
- <entry><emphasis>link simbolico</emphasis> @</entry>
- </row>
-
- <row>
- <entry/>
-
- <entry><emphasis>eseguibile</emphasis> *</entry>
- </row>
-
- <row>
- <entry><option>-g</option></entry>
-
- <entry>mostra il gruppo Unix assegnato al file, richiede l'opzione
- <option>-l</option> (BSD solamente) o su una macchina SVR4,
- esempio Solaris, questa opzione ha l'effetto opposto</entry>
- </row>
-
- <row>
- <entry><option>-L</option></entry>
-
- <entry>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</entry>
- </row>
-
- <row>
- <entry><option>-l</option></entry>
-
- <entry>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
- (--&gt;) precede il percorso del file collegato.</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Il <emphasis>campo modi</emphasis> viene fornito dall'opzione
- <option>-l</option> e consiste di 10 caratteri. Il primo carattere
- è uno dei seguenti:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="2in"/>
-
- <thead>
- <row>
- <entry>CARATTERE</entry>
-
- <entry>SE L'ELEMENTO E'</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><emphasis>d</emphasis></entry>
-
- <entry>directory</entry>
- </row>
-
- <row>
- <entry><emphasis>-</emphasis></entry>
-
- <entry>file ordinario</entry>
- </row>
-
- <row>
- <entry><emphasis>b</emphasis></entry>
-
- <entry>file speciale per dispositivi a blocchi</entry>
- </row>
-
- <row>
- <entry><emphasis>c</emphasis></entry>
-
- <entry>file speciale per dispositivi a caratteri</entry>
- </row>
-
- <row>
- <entry><emphasis>l</emphasis></entry>
-
- <entry>link simbolico</entry>
- </row>
-
- <row>
- <entry><emphasis>s</emphasis></entry>
-
- <entry>socket</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>I 9 caratteri successivi sono raggruppati in 3 blocchi di 3
- caratteri ciascuno. Indicano i <emphasis>permessi di accesso al
- file</emphasis>: i primi 3 caratteri si riferiscono ai permessi del
- <emphasis>proprietario</emphasis> del file, i successivi 3 ai permessi
- degli utenti del <emphasis>gruppo</emphasis> Unix assegnato al file e
- gli ultimi 3 caratteri ai permessi degl'<emphasis>altri</emphasis>
- utenti sul sistema. Possono assumere i seguenti simboli:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="0.4in"/>
-
- <tbody>
- <row>
- <entry><emphasis>r</emphasis></entry>
-
- <entry>permesso di lettura</entry>
- </row>
-
- <row>
- <entry><emphasis>w</emphasis></entry>
-
- <entry>permesso di scrittura</entry>
- </row>
-
- <row>
- <entry><emphasis>x</emphasis></entry>
-
- <entry>permesso di esecuzione</entry>
- </row>
-
- <row>
- <entry><emphasis>-</emphasis></entry>
-
- <entry>permesso negato</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Esistono altri permessi, specificamente progettati per essere usati
- in speciali situazioni. Questi sono spiegati nelle pagine man di
- &man.ls.1;.</para>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <para>Per mostrare i file in una directory</para>
-
- <screen>&prompt.user; <userinput>ls</userinput>
-demofiles frank linda</screen>
-
- <para>Per mostrare tutti i file in una directory, inclusi i file nascosti
- (iniziano con un punto):</para>
-
- <screen>&prompt.user; <userinput>ls -a</userinput>
-. .cshrc .history .plan .rhosts frank
-.. .emacs .login .profile demofiles linda</screen>
-
- <para>Per avere un listato lungo:</para>
-
- <screen>&prompt.user; <userinput>ls -al</userinput>
-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</screen>
- </sect2>
- </sect1>
-
- <sect1 xml:id="getting-started-file-mant-comm">
- <title>Comandi di gestione dei file</title>
-
- <para>Per creare, copiare, rimuovere file e per modificarne i permessi
- si possono usare i seguenti comandi.</para>
-
- <table frame="all" xml:id="getting-started-table-file-mant-comm">
- <title>Comandi di gestione dei file</title>
-
- <tgroup cols="2">
- <colspec colwidth="3in"/>
-
- <thead>
- <row>
- <entry align="center">Comando/Sintassi</entry>
-
- <entry align="center">Cosa fa</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><command>chgrp [opzioni]
- gruppo file</command></entry>
-
- <entry>cambia il gruppo assegnato ad un file</entry>
- </row>
-
- <row>
- <entry><command>chmod [opzioni]
- file</command></entry>
-
- <entry>cambia i permessi di accesso a file o directory</entry>
- </row>
-
- <row>
- <entry><command>chown [opzioni]
- proprietario file</command></entry>
-
- <entry>cambia il proprietario di un file; può essere usato
- solamente dal super-user</entry>
- </row>
-
- <row>
- <entry><command>cp [opzioni]
- file1 file2</command></entry>
-
- <entry>copia <filename>file1</filename>
- in <filename>file2</filename>;
- <filename>file2</filename> non dovrebbe
- già esistere. Questo comando crea o sovrascrive
- <filename>file2</filename></entry>
- </row>
-
- <row>
- <entry><command>mv [opzioni]
- file1 file2</command></entry>
-
- <entry>muove (rinomina)
- <filename>file1</filename> in
- <filename>file2</filename></entry>
- </row>
-
- <row>
- <entry><command>rm [opzioni]
- file</command></entry>
-
- <entry>elimina un file o una directory (<option>-r</option> rimuove
- ricorsivamente le directory e il loro contenuto)
- (<option>-i</option> chiede conferma prima di rimuove i
- file)</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <para>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.</para>
-
- <table frame="all" xml:id="getting-started-table-file-mant-comm-unix-vs-dos">
- <title>Comandi di gestione dei file Unix vs DOS</title>
-
- <tgroup cols="3">
- <colspec colwidth="3in"/>
-
- <colspec colwidth="2in"/>
-
- <thead>
- <row>
- <entry align="center">Comando</entry>
-
- <entry align="center">Unix</entry>
-
- <entry align="center">Dos</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry>copia un file</entry>
-
- <entry><command>cp</command></entry>
-
- <entry><command>copy</command></entry>
- </row>
-
- <row>
- <entry>muove un file</entry>
-
- <entry><command>mv</command></entry>
-
- <entry><command>move</command> (non supportato in tutte le
- versioni di Dos)</entry>
- </row>
-
- <row>
- <entry>rinomina un file</entry>
-
- <entry><command>mv</command></entry>
-
- <entry><command>rename</command> &amp;
- <command>ren</command></entry>
- </row>
-
- <row>
- <entry>elimina un file</entry>
-
- <entry><command>rm</command></entry>
-
- <entry><command>erase</command> &amp;
- <command>del</command></entry>
- </row>
-
- <row>
- <entry>mostra un file a schermo</entry>
-
- <entry><command>cat</command></entry>
-
- <entry><command>type</command></entry>
- </row>
-
- <row>
- <entry>mostra un file a schermo, una pagina alla volta</entry>
-
- <entry><command>more</command>, <command>less</command>,
- <command>pg</command></entry>
-
- <entry><command>type /p</command> (non supportato in tutte
- le versioni di Dos)</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <sect2 xml:id="getting-started-file-mant-comm-cp">
- <title>cp - copia un file</title>
-
- <para>Il comando &man.cp.1; copia il contenuto di un file in un altro
- file.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>cp [opzioni]
- filename1 filename2</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="0.5in"/>
-
- <tbody>
- <row>
- <entry><option>-i</option></entry>
-
- <entry>interattivo (chiede conferma prima di procedere)</entry>
- </row>
-
- <row>
- <entry><option>-r</option></entry>
-
- <entry>copia ricorsivamente una directory</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <screen>&prompt.user; <userinput>cp filename1 filename2</userinput></screen>
-
- <para>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.</para>
- </sect2>
-
- <sect2 xml:id="getting-started-file-mant-comm-mv">
- <title>mv - sposta un file</title>
-
- <para>Il comando &man.mv.1; rinomina (sposta) un file.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>mv [opzioni]
- vecchio_file nuovo_file</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="0.5in"/>
-
- <tbody>
- <row>
- <entry><option>-i</option></entry>
-
- <entry>interattivo (chiede conferma prima di procedere)</entry>
- </row>
-
- <row>
- <entry><option>-f</option></entry>
-
- <entry>non chiede la conferma quando si sovrascrive un file
- esistente (ignora <option>-i</option>)</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <screen>&prompt.user; <userinput>mv vecchio_file nuovo_file</userinput></screen>
-
- <para>Il file <filename>nuovo_file</filename>
- sostituisce
- <filename>vecchio_file</filename>.
- 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.</para>
- </sect2>
-
- <sect2 xml:id="getting-started-file-mant-comm-rm">
- <title>rm - elimina un file</title>
-
- <para>Il comando &man.rm.1; elimina un file.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>rm [opzioni]
- filename</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="0.5in"/>
-
- <tbody>
- <row>
- <entry><option>-i</option></entry>
-
- <entry>interattivo (chiede conferma prima di procedere)</entry>
- </row>
-
- <row>
- <entry><option>-r</option></entry>
-
- <entry>rimuove una directory ricorsivamente, rimuovendo prima i file
- e le directory sottostanti</entry>
- </row>
-
- <row>
- <entry><option>-f</option></entry>
-
- <entry>non chiede conferma prima di procedere
- (ignora <option>-i</option>)</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <screen>&prompt.user; <userinput>rm filename</userinput></screen>
-
- <para>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 <quote>non usato</quote>. 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
- <quote><emphasis>riprendere</emphasis></quote> un file che è
- stato eliminato in questo modo. Per questa ragione molti utenti alle
- prime armi effettuano un alias del comando di eliminazione in
- <command>rm -i</command> dove l'opzione <option>-i</option> chiede di
- confermare prima di rimuovere il file. Simili alias sono generalmente
- messi nel file <filename>.cshrc</filename> per la shell C (vedere il
- <link linkend="shells">Capitolo 5</link>).</para>
- </sect2>
-
- <sect2 xml:id="getting-started-file-mant-comm-file-perm">
- <title>Permessi dei file</title>
-
- <para>Ciascun file e directory ha permessi che stabiliscono chi può
- <emphasis>leggerlo</emphasis>, <emphasis>scriverlo</emphasis> e/o
- <emphasis>eseguirlo</emphasis>. Per scoprire i permessi assegnati a un
- file, può essere usato il comando &man.ls.1; con l'opzione
- <option>-l</option>. Quando si ha la necessità di conoscere il
- gruppo per il quale i permessi sono stati assegnati si può usare
- l'opzione <option>-g</option> insieme a <command>ls -l</command>
- (solamente BSD).</para>
-
- <para>Quando si usa il comando <command>ls -lg</command> su un file
- (<command>ls -l</command> su SysV) l'output sarà mostrato come
- il seguente:</para>
-
- <screen>-rwxr-x--- user Unixgroup size Month nn hh:mm filename</screen>
-
- <para>La zona dedicata ai caratteri e trattini
- (<emphasis>-rwxr-x---</emphasis>) è 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,
- <emphasis>-rwxr-x---</emphasis>, permette al proprietario
- <systemitem class="username">user</systemitem> del file di leggerlo, modificarlo ed
- eseguirlo; gli utenti del gruppo <systemitem class="groupname">Unixgroup</systemitem> del
- file possono leggerlo ed eseguirlo; gli <emphasis>altri</emphasis>
- utenti del sistema non possono accedere in alcun modo al file.</para>
- </sect2>
-
- <sect2 xml:id="getting-started-file-mant-comm-chmod">
- <title>chmod - cambio dei permessi del file</title>
-
- <para>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
- <emphasis>proprietario</emphasis> (<emphasis>u</emphasis>), i permessi
- del <emphasis>gruppo</emphasis> (<emphasis>g</emphasis>) e i permessi
- degli <emphasis>altri</emphasis> utenti (<emphasis>o</emphasis>))
- 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.</para>
-
- <para>Ogni tipo di permesso è rappresentato dal proprio numero
- equivalente:</para>
-
- <para><emphasis>lettura=4, scrittura=2, esecuzione=1</emphasis></para>
-
- <para>o da singoli caratteri:</para>
-
- <para><emphasis>lettura=r, scrittura=w, esecuzione=x</emphasis></para>
-
- <para>Il permesso <emphasis>4</emphasis> o <emphasis>r</emphasis>
- specifica il permesso di <emphasis>lettura</emphasis>. 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.</para>
-
- <para>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:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="0.7in"/>
-
- <tbody>
- <row>
- <entry>+</entry>
-
- <entry>aggiunge permessi</entry>
- </row>
-
- <row>
- <entry>-</entry>
-
- <entry>rimuove permessi</entry>
- </row>
-
- <row>
- <entry>=</entry>
-
- <entry>setta permessi</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Quindi per settare i permessi di lettura e di scrittura per il
- proprietario del file si usa nella notazione simbolica
- <emphasis>u=rw</emphasis>.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="3.5in"/>
-
- <tbody>
- <row>
- <entry><command>chmod nnn
- [lista argomenti]</command></entry>
-
- <entry>modalità numerica</entry>
- </row>
-
- <row>
- <entry><command>chmod [chi]
- op
- [perm]
- [lista argomenti]</command></entry>
-
- <entry>modalità simbolica</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>dove <replaceable>nnn</replaceable> sono i tre numeri rappresentanti
- i permessi del <emphasis>proprietario</emphasis>, del
- <emphasis>gruppo</emphasis> e degli <emphasis>altri</emphasis> utenti;
- <replaceable>chi</replaceable> può essere
- <emphasis>u,g,o</emphasis> oppure <emphasis>a</emphasis> (tutti) e
- <replaceable>perm</replaceable> può essere
- <emphasis>r,w,x</emphasis>. Nella notazione simbolica si può
- separare la specifica dei permessi con una virgola, come mostrato
- nell'esempio qui sotto.</para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="0.7in"/>
-
- <tbody>
- <row>
- <entry><option>-f</option></entry>
-
- <entry>forza (nessun messaggio di errore viene generato se la
- modifica non ha avuto successo)</entry>
- </row>
-
- <row>
- <entry><option>-R</option></entry>
-
- <entry>discesa ricorsiva attraverso la struttura delle directory
- e cambio dei modi</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <para>Se i permessi desiderati per il <filename>file1</filename> sono:
- <emphasis>proprietario</emphasis>: lettura, scrittura ed esecuzione;
- <emphasis>gruppo</emphasis>: lettura ed esecuzione;
- <emphasis>altri</emphasis>: lettura ed esecuzione; il comando da usare
- è:</para>
-
- <para><command>chmod 755 file1</command> oppure
- <command>chmod u=rwx,go=rx file1</command></para>
-
- <note>
- <para>Quando si assegnano i permessi a un file per l'utenza
- <emphasis>gruppo</emphasis> e per l'utenza <emphasis>altri</emphasis>
- è 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:</para>
-
- <para><command>chmod 711 .</command> oppure
- <command>chmod u=rw,+x .</command> oppure
- <command>chmod u=rwx,go=x .</command></para>
-
- <para>dove il punto (.) indica la
- <emphasis>directory corrente</emphasis>.</para>
- </note>
- </sect2>
-
- <sect2 xml:id="getting-started-file-mant-comm-chown">
- <title>chown - cambio del proprietario del file</title>
-
- <para>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.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="3.5in"/>
-
- <tbody>
- <row>
- <entry><command>chown [opzioni]
- utente[:gruppo]
- file</command></entry>
-
- <entry>(SVR4)</entry>
- </row>
-
- <row>
- <entry><command>chown [opzioni]
- utente[.gruppo]
- file</command></entry>
-
- <entry>(BSD)</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="0.7in"/>
-
- <tbody>
- <row>
- <entry><option>-R</option></entry>
-
- <entry>discende ricorsivamente attraverso la struttura della
- directory</entry>
- </row>
-
- <row>
- <entry><option>-f</option></entry>
-
- <entry>forza, non riporta errori</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <screen>&prompt.root; <userinput>chown nuovo_proprietario file</userinput></screen>
- </sect2>
-
- <sect2 xml:id="getting-started-file-mant-comm-chgrp">
- <title>chgrp - cambio del gruppo del file</title>
-
- <para>Con il comando &man.chgrp.1; tutti possono cambiare il gruppo dei
- propri file in un altro gruppo di appartenenza.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>chgrp [opzioni]
- gruppo file</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="0.7in"/>
-
- <tbody>
- <row>
- <entry><option>-R</option></entry>
-
- <entry>discende ricorsivamente attraverso la struttura della
- directory</entry>
- </row>
-
- <row>
- <entry><option>-f</option></entry>
-
- <entry>forza, non riporta errori</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <screen>&prompt.user; <userinput>chgrp nuovo_gruppo file</userinput></screen>
- </sect2>
- </sect1>
-
- <sect1 xml:id="getting-started-display-comm">
- <title>Comandi di visualizzazione</title>
-
- <para>Ci sono alcuni comandi che si possono usare per
- <emphasis>visualizzare</emphasis> o <emphasis>esaminare</emphasis> un
- file. Alcuni di questi sono editor che verranno trattati più
- avanti. Qui si illustreranno alcuni comandi normalmente usati per
- visualizzare un file.</para>
-
- <table frame="all" xml:id="getting-started-table-display-comm">
- <title>Comandi di visualizzazione</title>
-
- <tgroup cols="2">
- <colspec colwidth="3.5in"/>
-
- <thead>
- <row>
- <entry align="center">Comando/Sintassi</entry>
-
- <entry align="center">Cosa fa</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><command>echo
- [stringa]</command></entry>
-
- <entry>riporta in standard ouptut una stringa di testo</entry>
- </row>
-
- <row>
- <entry><command>cat [opzioni]
- file</command></entry>
-
- <entry>concatena (lista) un file</entry>
- </row>
-
- <row>
- <entry><command>more</command> (o <command>less</command> o
- <command>pg</command>)
- <command>[opzioni]
- file</command></entry>
-
- <entry>visualizzazione paginata di un file di testo</entry>
- </row>
-
- <row>
- <entry><command>head [-numero]
- file</command></entry>
-
- <entry>visualizza le prime 10 (o <replaceable>-numero</replaceable>)
- linee di un file</entry>
- </row>
-
- <row>
- <entry><command>tail [opzioni]
- file</command></entry>
-
- <entry>visualizza le ultime linee (o parte) di un file</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <sect2 xml:id="getting-started-display-comm-echo">
- <title>echo - mostra un'espressione</title>
-
- <para>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.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>echo [stringa]</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="0.7in"/>
-
- <tbody>
- <row>
- <entry><option>-n</option></entry>
-
- <entry>non stampa new-line (BSD, shell built-in)</entry>
- </row>
-
- <row>
- <entry><option>\c</option></entry>
-
- <entry>non stampa new-line (SVR4)</entry>
- </row>
-
- <row>
- <entry><option>\0<replaceable>n</replaceable></option></entry>
-
- <entry>dove <replaceable>n</replaceable> è il codice del
- carattere ASCII a 8 bit (SVR4)</entry>
- </row>
-
- <row>
- <entry><option>\t</option></entry>
-
- <entry>tab (SVR4)</entry>
- </row>
-
- <row>
- <entry><option>\f</option></entry>
-
- <entry>form-feed (emissione carta) (SVR4)</entry>
- </row>
-
- <row>
- <entry><option>\n</option></entry>
-
- <entry>new-line (SVR4)</entry>
- </row>
-
- <row>
- <entry><option>\v</option></entry>
-
- <entry>tab verticale (SVR4)</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <screen>&prompt.user; <userinput>echo Hello Class</userinput></screen>
-
- <para>oppure</para>
-
- <screen>&prompt.user; <userinput>echo "Hello Class"</userinput></screen>
-
- <para>Per impedire il carattere di fine linea:</para>
-
- <screen>&prompt.user; <userinput>echo -n Hello Class</userinput></screen>
-
- <para>oppure</para>
-
- <screen>&prompt.user; <userinput>echo "Hello Class \c"</userinput></screen>
-
- <para>dove il modo utilizzato nell'ultimo esempio dipende dal comando
- &man.echo.1; usato.</para>
-
- <para>L'opzione <option>\<replaceable>x</replaceable></option> deve essere
- interna a un paio di caratteri di quoting singoli o doppi, con o senza
- altri caratteri di stringa.</para>
- </sect2>
-
- <sect2 xml:id="getting-started-display-comm-cat">
- <title>cat - concatena un file</title>
-
- <para>Il comando di concatenazione &man.cat.1; visualizza il contenuto di
- un file.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>cat [opzioni]
- [file]</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="0.7in"/>
-
- <tbody>
- <row>
- <entry><option>-n</option></entry>
-
- <entry>precede ogni linea con un numero</entry>
- </row>
-
- <row>
- <entry><option>-v</option></entry>
-
- <entry>visualizza i caratteri non stampabili, eccetto tab,
- new-line e form-feed</entry>
- </row>
-
- <row>
- <entry><option>-e</option></entry>
-
- <entry>visualizza $ alla fine di ogni linea (prima di new-line)
- (quando usato con l'opzione <option>-v</option>)</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <screen>&prompt.user; <userinput>cat filename</userinput></screen>
-
- <para>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:</para>
-
- <screen>&prompt.user; <userinput>cat file1 file2 file3</userinput></screen>
- </sect2>
-
- <sect2 xml:id="getting-started-display-comm-more-less-pg">
- <title>more, less e pg - visualizzazione paginata di un file</title>
-
- <para>&man.more.1;, &man.less.1; e <command>pg</command> 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.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>more [opzioni]
- [+/schema]
- [filename]</command></para>
-
- <para><command>less [opzioni]
- [+/schema]
- [filename]</command></para>
-
- <para><command>pg [opzioni]
- [+/schema]
- [filename]</command></para>
-
- <para><emphasis>Opzioni</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="4">
- <colspec colwidth="1.5in"/>
-
- <colspec colwidth="1.5in"/>
-
- <colspec colwidth="1.5in"/>
-
- <thead>
- <row>
- <entry>more</entry>
-
- <entry>less</entry>
-
- <entry>pg</entry>
-
- <entry>Azione</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><option>-c</option></entry>
-
- <entry><option>-c</option></entry>
-
- <entry><option>-c</option></entry>
-
- <entry>pulisce lo schermo prima di visualizzare</entry>
- </row>
-
- <row>
- <entry/>
-
- <entry><option>-i</option></entry>
-
- <entry/>
-
- <entry>ignora differenza tra maiuscole e minuscole</entry>
- </row>
-
- <row>
- <entry><option>-w</option></entry>
-
- <entry>default</entry>
-
- <entry>default</entry>
-
- <entry>non esce alla fine dell'input, ma si mette in attesa di
- comandi</entry>
- </row>
-
- <row>
- <entry><option>-<replaceable>linee</replaceable></option></entry>
-
- <entry/>
-
- <entry><option>-<replaceable>linee</replaceable></option></entry>
-
- <entry># (numero di) linee di avanzamento</entry>
- </row>
-
- <row>
- <entry><option>+/<replaceable>schema</replaceable></option></entry>
-
- <entry><option>+/<replaceable>schema</replaceable></option></entry>
-
- <entry><option>+/<replaceable>schema</replaceable></option></entry>
-
- <entry>ricerca lo schema (pattern)</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Controlli interni</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="2in"/>
-
- <tbody>
- <row>
- <entry><command>more</command></entry>
-
- <entry>visualizza (una schermata alla volta) il file
- specificato</entry>
- </row>
-
- <row>
- <entry align="center"><emphasis>&lt;spazio&gt;</emphasis></entry>
-
- <entry>per vedere la schermata successiva</entry>
- </row>
-
- <row>
- <entry align="center"><emphasis>&lt;return&gt;o&lt;CR&gt;</emphasis></entry>
-
- <entry>per avanzare di una linea</entry>
- </row>
-
- <row>
- <entry align="center"><emphasis>q</emphasis></entry>
-
- <entry>per uscire</entry>
- </row>
-
- <row>
- <entry align="center"><emphasis>h</emphasis></entry>
-
- <entry>help</entry>
- </row>
-
- <row>
- <entry align="center"><emphasis>b</emphasis></entry>
-
- <entry>torna alla schermata precedente</entry>
- </row>
-
- <row>
- <entry align="center"><emphasis>/<replaceable>parola</replaceable></emphasis></entry>
-
- <entry>cerca <replaceable>parola</replaceable> nel resto del
- file</entry>
- </row>
-
- <row>
- <entry/>
-
- <entry>vedere le <emphasis>pagine man</emphasis> per altre
- opzioni</entry>
- </row>
-
- <row>
- <entry><command>less</command></entry>
-
- <entry>simile a &man.more.1;, vedere le
- <emphasis>pagine man</emphasis> per le opzioni</entry>
- </row>
-
- <row>
- <entry><command>pg</command></entry>
-
- <entry>in SVR4 equivale a &man.more.1; (pagina)</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect2>
-
- <sect2 xml:id="getting-started-display-comm-head">
- <title>head - mostra l'inizio di un file</title>
-
- <para>Il comando &man.head.1; visualizza l'inizio di un file.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>head [opzioni]
- file</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1in"/>
-
- <tbody>
- <row>
- <entry><option>-n
- <replaceable>numero</replaceable></option></entry>
-
- <entry>numero di linee da visualizzare partendo dall'inizio del
- file</entry>
- </row>
-
- <row>
- <entry><option>-<replaceable>numero</replaceable></option></entry>
-
- <entry>come sopra</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <para>Di default &man.head.1; mostra le prime 10 linee del file. Si
- possono visualizzare più (o meno) linee con l'opzione
- <option>-n <replaceable>numero</replaceable></option> o
- <option>-<replaceable>numero</replaceable></option>, ad esempio, per
- visualizzare le prime 40 linee:</para>
-
- <screen>&prompt.user; <userinput>head -40 filename</userinput></screen>
-
- <para>oppure</para>
-
- <screen>&prompt.user; <userinput>head -n 40 filename</userinput></screen>
- </sect2>
-
- <sect2 xml:id="getting-started-display-comm-tail">
- <title>tail - mostra la fine di un file</title>
-
- <para>Il comando &man.tail.1; visualizza la fine di un file.</para>
-
- <para><emphasis>Sintassi</emphasis></para>
-
- <para><command>tail [opzioni]
- file</command></para>
-
- <para><emphasis>Opzioni generali</emphasis></para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1in"/>
-
- <tbody>
- <row>
- <entry><option>-<replaceable>numero</replaceable></option></entry>
-
- <entry>numero di linee da visualizzare, partendo dalla fine del
- file</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para><emphasis>Esempi:</emphasis></para>
-
- <para>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
- <option>-<replaceable>numero</replaceable></option>:</para>
-
- <screen>&prompt.user; <userinput>tail -30 filename</userinput></screen>
- </sect2>
- </sect1>
-</chapter>
diff --git a/it_IT.ISO8859-15/books/unix-introduction/glossary/chapter.xml b/it_IT.ISO8859-15/books/unix-introduction/glossary/chapter.xml
deleted file mode 100644
index 06004a2946..0000000000
--- a/it_IT.ISO8859-15/books/unix-introduction/glossary/chapter.xml
+++ /dev/null
@@ -1,558 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-15"?>
-<!--
- The FreeBSD Italian Documentation Project
-
- $FreeBSD$
--->
-<glossary xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0">
- <title>Glossario</title>
-
- <glossdiv>
- <title>A</title>
-
- <glossentry>
- <glossterm>account</glossterm>
-
- <glossdef>
- <para>struttura di dati che contiene alcune informazioni (come password,
- nome reale, username, indirizzo, ecc.) relative a un utente</para>
- </glossdef>
- </glossentry>
-
- <glossentry>
- <glossterm>alias</glossterm>
-
- <glossdef>
- <para>meccanismo che permette di invocare un comando (o una combinazione
- di comandi) attraverso un nome pseudonimo precedentemente
- assegnato</para>
- </glossdef>
- </glossentry>
- </glossdiv>
-
- <glossdiv>
- <title>B</title>
-
- <glossentry>
- <glossterm>background</glossterm>
-
- <glossdef>
- <para>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</para>
-
- <para><emphasis>Vedere:</emphasis>
- <link linkend="shells-job-control">sezione 5.5</link></para>
- </glossdef>
- </glossentry>
-
- <glossentry>
- <glossterm>backquote</glossterm>
-
- <glossdef>
- <para>caratteri speciali utilizzati per inserire in una stringa l'output
- del comando specificato tra questi caratteri</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="shell-programming-sett-param-val">sezione 9.2</link></para>
- </glossdef>
- </glossentry>
-
- <glossentry>
- <glossterm>built-in</glossterm>
-
- <glossdef>
- <para>comandi incorporati nel codice della shell</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="shells-built-in-comm">sezione 5.1</link></para>
- </glossdef>
- </glossentry>
- </glossdiv>
-
- <glossdiv>
- <title>C</title>
-
- <glossentry>
- <glossterm>case sensitive</glossterm>
-
- <glossdef>
- <para>distinzione tra lettere maiuscole e lettere minuscole</para>
- </glossdef>
- </glossentry>
- </glossdiv>
-
- <glossdiv>
- <title>D</title>
-
- <glossentry>
- <glossterm>directory-home</glossterm>
-
- <glossdef>
- <para>è la directory dell'utente, nella quale ci si ritrova
- (in generale) dopo la fase di login</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="getting-started-directory-nav-control">sezione
- 3.6</link></para>
- </glossdef>
- </glossentry>
-
- <glossentry>
- <glossterm>directory-root</glossterm>
-
- <glossdef>
- <para>è la directory padre di tutte le altre directory (indicata
- spesso con il segno /)</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="structure-file-system">sezione 2.2</link></para>
- </glossdef>
- </glossentry>
- </glossdiv>
-
- <glossdiv>
- <title>E</title>
-
- <glossentry>
- <glossterm>editor</glossterm>
-
- <glossdef>
- <para>strumenti per manipolare testi (programmi, ecc.)</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="editors">Capitolo
- 10</link></para>
- </glossdef>
- </glossentry>
-
- <glossentry>
- <glossterm>EOF</glossterm>
-
- <glossdef>
- <para>sta per <quote>end of file</quote> e indica la fine del
- file</para>
- </glossdef>
- </glossentry>
- </glossdiv>
-
- <glossdiv>
- <title>F</title>
-
- <glossentry>
- <glossterm>filename</glossterm>
-
- <glossdef>
- <para>nome del file</para>
- </glossdef>
- </glossentry>
-
- <glossentry>
- <glossterm>file system</glossterm>
-
- <glossdef>
- <para>architettura formata da un insieme di strutture dati che permetto
- di organizzare e gestire i dati su disco</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="structure-file-system">sezione 2.2</link></para>
- </glossdef>
- </glossentry>
-
- <glossentry>
- <glossterm>foreground</glossterm>
-
- <glossdef>
- <para>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</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="shells-job-control">sezione 5.5</link></para>
- </glossdef>
- </glossentry>
- </glossdiv>
-
- <glossdiv>
- <title>G</title>
-
- <glossentry>
- <glossterm>groupid</glossterm>
-
- <glossdef>
- <para>numero che identifica in maniera univoca un gruppo di utenti su un
- sistema Unix</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="getting-started-login-identity">sezione 3.1.4</link></para>
- </glossdef>
- </glossentry>
-
- <glossentry>
- <glossterm>groupname</glossterm>
-
- <glossdef>
- <para>nome che identifica un gruppo su un sistema Unix</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="getting-started-login-identity">sezione 3.1.4</link></para>
- </glossdef>
- </glossentry>
- </glossdiv>
-
- <glossdiv>
- <title>H</title>
-
- <glossentry>
- <glossterm>hard link</glossterm>
-
- <glossdef>
- <para>link fisico tra due file</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="commands-work-files-ln">sezione 8.1.7</link></para>
- </glossdef>
- </glossentry>
-
- <glossentry>
- <glossterm>here document</glossterm>
-
- <glossdef>
- <para>speciale forma di quoting</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="shell-programming-here-doc">sezione 9.6</link></para>
- </glossdef>
- </glossentry>
-
- <glossentry>
- <glossterm>history</glossterm>
-
- <glossdef>
- <para>storia dei comandi digitati precedentemente</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="shells-history">sezione 5.6</link></para>
- </glossdef>
- </glossentry>
- </glossdiv>
-
- <glossdiv>
- <title>I</title>
-
- <glossentry>
- <glossterm>inode</glossterm>
-
- <glossdef>
- <para>struttura di dati contenente informazioni sui file</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="structure-directories-files-inodes">sezione 2.3</link></para>
- </glossdef>
- </glossentry>
- </glossdiv>
-
- <glossdiv>
- <title>J</title>
-
- <glossentry>
- <glossterm>job</glossterm>
-
- <glossdef>
- <para>sinonimo di processo</para>
- </glossdef>
- </glossentry>
- </glossdiv>
-
- <glossdiv>
- <title>K</title>
-
- <glossentry>
- <glossterm>kernel</glossterm>
-
- <glossdef>
- <para>è 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.</para>
- </glossdef>
- </glossentry>
- </glossdiv>
-
- <glossdiv>
- <title>L</title>
-
- <glossentry>
- <glossterm>login</glossterm>
-
- <glossdef>
- <para>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)</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="getting-started-login">sezione 3.1</link></para>
- </glossdef>
- </glossentry>
- </glossdiv>
-
- <glossdiv>
- <title>M</title>
-
- <glossentry>
- <glossterm>man page</glossterm>
-
- <glossdef>
- <para>pagina del manuale di un sistema Unix</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="getting-started-get-help">sezione 3.5</link></para>
- </glossdef>
- </glossentry>
-
- <glossentry>
- <glossterm>multi-level file system </glossterm>
-
- <glossdef>
- <para>file system a più livelli organizzati in gerarchia</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="structure-file-system">sezione 2.2</link></para>
- </glossdef>
- </glossentry>
-
- <glossentry>
- <glossterm>multi-processor</glossterm>
-
- <glossdef>
- <para>o multi-tasking; capacità del sistema operativo che
- permette di eseguire più programmi (processi) senza doverne
- aspettare la terminazione sequenziale</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="structure-os">sezione
- 2.1</link></para>
- </glossdef>
- </glossentry>
-
- <glossentry>
- <glossterm>multi-user</glossterm>
-
- <glossdef>
- <para>capacità del sistema operativo che permette di gestire
- più utenti contemporaneamente</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="structure-os">sezione
- 2.1</link></para>
- </glossdef>
- </glossentry>
- </glossdiv>
-
- <glossdiv>
- <title>O</title>
-
- <glossentry>
- <glossterm>OS</glossterm>
-
- <glossdef>
- <para>operating system, sistema operativo</para>
- </glossdef>
- </glossentry>
- </glossdiv>
-
- <glossdiv>
- <title>P</title>
-
- <glossentry>
- <glossterm>password</glossterm>
-
- <glossdef>
- <para>codice segreto di un account Unix utilizzato per autenticare un
- utente nel sistema</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="getting-started-login">sezione 3.1</link> e
- <link linkend="getting-started-login-passwords">sezione 3.1.2</link></para>
- </glossdef>
- </glossentry>
-
- <glossentry>
- <glossterm>path name</glossterm>
-
- <glossdef>
- <para>percorso dei nomi, che indica i <quote>rami</quote> del file
- system (directory separate da un /) che bisogna attraversare per
- raggiungere un determinato file o directory</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="structure-file-system">sezione 2.2</link></para>
- </glossdef>
- </glossentry>
-
- <glossentry>
- <glossterm>pattern</glossterm>
-
- <glossdef>
- <para>schema</para>
- </glossdef>
- </glossentry>
-
- <glossentry>
- <glossterm>pipe/piping</glossterm>
-
- <glossdef>
- <para>meccanismo che porta l'output di un comando nell'input di
- un altro</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="special-features-file-redir">sezione 6.2</link></para>
- </glossdef>
- </glossentry>
- </glossdiv>
-
- <glossdiv>
- <title>Q</title>
-
- <glossentry>
- <glossterm>quoting</glossterm>
-
- <glossdef>
- <para>tecnica di interpretazione di una stringa da parte della
- shell</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="shell-programming-quoting">sezione 9.3</link></para>
- </glossdef>
- </glossentry>
- </glossdiv>
-
- <glossdiv>
- <title>S</title>
-
- <glossentry>
- <glossterm>script</glossterm>
-
- <glossdef>
- <para>programma scritto nel linguaggio della shell</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="shell-programming-scripts">sezione 9.1</link></para>
- </glossdef>
- </glossentry>
-
- <glossentry>
- <glossterm>shell</glossterm>
-
- <glossdef>
- <para>interprete a linea di comando. È l'interfaccia tra
- l'utente e il sistema operativo (kernel)</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="shells">Capitolo
- 5</link></para>
- </glossdef>
- </glossentry>
-
- <glossentry>
- <glossterm>simbolic link</glossterm>
-
- <glossdef>
- <para>link simbolico (collegamento tramite path name) tra due file o
- directory</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="commands-work-files-ln">sezione 8.1.7</link></para>
- </glossdef>
- </glossentry>
-
- <glossentry>
- <glossterm>system call</glossterm>
-
- <glossdef>
- <para>sono delle procedure (routine) standard, che i programmi utente
- utilizzano per accedere ai servizi che il kernel mette
- a disposizione</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="structure-os">sezione
- 2.1</link></para>
- </glossdef>
- </glossentry>
-
- <glossentry>
- <glossterm>standard error</glossterm>
-
- <glossdef>
- <para>dispositivo standard di errori (terminale di default)</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="special-features-file-desc">sezione 6.1</link></para>
- </glossdef>
- </glossentry>
-
- <glossentry>
- <glossterm>standard input</glossterm>
-
- <glossdef>
- <para>dispositivo standard di ingresso (tastiera di default)</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="special-features-file-desc">sezione 6.1</link></para>
- </glossdef>
- </glossentry>
-
- <glossentry>
- <glossterm>standard output</glossterm>
-
- <glossdef>
- <para>dispositivo standard di uscita (terminale di default)</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="special-features-file-desc">sezione 6.1</link></para>
- </glossdef>
- </glossentry>
-
- <glossentry>
- <glossterm>super-user</glossterm>
-
- <glossdef>
- <para>o root, utente speciale che amministra un sistema Unix</para>
- </glossdef>
- </glossentry>
- </glossdiv>
-
- <glossdiv>
- <title>U</title>
-
- <glossentry>
- <glossterm>userid</glossterm>
-
- <glossdef>
- <para>numero che identifica univocamente l'utente su un sistema
- Unix</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="getting-started-login-identity">sezione 3.1.4</link></para>
- </glossdef>
- </glossentry>
-
- <glossentry>
- <glossterm>username</glossterm>
-
- <glossdef>
- <para>o user, nome di un utente Unix (utilizzato nella fase di
- login)</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="getting-started-login-identity">sezione 3.1.4</link></para>
- </glossdef>
- </glossentry>
- </glossdiv>
-
- <glossdiv>
- <title>V</title>
-
- <glossentry>
- <glossterm>verbose</glossterm>
-
- <glossdef>
- <para>modalità di esecuzione di un comando che fornisce molte
- informazioni addizionali (utile per gli utenti novizi)</para>
- </glossdef>
- </glossentry>
- </glossdiv>
-
- <glossdiv>
- <title>W</title>
-
- <glossentry>
- <glossterm>wild card</glossterm>
-
- <glossdef>
- <para>anche conosciuti come meta-caratteri, sono caratteri speciali
- utilizzati in alcune circostanze per il confronto/sostituzione di
- caratteri</para>
-
- <para><emphasis>Vedere:</emphasis> <link linkend="special-features-wildcard">sezione 6.4</link></para>
- </glossdef>
- </glossentry>
-
- <glossentry>
- <glossterm>word-wrap</glossterm>
-
- <glossdef>
- <para>meccanismo che invia alla prossima riga l'intera parola fuori
- margine</para>
- </glossdef>
- </glossentry>
- </glossdiv>
-</glossary>
diff --git a/it_IT.ISO8859-15/books/unix-introduction/history/chapter.xml b/it_IT.ISO8859-15/books/unix-introduction/history/chapter.xml
deleted file mode 100644
index e077fe6e04..0000000000
--- a/it_IT.ISO8859-15/books/unix-introduction/history/chapter.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-15"?>
-<!--
- The FreeBSD Italian Documentation Project
-
- $FreeBSD$
--->
-<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="history">
- <title>Storia di Unix</title>
-
- <para>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).</para>
-
- <para>1969 AT&amp;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.</para>
-
- <para>1 Gennaio 1970 Inizio di Unix.</para>
-
- <para>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.</para>
-
- <para>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:</para>
-
- <itemizedlist>
- <listitem>
- <para>ambiente di programmazione;</para>
- </listitem>
-
- <listitem>
- <para>semplice interfaccia utente;</para>
- </listitem>
-
- <listitem>
- <para>semplici utility che possono essere combinate per realizzare potenti
- funzioni;</para>
- </listitem>
-
- <listitem>
- <para>file system gerarchico (ad albero);</para>
- </listitem>
-
- <listitem>
- <para>semplice interfacciamento con i dispositivi, in armonia con il
- formato dei file;</para>
- </listitem>
-
- <listitem>
- <para>sistema multi-utente e multi-processo;</para>
- </listitem>
-
- <listitem>
- <para>architettura indipendente e trasparente all'utente.</para>
- </listitem>
- </itemizedlist>
-
- <para>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.</para>
-
- <para>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&amp;T di
- commercializzare il prodotto, viene concessa una licenza
- all'Università per scopi educativi e una per esistenza
- commerciale.</para>
-
- <para>1977 Ci sono circa 500 siti Unix nel mondo.</para>
-
- <para>1980 BSD 4.1 (software sviluppato da Berkeley).</para>
-
- <para>1983 SunOS, BSD 4.2, Sys V.</para>
-
- <para>1984 Ci sono circa 100.000 siti Unix che girano su differenti
- piattaforme hardware, con differenti capacità.</para>
-
- <para>1988 AT&amp;T e Sun Microsystem sviluppano System V Release 4 (SVR4).
- Questo sarà in futuro implementato in UnixWare e Solaris 2.</para>
-
- <para>1993 Novell compra Unix da AT&amp;T.</para>
-
- <para>1994 Novell porta il nome <emphasis>UNIX</emphasis> a X/OPEN.</para>
-
- <para>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.</para>
-
- <para>1996 International Data Corporation prevede che nel 1997 ci saranno 3
- milioni di sistemi Unix nel mondo.</para>
-</chapter>
diff --git a/it_IT.ISO8859-15/books/unix-introduction/preface/chapter.xml b/it_IT.ISO8859-15/books/unix-introduction/preface/chapter.xml
deleted file mode 100644
index 9a0af02ff8..0000000000
--- a/it_IT.ISO8859-15/books/unix-introduction/preface/chapter.xml
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-15"?>
-<!--
- The FreeBSD Italian Documentation Project
-
- $FreeBSD$
--->
-<preface xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="preface">
- <title>Prefazione</title>
-
- <para>Questo documento è rivolto in prevalenza a quelle persone che si
- avvicinano per la prima volta a Unix, ma non solo.</para>
-
- <para>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.</para>
-
- <para>Non mi resta che augurarvi una buona lettura.</para>
-
- <bridgehead xml:id="preface-conv" renderas="sect1">Convenzioni usate in questo
- libro</bridgehead>
-
- <para>Per fornire un testo consistente e facile da leggere, sono state
- seguite numerose convenzioni in tutto il libro.</para>
-
- <bridgehead xml:id="preface-typographic-conv" renderas="sect2">Convenzioni
- Tipografiche</bridgehead>
-
- <variablelist>
- <varlistentry>
- <term><emphasis>Italico</emphasis></term>
-
- <listitem>
- <para>Un font <emphasis>italico</emphasis> è per i nomi dei file,
- per gli URL, per il testo enfatizzato, e per il primo utilizzo dei
- termini tecnici.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>Monospazio</varname></term>
-
- <listitem>
- <para>Un font <varname>monospazio</varname> è 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.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><application>Grassetto</application></term>
-
- <listitem>
- <para>Un font in <application>grassetto</application> è per le
- applicazioni, i comandi, e i tasti.</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <bridgehead xml:id="preface-command-conv" renderas="sect2">Input
- dell'Utente</bridgehead>
-
- <para>I tasti sono visualizzati in <keycap>grassetto</keycap> per
- differenziarli dal testo normale. Le combinazioni di tasti che devono
- essere digitate contemporaneamente sono visualizzate con un
- `<literal>+</literal>' tra i tasti, come:</para>
-
- <para><keycombo action="simul">
- <keycap>Ctrl</keycap>
- <keycap>Alt</keycap>
- <keycap>Del</keycap>
- </keycombo></para>
-
- <para>I tasti che devono essere digitati in sequenza saranno separati da
- virgole, come per esempio:</para>
-
- <para><keycombo action="simul">
- <keycap>Ctrl</keycap>
- <keycap>X</keycap>
- </keycombo>, <keycombo action="simul">
- <keycap>Ctrl</keycap>
- <keycap>S</keycap>
- </keycombo></para>
-
- <para>Vuol dire che l'utente deve digitare i tasti <keycap>Ctrl</keycap> e
- <keycap>X</keycap> contemporaneamente e poi i tasti <keycap>Ctrl</keycap> e
- <keycap>S</keycap>.</para>
-</preface>
diff --git a/it_IT.ISO8859-15/books/unix-introduction/shell-programming/chapter.xml b/it_IT.ISO8859-15/books/unix-introduction/shell-programming/chapter.xml
deleted file mode 100644
index 6764225a70..0000000000
--- a/it_IT.ISO8859-15/books/unix-introduction/shell-programming/chapter.xml
+++ /dev/null
@@ -1,1692 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-15"?>
-<!--
- The FreeBSD Italian Documentation Project
-
- $FreeBSD$
--->
-<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="shell-programming">
- <title>Programmazione di shell</title>
-
- <sect1 xml:id="shell-programming-scripts">
- <title>Script di shell</title>
-
- <para>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:</para>
-
- <programlisting>#! /bin/sh</programlisting>
-
- <para>e per la shell C:</para>
-
- <programlisting>#! /bin/csh -f</programlisting>
-
- <para>dove l'opzione <option>-f</option> indica che la shell non deve
- leggere il file <filename>.cshrc</filename>. Alcuni spazi bianchi
- seguenti il magico simbolo, #!, sono opzionali.</para>
-
- <para>Inoltre si deve specificare che lo script è eseguibile,
- settando gli opportuni bit sul file con il comando &man.chmod.1;,
- esempio:</para>
-
- <screen>&prompt.user; <userinput>chmod +x shell_script</userinput></screen>
-
- <para>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.</para>
- </sect1>
-
- <sect1 xml:id="shell-programming-sett-param-val">
- <title>Settare i valori dei parametri</title>
-
- <para>I valori di un parametro, ad esempio <literal>param</literal>, sono
- assegnati così:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1.5in"/>
-
- <thead>
- <row>
- <entry>Shell Bourne</entry>
-
- <entry>Shell C</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><command>param=valore</command></entry>
-
- <entry><command>set param =
- valore</command></entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>dove <replaceable>valore</replaceable> è una valida stringa che
- può essere chiusa tra caratteri di quoting singoli
- ('<replaceable>valore</replaceable>') o doppi
- ("<replaceable>valore</replaceable>") per permettere alcuni spazi bianchi
- all'interno del valore della stringa. Quando viene racchiusa con dei
- caratteri backquote (`<replaceable>valore</replaceable>`) 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 <replaceable>valore</replaceable>,
- esempio:</para>
-
- <screen>$ <userinput>day=`date +%a`</userinput></screen>
-
- <screen>$ <userinput>echo $day</userinput>
-Wed</screen>
-
- <para>Dopo che il valore del parametro è stato assegnato, si accede
- al valore corrente del parametro usando la notazione
- <literal>$param</literal> o <literal>${param}</literal>.</para>
- </sect1>
-
- <sect1 xml:id="shell-programming-quoting">
- <title>Quoting</title>
-
- <para>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
- <literal>var</literal>, a cui è stata assegnata il valore
- <literal>bat</literal>, e la stringa costante <literal>man</literal>. Se
- si vuole combinare queste stringhe per ottenere come risultato la stringa
- <literal>batman</literal> si può sperimentare:</para>
-
- <para><literal>$varman</literal></para>
-
- <para>ma questo non funzionerà, poichè la shell tenta di
- valutare una variabile chiamata <literal>varman</literal>, 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:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1.5in"/>
-
- <tbody>
- <row>
- <entry><literal>"$var"man</literal></entry>
-
- <entry>- quoting sulla variabile</entry>
- </row>
-
- <row>
- <entry><literal>$var""man</literal></entry>
-
- <entry>- separazione di parametri</entry>
- </row>
-
- <row>
- <entry><literal>$var"man"</literal></entry>
-
- <entry>- quoting sulla costante</entry>
- </row>
-
- <row>
- <entry><literal>$var''man</literal></entry>
-
- <entry>- separazione di parametri</entry>
- </row>
-
- <row>
- <entry><literal>$var'man'</literal></entry>
-
- <entry>- quoting sulla costante</entry>
- </row>
-
- <row>
- <entry><literal>$var\man</literal></entry>
-
- <entry>- separazione di parametri</entry>
- </row>
-
- <row>
- <entry><literal>${var}man</literal></entry>
-
- <entry>- si isola la variabile</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Queste funzionano tutte poichè ", ', \, { e } non sono validi
- caratteri per un nome di variabile.</para>
-
- <para>Non si può usare</para>
-
- <para><literal>'$var'man</literal></para>
-
- <para><literal>\$varman</literal></para>
-
- <para>poichè impediscono che la sostituzione della variabile
- prenda posto.</para>
-
- <para>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:</para>
-
- <screen>&prompt.user; <userinput>echo {$var}man</userinput>
-{bat}man</screen>
- </sect1>
-
- <sect1 xml:id="shell-programming-var">
- <title>Variabili</title>
-
- <para>Alcune variabili sono automaticamente inizializzate all'avvio della
- shell. Queste variabili permettono di riferirsi agli argomenti su linea
- di comando.</para>
-
- <para>Queste <emphasis>variabili di shell</emphasis> sono:</para>
-
- <table frame="all" xml:id="shell-programming-table-shell-var">
- <title>Variabili di shell</title>
-
- <tgroup cols="4">
- <colspec colwidth="1in"/>
-
- <colspec colwidth="5in"/>
-
- <colspec colwidth="0.3in"/>
-
- <colspec colwidth="0.3in"/>
-
- <thead>
- <row>
- <entry align="center">Variabile</entry>
-
- <entry align="center">Uso</entry>
-
- <entry align="center">sh</entry>
-
- <entry align="center">csh</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><literal>$#</literal></entry>
-
- <entry>numero di argomenti su linea di comando</entry>
-
- <entry align="center">x</entry>
-
- <entry align="center"/>
- </row>
-
- <row>
- <entry><literal>$-</literal></entry>
-
- <entry>opzioni fornite alla shell</entry>
-
- <entry align="center">x</entry>
-
- <entry align="center"/>
- </row>
-
- <row>
- <entry><literal>$?</literal></entry>
-
- <entry>valore di uscita dell'ultimo comando eseguito</entry>
-
- <entry align="center">x</entry>
-
- <entry align="center"/>
- </row>
-
- <row>
- <entry><literal>$$</literal></entry>
-
- <entry>numero id del processo corrente</entry>
-
- <entry align="center">x</entry>
-
- <entry align="center">x</entry>
- </row>
-
- <row>
- <entry><literal>$!</literal></entry>
-
- <entry>numero di processo dell'ultimo comando messo in
- background</entry>
-
- <entry align="center">x</entry>
-
- <entry align="center"/>
- </row>
-
- <row>
- <entry><literal>$n</literal></entry>
-
- <entry>argomento su linea di comando, dove
- <replaceable>n</replaceable> varia tra 1 e 9, leggendo da sinistra
- a destra</entry>
-
- <entry align="center">x</entry>
-
- <entry align="center">x</entry>
- </row>
-
- <row>
- <entry><literal>$0</literal></entry>
-
- <entry>il nome della shell corrente o del programma corrente</entry>
-
- <entry align="center">x</entry>
-
- <entry align="center">x</entry>
- </row>
-
- <row>
- <entry><literal>$*</literal></entry>
-
- <entry>tutti gli argomenti su linea di comando ("$1 $2 ...
- $9")</entry>
-
- <entry align="center">x</entry>
-
- <entry align="center">x</entry>
- </row>
-
- <row>
- <entry><literal>$@</literal></entry>
-
- <entry>tutti gli argomenti su linea di comando, ciascuno quotato
- separatamente ("$1" "$2" ... "$9")</entry>
-
- <entry align="center">x</entry>
-
- <entry align="center"/>
- </row>
-
- <row>
- <entry><literal>$argv[n]</literal></entry>
-
- <entry>seleziona l'<replaceable>n-esima</replaceable> parola dalla
- lista di input</entry>
-
- <entry align="center"/>
-
- <entry align="center">x</entry>
- </row>
-
- <row>
- <entry><literal>${argv[n]}</literal></entry>
-
- <entry>come sopra</entry>
-
- <entry align="center"/>
-
- <entry align="center">x</entry>
- </row>
-
- <row>
- <entry><literal>$#argv</literal></entry>
-
- <entry>riporta il numero di parole della lista di input</entry>
-
- <entry align="center"/>
-
- <entry align="center">x</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <para>L'uso di queste variabili può essere illustrato con alcuni
- semplici script. Per la shell Bourne lo script potrebbe essere:</para>
-
- <programlisting>#!/bin/sh
-echo "$#:" $#
-echo '$#:' $#
-echo '$-:' $-
-echo '$?:' $?
-echo '$$:' $$
-echo '$!:' $!
-echo '$3:' $3
-echo '$0:' $0
-echo '$*:' $*
-echo '$@:' $@</programlisting>
-
- <para>Quando viene eseguito con alcuni argomenti, mostra i valori delle
- variabili di shell, esempio:</para>
-
- <screen>$ <userinput>./variables.sh one two three four five</userinput>
-5: 5
-$#: 5
-$-:
-$?: 0
-$$: 12417
-$!:
-$3: three
-$0: ./variables.sh
-$*: one two three four five
-$@: one two three four five</screen>
-
- <para>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 <command>echo</command>, permette di rimpiazzare il nome
- della variabile con il suo valore.</para>
-
- <para>Similmente, per le variabili della shell C si possono illustrare le
- sostituzioni di variabili tramite il seguente script:</para>
-
- <programlisting>#!/bin/csh -f
-echo '$$:' $$
-echo '$3:' $3
-echo '$0:' $0
-echo '$*:' $*
-echo '$argv[2]:' $argv[2]
-echo '${argv[4]}:' ${argv[4]}
-echo '$#argv:' $#argv</programlisting>
-
- <para>che quando eseguito con alcuni argomenti mostra il risultato
- seguente:</para>
-
- <screen>&prompt.user; <userinput>./variables.csh one two three four five
-</userinput>
-$$: 12419
-$3: three
-$0: ./variables.csh
-$*: one two three four five
-$argv[2]: two
-${argv[4]}: four
-$#argv: 5</screen>
- </sect1>
-
- <sect1 xml:id="shell-programming-param-sost">
- <title>Sostituzione di parametri</title>
-
- <para>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.</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="2in"/>
-
- <tbody>
- <row>
- <entry><literal>$parametro</literal></entry>
-
- <entry>sostituisce questa stringa con il valore di
- <replaceable>parametro</replaceable></entry>
- </row>
-
- <row>
- <entry><literal>${parametro}</literal></entry>
-
- <entry>come sopra. Le parentesi sono d'aiuto se non c'è
- separazione tra questo parametro e una stringa adiacente.</entry>
- </row>
-
- <row>
- <entry><literal>$parametro=</literal></entry>
-
- <entry>setta <replaceable>parametro</replaceable> a
- <emphasis>null</emphasis>.</entry>
- </row>
-
- <row>
- <entry><literal>${parametro-default}</literal></entry>
-
- <entry>se <replaceable>parametro</replaceable> non è settato
- allora si usa <replaceable>default</replaceable> come valore.
- <replaceable>parametro</replaceable> non viene resettato.</entry>
- </row>
-
- <row>
- <entry><literal>${parametro=default}</literal></entry>
-
- <entry>se <replaceable>parametro</replaceable> non è settato
- allora lo si setta a <replaceable>default</replaceable> e si usa
- il nuovo valore</entry>
- </row>
-
- <row>
- <entry><literal>${parametro+nuovo_valore}</literal></entry>
-
- <entry>se <replaceable>parametro</replaceable> è settato
- allora si usa <replaceable>nuovo_valore</replaceable> altrimenti
- non si usa nulla. <replaceable>parametro</replaceable> non viene
- resettato.</entry>
- </row>
-
- <row>
- <entry><literal>${parametro?messaggio}</literal></entry>
-
- <entry>se <replaceable>parametro</replaceable> non è settato
- allora si visualizza il messaggio. Se
- <replaceable>parametro</replaceable> è settato allora si
- usa il valore corrente.</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>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 <emphasis>non-nullo</emphasis>.</para>
-
- <para>La shell C ha alcuni modi aggiuntivi per la sostituzione di
- parametri:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1.5in"/>
-
- <tbody>
- <row>
- <entry><literal>$lista[n]</literal></entry>
-
- <entry>seleziona l'<replaceable>n-esima</replaceable> parola dalla
- lista</entry>
- </row>
-
- <row>
- <entry><literal>${lista[n]}</literal></entry>
-
- <entry>come sopra</entry>
- </row>
-
- <row>
- <entry><literal>$#lista</literal></entry>
-
- <entry>riporta il numero di parole in lista</entry>
- </row>
-
- <row>
- <entry><literal>$?parametro</literal></entry>
-
- <entry>ritorna 1 se il parametro è settato, 0
- altrimenti</entry>
- </row>
-
- <row>
- <entry><literal>${?parametro}</literal></entry>
-
- <entry>come sopra</entry>
- </row>
-
- <row>
- <entry><literal>$&lt;</literal></entry>
-
- <entry>legge una linea da &man.stdin.4;</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Inoltre la shell C definisce l'array
- <literal>$argv[n]</literal> per
- contenere gli <replaceable>n</replaceable> argomenti della linea di
- comando e <literal>$#argv</literal> per il numero di argomenti, come
- specificato in <link linkend="shell-programming-table-shell-var">Tabella
- 9.1</link>.</para>
-
- <para>Per illustrare alcune di queste caratteristiche si userà il
- seguente script di prova:</para>
-
- <programlisting>#!/bin/sh
-param0=$0
-test -n "$1" &amp;&amp; param1=$1
-test -n "$2" &amp;&amp; param2=$2
-test -n "$3" &amp;&amp; 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</programlisting>
-
- <para>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.</para>
-
- <para>Nella prima esecuzione dello script non vengono forniti
- argomenti:</para>
-
- <screen>$ <userinput>./parameter.sh</userinput>
-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</screen>
-
- <para>In questa seconda esecuzione dello script si forniscono alcuni
- argomenti:</para>
-
- <screen>$ <userinput>./parameter one two three</userinput>
-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</screen>
- </sect1>
-
- <sect1 xml:id="shell-programming-here-doc">
- <title>Here document</title>
-
- <para>Un <emphasis>here document</emphasis> è 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 <emphasis>&lt;&lt;<replaceable>PAROLA</replaceable></emphasis>
- e finisce con una linea contenete solamente
- <emphasis><replaceable>PAROLA</replaceable></emphasis>. Nella shell
- Bourne si può impedire la sostituzione di shell effettuando un
- escape su <emphasis><replaceable>PAROLA</replaceable></emphasis>, mettendo
- un \ davanti a <emphasis><replaceable>PAROLA</replaceable></emphasis>
- sulla linea di redirezione, esempio
- <emphasis>&lt;&lt;\<replaceable>PAROLA</replaceable></emphasis>, ma non
- sulla linea finale. Per avere lo stesso effetto con la shell C si mette
- il \ davanti a <emphasis><replaceable>PAROLA</replaceable></emphasis> in
- entrambi i posti.</para>
-
- <para>Gli script che seguono illustrano questo meccanismo:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="3.3in"/>
-
- <tbody>
- <row>
- <entry>per la <emphasis>shell Bourne</emphasis>:</entry>
-
- <entry>e per la <emphasis>shell C:</emphasis></entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <programlisting>#!/bin/sh #!/bin/csh -f
-fa=fa set fa = fa
-non="" set non = ""
-cat &lt;&lt; EOF cat &lt;&lt; EOF
-Questo here document Questo here document
-$non $fa $non $fa
-sostituzione di variabile sostituzione di variabile
-EOF EOF
-cat &lt;&lt; \EOF cat &lt;&lt; \EOF
-Questo here document Questo here document
-$non $fa $non $fa
-sostituzione di variabile sostituzione di variabile
-EOF \EOF</programlisting>
-
- <para>Entrambi gli output producono:</para>
-
- <screen>Questo here document
-fa
-sostituzione di variabile
-Questo here document
-$non $fa
-sostituzione di variabile</screen>
-
- <para>Nella parte superiore dell'esempio le variabili di shell
- <literal>$non</literal> e <literal>$fa</literal> sono sostituite.
- Nella parte inferiore queste variabili vengono trattate come delle
- semplici stringhe di testo senza effettuare la sostituzione.</para>
- </sect1>
-
- <sect1 xml:id="shell-programming-int-input">
- <title>Input interattivo</title>
-
- <para>Gli script di shell possono accettare input interattivo per
- inizializzare parametri all'interno dello script stesso.</para>
-
- <sect2 xml:id="shell-programming-int-input-sh">
- <title>Sh</title>
-
- <para>&man.sh.1; utilizza il comando built-in <command>read</command> per
- leggere una linea di input, esempio:</para>
-
- <para><command>read param</command></para>
-
- <para>Questo può essere illustrato con un semplice script:</para>
-
- <programlisting>#!/bin/sh
-echo "Inserisci una frase \c" # /bin/echo che richiede "\c" per
- # impedire un newline
-read param
-echo param=$param</programlisting>
-
- <para>Quando questo script viene eseguito, viene richiesto l'input, che
- viene poi mostrato nel risultato:</para>
-
- <screen>$ <userinput>./read.sh</userinput>
-<prompt>Inserisci una frase</prompt> <userinput>hello frank</userinput> # E' stato digitato hello frank &lt;return&gt;
-param=hello frank</screen>
- </sect2>
-
- <sect2 xml:id="shell-programming-int-input-csh">
- <title>Csh</title>
-
- <para>&man.csh.1; usa il simbolo <literal>$&lt;</literal> per leggere una
- linea da &man.stdin.4;, esempio:</para>
-
- <para><command>set param = $&lt;</command></para>
-
- <para>Gli spazi bianchi intorno al segno di uguale sono importanti.
- Il seguente script illustra come usarlo:</para>
-
- <programlisting>#!/bin/csh -f
- echo -n "Inserisci una frase" # Questo echo built-in richiede -n
- # per impedire un newline
- set param = $&lt;
- echo param=$param</programlisting>
-
- <para>Quindi chiede l'input e lo mostra nel risultato:</para>
-
- <screen>&prompt.user; <userinput>./read.csh</userinput>
-<prompt>Inserisci una frase</prompt> <userinput>hello frank</userinput> # E' stato digitato hello frank &lt;return&gt;
-param=hello frank</screen>
- </sect2>
- </sect1>
-
- <sect1 xml:id="shell-programming-functions">
- <title>Funzioni</title>
-
- <para>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:</para>
-
- <para><command>funzione () {
- comando; }</command></para>
-
- <para>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
- <filename>.profile</filename> discusso nei primi capitoli, dove si avevano
- delle funzioni per <command>ls</command> e <command>ll</command>:</para>
-
- <para><command>ls() { /bin/ls -sbF "$@";}</command></para>
-
- <para><command>ll() { ls -al "$@";}</command></para>
-
- <para>La prima funzione ridefinisce &man.ls.1; affinchè le opzioni
- <option>-sbF</option> siano sempre fornite dal comando standard
- <command>/bin/ls</command> e in modo da agire in base all'input fornito,
- <literal>$@</literal>. La seconda di queste funzioni prende il valore
- corrente di <command>ls</command> (la funzione precedente) e aggiunge le
- opzioni <option>-al</option>.</para>
-
- <para>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.</para>
-
- <programlisting>#!/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 &lt;&lt; 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 &lt;&lt; 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 &lt;&lt; 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) &amp;&amp; success
-$Offline</programlisting>
-
- <para>Questo script illustra alcuni argomenti che sono stati trattati in
- questo documento. Lo script inizia settando i valori di alcuni parametri.
- <literal>HOST</literal> viene inizializzato dall'output di un comando,
- <literal>admin</literal> è l'amministratore di sistema,
- <literal>Mt</literal>, <literal>Dump</literal> e <literal>Mail</literal>
- sono nomi di programmi, <literal>device</literal> è il dispositivo
- speciale usato per accedere al nastro, <literal>Rewind</literal> e
- <literal>Offline</literal> contengono i comandi rispettivamente per
- riavvolgere e scaricare il nastro usando il riferimento
- <literal>Mt</literal> e le necessarie opzioni. Vengono definite
- tre funzioni: <command>failure</command>, <command>dumpfail</command> e
- <command>success</command>. Tutte le funzioni in questo script utilizzano
- la forma <emphasis>here document</emphasis> per realizzare il contenuto
- della funzione stessa. Si introducono ora gli operatori logici
- <emphasis>OR</emphasis> (<emphasis>||</emphasis>) e
- <emphasis>AND</emphasis> (<emphasis>&amp;&amp;</emphasis>); ciascuno è
- posizionato tra una coppia di comandi. Per l'operatore
- <emphasis>OR</emphasis>, il secondo comando viene eseguito solamente se
- il primo comando non è stato completato con successo. Per
- l'operatore <emphasis>AND</emphasis>, il secondo comando viene
- eseguito solamente se il primo comando è stato completato con
- successo.</para>
-
- <para>Lo scopo principale dello script è realizzare i comandi
- <command>Dump</command>, ad esempio copiando i file system specificati.
- Prima si tenta di eseguire il riavvolgimento del nastro. Se questo
- fallisce, <literal>|| failure</literal>, si esegue la funzione
- <command>failure</command> 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
- (<literal>|| dumpfail</literal>). Se questa operazione non viene eseguita
- completamente con successo si esegue la procedura
- <command>dumpfail</command> e si esce. Se l'ultimo backup ha successo si
- procede con la funzione <command>success</command> (<literal>(...) &amp;&amp;
- success</literal>). In fine si riavvolge il nastro e lo si manda fuori
- linea affinchè altri utenti non possano accidentalmente scriverci
- sopra.</para>
- </sect1>
-
- <sect1 xml:id="shell-programming-control-comm">
- <title>Comandi di controllo</title>
-
- <sect2 xml:id="shell-programming-control-comm-if">
- <title>Condizionale if</title>
-
- <para>L'espressione condizionale <command>if</command> è
- disponibile in entrambe le shell, ma con una diversa sintassi.</para>
-
- <sect3 xml:id="shell-programming-control-comm-if-sh">
- <title>Sh</title>
-
- <programlisting><command>if</command> <replaceable>condizione1</replaceable>
-<command>then</command>
- lista di comandi se <replaceable>condizione1</replaceable> è vera (true)
-[<command>elif</command> <replaceable>condizione2</replaceable>
- <command>then</command> lista di comandi se <replaceable>condizione2</replaceable> è vera (true)]
-[<command>else</command>
- lista di comandi se <replaceable>condizione1</replaceable> è falsa (false)]
-<command>fi</command></programlisting>
-
- <para>Le condizioni sono sottoposte usualmente al comando &man.test.1; o
- <command>[]</command> (Vedere la <link linkend="shell-programming-control-comm-test">sezione 9.9.6</link>).
- L'<command>if</command> e <command>then</command> devono essere
- separati con un newline o un punto e virgola (;).</para>
-
- <programlisting>#!/bin/sh
-if [ $# -ge 2 ]
-then
- echo $2
-elif [ $# -eq 1 ]; then
- echo $1
-else
- echo Nessun input
-fi</programlisting>
-
- <para>Sono richiesti degli spazi nel formato della condizione di
- &man.test.1;, uno dopo <command>[</command> e uno prima di
- <command>]</command>. 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:</para>
-
- <screen>$ <userinput>./if.sh</userinput>
-Nessun input</screen>
-
- <para>Ora con un argomento:</para>
-
- <screen>$ <userinput>./if.sh one</userinput>
-one</screen>
-
- <para>E ora con due argomenti:</para>
-
- <screen>$ <userinput>./if.sh one two</userinput>
-two</screen>
- </sect3>
-
- <sect3 xml:id="shell-programming-control-comm-if-csh">
- <title>Csh</title>
-
- <programlisting><command>if</command> (<replaceable>condizione</replaceable>) <command>comando</command>
- -oppure-
-<command>if</command> (<replaceable>condizione1</replaceable>) <command>then</command>
- lista di comandi se <replaceable>condizione1</replaceable> è vera (true)
-[<command>else</command> <command>if</command> (<replaceable>condizione2</replaceable>) <command>then</command>
- lista di comandi se <replaceable>condizione2</replaceable> è vera (true)]
-[<command>else</command>
- lista di comandi se <replaceable>condizione1</replaceable> è falsa (false)]
-<command>endif</command></programlisting>
-
- <para>L'<command>if</command> e <command>then</command> devono stare
- sulla stessa linea.</para>
-
- <programlisting>#!/bin/csh -f
-if ( $#argv &gt;= 2 ) then
- echo $2
-else if ( $#argv == 1 ) then
- echo $1
-else
- echo Nessun input
-endif</programlisting>
-
- <para>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:</para>
-
- <screen>&prompt.user; <userinput>./if.csh</userinput>
-Nessun input</screen>
-
- <para>Ora con un argomento:</para>
-
- <screen>&prompt.user; <userinput>./if.csh one</userinput>
-one</screen>
-
- <para>E ora con due argomenti:</para>
-
- <screen>&prompt.user; <userinput>./if.csh one two</userinput>
-two</screen>
- </sect3>
- </sect2>
-
- <sect2 xml:id="shell-programming-control-comm-switch-case">
- <title>Condizionale switch e case</title>
-
- <para>Per scegliere tra una serie di valori di tipo stringa relativi a un
- parametro si usa <command>case</command> nella shell Bourne e
- <command>switch</command> nella shell C.</para>
-
- <sect3 xml:id="shell-programming-control-comm-switch-case-sh">
- <title>Sh</title>
-
- <programlisting><command>case</command> <replaceable>parametro</replaceable> <command>in</command>
- <replaceable>schema1</replaceable>[|<replaceable>schema1a</replaceable>]) <replaceable>lista1 di comandi</replaceable>;;
- <replaceable>schema2</replaceable>) <replaceable>lista2 di comandi</replaceable>
- <replaceable>lista2a di comandi</replaceable>;;
- <replaceable>schema3</replaceable>) <replaceable>lista3 di comandi</replaceable>;;
- *) ;;
-<command>esac</command></programlisting>
-
- <para>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.</para>
-
- <para>Questo semplice esempio illustra come usare l'espressione
- condizionale <command>case</command>.</para>
-
- <programlisting>#!/bin/sh
-case $1 in
- aa|ab) echo A
- ;;
- b?) echo "B \c"
- echo $1;;
- c*) echo C;;
- *) echo D;;
-esac</programlisting>
-
- <para>Quindi quando si esegue lo script con l'argomento posto sulla
- colonna di sinistra, lo script risponde come sulla colonna di
- destra:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="0.5in"/>
-
- <tbody>
- <row>
- <entry>aa</entry>
-
- <entry>A</entry>
- </row>
-
- <row>
- <entry>ab</entry>
-
- <entry>A</entry>
- </row>
-
- <row>
- <entry>ac</entry>
-
- <entry>D</entry>
- </row>
-
- <row>
- <entry>bb</entry>
-
- <entry>B bb</entry>
- </row>
-
- <row>
- <entry>bbb</entry>
-
- <entry>D</entry>
- </row>
-
- <row>
- <entry>c</entry>
-
- <entry>C</entry>
- </row>
-
- <row>
- <entry>cc</entry>
-
- <entry>C</entry>
- </row>
-
- <row>
- <entry>fff</entry>
-
- <entry>D</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect3>
-
- <sect3 xml:id="shell-programming-control-comm-switch-case-csh">
- <title>Csh</title>
-
- <programlisting><command>switch</command> (<replaceable>parametro</replaceable>)
-<command>case</command> <replaceable>schema1</replaceable>:
- <replaceable>lista1 di comandi</replaceable>
- [<command>breaksw</command>]
-<command>case</command> <replaceable>schema2</replaceable>:
- <replaceable>lista2 di comandi</replaceable>
- [<command>breaksw</command>]
-<command>default</command>:
- lista di comandi per il comportamento di default
- [<command>breaksw</command>]
-<command>endsw</command></programlisting>
-
- <para><command>breaksw</command> è opzionale e può essere
- usato per interrompere lo switch dopo che si è verificata una
- corrispondenza del valore di tipo stringa del parametro confrontato.
- <command>Switch</command> non accetta | nella lista degli schemi, ma
- permette di unire insieme diverse strutture <command>case</command>
- per fornire un simile risultato. Il seguente script di shell C ha lo
- stesso comportamento dell'esempio precedente, riferito al
- <command>case</command> della shell Bourne.</para>
-
- <programlisting>#!/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</programlisting>
- </sect3>
- </sect2>
-
- <sect2 xml:id="shell-programming-control-comm-for-foreach">
- <title>for e foreach</title>
-
- <para>Per effettuare un ciclo tra una lista di valori di tipo
- stringa si possono usare i comandi <command>for</command> e
- <command>foreach</command>.</para>
-
- <sect3 xml:id="shell-programming-control-comm-for-foreach-sh">
- <title>Sh</title>
-
- <programlisting><command>for</command> <replaceable>variabile</replaceable> [<command>in</command> <replaceable>lista_di_valori</replaceable>]
-<command>do</command>
- <replaceable>lista di comandi</replaceable>
-<command>done</command></programlisting>
-
- <para>La <replaceable>lista_di_valori</replaceable> è opzionale,
- presupponendo <literal>$@</literal> se nulla viene specificato. Ogni
- valore in questa lista viene sostituito sequenzialmente in
- <replaceable>variabile</replaceable> 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 <command>for</command> che copia tutti i file che finiscono con
- <filename>.old</filename> negli stessi nomi che finiscono però
- con <filename>.new</filename>. In questi esempi l'utility
- &man.basename.1; estrae la parte base del nome affinchè
- si possa modificarne l'estensione.</para>
-
- <programlisting>#!/bin/sh
-for file in *.old
-do
- newf=`basename $file .old`
- cp $file $newf.new
-done</programlisting>
- </sect3>
-
- <sect3 xml:id="shell-programming-control-comm-for-foreach-csh">
- <title>Csh</title>
-
- <programlisting><command>foreach</command> <replaceable>variabile</replaceable> (<replaceable>lista_di_valori</replaceable>)
- <replaceable>lista di comandi</replaceable>
-<command>end</command></programlisting>
-
- <para>L'equivalente script in shell C per copiare tutti i file con
- estensione <filename>.old</filename> negli stessi file con estensione
- <filename>.new</filename> è:</para>
-
- <programlisting>#!/bin/csh -f
-foreach file (*.old)
- set newf = `basename $file .old`
- cp $file $newf.new
-end</programlisting>
- </sect3>
- </sect2>
-
- <sect2 xml:id="shell-programming-control-comm-while">
- <title>while</title>
-
- <para>Il comando <command>while</command> permette di effettuare il ciclo
- sempre che la condizione sia vera.</para>
-
- <sect3 xml:id="shell-programming-control-comm-while-sh">
- <title>Sh</title>
-
- <programlisting><command>while</command> <replaceable>condizione</replaceable>
-<command>do</command>
- <replaceable>lista di comandi</replaceable>
- [<command>break</command>]
- [<command>continue</command>]
-<command>done</command></programlisting>
-
- <para>Un semplice script per illustrare il ciclo
- <command>while</command> è:</para>
-
- <programlisting>#!/bin/sh
-while [ $# -gt 0 ]
-do
- echo $1
- shift
-done</programlisting>
-
- <para>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.</para>
-
- <screen>$ <userinput>./while.sh one two three</userinput>
-one
-two
-three</screen>
- </sect3>
-
- <sect3 xml:id="shell-programming-control-comm-while-csh">
- <title>Csh</title>
-
- <programlisting><command>while</command> (<replaceable>condizione</replaceable>)
- <replaceable>lista di comandi</replaceable>
- [<command>break</command>]
- [<command>continue</command>]
-<command>end</command></programlisting>
-
- <para>Se si vuole che la condizione sia sempre vera si specifica 1
- all'interno del test condizionale.</para>
-
- <para>Lo script di shell C equivalente a quello precedente
- è:</para>
-
- <programlisting>#!/bin/csh -f
-while ($#argv != 0 )
- echo $argv[1]
- shift
-end</programlisting>
- </sect3>
- </sect2>
-
- <sect2 xml:id="shell-programming-control-comm-until">
- <title>until</title>
-
- <para>Questo costrutto di ciclo è solamente disponibile per la
- shell Bourne.</para>
-
- <programlisting><command>until</command> <replaceable>condizione</replaceable>
-<command>do</command>
- lista di comandi se la condizione è falsa
-<command>done</command></programlisting>
-
- <para>La condizione viene verificata all'inizio di ogni ciclo e il ciclo
- termina quando la condizione è vera.</para>
-
- <para>Uno script equivalente all'esempio del <command>while</command>
- precedente è:</para>
-
- <programlisting>#!/bin/sh
-until [ $# -le 0 ]
-do
- echo $1
- shift
-done</programlisting>
-
- <para>Si noti che qui si verifica per <emphasis>minore o
- uguale</emphasis>, piuttosto che per <emphasis>maggiore</emphasis>,
- poichè il ciclo <command>until</command> viene abilitato da una
- condizione <emphasis>falsa</emphasis>.</para>
-
- <para>Sia il ciclo <command>until</command> che il
- <command>while</command> sono solamente eseguiti se la condizione
- è soddisfatta. La condizione viene valutata prima
- dell'esecuzione dei comandi.</para>
- </sect2>
-
- <sect2 xml:id="shell-programming-control-comm-test">
- <title>test</title>
-
- <para>Le espressioni condizionali vengono valutate per valori
- <emphasis>veri</emphasis> o <emphasis>falsi</emphasis>. Questo, di
- solito, viene realizzato con &man.test.1; o equivalentemente con i suoi
- operatori <command>[]</command>. Se la condizione viene valutata vera,
- viene settato uno stato di uscita zero (<emphasis>TRUE</emphasis>),
- altrimenti viene settato uno stato di uscita non-zero
- (<emphasis>FALSE</emphasis>). 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.</para>
-
- <para>Per i <emphasis>nomi di file</emphasis> le opzioni per
- &man.test.1; sono date con la sintassi seguente:</para>
-
- <para><option>-<replaceable>opzione</replaceable></option>
- <replaceable>filename</replaceable></para>
-
- <para>Le opzioni di &man.test.1; disponibili per i
- <emphasis>file</emphasis> includono:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1in"/>
-
- <tbody>
- <row>
- <entry><option>-r</option></entry>
-
- <entry>vero se il file esiste ed è leggibile</entry>
- </row>
-
- <row>
- <entry><option>-w</option></entry>
-
- <entry>vero se il file esiste ed è scrivibile</entry>
- </row>
-
- <row>
- <entry><option>-x</option></entry>
-
- <entry>vero se il file esiste ed è eseguibile</entry>
- </row>
-
- <row>
- <entry><option>-f</option></entry>
-
- <entry>vero se il file esiste ed è un file regolare (o per
- &man.csh.1; esiste e non è una directory)</entry>
- </row>
-
- <row>
- <entry><option>-d</option></entry>
-
- <entry>vero se il file esiste ed è una directory</entry>
- </row>
-
- <row>
- <entry><option>-h</option> o <option>-L</option></entry>
-
- <entry>vero se il file esiste ed è un link
- simbolico</entry>
- </row>
-
- <row>
- <entry><option>-c</option></entry>
-
- <entry>vero se il file esiste ed è un file speciale a
- caratteri (ad esempio un dispositivo al quale si accede un
- carattere alla volta)</entry>
- </row>
-
- <row>
- <entry><option>-b</option></entry>
-
- <entry>vero se il file esiste ed è un file speciale a
- blocchi (ad esempio un dispositivo al quale si accede in blocchi
- di dati)</entry>
- </row>
-
- <row>
- <entry><option>-p</option></entry>
-
- <entry>vero se il file esiste ed è un file pipe
- (fifo)</entry>
- </row>
-
- <row>
- <entry><option>-u</option></entry>
-
- <entry>vero se il file esiste ed è setuid (ad esempio ha il
- bit set-user-id settato a s o S nel terzo bit)</entry>
- </row>
-
- <row>
- <entry><option>-g</option></entry>
-
- <entry>vero se il file esiste ed è setgid (ad esempio ha il
- bit set-group-id settato a s o S nel sesto bit)</entry>
- </row>
-
- <row>
- <entry><option>-k</option></entry>
-
- <entry>vero se il file esiste e ha lo sticky bit settato (una t
- nel nono bit)</entry>
- </row>
-
- <row>
- <entry><option>-s</option></entry>
-
- <entry>vero se il file esiste ed ha una dimensione maggiore di
- zero</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>C'è un test per i <emphasis>descrittori di
- file</emphasis>:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="2in"/>
-
- <tbody>
- <row>
- <entry><option>-t
- [<replaceable>descrittore_file</replaceable>]</option></entry>
-
- <entry>vero se l'aperto descrittore del file specificato (1,
- &man.stdout.4;, di default) è associato ad un
- terminale</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Ci sono test per le <emphasis>stringhe</emphasis>:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="2in"/>
-
- <tbody>
- <row>
- <entry><option>-z
- <replaceable>stringa</replaceable></option></entry>
-
- <entry>vero se la lunghezza della stringa è zero</entry>
- </row>
-
- <row>
- <entry><option>-n
- <replaceable>stringa</replaceable></option></entry>
-
- <entry>vero se la lunghezza della stringa non è
- zero</entry>
- </row>
-
- <row>
- <entry><option><replaceable>stringa1</replaceable> =
- <replaceable>stringa2</replaceable></option></entry>
-
- <entry>vero se <replaceable>stringa1</replaceable> è
- identica a <replaceable>stringa2</replaceable></entry>
- </row>
-
- <row>
- <entry><option><replaceable>stringa1</replaceable> !=
- <replaceable>stringa2</replaceable></option></entry>
-
- <entry>vero se <replaceable>stringa1</replaceable> non è
- identica a <replaceable>stringa2</replaceable></entry>
- </row>
-
- <row>
- <entry><replaceable>stringa</replaceable></entry>
-
- <entry>vero se la stringa non è nulla</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Ci sono dei confronti per gli interi:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1.5in"/>
-
- <tbody>
- <row>
- <entry><option><replaceable>n1</replaceable> -eq
- <replaceable>n2</replaceable></option></entry>
-
- <entry>vero se gli interi <replaceable>n1</replaceable> e
- <replaceable>n2</replaceable> sono uguali</entry>
- </row>
-
- <row>
- <entry><option><replaceable>n1</replaceable> -ne
- <replaceable>n2</replaceable></option></entry>
-
- <entry>vero se gli interi <replaceable>n1</replaceable> e
- <replaceable>n2</replaceable> non sono uguali</entry>
- </row>
-
- <row>
- <entry><option><replaceable>n1</replaceable> -gt
- <replaceable>n2</replaceable></option></entry>
-
- <entry>vero se l'intero <replaceable>n1</replaceable> è
- maggiore dell'intero <replaceable>n2</replaceable></entry>
- </row>
-
- <row>
- <entry><option><replaceable>n1</replaceable> -ge
- <replaceable>n2</replaceable></option></entry>
-
- <entry>vero se l'intero <replaceable>n1</replaceable> è
- maggiore o uguale dell'intero
- <replaceable>n2</replaceable></entry>
- </row>
-
- <row>
- <entry><option><replaceable>n1</replaceable> -lt
- <replaceable>n2</replaceable></option></entry>
-
- <entry>vero se l'intero <replaceable>n1</replaceable> è
- minore dell'intero <replaceable>n2</replaceable></entry>
- </row>
-
- <row>
- <entry><option><replaceable>n1</replaceable> -le
- <replaceable>n2</replaceable></option></entry>
-
- <entry>vero se l'intero <replaceable>n1</replaceable> è
- minore o uguale dell'intero
- <replaceable>n2</replaceable></entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Sono disponibili i seguenti <emphasis>operatori
- logici</emphasis>:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="0.5in"/>
-
- <tbody>
- <row>
- <entry><option>!</option></entry>
-
- <entry>negazione (unaria)</entry>
- </row>
-
- <row>
- <entry><option>-a</option></entry>
-
- <entry>and (binario)</entry>
- </row>
-
- <row>
- <entry><option>-o</option></entry>
-
- <entry>or (binario)</entry>
- </row>
-
- <row>
- <entry><option>()</option></entry>
-
- <entry>le espressioni all'interno di ( ) vengono raggruppate
- insieme. Può essere necessario quotare le parentesi ( )
- per impedire alla shell di interpretarle.</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect2>
-
- <sect2 xml:id="shell-programming-control-comm-csh-log-rel-op">
- <title>Operatori relazionali e logici della shell C</title>
-
- <para>La shell C possiede un suo set di operatori logici e relazionali
- built-in. In ordine decrescente di priorità questi sono:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1.5in"/>
-
- <tbody>
- <row>
- <entry><command>(...)</command></entry>
-
- <entry>raggruppa espressioni con ( )</entry>
- </row>
-
- <row>
- <entry><command>~</command></entry>
-
- <entry>inverso (il suo complemento)</entry>
- </row>
-
- <row>
- <entry><command>!</command></entry>
-
- <entry>negazione logica</entry>
- </row>
-
- <row>
- <entry><command>*, /, %</command></entry>
-
- <entry>moltiplicazione, divisione, modulo</entry>
- </row>
-
- <row>
- <entry><command>+, -</command></entry>
-
- <entry>addizione, sottrazione</entry>
- </row>
-
- <row>
- <entry><command>&lt;&lt;, &gt;&gt;</command></entry>
-
- <entry>shift a sinistra di bit, shift a destra di bit</entry>
- </row>
-
- <row>
- <entry><command>&lt;=</command></entry>
-
- <entry>minore o uguale</entry>
- </row>
-
- <row>
- <entry><command>&gt;=</command></entry>
-
- <entry>maggiore o uguale</entry>
- </row>
-
- <row>
- <entry><command>&lt;</command></entry>
-
- <entry>minore</entry>
- </row>
-
- <row>
- <entry><command>&gt;</command></entry>
-
- <entry>maggiore</entry>
- </row>
-
- <row>
- <entry><command>= =</command></entry>
-
- <entry>uguale</entry>
- </row>
-
- <row>
- <entry><command>!=</command></entry>
-
- <entry>non uguale</entry>
- </row>
-
- <row>
- <entry><command>=~</command></entry>
-
- <entry>uguale a stringa</entry>
- </row>
-
- <row>
- <entry><command>!~</command></entry>
-
- <entry>non uguale a stringa</entry>
- </row>
-
- <row>
- <entry><command>&amp;</command></entry>
-
- <entry>AND bit</entry>
- </row>
-
- <row>
- <entry><command>^</command></entry>
-
- <entry>XOR bit (or esclusivo)</entry>
- </row>
-
- <row>
- <entry><command>|</command></entry>
-
- <entry>OR bit</entry>
- </row>
-
- <row>
- <entry><command>&amp;&amp;</command></entry>
-
- <entry>AND logico</entry>
- </row>
-
- <row>
- <entry><command>||</command></entry>
-
- <entry>OR logico</entry>
- </row>
-
- <row>
- <entry><command>{comando}</command></entry>
-
- <entry>vero (1) se il comando termina con uno stato di uscita 0,
- falso (0) altrimenti.</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Inoltre la shell C permette richieste sul tipo e sui permessi dei
- file con gli operatori seguenti:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1in"/>
-
- <tbody>
- <row>
- <entry><option>-r</option></entry>
-
- <entry>ritorna vero (1) se il file esiste ed è leggibile,
- altrimenti ritorna falso (0)</entry>
- </row>
-
- <row>
- <entry><option>-w</option></entry>
-
- <entry>vero se il file esiste ed è scrivibile</entry>
- </row>
-
- <row>
- <entry><option>-x</option></entry>
-
- <entry>vero se il file esiste ed è eseguibile</entry>
- </row>
-
- <row>
- <entry><option>-f</option></entry>
-
- <entry>vero se il file esiste e non è una directory</entry>
- </row>
-
- <row>
- <entry><option>-d</option></entry>
-
- <entry>vero se il file esiste ed è una directory</entry>
- </row>
-
- <row>
- <entry><option>-e</option></entry>
-
- <entry>vero se il file esiste</entry>
- </row>
-
- <row>
- <entry><option>-o</option></entry>
-
- <entry>vero se l'utente corrente è il proprietario del
- file</entry>
- </row>
-
- <row>
- <entry><option>-z</option></entry>
-
- <entry>vero se il file ha una lunghezza zero (file vuoto)</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect2>
- </sect1>
-</chapter>
diff --git a/it_IT.ISO8859-15/books/unix-introduction/shells/chapter.xml b/it_IT.ISO8859-15/books/unix-introduction/shells/chapter.xml
deleted file mode 100644
index 3cd9929789..0000000000
--- a/it_IT.ISO8859-15/books/unix-introduction/shells/chapter.xml
+++ /dev/null
@@ -1,1157 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-15"?>
-<!--
- The FreeBSD Italian Documentation Project
-
- $FreeBSD$
--->
-<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="shells">
- <title>Shell</title>
-
- <para>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 <emphasis>command.com</emphasis> 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.</para>
-
- <para>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 (<quote>sotto shell</quote>) in
- foreground (<quote>in shell corrente</quote>). Inoltre ha la funzione di
- history (storia dei comandi) che permette di modificare e ripetere comandi
- eseguiti precedentemente.</para>
-
- <para>Il prompt di default per la shell Bourne è <emphasis>$</emphasis>
- (o &prompt.root; per l'utente root). Il prompt di default per la shell C
- è &prompt.user;.</para>
-
- <para>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,
- <command>ksh</command>, 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,
- <command>cshe</command>, entrambe bastate su &man.csh.1;. In seguito si
- descriveranno alcune delle caratteristiche di &man.sh.1; e &man.csh.1;,
- così per iniziare.</para>
-
- <sect1 xml:id="shells-built-in-comm">
- <title>Comandi built-in</title>
-
- <para>La shell ha alcuni comandi <emphasis>built-in</emphasis>, 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.</para>
-
- <sect2 xml:id="shells-built-in-comm-sh">
- <title>Sh</title>
-
- <para>Per la shell Bourne alcuni dei comandi built-in più
- comunemente usati sono:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1in"/>
-
- <tbody>
- <row>
- <entry><command>:</command></entry>
-
- <entry>comando null</entry>
- </row>
-
- <row>
- <entry><command>.</command></entry>
-
- <entry>prende (legge ed esegue) i comandi da un file</entry>
- </row>
-
- <row>
- <entry><command>case</command></entry>
-
- <entry>condizionale case</entry>
- </row>
-
- <row>
- <entry><command>cd</command></entry>
-
- <entry>cambia la directory di lavoro (<literal>$HOME</literal> di
- default)</entry>
- </row>
-
- <row>
- <entry><command>echo</command></entry>
-
- <entry>scrive una stringa su standard output</entry>
- </row>
-
- <row>
- <entry><command>eval</command></entry>
-
- <entry>valuta l'argomento specificato e ritorna il risultato alla
- shell</entry>
- </row>
-
- <row>
- <entry><command>exec</command></entry>
-
- <entry>esegue il comando specificato rimpiazzando la shell
- corrente</entry>
- </row>
-
- <row>
- <entry><command>exit</command></entry>
-
- <entry>esce dalla shell corrente</entry>
- </row>
-
- <row>
- <entry><command>export</command></entry>
-
- <entry>condivide le variabili di ambiente specificate con le
- successive shell</entry>
- </row>
-
- <row>
- <entry><command>for</command></entry>
-
- <entry>condizionale di ciclo for</entry>
- </row>
-
- <row>
- <entry><command>if</command></entry>
-
- <entry>condizionale if</entry>
- </row>
-
- <row>
- <entry><command>pwd</command></entry>
-
- <entry>mostra la directory di lavoro corrente</entry>
- </row>
-
- <row>
- <entry><command>read</command></entry>
-
- <entry>legge una linea di input da standard input</entry>
- </row>
-
- <row>
- <entry><command>set</command></entry>
-
- <entry>setta le variabili di shell</entry>
- </row>
-
- <row>
- <entry><command>test</command></entry>
-
- <entry>valuta un'espressione come vera o falsa</entry>
- </row>
-
- <row>
- <entry><command>trap</command></entry>
-
- <entry>intrappola un tipo di segnale ed esegue comandi</entry>
- </row>
-
- <row>
- <entry><command>umask</command></entry>
-
- <entry>setta la maschera di default relativa ai permessi da
- impostare per i nuovi file</entry>
- </row>
-
- <row>
- <entry><command>unset</command></entry>
-
- <entry>resetta le variabili di shell</entry>
- </row>
-
- <row>
- <entry><command>wait</command></entry>
-
- <entry>attente che un specifico processo termini</entry>
- </row>
-
- <row>
- <entry><command>while</command></entry>
-
- <entry>condizionale di ciclo while</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect2>
-
- <sect2 xml:id="shells-built-in-comm-csh">
- <title>Csh</title>
-
- <para>Per la shell C i comandi built-in maggiormente usati sono:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <colspec colwidth="1.5in"/>
-
- <tbody>
- <row>
- <entry><command>alias</command></entry>
-
- <entry>assegna un nome a una funzione</entry>
- </row>
-
- <row>
- <entry><command>bg</command></entry>
-
- <entry>mette un job in background</entry>
- </row>
-
- <row>
- <entry><command>cd</command></entry>
-
- <entry>cambia la directory di lavoro corrente</entry>
- </row>
-
- <row>
- <entry><command>echo</command></entry>
-
- <entry>scrive una stringa su standard output</entry>
- </row>
-
- <row>
- <entry><command>eval</command></entry>
-
- <entry>valuta gli argomenti specificati e ritorna il risultato
- alla shell</entry>
- </row>
-
- <row>
- <entry><command>exec</command></entry>
-
- <entry>esegue il comando specificato rimpiazzando la shell
- corrente</entry>
- </row>
-
- <row>
- <entry><command>exit</command></entry>
-
- <entry>esce dalla shell corrente</entry>
- </row>
-
- <row>
- <entry><command>fg</command></entry>
-
- <entry>porta un job in foreground</entry>
- </row>
-
- <row>
- <entry><command>foreach</command></entry>
-
- <entry>condizionale di ciclo for</entry>
- </row>
-
- <row>
- <entry><command>glob</command></entry>
-
- <entry>crea un'espansione dei nomi di file su una lista senza
- tenere conto del carattere di escape \</entry>
- </row>
-
- <row>
- <entry><command>history</command></entry>
-
- <entry>stampa la storia dei comandi della shell</entry>
- </row>
-
- <row>
- <entry><command>if</command></entry>
-
- <entry>condizionale if</entry>
- </row>
-
- &l