aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Rhodes <trhodes@FreeBSD.org>2003-03-19 18:46:43 +0000
committerTom Rhodes <trhodes@FreeBSD.org>2003-03-19 18:46:43 +0000
commit2e6dbe9339f479aa202df40d4bf72e905344eac6 (patch)
tree1695e38c2014ffa0c215c5e090341e2f4794da36
parentef89ca0a6d1c816e5f80104647590992a97ae069 (diff)
downloaddoc-2e6dbe9339f479aa202df40d4bf72e905344eac6.tar.gz
doc-2e6dbe9339f479aa202df40d4bf72e905344eac6.zip
Add the Italian translated unix-introduction book. These still need individual
Makefiles. Submitted by: Alex Dupre <sysadmin@alexdupre.com>
Notes
Notes: svn path=/head/; revision=16301
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/Makefile43
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/bibliography/chapter.sgml189
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/book.sgml136
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/chapters.ent27
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/command-summary/chapter.sgml681
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/commands/chapter.sgml3037
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/editors/chapter.sgml1289
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/getting-started/chapter.sgml2223
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/glossary/chapter.sgml596
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/history/chapter.sgml113
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/preface/chapter.sgml107
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/shell-programming/chapter.sgml1703
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/shells/chapter.sgml1167
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/special-features/chapter.sgml565
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/structure/chapter.sgml175
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/system-resource/chapter.sgml1199
-rw-r--r--it_IT.ISO8859-15/books/unix-introduction/text-processing/chapter.sgml1124
17 files changed, 14374 insertions, 0 deletions
diff --git a/it_IT.ISO8859-15/books/unix-introduction/Makefile b/it_IT.ISO8859-15/books/unix-introduction/Makefile
new file mode 100644
index 0000000000..35e9e24316
--- /dev/null
+++ b/it_IT.ISO8859-15/books/unix-introduction/Makefile
@@ -0,0 +1,43 @@
+#
+# $FreeBSD$
+#
+# Crea l'Introduzione a Unix.
+#
+
+MAINTAINER= sysadmin@alexdupre.com
+
+DOC?= book
+
+FORMATS?= html-split
+
+INSTALL_COMPRESSED?=gz
+INSTALL_ONLY_COMPRESSED?=
+
+#
+# SRCS lista i singoli files SGML che compongono il documento. Modifiche
+# a qualunque di questi files obbligano la ricreazione
+#
+
+# Contenuto SGML
+SRCS = book.sgml
+SRCS+= bibliography/chapter.sgml
+SRCS+= command-summary/chapter.sgml
+SRCS+= commands/chapter.sgml
+SRCS+= editors/chapter.sgml
+SRCS+= getting-started/chapter.sgml
+SRCS+= glossary/chapter.sgml
+SRCS+= history/chapter.sgml
+SRCS+= preface/preface.sgml
+SRCS+= shell-programming/chapter.sgml
+SRCS+= shells/chapter.sgml
+SRCS+= special-features/chapter.sgml
+SRCS+= structure/chapter.sgml
+SRCS+= system-resource/chapter.sgml
+SRCS+= text-processing/chapter.sgml
+
+# Entities
+SRCS+= chapters.ent
+
+DOC_PREFIX?= ${.CURDIR}/../../..
+
+.include "${DOC_PREFIX}/share/mk/doc.project.mk" \ No newline at end of file
diff --git a/it_IT.ISO8859-15/books/unix-introduction/bibliography/chapter.sgml b/it_IT.ISO8859-15/books/unix-introduction/bibliography/chapter.sgml
new file mode 100644
index 0000000000..4eded79c6d
--- /dev/null
+++ b/it_IT.ISO8859-15/books/unix-introduction/bibliography/chapter.sgml
@@ -0,0 +1,189 @@
+<!--
+ The FreeBSD Italian Documentation Project
+
+ $FreeBSD$
+-->
+
+<chapter id="bibliography">
+ <title>Una breve bibliografia Unix</title>
+
+ <table frame="all" 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&agrave; 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>
+
+<!--
+ Local Variables:
+ mode: sgml
+ sgml-indent-data: t
+ sgml-omittag: nil
+ sgml-always-quote-attributes: t
+ sgml-parent-document: ("../book.sgml" "book" "chapter")
+ End:
+--> \ No newline at end of file
diff --git a/it_IT.ISO8859-15/books/unix-introduction/book.sgml b/it_IT.ISO8859-15/books/unix-introduction/book.sgml
new file mode 100644
index 0000000000..33385c527a
--- /dev/null
+++ b/it_IT.ISO8859-15/books/unix-introduction/book.sgml
@@ -0,0 +1,136 @@
+<!--
+ The FreeBSD Italian Documentation Project
+
+ $FreeBSD$
+-->
+
+<!DOCTYPE book PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
+<!ENTITY % man PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN">
+%man;
+
+<!ENTITY % translators PUBLIC "-//FreeBSD//ENTITIES DocBook Translator Entities//IT">
+%translators;
+
+<!ENTITY % chapters SYSTEM "chapters.ent"> %chapters;
+]>
+
+<book lang="it">
+ <bookinfo>
+ <title>Introduzione a Unix</title>
+
+ <author>
+ <firstname>Frank G.</firstname>
+
+ <surname>Fiamingo</surname>
+
+ <affiliation>
+ <address><email>fiamingo.1@osu.edu</email></address>
+ </affiliation>
+ </author>
+
+ <author>
+ <firstname>Linda</firstname>
+
+ <surname>DeBula</surname>
+
+ <affiliation>
+ <address><email>debula.2@osu.edu</email></address>
+ </affiliation>
+ </author>
+
+ <author>
+ <firstname>Linda</firstname>
+
+ <surname>Condron</surname>
+
+ <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>
+ <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&egrave; 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&eacute; il nome dell'Universit&agrave; n&eacute; 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&Igrave;
+ COM'&Egrave;</quote> SENZA NESSUN TIPO DI GARANZIA. QUESTA
+ PUBBLICAZIONE PU&Ograve; CONTENERE IMPRECISIONI TECNICHE O ERRORI
+ TIPOGRAFICI.</para>
+
+ <para>Unix &egrave; un marchio registrato della The Open Group, AT&amp;T
+ &egrave; un marchio registrato della American Telephone and Telegraph,
+ Inc.</para>
+ </legalnotice>
+
+ <abstract>
+ <para>Traduzione a cura di &a.it.mark;</para>
+
+ <para>Questo documento introduce il vasto mondo dei sistemi operativi
+ Unix e lo fa in stile manualistico. Unix non &egrave; un sistema
+ operativo unico, come molti potrebbero pensare, bens&igrave; &egrave;
+ 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>
+ </bookinfo>
+
+ &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>
+
+<!--
+ Local Variables:
+ mode: sgml
+ sgml-indent-data: t
+ sgml-omittag: nil
+ sgml-always-quote-attributes: t
+ End:
+--> \ No newline at end of file
diff --git a/it_IT.ISO8859-15/books/unix-introduction/chapters.ent b/it_IT.ISO8859-15/books/unix-introduction/chapters.ent
new file mode 100644
index 0000000000..2c2f72a8b8
--- /dev/null
+++ b/it_IT.ISO8859-15/books/unix-introduction/chapters.ent
@@ -0,0 +1,27 @@
+<!--
+ The FreeBSD Italian Documentation Project
+
+ Crea le entities per ogni capitolo dell'Introduzione a Unix.
+ Ogni entity &egrave; chiamata chap.foo, dove foo &egrave; il valore
+ dell'attributo id di quel capitolo, e corrisponde al nome della directory
+ nella quale il file sgml del capitolo &egrave; salvato.
+
+ I capitoli devono essere listati nell'ordine in cui sono referenziati.
+
+ $FreeBSD$
+-->
+
+<!ENTITY chap.preface SYSTEM "preface/preface.sgml">
+<!ENTITY chap.history SYSTEM "history/chapter.sgml">
+<!ENTITY chap.structure SYSTEM "structure/chapter.sgml">
+<!ENTITY chap.getting-started SYSTEM "getting-started/chapter.sgml">
+<!ENTITY chap.system-resource SYSTEM "system-resource/chapter.sgml">
+<!ENTITY chap.shells SYSTEM "shells/chapter.sgml">
+<!ENTITY chap.special-features SYSTEM "special-features/chapter.sgml">
+<!ENTITY chap.text-processing SYSTEM "text-processing/chapter.sgml">
+<!ENTITY chap.commands SYSTEM "commands/chapter.sgml">
+<!ENTITY chap.shell-programming SYSTEM "shell-programming/chapter.sgml">
+<!ENTITY chap.editors SYSTEM "editors/chapter.sgml">
+<!ENTITY chap.command-summary SYSTEM "command-summary/chapter.sgml">
+<!ENTITY chap.bibliography SYSTEM "bibliography/chapter.sgml">
+<!ENTITY chap.glossary SYSTEM "glossary/chapter.sgml"> \ No newline at end of file
diff --git a/it_IT.ISO8859-15/books/unix-introduction/command-summary/chapter.sgml b/it_IT.ISO8859-15/books/unix-introduction/command-summary/chapter.sgml
new file mode 100644
index 0000000000..fadf57e8c8
--- /dev/null
+++ b/it_IT.ISO8859-15/books/unix-introduction/command-summary/chapter.sgml
@@ -0,0 +1,681 @@
+<!--
+ The FreeBSD Italian Documentation Project
+
+ $FreeBSD$
+-->
+
+<chapter id="command-summary">
+ <title>Riassunto dei comandi Unix</title>
+
+ <sect1 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&ograve; 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" 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 [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>esamina schemi in un file e processa i risultati</entry>
+ </row>
+
+ <row>
+ <entry><command>cat [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>concatena (lista) un file</entry>
+ </row>
+
+ <row>
+ <entry><command>cd
+ [<replaceable>directory</replaceable>]</command></entry>
+
+ <entry>cambia directory</entry>
+ </row>
+
+ <row>
+ <entry><command>chgrp [<replaceable>opzioni</replaceable>]
+ <replaceable>gruppo file</replaceable></command></entry>
+
+ <entry>cambia il gruppo di appartenenza di un file</entry>
+ </row>
+
+ <row>
+ <entry><command>chmod [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>cambia i permessi di accesso a file o directory</entry>
+ </row>
+
+ <row>
+ <entry><command>chown [<replaceable>opzioni</replaceable>]
+ <replaceable>proprietario file</replaceable></command></entry>
+
+ <entry>cambia il proprietario di un file; pu&ograve; essere solo
+ fatto dal super-user</entry>
+ </row>
+
+ <row>
+ <entry><command>chsh (passwd -e/-s) <replaceable>username
+ login_shell</replaceable></command></entry>
+
+ <entry>cambia la shell di login dell'utente (spesso solamente
+ attraverso il super-user)</entry>
+ </row>
+
+ <row>
+ <entry><command>cmp [<replaceable>opzioni</replaceable>]
+ <replaceable>file1 file2</replaceable></command></entry>
+
+ <entry>confronta due file e mostra dove avvengono le differenze
+ (file di testo e file binari)</entry>
+ </row>
+
+ <row>
+ <entry><command>compress [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>comprime il file specificato e lo salva con l'estensione
+ <filename>.Z</filename></entry>
+ </row>
+
+ <row>
+ <entry><command>cp [<replaceable>opzioni</replaceable>]
+ <replaceable>file1 file2</replaceable></command></entry>
+
+ <entry>copia <filename><replaceable>file1</replaceable></filename>
+ in <filename><replaceable>file2</replaceable></filename>;
+ <filename><replaceable>file2</replaceable></filename> non dovrebbe
+ gi&agrave; esistere. Questo comando crea o sovrascrive
+ <filename><replaceable>file2</replaceable></filename></entry>
+ </row>
+
+ <row>
+ <entry><command>cut (<replaceable>opzioni</replaceable>)
+ [<replaceable>file</replaceable>]</command></entry>
+
+ <entry>taglia specifici campi/caratteri dalle linee del file
+ specificato</entry>
+ </row>
+
+ <row>
+ <entry><command>date
+ [<replaceable>opzioni</replaceable>]</command></entry>
+
+ <entry>riporta data e ora corrente</entry>
+ </row>
+
+ <row>
+ <entry><command>dd [if=<replaceable>infile</replaceable>]
+ [of=<replaceable>outfile</replaceable>]
+ [operando=<replaceable>valore</replaceable>]</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 [<replaceable>opzioni</replaceable>]
+ <replaceable>file1 file2</replaceable></command></entry>
+
+ <entry>confronta i due file e visualizza le differenze (solamente
+ file di testo)</entry>
+ </row>
+
+ <row>
+ <entry><command>df [<replaceable>opzioni</replaceable>]
+ [<replaceable>risorsa</replaceable>]</command></entry>
+
+ <entry>riporta il sommario dei blocchi del disco e degli inode
+ liberi e usati</entry>
+ </row>
+
+ <row>
+ <entry><command>du [<replaceable>opzioni</replaceable>]
+ [<replaceable>directory</replaceable> o
+ <replaceable>file</replaceable>]</command></entry>
+
+ <entry>riporta lo spazio di disco usato</entry>
+ </row>
+
+ <row>
+ <entry><command>echo
+ [<replaceable>stringa di testo</replaceable>]</command></entry>
+
+ <entry>riporta la stringa di testo specificata in standard
+ output</entry>
+ </row>
+
+ <row>
+ <entry><command>ed</command> o <command>ex
+ [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>editor a linea di comando</entry>
+ </row>
+
+ <row>
+ <entry><command>emacs [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>editor a schermo-pieno</entry>
+ </row>
+
+ <row>
+ <entry><command>expr
+ <replaceable>argomenti</replaceable></command></entry>
+
+ <entry>valuta gli argomenti. Usato per l'aritmetica, ecc. in
+ shell</entry>
+ </row>
+
+ <row>
+ <entry><command>file [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>classifica il tipo di file</entry>
+ </row>
+
+ <row>
+ <entry><command>find <replaceable>directory</replaceable>
+ [<replaceable>opzioni</replaceable>]
+ [<replaceable>azioni</replaceable>]</command></entry>
+
+ <entry>cerca file basandosi sul tipo o su uno schema</entry>
+ </row>
+
+ <row>
+ <entry><command>finger [<replaceable>opzioni</replaceable>]
+ <replaceable>user</replaceable>[<replaceable>@nomehost</replaceable>]</command></entry>
+
+ <entry>riporta informazioni circa gli utenti di macchine locali e
+ remote</entry>
+ </row>
+
+ <row>
+ <entry><command>ftp [<replaceable>opzioni</replaceable>]
+ <replaceable>host</replaceable></command></entry>
+
+ <entry>trasferisce file utilizzando il protocollo di trasferimento
+ di file (FTP)</entry>
+ </row>
+
+ <row>
+ <entry><command>grep [<replaceable>opzioni</replaceable>]
+ '<replaceable>stringa di ricerca</replaceable>'
+ <replaceable>argomento</replaceable></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 [<replaceable>opzioni</replaceable>]
+ '<replaceable>stringa di ricerca</replaceable>'
+ <replaceable>argomento</replaceable></command></entry>
+ </row>
+
+ <row>
+ <entry><command>fgrep [<replaceable>opzioni</replaceable>]
+ '<replaceable>stringa di ricerca</replaceable>'
+ <replaceable>argomento</replaceable></command></entry>
+ </row>
+
+ <row>
+ <entry><command>gzip [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></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 [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+ </row>
+
+ <row>
+ <entry><command>zcat [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+ </row>
+
+ <row>
+ <entry><command>head [-<replaceable>numero</replaceable>]
+ <replaceable>file</replaceable></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 [<replaceable>opzioni</replaceable>]
+ [-<replaceable>SEGNALE</replaceable>]
+ [<replaceable>pid#</replaceable>]
+ [%<replaceable>job</replaceable>]</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 [<replaceable>opzioni</replaceable>]
+ <replaceable>sorgente
+ destinazione</replaceable></command></entry>
+
+ <entry>crea un collegamento di nome
+ <filename><replaceable>destinazione</replaceable></filename> a
+ <filename><replaceable>sorgente</replaceable></filename></entry>
+ </row>
+
+ <row>
+ <entry><command>lpq
+ [<replaceable>opzioni</replaceable>]</command></entry>
+
+ <entry morerows="1">mostra lo stato dei job di stampa</entry>
+ </row>
+
+ <row>
+ <entry><command>lpstat
+ [<replaceable>opzioni</replaceable>]</command></entry>
+ </row>
+
+ <row>
+ <entry><command>lpr [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry morerows="1">stampa sulla stampante specificata</entry>
+ </row>
+
+ <row>
+ <entry><command>lp [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+ </row>
+
+ <row>
+ <entry><command>lprm
+ [<replaceable>opzioni</replaceable>]</command></entry>
+
+ <entry morerows="1">rimuove un job di stampa dalla coda di
+ stampa</entry>
+ </row>
+
+ <row>
+ <entry><command>cancel
+ [<replaceable>opzioni</replaceable>]</command></entry>
+ </row>
+
+ <row>
+ <entry><command>ls [<replaceable>opzioni</replaceable>]
+ [<replaceable>directory</replaceable> o
+ <replaceable>file</replaceable>]</command></entry>
+
+ <entry>elenca il contenuto della directory specificata o i permessi
+ del file specificato</entry>
+ </row>
+
+ <row>
+ <entry><command>mail [<replaceable>opzioni</replaceable>]
+ [<replaceable>user</replaceable>]</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 [<replaceable>opzioni</replaceable>]
+ [<replaceable>user</replaceable>]</command></entry>
+ </row>
+
+ <row>
+ <entry><command>Mail [<replaceable>opzioni</replaceable>]
+ [<replaceable>user</replaceable>]</command></entry>
+ </row>
+
+ <row>
+ <entry><command>man [<replaceable>opzioni</replaceable>]
+ <replaceable>comando</replaceable></command></entry>
+
+ <entry>mostra la pagina di manuale (<emphasis>man</emphasis>)
+ del comando specificato</entry>
+ </row>
+
+ <row>
+ <entry><command>mkdir [<replaceable>opzioni</replaceable>]
+ <replaceable>directory</replaceable></command></entry>
+
+ <entry>crea una directory</entry>
+ </row>
+
+ <row>
+ <entry><command>more [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry morerows="2">impaginatore di un file testuale</entry>
+ </row>
+
+ <row>
+ <entry><command>less [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+ </row>
+
+ <row>
+ <entry><command>pg [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+ </row>
+
+ <row>
+ <entry><command>mv [<replaceable>opzioni</replaceable>]
+ <replaceable>file1 file2</replaceable></command></entry>
+
+ <entry>muove <filename><replaceable>file1</replaceable></filename>
+ in <filename><replaceable>file2</replaceable></filename></entry>
+ </row>
+
+ <row>
+ <entry><command>od [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>dump su un file binario, in ottale, in ASCII, in
+ esadecimale, in decimale o in modalit&agrave; carattere.</entry>
+ </row>
+
+ <row>
+ <entry><command>passwd
+ [<replaceable>opzioni</replaceable>]</command></entry>
+
+ <entry>setta o modifica la propria password</entry>
+ </row>
+
+ <row>
+ <entry><command>paste [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>incolla campi nelle linee del file specificato</entry>
+ </row>
+
+ <row>
+ <entry><command>pr [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>filtra il file e lo stampa su un terminale</entry>
+ </row>
+
+ <row>
+ <entry><command>ps
+ [<replaceable>opzioni</replaceable>]</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 [<replaceable>opzioni</replaceable>]
+ <replaceable>nomehost</replaceable></command></entry>
+
+ <entry>copia file in remoto dalla macchina corrente in un'altra
+ macchina</entry>
+ </row>
+
+ <row>
+ <entry><command>rlogin [<replaceable>opzioni</replaceable>]
+ <replaceable>nomehost</replaceable></command></entry>
+
+ <entry>effettua il login in remoto su un'altra macchina</entry>
+ </row>
+
+ <row>
+ <entry><command>rm [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></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 [<replaceable>opzioni</replaceable>]
+ <replaceable>directory</replaceable></command></entry>
+
+ <entry>rimuove una directory</entry>
+ </row>
+
+ <row>
+ <entry><command>rsh [<replaceable>opzioni</replaceable>]
+ <replaceable>nomehost</replaceable></command></entry>
+
+ <entry>shell remota da eseguire su un'altra macchina</entry>
+ </row>
+
+ <row>
+ <entry><command>script
+ <replaceable>file</replaceable></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 [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>editor di flusso per editare file da uno script o da linea di
+ comando</entry>
+ </row>
+
+ <row>
+ <entry><command>sort [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>ordina le linee del file specificato basandosi sulle opzioni
+ scelte</entry>
+ </row>
+
+ <row>
+ <entry><command>source
+ <replaceable>file</replaceable></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>. <replaceable>file</replaceable></command></entry>
+ </row>
+
+ <row>
+ <entry><command>strings [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>riporta sequenze di 4 o pi&ugrave; 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
+ [<replaceable>opzioni</replaceable>]</command></entry>
+
+ <entry>setta o visualizza le opzioni del terminale di
+ controllo</entry>
+ </row>
+
+ <row>
+ <entry><command>tail [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>mostra le ultime linee (o parte) di un file</entry>
+ </row>
+
+ <row>
+ <entry><command>tar [<replaceable>opzioni</replaceable>]
+ [<replaceable>file</replaceable>]</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 [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>copia standard output in uno o pi&ugrave; file</entry>
+ </row>
+
+ <row>
+ <entry><command>telnet [<replaceable>host</replaceable>
+ [<replaceable>porta</replaceable>]]</command></entry>
+
+ <entry>comunica con un altro host usando il protocollo
+ telnet</entry>
+ </row>
+
+ <row>
+ <entry><command>touch [<replaceable>opzioni</replaceable>]
+ [<replaceable>data/ora</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>crea un file vuoto o aggiorna la data/ora di accesso di un
+ file esistente</entry>
+ </row>
+
+ <row>
+ <entry><command>tr [<replaceable>opzioni</replaceable>]
+ <replaceable>stringa1 stringa2</replaceable></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
+ <replaceable>file.Z</replaceable></command></entry>
+
+ <entry>decomprime il file specificato e lo salva in un file</entry>
+ </row>
+
+ <row>
+ <entry><command>uniq [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>rimuove le linee ripetute in un file</entry>
+ </row>
+
+ <row>
+ <entry><command>uudecode
+ [<replaceable>file</replaceable>]</command></entry>
+
+ <entry>decodifica un file codificato con
+ <command>uuencode</command>, riportandolo al file
+ originale</entry>
+ </row>
+
+ <row>
+ <entry><command>uuencode [<replaceable>file</replaceable>]
+ <replaceable>nuovo_nome</replaceable></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><replaceable>nuovo_nome</replaceable></filename> alla
+ destinazione</entry>
+ </row>
+
+ <row>
+ <entry><command>vi [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>editor visuale, a pieno schermo</entry>
+ </row>
+
+ <row>
+ <entry><command>wc [<replaceable>opzioni</replaceable>]
+ [<replaceable>file</replaceable>]</command></entry>
+
+ <entry>mostra il numero di parole (o di caratteri o di linee) del
+ file specificato</entry>
+ </row>
+
+ <row>
+ <entry><command>whereis [<replaceable>opzioni</replaceable>]
+ <replaceable>comando</replaceable></command></entry>
+
+ <entry>riporta le locazioni del binario, del sorgente e della pagina
+ man per il comando specificato</entry>
+ </row>
+
+ <row>
+ <entry><command>which
+ <replaceable>comando</replaceable></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 &egrave; <quote>loggato</quote> e quali processi
+ ha in esecuzione</entry>
+ </row>
+
+ <row>
+ <entry><command>zcat
+ <replaceable>file</replaceable>.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>
+
+<!--
+ Local Variables:
+ mode: sgml
+ sgml-indent-data: t
+ sgml-omittag: nil
+ sgml-always-quote-attributes: t
+ sgml-parent-document: ("../book.sgml" "book" "chapter")
+ End:
+--> \ No newline at end of file
diff --git a/it_IT.ISO8859-15/books/unix-introduction/commands/chapter.sgml b/it_IT.ISO8859-15/books/unix-introduction/commands/chapter.sgml
new file mode 100644
index 0000000000..505a472b97
--- /dev/null
+++ b/it_IT.ISO8859-15/books/unix-introduction/commands/chapter.sgml
@@ -0,0 +1,3037 @@
+<!--
+ The FreeBSD Italian Documentation Project
+
+ $FreeBSD$
+-->
+
+<chapter id="commands">
+ <title>Altri comandi utili</title>
+
+ <sect1 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" id="commands-table-utilities-files">
+ <title>Utilit&agrave; 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 [<replaceable>opzioni</replaceable>]
+ <replaceable>file1 file2</replaceable></command></entry>
+
+ <entry>confronta due file e mostra dove avvengono le differenze
+ (file di testo e file binari)</entry>
+ </row>
+
+ <row>
+ <entry><command>cut [<replaceable>opzioni</replaceable>]
+ [<replaceable>file</replaceable>]</command></entry>
+
+ <entry>taglia specifici campi/caratteri dalle linee di un
+ file</entry>
+ </row>
+
+ <row>
+ <entry><command>diff [<replaceable>opzioni</replaceable>]
+ <replaceable>file1 file2</replaceable></command></entry>
+
+ <entry>confronta due file e mostra le differenze
+ (solamente file di testo)</entry>
+ </row>
+
+ <row>
+ <entry><command>file [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>classifica il tipo di file</entry>
+ </row>
+
+ <row>
+ <entry><command>find <replaceable>directory</replaceable>
+ [<replaceable>opzioni</replaceable>]
+ [<replaceable>azioni</replaceable>]</command></entry>
+
+ <entry>cerca file basandosi sul tipo o su uno schema</entry>
+ </row>
+
+ <row>
+ <entry><command>ln [<replaceable>opzioni</replaceable>]
+ <replaceable>sorgente</replaceable>
+ <replaceable>destinazione</replaceable></command></entry>
+
+ <entry>crea un link (collegamento) a
+ <filename><replaceable>sorgente</replaceable></filename> chiamato
+ <filename><replaceable>destinazione</replaceable></filename></entry>
+ </row>
+
+ <row>
+ <entry><command>paste [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>aggiunge campi all'interno di un file</entry>
+ </row>
+
+ <row>
+ <entry><command>sort [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>riordina le linee di un file in accordo con le opzioni
+ specificate</entry>
+ </row>
+
+ <row>
+ <entry><command>strings [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>riporta sequenze di 4 o pi&ugrave; 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 [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>copia standard output in uno o pi&ugrave; file</entry>
+ </row>
+
+ <row>
+ <entry><command>touch [<replaceable>opzioni</replaceable>]
+ [<replaceable>data/ora</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>crea un file vuoto o aggiorna la data di accesso di un file
+ esistente</entry>
+ </row>
+
+ <row>
+ <entry><command>tr [<replaceable>opzioni</replaceable>]
+ <replaceable>stringa1 stringa2</replaceable></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 [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>rimuove le linee ripetute in un file</entry>
+ </row>
+
+ <row>
+ <entry><command>wc [<replaceable>opzioni</replaceable>]
+ [<replaceable>file</replaceable>]</command></entry>
+
+ <entry>mostra il numero di parole (o di caratteri o di linee) di
+ un file</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <sect2 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&ograve; 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 [<replaceable>opzioni</replaceable>]
+ <replaceable>file1 file2</replaceable>
+ [<replaceable>salto1</replaceable>]
+ [<replaceable>salto2</replaceable>]</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 &egrave; utile nel determinare quale versione di un
+ file dovrebbe essere mantenuta quando c'&egrave; pi&ugrave; di una
+ versione dello stesso file.</para>
+ </sect2>
+
+ <sect2 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 &egrave; stato
+ progettato per fornire i cambiamenti necessari per convertire il primo
+ file nel secondo.</para>
+
+ <para><emphasis>Sintassi</emphasis></para>
+
+ <para><command>diff [<replaceable>opzioni</replaceable>]
+ <replaceable>file1 file2</replaceable></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
+< bsmith
+4a4
+> jdoe
+7c7
+< mschmidt
+---
+> 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 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&agrave; utilizzata per un altro scopo.</para>
+
+ <para><emphasis>Sintassi</emphasis></para>
+
+ <para><command>cut [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></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
+ &egrave; 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 &egrave; 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&agrave; 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&ograve; 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&ograve; 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&agrave;:</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 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
+ &egrave; un tab, ma le opzioni permettono di usare altri
+ delimitatori.</para>
+
+ <para><emphasis>Sintassi</emphasis></para>
+
+ <para><command>paste [<replaceable>opzioni</replaceable>]
+ <replaceable>file1 file2</replaceable></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&ograve;
+ 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&ograve; 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&ograve; 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 > temp.file</userinput>
+555-6634
+555-3382
+555-0987
+555-1235
+555-7623</screen>
+
+ <para>Il risultato pu&ograve; 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 > 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&ograve; anche essere realizzato su una linea senza
+ il file temporaneo, con lo stesso risultato:</para>
+
+ <screen>&prompt.user; <userinput>cut -f2 phone | paste users - > listing</userinput></screen>
+
+ <para>In questo caso il trattino (-) funge come sostituto per il campo di
+ input (indica cio&egrave; l'output del comando &man.cut.1;).</para>
+ </sect2>
+
+ <sect2 id="commands-work-files-touch">
+ <title>touch - crea un file</title>
+
+ <para>Il comando &man.touch.1; pu&ograve; 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 &egrave; stata realizzata.</para>
+
+ <para><emphasis>Sintassi</emphasis></para>
+
+ <para><command>touch [<replaceable>opzioni</replaceable>]
+ [<replaceable>data/ora1</replaceable>]
+ <replaceable>file</replaceable></command></para>
+
+ <para><command>touch [<replaceable>opzioni</replaceable>]
+ [-t <replaceable>data/ora2</replaceable>]
+ <replaceable>file</replaceable></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> &egrave;:</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&ograve; 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 <replaceable>filename</replaceable></userinput></screen>
+ </sect2>
+
+ <sect2 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&ograve; 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 [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></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 &egrave;
+ <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 &egrave;
+ 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 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 [<replaceable>opzioni</replaceable>]
+ <replaceable>sorgente</replaceable>
+ [<replaceable>destinazione</replaceable>]</command></para>
+
+ <para>Se non specificata, la
+ <filename><replaceable>destinazione</replaceable></filename> di default
+ &egrave; un file dello stesso nome di
+ <filename><replaceable>sorgente</replaceable></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 &egrave; abituato ad usare un comando chiamato
+ <command>chkmag</command>, ma il comando &egrave; stato riscritto e il
+ nuovo nome &egrave; <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&ograve; 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 &egrave; 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 -> chkit</screen>
+
+ <para>Notare che mentre i permessi di <command>chkmag</command> sono
+ aperti a tutti, poich&egrave; &egrave; 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&ograve; esistere senza che il file
+ o la directory a cui &egrave; collegato esista.</para>
+
+ <para>Un <emphasis>hard link</emphasis> pu&ograve; 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&agrave; 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) &egrave; 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 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 [<replaceable>opzioni</replaceable>]
+ [+<replaceable>pos1</replaceable> [-<replaceable>pos2</replaceable>]]
+ <replaceable>file</replaceable></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&agrave; 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> &egrave; il
+ numero di parola di inizio, iniziando da <emphasis>0</emphasis> e
+ <replaceable>pos2</replaceable> &egrave; il numero di parola di fine.
+ Quando -<replaceable>pos2</replaceable> non &egrave; 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> &egrave; il numero di parola e
+ <replaceable>c</replaceable> &egrave; il carattere all'interno della
+ parola. Per <emphasis>c 0</emphasis> si specifica il delimitatore che
+ precede il primo carattere e <emphasis>1</emphasis> &egrave; 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 &egrave; 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&agrave; ciascun
+ utente una volta sola. (Il comando pu&ograve; 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 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 [<replaceable>opzioni</replaceable>]
+ [<replaceable>file</replaceable>]</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; &egrave;
+ visualizzato sullo schermo e memorizzato nel file
+ <filename>users.file</filename>:</para>
+
+ <screen>brigadier: condron [55]> <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]> <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]> <userinput>who | tee users.a users.b | wc -l</userinput>
+3</screen>
+
+ <screen>brigadier: condron [58]> <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]> <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]> <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 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 [<replaceable>opzioni</replaceable>]
+ [+|-<replaceable>n</replaceable>] <replaceable>file</replaceable>
+ [<replaceable>nuovo.file</replaceable>]</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 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&ugrave; 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 [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></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&ograve; 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&ograve; solo essere usato con -b
+cut: -d pu&ograve; solo essere usato con -f
+cut: -s pu&ograve; solo essere usato con -f
+nessuna lista specificata
+cut: %s non si riesce ad aprire
+il range specificato non &egrave; 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 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&ograve; determinare file di testo ASCII, file formattati tar, file
+ compressi, ecc.</para>
+
+ <para><emphasis>Sintassi</emphasis></para>
+
+ <para><command>file [<replaceable>opzioni</replaceable>]
+ [-m <replaceable>file_magico</replaceable>]
+ [-f <replaceable>lista_file</replaceable>]
+ <replaceable>file</replaceable></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><replaceable>lista_file</replaceable></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><replaceable>file_magico</replaceable></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 <replaceable>filename</replaceable></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 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 [<replaceable>opzioni</replaceable>]
+ <replaceable>stringa1</replaceable>
+ [<replaceable>stringa2</replaceable>]</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>
+ &egrave; <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&ograve;
+ 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&ograve; 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 & 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&egrave; &man.tr.1; legga da &man.stdin.4; si usa &man.cat.1;
+ in pipe con &man.tr.1;, cos&igrave;:</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 id="commands-work-files-find">
+ <title>find - cerca file</title>
+
+ <para>Il comando &man.find.1; pu&ograve; cercare file in modo
+ ricorsivo nell'albero di directory indicato, confrontando il tipo di
+ file o lo schema specificato. &man.find.1; pu&ograve; quindi elencare i
+ file o eseguire arbitrari comandi in base ai risultati.</para>
+
+ <para><emphasis>Sintassi</emphasis></para>
+
+ <para><command>find <replaceable>directory</replaceable>
+ [<replaceable>opzioni di ricerca</replaceable>]
+ [<replaceable>azioni</replaceable>]</command></para>
+
+ <para><emphasis>Opzioni generali</emphasis></para>
+
+ <para>Per l'opzione del tempo di ricerca, la notazione in giorni,
+ <emphasis>n</emphasis> &egrave;:</para>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <colspec colwidth="0.5in">
+
+ <tbody>
+ <row>
+ <entry><option>+<replaceable>n</replaceable></option></entry>
+
+ <entry>pi&ugrave; 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&ograve;
+ 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 &egrave; di
+ <replaceable>n</replaceable> giorni f&agrave;</entry>
+ </row>
+
+ <row>
+ <entry align="center"><option>-ctime
+ <replaceable>n</replaceable></option></entry>
+
+ <entry>data di cambiamento, vero se lo stato del file &egrave;
+ stato modificato <replaceable>n</replaceable> giorni
+ f&agrave;</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&agrave;</entry>
+ </row>
+
+ <row>
+ <entry><option>-newer
+ <replaceable>filename</replaceable></option></entry>
+
+ <entry>vero se pi&ugrave; 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&ograve; 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&ograve; 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>
+ &egrave; la modalit&agrave; ottale usata dal comando
+ &man.chmod.1;. Quando <replaceable>modi</replaceable> &egrave;
+ 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 &egrave; 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&ograve; 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&ograve; 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&ugrave; 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 id="commands-file-arch-comp-conv">
+ <title>Archiviazione, compressione e conversione di file</title>
+
+ <table frame="all" 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
+ [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable>[.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=<replaceable>infile</replaceable>]
+ [of=<replaceable>outfile</replaceable>]
+ [operando=<replaceable>valore</replaceable>]</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
+ [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable>[.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 [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></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 [<replaceable>opzioni</replaceable>]
+ [<replaceable>file</replaceable>]</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
+ [<replaceable>file</replaceable>]</command></entry>
+
+ <entry>decodifica un file uuencoded, ricreando il file
+ originale</entry>
+ </row>
+
+ <row>
+ <entry><command>uuencode [<replaceable>file</replaceable>]
+ <replaceable>nuovo_nome</replaceable></command></entry>
+
+ <entry>codifica un file binario in ASCII 7-bit; utile quando lo si
+ invia tramite email, per poi essere decodificato come
+ <filename><replaceable>nuovo_nome</replaceable></filename> alla
+ destinazione</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <sect2 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 &egrave; 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 [<replaceable>opzioni</replaceable>]
+ [<replaceable>file</replaceable>]</command></para>
+
+ <para><command>uncompress [<replaceable>opzioni</replaceable>]
+ [<replaceable>file</replaceable>.Z]</command></para>
+
+ <para><command>zcat [<replaceable>file</replaceable>.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><replaceable>file</replaceable>.Z</filename>) esiste
+ gi&agrave;.</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&ograve; 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&ugrave; efficiente. I programmi GNU che forniscono
+ funzionalit&agrave; 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&ograve; essere ottenuto via ftp anonimo: <ulink
+ url="ftp://ftp.gnu.org/pub/gnu"><hostid
+ role="fqdn">ftp://ftp.gnu.org/pub/gnu</hostid></ulink>.</para>
+ </sect2>
+
+ <sect2 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&ugrave; maneggevole una grande quantit&agrave; di
+ file.</para>
+
+ <para><emphasis>Sintassi</emphasis></para>
+
+ <para><command>tar [<replaceable>opzioni</replaceable>]
+ [<replaceable>directory file</replaceable>]</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&ograve; 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&ograve; 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&ograve; 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 <replaceable>archive</replaceable>.tar.Z | tar -xvf -</userinput></screen>
+
+ <para>dove il trattino alla fine del comando &man.tar.1; indica che il
+ file &egrave; preso da &man.stdin.4;.</para>
+ </sect2>
+
+ <sect2 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'&egrave;
+ garanzia che file binari 8-bit siano trasferiti correttamente. Quindi
+ per garantire una corretta consegna si pu&ograve; 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 [<replaceable>file_sorgente</replaceable>]
+ <replaceable>pathname_per_uudecode</replaceable>
+ [> <replaceable>nuovo_file</replaceable>]</command></para>
+
+ <para><command>uudecode [-p]
+ <replaceable>file_uuencode</replaceable></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&agrave; quando
+ decodificher&agrave; 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"< T "
+M!0 H !4 % 8 T $ - "@ H 4 P
+M -0 !$ ! ! ! %"
+M%P !0A< % $ $ 4(8 -"& W& W% < 0
+M @ !0B T(@ )@ !P O=7-R+VQI8B]L9"YS
+M;RXQ ?< 'Y VP "O !VP )8 &6 !G0
+M %[ U0 %G !3 ;< #Q %Q !
+MEP :P !_ '@ !PP (P
+M N0 =H _0 $D Y < #F /L
+M01 $' $ & ! P #0A@ 4(8
+M" ! 0 !E !@ , T(@ %"( )@ $
+M 0 ( ;@ $ ' -"N !0K@ /H
+M $ # ', ! P #1J 4:@ #8 !
+M !Y 0 , TH %* !=X 0
+M@ @ # -/X !3^ "E, $ (4 !
+M 4_> )0 0 ". P
+; %0 P )@ $
+
+end</programlisting>
+ </sect2>
+
+ <sect2 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=<replaceable>dispositivo_input</replaceable>]
+ [of=<replaceable>dispositivo_output</replaceable>]
+ [operando=<replaceable>valore</replaceable>]</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&ograve;
+ 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&ograve;
+ 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&agrave; 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 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 [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></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&agrave; 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&ograve; 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 id="commands-remote-connections">
+ <title>Connessioni remote</title>
+
+ <table frame="all" 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 [<replaceable>opzioni</replaceable>]
+ <replaceable>user</replaceable>[@<replaceable>nomehost</replaceable>]</command></entry>
+
+ <entry>riporta informazioni sugli utenti delle macchine locali
+ e remote</entry>
+ </row>
+
+ <row>
+ <entry><command>ftp [<replaceable>opzioni</replaceable>]
+ <replaceable>host</replaceable></command></entry>
+
+ <entry>trasferisce file utilizzando il protocollo di trasferimento
+ di file</entry>
+ </row>
+
+ <row>
+ <entry><command>rcp [<replaceable>opzioni</replaceable>]
+ <replaceable>nomehost</replaceable></command></entry>
+
+ <entry>copia file in remoto dalla macchina corrente in un'altra
+ macchina</entry>
+ </row>
+
+ <row>
+ <entry><command>rlogin [<replaceable>opzioni</replaceable>]
+ <replaceable>nomehost</replaceable></command></entry>
+
+ <entry>effettua il login in remoto su un'altra macchina</entry>
+ </row>
+
+ <row>
+ <entry><command>rsh [<replaceable>opzioni</replaceable>]
+ <replaceable>nomehost</replaceable></command></entry>
+
+ <entry>shell remota da eseguire su un'altra macchina</entry>
+ </row>
+
+ <row>
+ <entry><command>telnet [<replaceable>host</replaceable>
+ [<replaceable>porta</replaceable>]]</command></entry>
+
+ <entry>comunica con un altro host utilizzando il protocollo
+ telnet</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <sect2 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; &egrave; un servizio di login remoto che
+ &egrave; stato in passato un'esclusiva dello Unix BSD 4.3 di Berkeley.
+ Essenzialmente, offre le stesse funzionalit&agrave; 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&ugrave; sicura di
+ questo protocollo &egrave; la Sicura SHell
+ <application>SSH</application>, software scritto da Tatu Ylonen e
+ disponibile via: <ulink
+ url="ftp://ftp.net.ohio-state.edu/pub/security/ssh"><hostid
+ role="fqdn">ftp://ftp.net.ohio-state.edu/pub/security/ssh</hostid></ulink>.</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 [<replaceable>opzioni</replaceable>]
+ [<replaceable>host_remoto</replaceable>
+ [<replaceable>porta</replaceable>]]</command></para>
+
+ <para><command>tn3270 [<replaceable>opzioni</replaceable>]
+ [<replaceable>host_remoto</replaceable>
+ [<replaceable>porta</replaceable>]]</command></para>
+
+ <para><command>ftp [<replaceable>opzioni</replaceable>]
+ [<replaceable>host_remoto</replaceable>]</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>
+
+ <entry>abilit&agrave; la modalit&agrave; di debugging</entry>
+ </row>
+
+ <row>
+ <entry></entry>
+
+ <entry><option>-d</option></entry>
+
+ <entry>come sopra (solamente SVR4)</entry>
+ </row>
+
+ <row>
+ <entry><option>-i</option></entry>
+
+ <entry></entry>
+
+ <entry>disabilita il prompt interattivo</entry>
+ </row>
+
+ <row>
+ <entry><option>-n</option></entry>
+
+ <entry></entry>
+
+ <entry>non tenta un auto-login su una connessione</entry>
+ </row>
+
+ <row>
+ <entry><option>-v</option></entry>
+
+ <entry></entry>
+
+ <entry>modalit&agrave; verbose</entry>
+ </row>
+
+ <row>
+ <entry></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>
+
+ <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 &egrave; 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&agrave; 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 <username>anonymous</username> (il login
+ <username>ftp</username> &egrave; equivalente su molte macchine)
+ cio&egrave;, quando viene richiesto il login si digita
+ <username>anonymous</username> (di solito per la password si inserisce
+ il proprio indirizzo email o qualsiasi altra cosa).</para>
+
+ <para>Una volta che si &egrave; 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&agrave; utilizzare
+ la macchina come al solito.</para>
+
+ <para>Una volta che si &egrave; correttamente collegati ad un computer
+ remoto tramite &man.ftp.1;, si pu&ograve; 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 &egrave; la
+ seguente:</para>
+
+ <para><command>put <replaceable>nome-file-locale
+ nome-file-remoto</replaceable></command></para>
+
+ <para><command>get <replaceable>nome-file-locale
+ nome-file-remoto</replaceable></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&ograve; 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 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 &egrave; 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 [<replaceable>opzioni</replaceable>]
+ [<replaceable>user</replaceable>[@<replaceable>nomehost</replaceable>]]</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]> <userinput>finger workshop@nyssa</userinput>
+Questo &egrave; un esempio di file .plan per l'id workshop di nyssa.
+Questo id &egrave; stato usato in questa settimana da Frank Fiamingo, Linda
+DeBula, e Linda Condron, mentre insegnavano ad usare una nuova versione
+di Unix workshop sviluppata per l'UTS.
+
+Sperando di aver insegnato qualcosa.
+Frank, Linda, & Linda</screen>
+
+ <screen>brigadier: condron [77]> <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 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&agrave; nel realizzare certe
+ operazioni comuni. Poich&egrave; 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&agrave; di
+ accesso remoto tramite questi comandi &egrave; 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&agrave; di invocare
+ una shell Unix su un host remoto della rete locale con lo scopo di
+ eseguirci comandi di shell. Questa capacit&agrave; &egrave; 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&agrave; di
+ copiare file dall'host locale ad un host remoto della rete
+ locale.</para>
+
+ <para><emphasis>Sintassi</emphasis></para>
+
+ <para><command>rlogin [-l <replaceable>username</replaceable>]
+ <replaceable>host_remoto</replaceable></command></para>
+
+ <para><command>rsh [-l <replaceable>username</replaceable>]
+ <replaceable>host_remoto</replaceable>
+ [<replaceable>comando</replaceable>]</command></para>
+
+ <para><command>rcp
+ [[<replaceable>user1</replaceable>]@<replaceable>host1</replaceable>:]<replaceable>file_sorgente</replaceable>
+ [[<replaceable>user2</replaceable>]@<replaceable>host2</replaceable>:]<replaceable>file_destinazione</replaceable></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; & &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> &egrave; della forma:</para>
+
+ <para><replaceable>host_remoto utente_remoto</replaceable></para>
+
+ <para>dove l'elenco
+ <username><replaceable>utente_remoto</replaceable></username> &egrave;
+ opzionale. Per esempio, se Heather Jones vuole essere in grado di
+ connettersi alla <hostid role="hostname">macchina1</hostid> (dove il suo
+ username &egrave; <username>heather</username>) dalla
+ <hostid role="hostname">macchina2</hostid> (dove il suo username
+ &egrave; <username>jones</username>) o dalla
+ <hostid role="hostname">macchina3</hostid> (dove il suo username
+ &egrave; <username>heather</username>, lo stesso della
+ <hostid role="hostname">macchina1</hostid>), lei potrebbe creare un file
+ <filename>.rhosts</filename> nella sua home directory sulla
+ <hostid role="hostname">macchina1</hostid>. 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&igrave; un file <filename>/etc/hosts.equiv</filename>
+ contenente:</para>
+
+ <para><replaceable>macchina_remota</replaceable></para>
+
+ <para>permette agli utenti provenienti da <hostid
+ role="hostname"><replaceable>macchina_remota</replaceable></hostid>
+ 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
+ <username><replaceable>utente_remoto</replaceable></username> su <hostid
+ role="hostname"><replaceable>macchina_remota</replaceable></hostid>
+ 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&ugrave; sicurezza.</para>
+ </sect2>
+ </sect1>
+</chapter>
+
+<!--
+ Local Variables:
+ mode: sgml
+ sgml-indent-data: t
+ sgml-omittag: nil
+ sgml-always-quote-attributes: t
+ sgml-parent-document: ("../book.sgml" "book" "chapter")
+ End:
+--> \ No newline at end of file
diff --git a/it_IT.ISO8859-15/books/unix-introduction/editors/chapter.sgml b/it_IT.ISO8859-15/books/unix-introduction/editors/chapter.sgml
new file mode 100644
index 0000000000..2f9bb87a52
--- /dev/null
+++ b/it_IT.ISO8859-15/books/unix-introduction/editors/chapter.sgml
@@ -0,0 +1,1289 @@
+<!--
+ The FreeBSD Italian Documentation Project
+
+ $FreeBSD$
+-->
+
+<chapter id="editors">
+ <title>Editor</title>
+
+ <para>Esistono numerose utility per la manipolazione del testo in Unix, come
+ &egrave; 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 &egrave; <application>vi</application>.
+ Questa applicazione comprende un super-set, per cos&igrave; dire, di
+ caratteristiche di &man.ed.1; e di &man.ex.1; (gli editor a linea di
+ Unix).</para>
+
+ <para>&man.vi.1; &egrave; un editor modale. Questo significa che ha
+ modalit&agrave; specifiche che permettono l'inserimento del testo, la
+ cancellazione del testo e l'inserimento dei comandi. Si pu&ograve; lasciare
+ la modalit&agrave; di inserimento premendo il tasto <keycap>escape</keycap>.
+ In questo modo ci si porta nella modalit&agrave; comando. L'editor
+ di linea &man.ex.1; &egrave; incorporato in &man.vi.1;. Si pu&ograve;
+ passare dalla modalit&agrave; a schermo pieno a quella a linea di comando (e
+ viceversa) quando si desidera. In modalit&agrave; <emphasis>vi</emphasis>
+ premere <keycap>Q</keycap> per andare in modalit&agrave;
+ <emphasis>ex</emphasis>. In modalt&agrave; <emphasis>ex</emphasis>, al
+ prompt : digitare <command>vi</command> per ritornare in modalit&agrave;
+ <emphasis>vi</emphasis>. Inoltre &egrave; disponibile una modalit&agrave;
+ di &man.vi.1; in sola lettura, che pu&ograve; essere invocata con
+ &man.view.1;.</para>
+
+ <para>Un altro editor comune nei sistemi Unix, specialmente nei college e
+ negli ambienti universitari, &egrave; <application>emacs</application> (che
+ sta per <quote>editing macros</quote>). Mentre &man.vi.1; &egrave; in
+ generale compreso nel sistema operativo Unix, &man.emacs.1; usualmente non
+ lo &egrave;. <application>Emacs</application> viene distribuito dalla Free
+ Software Foundation ed &egrave; discutibilmente il pi&ugrave; potente editor
+ disponibile per Unix. <application>Emacs</application> &egrave; un software
+ di sistema molto grande ed &egrave; 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
+ &egrave; 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 <ulink url="ftp://ftp.gnu.org/pub/gnu/"><hostid
+ role="fqdn">ftp://ftp.gnu.org/pub/gnu/</hostid></ulink> e
+ <ulink url="http://www.gnu.org/"><hostid
+ role="fqdn">http://www.gnu.org/</hostid></ulink>.</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 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&ograve; 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&agrave; di
+ inserimento &egrave; 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=<replaceable>n</replaceable></command></entry>
+
+ <entry>mette on la modalit&agrave; 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 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; &egrave; 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&egrave;
+ 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> &egrave; 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><keycap>M</keycap>, <keycap>x</keycap>
+ what-line</command></entry>
+
+ <entry>quale linea &egrave; sul cursore?</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>M</keycap>, <keycap>x</keycap>
+ auto-fill-mode</command></entry>
+
+ <entry>mette on word-wrap</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>M</keycap>, <keycap>x</keycap>
+ auto-fill-mode</command></entry>
+
+ <entry>mette off word-wrap</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>M</keycap>, <keycap>x</keycap>
+ set-variable <keycap>&lt;return&gt;</keycap>
+ fill-column <keycap>&lt;return&gt;</keycap> 45</command></entry>
+
+ <entry>setta la lunghezza di linea a 45 caratteri</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>M</keycap>, <keycap>x</keycap>
+ set-variable <keycap>&lt;return&gt;</keycap>
+ auto-save-interval <keycap>&lt;return&gt;</keycap>
+ 300</command></entry>
+
+ <entry>salva automaticamente il file ogni 300 battute di
+ tasti</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>M</keycap>, <keycap>x</keycap>
+ goto-line <keycap>&lt;return&gt;</keycap>
+ 16</command></entry>
+
+ <entry>muove il cursore alla linea 16</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>M</keycap>, <keycap>x</keycap>
+ help-for-help</command></entry>
+
+ <entry>invoca l'help di emacs quando <keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>h</keycap>
+ </keycombo> &egrave; 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 &egrave;, digitare M, n
+(global-set-key "\M-n" 'what-line)
+(message "~/.emacs loaded.")
+(message "")</programlisting>
+ </sect1>
+
+ <sect1 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; &egrave; case sensitive
+ (sensibile alla differenza minuscolo e maiuscolo).</para>
+
+ <para><emphasis>Comandi movimento cursore:</emphasis></para>
+
+ <para>(<replaceable>n</replaceable>) indica un numero ed &egrave;
+ opzionale</para>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <colspec colwidth="1.5in">
+
+ <tbody>
+ <row>
+ <entry><command>(<replaceable>n</replaceable>)<keycap>h</keycap></command></entry>
+
+ <entry>(<replaceable>n</replaceable>) spazi a sinistra</entry>
+ </row>
+
+ <row>
+ <entry><command>(<replaceable>n</replaceable>)<keycap>j</keycap></command></entry>
+
+ <entry>(<replaceable>n</replaceable>) spazi gi&ugrave;</entry>
+ </row>
+
+ <row>
+ <entry><command>(<replaceable>n</replaceable>)<keycap>k</keycap></command></entry>
+
+ <entry>(<replaceable>n</replaceable>) spazi su</entry>
+ </row>
+
+ <row>
+ <entry><command>(<replaceable>n</replaceable>)<keycap>l</keycap></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><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>F</keycap>
+ </keycombo></command></entry>
+
+ <entry>avanti di una schermata</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>B</keycap>
+ </keycombo></command></entry>
+
+ <entry>indietro di una schermata</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>D</keycap>
+ </keycombo></command></entry>
+
+ <entry>gi&ugrave; di mezza schermata</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>U</keycap>
+ </keycombo></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 &egrave; importante)</para>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <colspec colwidth="1.5in">
+
+ <tbody>
+ <row>
+ <entry><command><keycap>H</keycap></command></entry>
+
+ <entry>all'inizio della linea superiore della schermata</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>M</keycap></command></entry>
+
+ <entry>all'inizio della linea mediana della schermata</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>L</keycap></command></entry>
+
+ <entry>all'inizio dell'ultima linea della schermata</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>G</keycap></command></entry>
+
+ <entry>all'inizio dell'ultima linea del file</entry>
+ </row>
+
+ <row>
+ <entry><command>(<replaceable>n</replaceable>)<keycap>G</keycap></command></entry>
+
+ <entry>all'inizio della linea (<replaceable>n</replaceable>)</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>0</keycap></command></entry>
+
+ <entry>(zero) all'inizio della linea</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>$</keycap></command></entry>
+
+ <entry>alla fine della linea</entry>
+ </row>
+
+ <row>
+ <entry><command>(<replaceable>n</replaceable>)<keycap>w</keycap></command></entry>
+
+ <entry>avanti (<replaceable>n</replaceable>) parole</entry>
+ </row>
+
+ <row>
+ <entry><command>(<replaceable>n</replaceable>)<keycap>b</keycap></command></entry>
+
+ <entry>indietro (<replaceable>n</replaceable>) parole</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>e</keycap></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><keycap>i</keycap></command></entry>
+
+ <entry>inserimento testo prima del cursore</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>a</keycap></command></entry>
+
+ <entry>aggiunta testo dopo il cursore (non sovrascrive altro
+ testo)</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>I</keycap></command></entry>
+
+ <entry>inserimento testo all'inizio della linea</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>A</keycap></command></entry>
+
+ <entry>aggiunta testo alla fine della linea</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>r</keycap></command></entry>
+
+ <entry>sostituisce il carattere posto sotto il cursore con il
+ prossimo carattere digitato</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>R</keycap></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><keycap>o</keycap></command></entry>
+
+ <entry>(alpha o) inserisce una nuova linea dopo la linea corrente
+ per inserire del testo</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>O</keycap></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><keycap>dd</keycap></command></entry>
+
+ <entry>cancella la linea corrente</entry>
+ </row>
+
+ <row>
+ <entry><command>(<replaceable>n</replaceable>)<keycap>dd</keycap></command></entry>
+
+ <entry>cancella (<replaceable>n</replaceable>) linee</entry>
+ </row>
+
+ <row>
+ <entry><command>(<replaceable>n</replaceable>)<keycap>dw</keycap></command></entry>
+
+ <entry>cancella (<replaceable>n</replaceable>) parole</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>D</keycap></command></entry>
+
+ <entry>cancella dal cursore fino alla fine della linea</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>x</keycap></command></entry>
+
+ <entry>cancella il carattere corrente</entry>
+ </row>
+
+ <row>
+ <entry><command>(<replaceable>n</replaceable>)<keycap>x</keycap></command></entry>
+
+ <entry>cancella (<replaceable>n</replaceable>) caratteri</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>X</keycap></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>(<replaceable>n</replaceable>)<keycap>cc</keycap></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><keycap>cw</keycap></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>(<replaceable>n</replaceable>)<keycap>cw</keycap></command></entry>
+
+ <entry>modifica i caratteri delle prossime
+ (<replaceable>n</replaceable>) parole</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>c$</keycap></command></entry>
+
+ <entry>modifica il testo alla fine della linea</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>ct</keycap>(<replaceable>x</replaceable>)</command></entry>
+
+ <entry>modifica il testo alla lettera
+ (<replaceable>x</replaceable>)</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>C</keycap></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><keycap>~</keycap></command></entry>
+
+ <entry>modifica il minuscolo/maiuscolo del carattere
+ corrente</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>J</keycap></command></entry>
+
+ <entry>unisce la linea corrente a quella successiva</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>u</keycap></command></entry>
+
+ <entry>annulla l'ultimo comando realizzato sulla linea
+ corrente</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>.</keycap></command></entry>
+
+ <entry>ripete l'ultima modifica</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>s</keycap></command></entry>
+
+ <entry>sostituisce il carattere corrente con il testo
+ digitato</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>S</keycap></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><keycap>&amp;</keycap></command></entry>
+
+ <entry>ripete l'ultimo comando di sostituzione
+ (<command>:s</command>)</entry>
+ </row>
+
+ <row>
+ <entry><command>(<replaceable>n</replaceable>)<keycap>yy</keycap></command></entry>
+
+ <entry><quote>strappa</quote> (<replaceable>n</replaceable>) linee
+ dal buffer</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>y</keycap>(<replaceable>n</replaceable>)<keycap>w</keycap></command></entry>
+
+ <entry><quote>strappa</quote> (<replaceable>n</replaceable>) parole
+ dal buffer</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>p</keycap></command></entry>
+
+ <entry>inserisce il testo eliminato o <quote>strappato</quote> dopo
+ il cursore</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>P</keycap></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
+ (<replaceable>file</replaceable>)</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!
+ (<replaceable>file</replaceable>)</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
+ (<replaceable>nome</replaceable>)</command></entry>
+
+ <entry>modifica il nome del file corrente in quello
+ specificato</entry>
+ </row>
+
+ <row>
+ <entry><command>:r
+ (<replaceable>file</replaceable>)</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>:!(<replaceable>comando</replaceable>)</command></entry>
+
+ <entry>escape di shell</entry>
+ </row>
+
+ <row>
+ <entry><command>:r!(<replaceable>comando</replaceable>)</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 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></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><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>h</keycap>
+ </keycombo></command></entry>
+
+ <entry>help</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>x</keycap>
+ </keycombo>, <keycap>u</keycap></command></entry>
+
+ <entry>undo (annulla operazione precedente)</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>x</keycap>
+ </keycombo>, <keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>g</keycap>
+ </keycombo></command></entry>
+
+ <entry>esce dalla operazione o comando corrente</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>x</keycap>
+ </keycombo>, <keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>s</keycap>
+ </keycombo></command></entry>
+
+ <entry>salva il file</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>x</keycap>
+ </keycombo>, <keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>c</keycap>
+ </keycombo></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><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>f</keycap>
+ </keycombo></command></entry>
+
+ <entry>avanti di un carattere</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>b</keycap>
+ </keycombo></command></entry>
+
+ <entry>indietro di un carattere</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>p</keycap>
+ </keycombo></command></entry>
+
+ <entry>linea precedente</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>n</keycap>
+ </keycombo></command></entry>
+
+ <entry>linea successiva</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>a</keycap>
+ </keycombo></command></entry>
+
+ <entry>inizio linea</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>e</keycap>
+ </keycombo></command></entry>
+
+ <entry>fine linea</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>l</keycap>
+ </keycombo></command></entry>
+
+ <entry>al centro della corrente linea sullo schermo</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>v</keycap>
+ </keycombo></command></entry>
+
+ <entry>sfoglia avanti</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>M</keycap>,
+ <keycap>v</keycap></command></entry>
+
+ <entry>sfoglia indietro</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>M</keycap>,
+ <keycap>f</keycap></command></entry>
+
+ <entry>avanti di una parola</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>M</keycap>,
+ <keycap>b</keycap></command></entry>
+
+ <entry>indietro di una parola</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>M</keycap>,
+ <keycap>a</keycap></command></entry>
+
+ <entry>inizio periodo</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>M</keycap>,
+ <keycap>e</keycap></command></entry>
+
+ <entry>fine periodo</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>M</keycap>,
+ <keycap>{</keycap></command></entry>
+
+ <entry>inizio paragrafo</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>M</keycap>,
+ <keycap>}</keycap></command></entry>
+
+ <entry>fine paragrafo</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>M</keycap>,
+ <keycap>&lt;</keycap></command></entry>
+
+ <entry>inizio buffer</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>M</keycap>,
+ <keycap>&gt;</keycap></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><keycap>M</keycap>,
+ (<replaceable>n</replaceable>)</command></entry>
+
+ <entry>ripete il prossimo comando (<replaceable>n</replaceable>)
+ volte</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>d</keycap>
+ </keycombo></command></entry>
+
+ <entry>cancella un carattere</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>M</keycap>,
+ <keycap>d</keycap></command></entry>
+
+ <entry>cancella una parola</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>k</keycap>
+ </keycombo></command></entry>
+
+ <entry>elimina linea</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>M</keycap>,
+ <keycap>k</keycap></command></entry>
+
+ <entry>elimina periodo</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>s</keycap>
+ </keycombo></command></entry>
+
+ <entry>ricerca in avanti</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>r</keycap>
+ </keycombo></command></entry>
+
+ <entry>ricerca al rovescio</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>M</keycap>,
+ <keycap>%</keycap></command></entry>
+
+ <entry>sostituzione di query</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>M</keycap>,
+ <keycap>c</keycap></command></entry>
+
+ <entry>capitalizza parola</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>M</keycap>,
+ <keycap>u</keycap></command></entry>
+
+ <entry>parola in lettere maiuscole</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>M</keycap>,
+ <keycap>l</keycap></command></entry>
+
+ <entry>parola in lettere minuscole</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>t</keycap>
+ </keycombo></command></entry>
+
+ <entry>commuta caratteri</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>M</keycap>,
+ <keycap>t</keycap></command></entry>
+
+ <entry>commuta parole</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>@</keycap>
+ </keycombo></command></entry>
+
+ <entry>marca l'inizio di una regione</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>w</keycap>
+ </keycombo></command></entry>
+
+ <entry>taglia/cancella tutto dalla marcatura al punto</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>y</keycap>
+ </keycombo></command></entry>
+
+ <entry>incolla il testo eliminato o <quote>strappato</quote>
+ all'interno della locazione corrente</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>M</keycap>,
+ <keycap>q</keycap></command></entry>
+
+ <entry>riformatta il paragrafo</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>M</keycap>,
+ <keycap>g</keycap></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><keycap>M</keycap>, <keycap>x</keycap>
+ auto-fill-mode</command></entry>
+
+ <entry>mette on word wrap</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>M</keycap>, <keycap>x</keycap> set-variable
+ <keycap>&lt;return&gt;</keycap> fill-column
+ <keycap>&lt;return&gt;</keycap> 45</command></entry>
+
+ <entry>setta la lunghezza di linea a 45 caratteri</entry>
+ </row>
+
+ <row>
+ <entry><command><keycap>M</keycap>, <keycap>x</keycap> goto-line
+ <keycap>&lt;return&gt;</keycap> 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><keycap>M</keycap>,
+ <keycap>w</keycap></command></entry>
+
+ <entry>copia la regione marcata</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>x</keycap>
+ </keycombo>, <keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>f</keycap>
+ </keycombo></command></entry>
+
+ <entry>cerca un file e lo legge</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>x</keycap>
+ </keycombo>, <keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>v</keycap>
+ </keycombo></command></entry>
+
+ <entry>cerca e legge un file alternativo</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>x</keycap>
+ </keycombo>, <keycap>i</keycap></command></entry>
+
+ <entry>inserisce un file alla posizione corrente</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>x</keycap>
+ </keycombo>, <keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>s</keycap>
+ </keycombo></command></entry>
+
+ <entry>salva il file</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>x</keycap>
+ </keycombo>, <keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>w</keycap>
+ </keycombo></command></entry>
+
+ <entry>scrive il buffer in un file differente</entry>
+ </row>
+
+ <row>
+ <entry><command><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>x</keycap>
+ </keycombo>, <keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>c</keycap>
+ </keycombo></command></entry>
+
+ <entry>esce da &man.emacs.1; e chiede di salvare</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </sect1>
+</chapter>
+
+<!--
+ Local Variables:
+ mode: sgml
+ sgml-indent-data: t
+ sgml-omittag: nil
+ sgml-always-quote-attributes: t
+ sgml-parent-document: ("../book.sgml" "book" "chapter")
+ End:
+--> \ No newline at end of file
diff --git a/it_IT.ISO8859-15/books/unix-introduction/getting-started/chapter.sgml b/it_IT.ISO8859-15/books/unix-introduction/getting-started/chapter.sgml
new file mode 100644
index 0000000000..eb93191798
--- /dev/null
+++ b/it_IT.ISO8859-15/books/unix-introduction/getting-started/chapter.sgml
@@ -0,0 +1,2223 @@
+<!--
+ The FreeBSD Italian Documentation Project
+
+ $FreeBSD$
+-->
+
+<chapter id="getting-started">
+ <title>Iniziamo</title>
+
+ <sect1 id="getting-started-login">
+ <title>Effettuare il login</title>
+
+ <para>Una volta che l'utente si &egrave; 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 &egrave; il nome univoco dell'utente sul sistema. La
+ password &egrave; 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 &egrave; 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 &egrave; normalmente in minuscolo.</para>
+ </note>
+
+ <sect2 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&ograve; 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 <replaceable>&lt;tipo di
+ terminale&gt;</replaceable></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, &egrave;
+ 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=<replaceable>&lt;tipo di
+ terminale&gt;</replaceable>; 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> &egrave;
+ il tipo di terminale, come <literal>vt100</literal>, che si desidera
+ settare.</para>
+ </sect2>
+
+ <sect2 id="getting-started-login-passwords">
+ <title>Password</title>
+
+ <para>Quando viene assegnato il proprio account, si riceve una password
+ iniziale. Questa password &egrave; importate sia per la sicurezza
+ del sistema sia per una sicurezza personale, perci&ograve; la password
+ per il proprio account pu&ograve; essere cambiata a propria scelta. Il
+ comando per cambiare una password &egrave;
+ &man.passwd.1;. Verr&agrave; 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&agrave; 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&ograve; essere rifiutato da questi programmi.</para>
+
+ <para>Quando si sceglie una password, &egrave; importante che questa non
+ sia in qualche modo indovinabile n&eacute; per qualche sconosciuto
+ che tenta di scoprirla n&eacute; 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 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&ograve; far uscire dal sistema un utente. L'ultimo caso &egrave;
+ 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 id="getting-started-login-identity">
+ <title>Identit&agrave;</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 &egrave; necessario conoscere il proprio userid e
+ groupid, poich&egrave; il sistema traduce in modo automatico lo userid
+ in username (e viceversa) ed il groupid in groupname (e viceversa).
+ Probabilmente si conosce gi&agrave; lo username: &egrave; il nome
+ utilizzato per il login. Il groupname non &egrave; ovvio, e in
+ realt&agrave; si pu&ograve; appartenere a pi&ugrave; di un gruppo. Il
+ proprio gruppo primario &egrave; quello associato con il proprio
+ username nel file database delle password, configurato
+ dall'amministratore di sistema. Similmente, c'&egrave; un file database
+ per i gruppi, dove l'amministratore di sistema pu&ograve; assegnare
+ gruppi aggiuntivi ad un utente.</para>
+
+ <para>Nei seguenti esempi il simbolo &prompt.user; &egrave; il proprio
+ prompt di shell e non va digitato.</para>
+
+ <para>Si pu&ograve; 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 id="getting-started-comm-line-struct">
+ <title>Struttura della linea di comando di Unix</title>
+
+ <para>Un <emphasis>comando</emphasis> &egrave; un programma che chiama
+ il sistema Unix per qualche compito. Un comando ha la forma:</para>
+
+ <para><command><replaceable>comando</replaceable>
+ [<replaceable>opzioni</replaceable>]
+ [<replaceable>argomenti</replaceable>]</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><replaceable>comando</replaceable></command>
+ e <command><replaceable>Comando</replaceable></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&ugrave; opzioni
+ possono essere messe insieme nella forma:</para>
+
+ <para><command><replaceable>comando</replaceable>
+ -[<replaceable>opzione</replaceable>][<replaceable>opzione</replaceable>][<replaceable>opzione</replaceable>]</command></para>
+
+ <para>esempio:</para>
+
+ <para><command>ls -alR</command></para>
+
+ <para>che mostrer&agrave; 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><replaceable>comando
+ -opzione1 -opzione2 -opzione3</replaceable></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&agrave; 2 copie del file specificato a
+ <devicename>printer3</devicename>.</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&ugrave;
+ 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 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 &egrave; 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&ograve; 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&igrave; <keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>S</keycap>
+ </keycombo> &egrave; 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>) &egrave; un segnale di <emphasis>stop</emphasis> e
+ dice al terminale di non accettare pi&ugrave; input. Il terminale
+ rimarr&agrave; sospeso finch&egrave; un segnale di
+ <emphasis>start</emphasis> <keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>Q</keycap>
+ </keycombo> non sar&agrave; generato.</para>
+
+ <para><keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>U</keycap>
+ </keycombo> &egrave; 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&igrave; 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 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&agrave; di trasmissione dati;</para>
+ </listitem>
+
+ <listitem>
+ <para>controllo di parit&agrave; 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; &egrave; 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 [<replaceable>opzioni</replaceable>]</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&agrave; 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&agrave; l'opzione del terminale solamente per la
+ sessione corrente. Per far in modo che questo comando sia eseguito
+ automaticamente ad ogni login, &egrave; possibile inserire tale comando
+ nel file <filename>.login</filename> o <filename>.profile</filename> di
+ cui si parler&agrave; pi&ugrave; avanti.</para>
+ </sect1>
+
+ <sect1 id="getting-started-get-help">
+ <title>Ottenere aiuto</title>
+
+ <para>Il manuale di Unix, usualmente chiamato <emphasis>man page</emphasis>
+ (pagine man), &egrave; 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 [<replaceable>opzioni</replaceable>]
+ <replaceable>nome_comando</replaceable></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&ograve; 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&ograve; accedere a quella pagina man
+ (di default si fa riferimento al numero di sezione pi&ugrave; basso, ma si
+ pu&ograve; 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&agrave; 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 &egrave; stato parafrasato e troncato per una questione
+ di spazio e di copyright.</para>
+ </sect1>
+
+ <sect1 id="getting-started-directory-nav-control">
+ <title>Navigazione e controllo delle directory</title>
+
+ <para>Il file system di Unix &egrave; organizzato come la struttura
+ ramificata di un albero a partire da root. La directory
+ <emphasis>root</emphasis> del sistema &egrave; 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" 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
+ [<replaceable>directory</replaceable>]</command></entry>
+
+ <entry>cambia directory</entry>
+ </row>
+
+ <row>
+ <entry><command>ls
+ [<replaceable>opzioni</replaceable>][<replaceable>directory
+ o file</replaceable>]</command></entry>
+
+ <entry>lista il contenuto della directory o i permessi del
+ file specificato</entry>
+ </row>
+
+ <row>
+ <entry><command>mkdir
+ [<replaceable>opzioni</replaceable>]
+ <replaceable>directory</replaceable></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 [<replaceable>opzioni</replaceable>]
+ <replaceable>directory</replaceable></command></entry>
+
+ <entry>rimuove una directory</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>Se si ha una certa familiarit&agrave; 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"
+ 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 id="getting-started-directory-nav-control-pwd">
+ <title>pwd - mostra la directory di lavoro</title>
+
+ <para>In ogni momento si pu&ograve; determinare in che punto si &egrave;
+ 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 id="getting-started-directory-nav-control-cd">
+ <title>cd - cambia directory</title>
+
+ <para>Ci si pu&ograve; 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 [<replaceable>directory</replaceable>]</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
+ <replaceable>/completo/path/name/da/root</replaceable></command></entry>
+
+ <entry>cambia directory rispetto a un path name assoluto
+ (notare lo slash iniziale)</entry>
+ </row>
+
+ <row>
+ <entry><command>cd
+ <replaceable>path/da/posizione/corrente</replaceable></command></entry>
+
+ <entry>cambia directory rispetto a un path name relativo alla
+ posizione corrente (no slash iniziale)</entry>
+ </row>
+
+ <row>
+ <entry><command>cd
+ <replaceable>~username/directory</replaceable></command></entry>
+
+ <entry>cambia directory rispetto alla directory home dell'utente
+ specificato (il carattere ~ non &egrave; valido nella shell
+ Bourne; vedere il <link
+ linkend="shells">Capitolo 5</link>).</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </sect2>
+
+ <sect2 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 &egrave; possibile con il
+ comando &man.mkdir.1;, crea directory. Di nuovo si pu&ograve;
+ specificare un path name assoluto o relativo della directory che si
+ vuole creare.</para>
+
+ <para><emphasis>Sintassi</emphasis></para>
+
+ <para><command>mkdir [<replaceable>opzioni</replaceable>]
+ <replaceable>directory</replaceable></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&ugrave; 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 &egrave;
+ <filename>/home/frank</filename>, il seguente comando &egrave;
+ equivalente:</para>
+
+ <screen>&prompt.user; <userinput>mkdir data</userinput></screen>
+ </sect2>
+
+ <sect2 id="getting-started-directory-nav-control-rmdir">
+ <title>rmdir - rimuove una directory</title>
+
+ <para>Per rimuovere una directory &egrave; necessario che questa sia
+ vuota. Altrimenti bisogna prima rimuovere i file contenuti in essa.
+ Inoltre, non si pu&ograve; rimuovere una directory se questa &egrave; la
+ directory di lavoro corrente, bisogna prima uscire da
+ quest'ultima.</para>
+
+ <para><emphasis>Sintassi</emphasis></para>
+
+ <para><command>rmdir
+ <replaceable>directory</replaceable></command></para>
+
+ <para><emphasis>Esempi:</emphasis></para>
+
+ <para>Per rimuovere la directory vuota
+ <filename>/home/frank/data</filename> mentre si &egrave; 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 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
+ &egrave; &man.ls.1;. &Egrave; 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 [<replaceable>opzioni</replaceable>]
+ [<replaceable>argomenti</replaceable>]</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>
+
+ <entry><emphasis>directory</emphasis> /</entry>
+ </row>
+
+ <row>
+ <entry></entry>
+
+ <entry><emphasis>socket</emphasis> =</entry>
+ </row>
+
+ <row>
+ <entry></entry>
+
+ <entry><emphasis>link simbolico</emphasis> @</entry>
+ </row>
+
+ <row>
+ <entry></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 &egrave; 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 &egrave; 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
+ &egrave; 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 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" 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 [<replaceable>opzioni</replaceable>]
+ <replaceable>gruppo file</replaceable></command></entry>
+
+ <entry>cambia il gruppo assegnato ad un file</entry>
+ </row>
+
+ <row>
+ <entry><command>chmod [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>cambia i permessi di accesso a file o directory</entry>
+ </row>
+
+ <row>
+ <entry><command>chown [<replaceable>opzioni</replaceable>]
+ <replaceable>proprietario file</replaceable></command></entry>
+
+ <entry>cambia il proprietario di un file; pu&ograve; essere usato
+ solamente dal super-user</entry>
+ </row>
+
+ <row>
+ <entry><command>cp [<replaceable>opzioni</replaceable>]
+ <replaceable> file1 file2</replaceable></command></entry>
+
+ <entry>copia <filename><replaceable>file1</replaceable></filename>
+ in <filename><replaceable>file2</replaceable></filename>;
+ <filename><replaceable>file2</replaceable></filename> non dovrebbe
+ gi&agrave; esistere. Questo comando crea o sovrascrive
+ <filename><replaceable>file2</replaceable></filename></entry>
+ </row>
+
+ <row>
+ <entry><command>mv [<replaceable>opzioni</replaceable>]
+ <replaceable>file1 file2</replaceable></command></entry>
+
+ <entry>muove (rinomina)
+ <filename><replaceable>file1</replaceable></filename> in
+ <filename><replaceable>file2</replaceable></filename></entry>
+ </row>
+
+ <row>
+ <entry><command>rm [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></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&agrave; 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" 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 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 [<replaceable>opzioni</replaceable>]
+ <replaceable>filename1 filename2</replaceable></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 <replaceable>filename1 filename2</replaceable></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 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 [<replaceable>opzioni</replaceable>]
+ <replaceable>vecchio_file nuovo_file</replaceable></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 <replaceable>vecchio_file nuovo_file</replaceable></userinput></screen>
+
+ <para>Il file <filename><replaceable>nuovo_file</replaceable></filename>
+ sostituisce
+ <filename><replaceable>vecchio_file</replaceable></filename>.
+ In realt&agrave; tutto quello che &egrave; stato fatto &egrave; 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 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 [<replaceable>opzioni</replaceable>]
+ <replaceable>filename</replaceable></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 <replaceable>filename</replaceable></userinput></screen>
+
+ <para>Visualizzando il contento della directory si vedr&agrave; che quel
+ file non esiste pi&ugrave;. In realt&agrave; tutto quello che &egrave;
+ stato fatto &egrave; aver rimosso l'elemento dalla tabella di directory
+ e marcato l'inode come <quote>non usato</quote>. Il contenuto del file
+ &egrave; ancora sul disco, ma ora il sistema non ha pi&ugrave; modo di
+ identificare quei blocchi di dati con il nome del file eliminato. Non
+ c'&egrave; un certo comando per
+ <quote><emphasis>riprendere</emphasis></quote> un file che &egrave;
+ 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 id="getting-started-file-mant-comm-file-perm">
+ <title>Permessi dei file</title>
+
+ <para>Ciascun file e directory ha permessi che stabiliscono chi pu&ograve;
+ <emphasis>leggerlo</emphasis>, <emphasis>scriverlo</emphasis> e/o
+ <emphasis>eseguirlo</emphasis>. Per scoprire i permessi assegnati a un
+ file, pu&ograve; essere usato il comando &man.ls.1; con l'opzione
+ <option>-l</option>. Quando si ha la necessit&agrave; di conoscere il
+ gruppo per il quale i permessi sono stati assegnati si pu&ograve; 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&agrave; 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>) &egrave; 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
+ <username>user</username> del file di leggerlo, modificarlo ed
+ eseguirlo; gli utenti del gruppo <groupname>Unixgroup</groupname> del
+ file possono leggerlo ed eseguirlo; gli <emphasis>altri</emphasis>
+ utenti del sistema non possono accedere in alcun modo al file.</para>
+ </sect2>
+
+ <sect2 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.) &egrave; &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&ograve; essere un nome di un file o una
+ lista di file e directory). Oppure pu&ograve; essere usato con una
+ rappresentazione simbolica dei permessi, indicando a quale utenza questi
+ vanno applicati.</para>
+
+ <para>Ogni tipo di permesso &egrave; 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&agrave; concedere un
+ permesso di lettura e di scrittura.</para>
+
+ <para>Alternativamente si pu&ograve; 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&ograve;
+ 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 <replaceable>nnn</replaceable>
+ [<replaceable>lista argomenti</replaceable>]</command></entry>
+
+ <entry>modalit&agrave; numerica</entry>
+ </row>
+
+ <row>
+ <entry><command>chmod [<replaceable>chi</replaceable>]
+ <replaceable>op</replaceable>
+ [<replaceable>perm</replaceable>]
+ [<replaceable>lista argomenti</replaceable>]</command></entry>
+
+ <entry>modalit&agrave; 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&ograve; essere
+ <emphasis>u,g,o</emphasis> oppure <emphasis>a</emphasis> (tutti) e
+ <replaceable>perm</replaceable> pu&ograve; essere
+ <emphasis>r,w,x</emphasis>. Nella notazione simbolica si pu&ograve;
+ separare la specifica dei permessi con una virgola, coma 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
+ &egrave;:</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>
+ &egrave; necessario che il minimo permesso di esecuzione (inteso come
+ permesso di accesso) per la directory nella quale il file &egrave;
+ posizionato sia abilitato. Un semplice modo per far questo &egrave;
+ 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 id="getting-started-file-mant-comm-chown">
+ <title>chown - cambio del proprietario del file</title>
+
+ <para>Il proprietario di un file pu&ograve; essere cambiato con il comando
+ &man.chown.8;. Su molte versioni Unix questo pu&ograve; essere
+ realizzato solo dal super-user, ad esempio, un utente normale non
+ pu&ograve; attribuire i suoi file ad altri proprietari. &man.chown.8;
+ &egrave; 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 [<replaceable>opzioni</replaceable>]
+ <replaceable>utente</replaceable>[:<replaceable>gruppo</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>(SVR4)</entry>
+ </row>
+
+ <row>
+ <entry><command>chown [<replaceable>opzioni</replaceable>]
+ <replaceable>utente</replaceable>[.<replaceable>gruppo</replaceable>]
+ <replaceable>file</replaceable></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 <replaceable>nuovo_proprietario file</replaceable></userinput></screen>
+ </sect2>
+
+ <sect2 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 [<replaceable>opzioni</replaceable>]
+ <replaceable>gruppo file</replaceable></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 <replaceable>nuovo_gruppo file</replaceable></userinput></screen>
+ </sect2>
+ </sect1>
+
+ <sect1 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&ugrave;
+ avanti. Qui si illustreranno alcuni comandi normalmente usati per
+ visualizzare un file.</para>
+
+ <table frame=all 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>cat [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>concatena (lista) un file</entry>
+ </row>
+
+ <row>
+ <entry><command>echo
+ [<replaceable>stringa</replaceable>]</command></entry>
+
+ <entry>riporta in standard ouptut una stringa di testo</entry>
+ </row>
+
+ <row>
+ <entry><command>head [<replaceable>-numero</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>visualizza le prime 10 (o <replaceable>-numero</replaceable>)
+ linee di un file</entry>
+ </row>
+
+ <row>
+ <entry><command>more</command> (o <command>less</command> o
+ <command>pg</command>)
+ <command>[<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>visualizzazione paginata di un file di testo</entry>
+ </row>
+
+ <row>
+ <entry><command>tail [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>visualizza le ultime linee (o parte) di un file</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <sect2 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&ograve; specificare un'opzione per impedirlo.</para>
+
+ <para><emphasis>Sintassi</emphasis></para>
+
+ <para><command>echo [<replaceable>stringa</replaceable>]</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> &egrave; 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 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 [<replaceable>opzioni</replaceable>]
+ [<replaceable>file</replaceable>]</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 <replaceable>filename</replaceable></userinput></screen>
+
+ <para>Si possono specificare una serie di file su linea di comando e
+ &man.cat.1; li concatener&agrave; ciascuno a turno, seguendo lo stesso
+ ordine di immissione, esempio:</para>
+
+ <screen>&prompt.user; <userinput>cat <replaceable>file1 file2 file3</replaceable></userinput></screen>
+ </sect2>
+
+ <sect2 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 [<replaceable>opzioni</replaceable>]
+ [<replaceable>+/schema</replaceable>]
+ [<replaceable>filename</replaceable>]</command></para>
+
+ <para><command>less [<replaceable>opzioni</replaceable>]
+ [<replaceable>+/schema</replaceable>]
+ [<replaceable>filename</replaceable>]</command></para>
+
+ <para><command>pg [<replaceable>opzioni</replaceable>]
+ [<replaceable>+/schema</replaceable>]
+ [<replaceable>filename</replaceable>]</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>
+
+ <entry><option>-i</option></entry>
+
+ <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>
+
+ <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>
+
+ <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 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 [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></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&ugrave; (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 <replaceable>filename</replaceable></userinput></screen>
+
+ <para>oppure</para>
+
+ <screen>&prompt.user; <userinput>head -n 40 <replaceable>filename</replaceable></userinput></screen>
+ </sect2>
+
+ <sect2 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 [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></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&ograve; 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 <replaceable>filename</replaceable></userinput></screen>
+ </sect2>
+ </sect1>
+</chapter>
+
+<!--
+ Local Variables:
+ mode: sgml
+ sgml-indent-data: t
+ sgml-omittag: nil
+ sgml-always-quote-attributes: t
+ sgml-parent-document: ("../book.sgml" "book" "chapter")
+ End:
+--> \ No newline at end of file
diff --git a/it_IT.ISO8859-15/books/unix-introduction/glossary/chapter.sgml b/it_IT.ISO8859-15/books/unix-introduction/glossary/chapter.sgml
new file mode 100644
index 0000000000..5f242d64be
--- /dev/null
+++ b/it_IT.ISO8859-15/books/unix-introduction/glossary/chapter.sgml
@@ -0,0 +1,596 @@
+<!--
+ The FreeBSD Italian Documentation Project
+
+ $FreeBSD$
+-->
+
+<glossary>
+ <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&agrave; 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>&egrave; 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>&egrave; 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&agrave; 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>&egrave; 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&ugrave; 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&agrave; del sistema operativo che
+ permette di eseguire pi&ugrave; 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&agrave; del sistema operativo che permette di gestire
+ pi&ugrave; 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. &Egrave; 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&agrave; 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>
+
+<!--
+ Local Variables:
+ mode: sgml
+ sgml-indent-data: t
+ sgml-omittag: nil
+ sgml-always-quote-attributes: t
+ sgml-parent-document: ("../book.sgml" "book" "glossary")
+ End:
+--> \ No newline at end of file
diff --git a/it_IT.ISO8859-15/books/unix-introduction/history/chapter.sgml b/it_IT.ISO8859-15/books/unix-introduction/history/chapter.sgml
new file mode 100644
index 0000000000..1ca0607634
--- /dev/null
+++ b/it_IT.ISO8859-15/books/unix-introduction/history/chapter.sgml
@@ -0,0 +1,113 @@
+<!--
+ The FreeBSD Italian Documentation Project
+
+ $FreeBSD$
+-->
+
+<chapter 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&agrave; 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 &egrave; 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 &egrave; 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&egrave;
+ &egrave; 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 &egrave; 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&agrave; accademica che lo vede come un potente
+ strumento di insegnamento per lo studio della programmazione di sistemi.
+ Poich&egrave; il decreto del 1956 impedisce ad AT&amp;T di
+ commercializzare il prodotto, viene concessa una licenza
+ all'Universit&agrave; 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&agrave;.</para>
+
+ <para>1988 AT&amp;T e Sun Microsystem sviluppano System V Release 4 (SVR4).
+ Questo sar&agrave; 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>
+
+<!--
+ Local Variables:
+ mode: sgml
+ sgml-indent-data: t
+ sgml-omittag: nil
+ sgml-always-quote-attributes: t
+ sgml-parent-document: ("../book.sgml" "book" "chapter")
+ End:
+--> \ No newline at end of file
diff --git a/it_IT.ISO8859-15/books/unix-introduction/preface/chapter.sgml b/it_IT.ISO8859-15/books/unix-introduction/preface/chapter.sgml
new file mode 100644
index 0000000000..4d1e628959
--- /dev/null
+++ b/it_IT.ISO8859-15/books/unix-introduction/preface/chapter.sgml
@@ -0,0 +1,107 @@
+<!--
+ The FreeBSD Italian Documentation Project
+
+ $FreeBSD$
+-->
+
+<preface id="preface">
+ <title>Prefazione</title>
+
+ <para>Questo documento &egrave; 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&egrave; la
+ rispettiva traduzione in italiano non &egrave; efficiente in termini di
+ comprensibilit&agrave;, vuoi perch&egrave; &egrave; 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
+ &egrave; 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&ugrave; caldi incontrati in questo
+ documento e il loro significato corrispondente.</para>
+
+ <para>Non mi resta che augurarvi una buona lettura.</para>
+
+ <bridgehead 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 id="preface-typographic-conv" renderas=sect2>Convenzioni
+ Tipografiche</bridgehead>
+
+ <variablelist>
+ <varlistentry>
+ <term><emphasis>Italico</emphasis></term>
+
+ <listitem>
+ <para>Un font <emphasis>italico</emphasis> &egrave; 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> &egrave; 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> &egrave; per le
+ applicazioni, i comandi, e i tasti.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <bridgehead 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>
+
+<!--
+ Local Variables:
+ mode: sgml
+ sgml-indent-data: t
+ sgml-omittag: nil
+ sgml-always-quote-attributes: t
+ sgml-parent-document: ("../book.sgml" "book" "preface")
+ End:
+--> \ No newline at end of file
diff --git a/it_IT.ISO8859-15/books/unix-introduction/shell-programming/chapter.sgml b/it_IT.ISO8859-15/books/unix-introduction/shell-programming/chapter.sgml
new file mode 100644
index 0000000000..ecc583eb4a
--- /dev/null
+++ b/it_IT.ISO8859-15/books/unix-introduction/shell-programming/chapter.sgml
@@ -0,0 +1,1703 @@
+<!--
+ The FreeBSD Italian Documentation Project
+
+ $FreeBSD$
+-->
+
+<chapter id="shell-programming">
+ <title>Programmazione di shell</title>
+
+ <sect1 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 &egrave; 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&ugrave; su alcuni sistemi e si pu&ograve; includere qualche opzione.
+ Quindi per inizializzare uno script per la shell Bourne la prima linea
+ dovr&agrave; 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 &egrave; eseguibile,
+ settando gli opportuni bit sul file con il comando &man.chmod.1;,
+ esempio:</para>
+
+ <screen>&prompt.user; <userinput>chmod +x <replaceable>shell_script</replaceable></userinput></screen>
+
+ <para>All'interno degli script il simbolo # indica un commento da quel punto
+ fino alle fine della linea; #! &egrave; un caso speciale se trovato come
+ primo carattere del file.</para>
+ </sect1>
+
+ <sect1 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&igrave;:</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=<replaceable>valore</replaceable></command></entry>
+
+ <entry><command>set param =
+ <replaceable>valore</replaceable></command></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>dove <replaceable>valore</replaceable> &egrave; una valida stringa che
+ pu&ograve; 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 &egrave; stato assegnato, si accede
+ al valore corrente del parametro usando la notazione
+ <literal>$param</literal> o <literal>${param}</literal>.</para>
+ </sect1>
+
+ <sect1 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 &egrave; 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&ograve; sperimentare:</para>
+
+ <para><literal>$varman</literal></para>
+
+ <para>ma questo non funzioner&agrave;, poich&egrave; la shell tenta di
+ valutare una variabile chiamata <literal>varman</literal>, che non esiste.
+ Per ottenere il risultato desiderato si ha la necessit&agrave; 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&egrave; ", ', \, { e } non sono validi
+ caratteri per un nome di variabile.</para>
+
+ <para>Non si pu&ograve; usare</para>
+
+ <para><literal>'$var'man</literal></para>
+
+ <para><literal>\$varman</literal></para>
+
+ <para>poich&egrave; 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 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 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"></entry>
+ </row>
+
+ <row>
+ <entry><literal>$-</literal></entry>
+
+ <entry>opzioni fornite alla shell</entry>
+
+ <entry align="center">x</entry>
+
+ <entry align="center"></entry>
+ </row>
+
+ <row>
+ <entry><literal>$?</literal></entry>
+
+ <entry>valore di uscita dell'ultimo comando eseguito</entry>
+
+ <entry align="center">x</entry>
+
+ <entry align="center"></entry>
+ </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"></entry>
+ </row>
+
+ <row>
+ <entry><literal>$<replaceable>n</replaceable></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"></entry>
+ </row>
+
+ <row>
+ <entry><literal>$argv[<replaceable>n</replaceable>]</literal></entry>
+
+ <entry>seleziona l'<replaceable>n-esima</replaceable> parola dalla
+ lista di input</entry>
+
+ <entry align="center"></entry>
+
+ <entry align="center">x</entry>
+ </row>
+
+ <row>
+ <entry><literal>${argv[<replaceable>n</replaceable>]}</literal></entry>
+
+ <entry>come sopra</entry>
+
+ <entry align="center"></entry>
+
+ <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>
+
+ <entry align="center">x</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>L'uso di queste variabili pu&ograve; 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&ograve; notare, si ha la necessit&agrave; 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 id="shell-programming-param-sost">
+ <title>Sostituzione di parametri</title>
+
+ <para>Si pu&ograve; 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>$<replaceable>parametro</replaceable></literal></entry>
+
+ <entry>sostituisce questa stringa con il valore di
+ <replaceable>parametro</replaceable></entry>
+ </row>
+
+ <row>
+ <entry><literal>${<replaceable>parametro</replaceable>}</literal></entry>
+
+ <entry>come sopra. Le parentesi sono d'aiuto se non c'&egrave;
+ separazione tra questo parametro e una stringa adiacente.</entry>
+ </row>
+
+ <row>
+ <entry><literal>$<replaceable>parametro</replaceable>=</literal></entry>
+
+ <entry>setta <replaceable>parametro</replaceable> a
+ <emphasis>null</emphasis>.</entry>
+ </row>
+
+ <row>
+ <entry><literal>${<replaceable>parametro</replaceable>-<replaceable>default</replaceable>}</literal></entry>
+
+ <entry>se <replaceable>parametro</replaceable> non &egrave; settato
+ allora si usa <replaceable>default</replaceable> come valore.
+ <replaceable>parametro</replaceable> non viene resettato.</entry>
+ </row>
+
+ <row>
+ <entry><literal>${<replaceable>parametro</replaceable>=<replaceable>default</replaceable>}</literal></entry>
+
+ <entry>se <replaceable>parametro</replaceable> non &egrave; settato
+ allora lo si setta a <replaceable>default</replaceable> e si usa
+ il nuovo valore</entry>
+ </row>
+
+ <row>
+ <entry><literal>${<replaceable>parametro</replaceable>+<replaceable>nuovo_valore</replaceable>}</literal></entry>
+
+ <entry>se <replaceable>parametro</replaceable> &egrave; settato
+ allora si usa <replaceable>nuovo_valore</replaceable> altrimenti
+ non si usa nulla. <replaceable>parametro</replaceable> non viene
+ resettato.</entry>
+ </row>
+
+ <row>
+ <entry><literal>${<replaceable>parametro</replaceable>?<replaceable>messaggio</replaceable>}</literal></entry>
+
+ <entry>se <replaceable>parametro</replaceable> non &egrave; settato
+ allora si visualizza il messaggio. Se
+ <replaceable>parametro</replaceable> &egrave; 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[<replaceable>n</replaceable>]</literal></entry>
+
+ <entry>seleziona l'<replaceable>n-esima</replaceable> parola dalla
+ lista</entry>
+ </row>
+
+ <row>
+ <entry><literal>${lista[<replaceable>n</replaceable>]}</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>$?<replaceable>parametro</replaceable></literal></entry>
+
+ <entry>ritorna 1 se il parametro &egrave; settato, 0
+ altrimenti</entry>
+ </row>
+
+ <row>
+ <entry><literal>${?<replaceable>parametro</replaceable>}</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[<replaceable>n</replaceable>]</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&agrave; il
+ seguente script di prova:</para>
+
+ <programlisting>#!/bin/sh
+param0=$0
+test -n "$1" && param1=$1
+test -n "$2" && param2=$2
+test -n "$3" && param3=$3
+echo 0: $param0
+echo "1: ${param1-1}: \c" ;echo $param1
+echo "2: ${param2=2}: \c" ;echo $param2
+echo "3: ${param3+3}: \c" ;echo $param3</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&agrave; un valore
+2: two: two # non sostituisce, ha gi&agrave; un valore
+3: 3: three # sostituisce 3 ma non assegna questo valore</screen>
+ </sect1>
+
+ <sect1 id="shell-programming-here-doc">
+ <title>Here document</title>
+
+ <para>Un <emphasis>here document</emphasis> &egrave; una forma di quoting
+ che permette alle variabili di shell di essere sostituite. &Egrave; 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&ograve; 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 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 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&ograve; 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 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 = $<</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 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&ugrave;
+ flessibilit&agrave;. Una funzione ha la forma:</para>
+
+ <para><command><replaceable>funzione</replaceable> () {
+ <replaceable>comando</replaceable>; }</command></para>
+
+ <para>dove lo spazio dopo { e il punto e virgola (;) sono obbligatori;
+ il punto e virgola pu&ograve; 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&egrave; 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 &egrave; 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 << EOF_failure
+ $HOST
+ Script cron backup fallito. A quanto pare non c'&egrave; il nastro nel dispositivo.
+ EOF_failure
+ exit 1
+ }
+# Dump failure - exit
+dumpfail () {
+ $Mail -s "Backup fallito - $HOST" $admin << EOF_dumpfail
+ $HOST
+ Script cron backup fallito. A quanto pare non c'&egrave; il nastro nel dispositivo.
+ EOF_dumpfail
+ exit 1
+ }
+# Success
+success () {
+ $Mail -s "Backup completato con successo - $HOST" $admin << EOF_success
+ $HOST
+ Script cron backup apparentemente riuscito. Il file /etc/dumpdates &egrave;:
+ `/bin/cat /etc/dumpdates`
+ EOF_success
+ }
+# Conferma nastro nel device
+$Rewind || failure
+$Dump 0uf $device / || dumpfail
+$Dump 0uf $device /usr || dumpfail
+$Dump 0uf $device /home || dumpfail
+$Dump 0uf $device /var || dumpfail
+($Dump 0uf $device /var/spool/mail || dumpfail) && success
+$Offline</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> &egrave; l'amministratore di sistema,
+ <literal>Mt</literal>, <literal>Dump</literal> e <literal>Mail</literal>
+ sono nomi di programmi, <literal>device</literal> &egrave; 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>&&</emphasis>); ciascuno &egrave;
+ posizionato tra una coppia di comandi. Per l'operatore
+ <emphasis>OR</emphasis>, il secondo comando viene eseguito solamente se
+ il primo comando non &egrave; stato completato con successo. Per
+ l'operatore <emphasis>AND</emphasis>, il secondo comando viene
+ eseguito solamente se il primo comando &egrave; stato completato con
+ successo.</para>
+
+ <para>Lo scopo principale dello script &egrave; 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>(...) &&
+ success</literal>). In fine si riavvolge il nastro e lo si manda fuori
+ linea affinch&egrave; altri utenti non possano accidentalmente scriverci
+ sopra.</para>
+ </sect1>
+
+ <sect1 id="shell-programming-control-comm">
+ <title>Comandi di controllo</title>
+
+ <sect2 id="shell-programming-control-comm-if">
+ <title>Condizionale if</title>
+
+ <para>L'espressione condizionale <command>if</command> &egrave;
+ disponibile in entrambe le shell, ma con una diversa sintassi.</para>
+
+ <sect3 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> &egrave; vera (true)
+[<command>elif</command> <replaceable>condizione2</replaceable>
+ <command>then</command> lista di comandi se <replaceable>condizione2</replaceable> &egrave; vera (true)]
+[<command>else</command>
+ lista di comandi se <replaceable>condizione1</replaceable> &egrave; 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&ugrave; 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 id="shell-programming-control-comm-if-csh">
+ <title>Csh</title>
+
+ <programlisting><command>if</command> (<replaceable>condizione</replaceable>) <command><replaceable>comando</replaceable></command>
+ -oppure-
+<command>if</command> (<replaceable>condizione1</replaceable>) <command>then</command>
+ lista di comandi se <replaceable>condizione1</replaceable> &egrave; vera (true)
+[<command>else</command> <command>if</command> (<replaceable>condizione2</replaceable>) <command>then</command>
+ lista di comandi se <replaceable>condizione2</replaceable> &egrave; vera (true)]
+[<command>else</command>
+ lista di comandi se <replaceable>condizione1</replaceable> &egrave; 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 >= 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&ugrave; 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 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 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 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> &egrave; opzionale e pu&ograve; essere
+ usato per interrompere lo switch dopo che si &egrave; 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 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 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> &egrave; 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&ograve;
+ con <filename>.new</filename>. In questi esempi l'utility
+ &man.basename.1; estrae la parte base del nome affinch&egrave;
+ 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 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> &egrave;:</para>
+
+ <programlisting>#!/bin/csh -f
+foreach file (*.old)
+ set newf = `basename $file .old`
+ cp $file $newf.new
+end</programlisting>
+ </sect3>
+ </sect2>
+
+ <sect2 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 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> &egrave;:</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 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
+ &egrave;:</para>
+
+ <programlisting>#!/bin/csh -f
+while ($#argv != 0 )
+ echo $argv[1]
+ shift
+end</programlisting>
+ </sect3>
+ </sect2>
+
+ <sect2 id="shell-programming-control-comm-until">
+ <title>until</title>
+
+ <para>Questo costrutto di ciclo &egrave; solamente disponibile per la
+ shell Bourne.</para>
+
+ <programlisting><command>until</command> <replaceable>condizione</replaceable>
+<command>do</command>
+ lista di comandi se la condizione &egrave; falsa
+<command>done</command></programlisting>
+
+ <para>La condizione viene verificata all'inizio di ogni ciclo e il ciclo
+ termina quando la condizione &egrave; vera.</para>
+
+ <para>Uno script equivalente all'esempio del <command>while</command>
+ precedente &egrave;:</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&egrave; 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
+ &egrave; soddisfatta. La condizione viene valutata prima
+ dell'esecuzione dei comandi.</para>
+ </sect2>
+
+ <sect2 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 &egrave; leggibile</entry>
+ </row>
+
+ <row>
+ <entry><option>-w</option></entry>
+
+ <entry>vero se il file esiste ed &egrave; scrivibile</entry>
+ </row>
+
+ <row>
+ <entry><option>-x</option></entry>
+
+ <entry>vero se il file esiste ed &egrave; eseguibile</entry>
+ </row>
+
+ <row>
+ <entry><option>-f</option></entry>
+
+ <entry>vero se il file esiste ed &egrave; un file regolare (o per
+ &man.csh.1; esiste e non &egrave; una directory)</entry>
+ </row>
+
+ <row>
+ <entry><option>-d</option></entry>
+
+ <entry>vero se il file esiste ed &egrave; una directory</entry>
+ </row>
+
+ <row>
+ <entry><option>-h</option> o <option>-L</option></entry>
+
+ <entry>vero se il file esiste ed &egrave; un link
+ simbolico</entry>
+ </row>
+
+ <row>
+ <entry><option>-c</option></entry>
+
+ <entry>vero se il file esiste ed &egrave; 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 &egrave; 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 &egrave; un file pipe
+ (fifo)</entry>
+ </row>
+
+ <row>
+ <entry><option>-u</option></entry>
+
+ <entry>vero se il file esiste ed &egrave; 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 &egrave; 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'&egrave; 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) &egrave; 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 &egrave; zero</entry>
+ </row>
+
+ <row>
+ <entry><option>-n
+ <replaceable>stringa</replaceable></option></entry>
+
+ <entry>vero se la lunghezza della stringa non &egrave;
+ zero</entry>
+ </row>
+
+ <row>
+ <entry><option><replaceable>stringa1</replaceable> =
+ <replaceable>stringa2</replaceable></option></entry>
+
+ <entry>vero se <replaceable>stringa1</replaceable> &egrave;
+ 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 &egrave;
+ identica a <replaceable>stringa2</replaceable></entry>
+ </row>
+
+ <row>
+ <entry><replaceable>stringa</replaceable></entry>
+
+ <entry>vero se la stringa non &egrave; 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> &egrave;
+ 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> &egrave;
+ 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> &egrave;
+ 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> &egrave;
+ 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&ograve; essere necessario quotare le parentesi ( )
+ per impedire alla shell di interpretarle.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </sect2>
+
+ <sect2 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&agrave; 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>{<replaceable>comando</replaceable>}</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 &egrave; leggibile,
+ altrimenti ritorna falso (0)</entry>
+ </row>
+
+ <row>
+ <entry><option>-w</option></entry>
+
+ <entry>vero se il file esiste ed &egrave; scrivibile</entry>
+ </row>
+
+ <row>
+ <entry><option>-x</option></entry>
+
+ <entry>vero se il file esiste ed &egrave; eseguibile</entry>
+ </row>
+
+ <row>
+ <entry><option>-f</option></entry>
+
+ <entry>vero se il file esiste e non &egrave; una directory</entry>
+ </row>
+
+ <row>
+ <entry><option>-d</option></entry>
+
+ <entry>vero se il file esiste ed &egrave; 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 &egrave; 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>
+
+<!--
+ Local Variables:
+ mode: sgml
+ sgml-indent-data: t
+ sgml-omittag: nil
+ sgml-always-quote-attributes: t
+ sgml-parent-document: ("../book.sgml" "book" "chapter")
+ End:
+--> \ No newline at end of file
diff --git a/it_IT.ISO8859-15/books/unix-introduction/shells/chapter.sgml b/it_IT.ISO8859-15/books/unix-introduction/shells/chapter.sgml
new file mode 100644
index 0000000000..34dd6de037
--- /dev/null
+++ b/it_IT.ISO8859-15/books/unix-introduction/shells/chapter.sgml
@@ -0,0 +1,1167 @@
+<!--
+ The FreeBSD Italian Documentation Project
+
+ $FreeBSD$
+-->
+
+<chapter 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 &egrave; 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&ograve; 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 &egrave; 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 &egrave; molto adatta all'utente interattivo.
+ Per andare incontro a quest'ultimo &egrave; 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
+ &egrave; stato scritto, ma ha molte scomode implementazioni
+ dell'input/output. La shell C ha il controllo dei job, quindi pu&ograve;
+ 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 &egrave; <emphasis>$</emphasis>
+ (o &prompt.root; per l'utente root). Il prompt di default per la shell C
+ &egrave; &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&igrave; per iniziare.</para>
+
+ <sect1 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 id="shells-built-in-comm-sh">
+ <title>Sh</title>
+
+ <para>Per la shell Bourne alcuni dei comandi built-in pi&ugrave;
+ 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 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>
+
+ <row>
+ <entry><command>jobs</command></entry>
+
+ <entry>mostra o controlla i job attivi</entry>
+ </row>
+
+ <row>
+ <entry><command>kill</command></entry>
+
+ <entry>termina un processo specifico</entry>
+ </row>
+
+ <row>
+ <entry><command>limit</command></entry>
+
+ <entry>setta dei limiti sulle risorse di sistema</entry>
+ </row>
+
+ <row>
+ <entry><command>logout</command></entry>
+
+ <entry>termina la shell di login</entry>
+ </row>
+
+ <row>
+ <entry><command>nice
+ <replaceable>comando</replaceable></command></entry>
+
+ <entry>abbassa la priorit&agrave; di schedulazione del
+ comando specificato</entry>
+ </row>
+
+ <row>
+ <entry><command>nohup
+ <replaceable>comando</replaceable></command></entry>
+
+ <entry>non termina il comando specificato quando la shell
+ esce</entry>
+ </row>
+
+ <row>
+ <entry><command>popd</command></entry>
+
+ <entry>estrae un record dallo stack delle directory e ritorna
+ nella directory estratta</entry>
+ </row>
+
+ <row>
+ <entry><command>pushd</command></entry>
+
+ <entry>cambia nella nuova directory specificata e aggiunge quella
+ corrente nello stack delle directory</entry>
+ </row>
+
+ <row>
+ <entry><command>rehash</command></entry>
+
+ <entry>ricrea la tabella hash dei percorsi (path) per i file
+ eseguibili</entry>
+ </row>
+
+ <row>
+ <entry><command>repeat</command></entry>
+
+ <entry>ripete un comando il numero di volte specificato</entry>
+ </row>
+
+ <row>
+ <entry><command>set</command></entry>
+
+ <entry>setta una variabile di shell</entry>
+ </row>
+
+ <row>
+ <entry><command>setenv</command></entry>
+
+ <entry>setta una variabile di ambiente per la shell corrente e per
+ quelle successive</entry>
+ </row>
+
+ <row>
+ <entry><command>source</command></entry>
+
+ <entry>prende (legge ed esegue) comandi da un file</entry>
+ </row>
+
+ <row>
+ <entry><command>stop</command></entry>
+
+ <entry>ferma uno specifico job in background</entry>
+ </row>
+
+ <row>
+ <entry><command>switch</command></entry>
+
+ <entry>condizionale switch</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>unalias</command></entry>
+
+ <entry>rimuove il nome alias specificato</entry>
+ </row>
+
+ <row>
+ <entry><command>unset</command></entry>
+
+ <entry>resetta le variabile di shell</entry>
+ </row>
+
+ <row>
+ <entry><command>unsetenv</command></entry>
+
+ <entry>resetta le variabili di ambiente</entry>
+ </row>
+
+ <row>
+ <entry><command>wait</command></entry>
+
+ <entry>attente la terminazione di tutti i processi in
+ background</entry>
+ </row>
+
+ <row>
+ <entry><command>while</command></entry>
+
+ <entry>condizionale di ciclo while</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </sect2>
+ </sect1>
+
+ <sect1 id="shells-env-var">
+ <title>Variabili di ambiente</title>
+
+ <para>Le variabili di ambiente sono usate per fornire informazioni ai
+ programmi che si utilizzano. Si possono avere sia <emphasis>variabili
+ globali di ambiente</emphasis> sia <emphasis>variabili locali di
+ shell</emphasis>. Le variabili globali di ambiente sono inizializzate
+ attraverso la propria shell di login e i nuovi programmi e le nuove shell
+ ereditano l'ambiente della shell genitore. Le variabili locali di shell
+ sono usate solamente dalla shell corrente e non sono passate ad altri
+ processi. Un processo figlio non pu&ograve; passare una variabile al suo
+ processo padre.</para>
+
+ <para>Le variabili di ambiente correnti sono visualizzabili con i comandi
+ &man.env.1; o &man.printenv.1;. Alcune comuni variabili sono:</para>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <colspec colwidth="1.5in">
+
+ <tbody>
+ <row>
+ <entry><literal>DISPLAY</literal></entry>
+
+ <entry>Il display grafico da usare, esempio
+ <literal>nyssa:0.0</literal></entry>
+ </row>
+
+ <row>
+ <entry><literal>EDITOR</literal></entry>
+
+ <entry>Il path (percorso) del proprio editor di default, esempio
+ <filename>/usr/bin/vi</filename></entry>
+ </row>
+
+ <row>
+ <entry><literal>GROUP</literal></entry>
+
+ <entry>Il proprio gruppo di login, esempio
+ <username>staff</username></entry>
+ </row>
+
+ <row>
+ <entry><literal>HOME</literal></entry>
+
+ <entry>Il path della propria home directory, esempio
+ <filename>/home/frank</filename></entry>
+ </row>
+
+ <row>
+ <entry><literal>HOST</literal></entry>
+
+ <entry>Il nome host del proprio sistema, esempio
+ <hostid role="hostname">nyssa</hostid></entry>
+ </row>
+
+ <row>
+ <entry><literal>IFS</literal></entry>
+
+ <entry>I separatori di campo interni, generalmente alcuni spazi
+ bianchi (tab, spazio e new-line di default)</entry>
+ </row>
+
+ <row>
+ <entry><literal>LOGNAME</literal></entry>
+
+ <entry>Il nome del proprio login, esempio
+ <username>frank</username></entry>
+ </row>
+
+ <row>
+ <entry><literal>PATH</literal></entry>
+
+ <entry>I path per ricercare i comandi, esempio
+ <filename>/usr/bin:/usr/ucb:/usr/local/bin</filename></entry>
+ </row>
+
+ <row>
+ <entry><literal>PS1</literal></entry>
+
+ <entry>La stringa del prompt primario, solamente shell Bourne
+ (<emphasis>$</emphasis> di default)</entry>
+ </row>
+
+ <row>
+ <entry><literal>PS2</literal></entry>
+
+ <entry>La stringa del prompt secondario, solamente shell Bourne
+ (&gt; di default)</entry>
+ </row>
+
+ <row>
+ <entry><literal>SHELL</literal></entry>
+
+ <entry>La propria shell di login, esempio
+ <filename>/usr/bin/csh</filename></entry>
+ </row>
+
+ <row>
+ <entry><literal>TERM</literal></entry>
+
+ <entry>Il proprio tipo di terminale, esempio
+ <literal>xterm</literal></entry>
+ </row>
+
+ <row>
+ <entry><literal>USER</literal></entry>
+
+ <entry>Il proprio username, esempio
+ <username>frank</username></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>Molte variabili di ambiente sono inizializzate automaticamente quando
+ si effettua il login. Queste possono essere modificate e si possono
+ definire altre variabili nei propri file di inizializzazione o in
+ qualunque momento all'interno della shell. Alcune variabili che &egrave;
+ possibile si voglia cambiare sono <literal>PATH</literal> e
+ <literal>DISPLAY</literal>. La variabile <literal>PATH</literal>
+ specifica le directory nelle quali saranno automaticamente cercati i
+ comandi richiesti. Alcuni esempi sono nello script di inizializzazione
+ di shell mostrato pi&ugrave; avanti.</para>
+
+ <para>Per la shell C si pu&ograve; settare una <emphasis>variabile globale
+ di ambiente</emphasis> con un comando simile a quello usato per
+ visualizzare le variabili:</para>
+
+ <screen>&prompt.user; <userinput>setenv <replaceable>NOME valore</replaceable></userinput></screen>
+
+ <para>e per la shell Bourne:</para>
+
+ <screen>$ <userinput><replaceable>NOME</replaceable>=<replaceable>valore</replaceable>; export <replaceable>NOME</replaceable></userinput></screen>
+
+ <para>Si possono elencare le proprie variabili globali di ambiente con i
+ comandi &man.env.1; o &man.printenv.1;. Si possono resettare queste
+ variabili con i comandi <command>unsetenv</command> (shell C) o
+ <command>unset</command> (shell Bourne).</para>
+
+ <para>Per settare una <emphasis>variabile locale di shell</emphasis> in
+ shell C si usa il comando <command>set</command> con la sintassi seguente.
+ Senza opzioni <command>set</command> mostra tutte le variabili
+ locali.</para>
+
+ <screen>&prompt.user; <userinput>set <replaceable>nome</replaceable>=<replaceable>valore</replaceable></userinput></screen>
+
+ <para>Per la shell Bourne si setta una variabile locale di shell
+ con:</para>
+
+ <screen>$ <userinput><replaceable>nome</replaceable>=<replaceable>valore</replaceable></userinput></screen>
+
+ <para>Il valore corrente di una variabile &egrave; accessibile attraverso le
+ notazioni <literal>$<replaceable>nome</replaceable></literal> o
+ <literal>${<replaceable>nome</replaceable>}</literal>.</para>
+ </sect1>
+
+ <sect1 id="shells-sh">
+ <title>La shell Bourne, sh</title>
+
+ <para>La shell &man.sh.1; usa il file di inizializzazione
+ <filename>.profile</filename> posto nella home directory dell'utente.
+ Inoltre pu&ograve; esserci un file di inizializzazione globale del
+ sistema, esempio <filename>/etc/profile</filename>. In tal caso, il file
+ globale del sistema sar&agrave; eseguito prima di quello locale.</para>
+
+ <para>Un semplice file <filename>.profile</filename> potrebbe essere come
+ il seguente:</para>
+
+ <programlisting>
+PATH=/usr/bin:/usr/ucb:/usr/local/bin:. # setta il PATH
+export PATH # rende disponibile PATH per le sotto-shell
+# setta il prompt
+PS1="{`hostname` `whoami`} " # setta il prompt, $ di default
+# funzioni
+ls() { /bin/ls -sbF "$@";}
+ll() { ls -al "$@";}
+# setta il tipo di terminale
+stty erase ^H # setta Control-H come tasto di cancellazione
+eval `tset -Q -s -m ':?xterm'` # richiede il tipo di terminale, presupponendo
+ # xterm
+#
+umask 077</programlisting>
+
+ <para>Ogni volta che si incontra il simbolo #, il resto di quella linea
+ viene trattato come un commento. Nella variabile <literal>PATH</literal>
+ ogni directory &egrave; separata da due punti (:) e il punto
+ (<filename>.</filename>) specifica che la directory corrente &egrave; nel
+ proprio path. Se il punto non &egrave; nel proprio path, lo stesso
+ diventa un semplice elemento per eseguire un programma nella directory
+ corrente:</para>
+
+ <para><command>./<replaceable>programma</replaceable></command></para>
+
+ <para>Non &egrave; una buona idea avere il punto (<filename>.</filename>)
+ nel proprio <literal>PATH</literal>, in modo tale da non eseguire
+ inavvertitamente un programma senza averne l'intenzione quando si usa il
+ comando <command>cd</command> per spostarsi in differenti
+ directory.</para>
+
+ <para>Una variabile settata in <filename>.profile</filename> rimane valida
+ solo nel contesto della shell di login, a meno che la si esporti con
+ <command>export</command> o si esegua <filename>.profile</filename> in
+ un'altra shell. Nell'esempio precedente <literal>PATH</literal> viene
+ esportato per le sotto-shell. Si pu&ograve; eseguire un file con il
+ comando built-int <command>.</command> di &man.sh.1;, esempio:</para>
+
+ <para><command>. ./.profile</command></para>
+
+ <para>Si possono creare proprie funzioni. Nell'esempio precedente la
+ funzione <command>ll</command>, risultato di <command>ls -al</command>,
+ lavora su un specifico file o directory.</para>
+
+ <para>Con &man.stty.1; il carattere di cancellazione viene settato a
+ <keycombo action="simul">
+ <keycap>Control</keycap>
+ <keycap>H</keycap>
+ </keycombo>, che &egrave; usualmente il tasto di
+ <keycap>Backspace</keycap>.</para>
+
+ <para>Il comando &man.tset.1; richiede il tipo di terminale e assume questo
+ a <literal>xterm</literal> se si conferma con invio
+ <keycap>&lt;CR&gt;</keycap>. Questo comando &egrave; eseguito con un
+ comando built-in di shell, <command>eval</command>, che prende il
+ risultato del comando &man.tset.1; e lo usa come argomento per la shell.
+ In questo caso l'opzione <option>-s</option> di &man.tset.1; setta
+ le variabili <literal>TERM</literal> e <literal>TERMCAP</literal> e le
+ esporta.</para>
+
+ <para>L'ultima linea nell'esempio richiama il comando
+ <command>umask</command>, facendo in modo che i file e le directory create
+ non abbiano i permessi di lettura-scrittura-esecuzione per l'utenza
+ <emphasis>gruppo</emphasis> e <emphasis>altri</emphasis>.</para>
+
+ <para>Per altre informazioni su &man.sh.1;, digitare
+ <command>man sh</command> al prompt di shell.</para>
+ </sect1>
+
+ <sect1 id="shells-csh">
+ <title>La shell C, csh</title>
+
+ <para>La shell C, &man.csh.1;, usa i file di inizializzazione
+ <filename>.cshrc</filename> e <filename>.login</filename>. Alcune
+ versioni usano un file di inizializzazione globale del sistema, ad
+ esempio <filename>/etc/csh.login</filename>. Il proprio file
+ <filename>.login</filename> &egrave; eseguito solamente quando si effettua
+ il login. Il proprio file <filename>.cshrc</filename> &egrave; eseguito
+ ogni volta in cui si avvia una shell &man.csh.1;, incluso quando si
+ effettua il login. Questo file ha molte caratteristiche simili al file
+ <filename>.profile</filename>, ma un differente modo di composizione.
+ Qui si usano i comandi <command>set</command> o <command>setenv</command>
+ per inizializzare una variabile, dove <command>set</command> viene usato
+ per definire una variabile solo per la shell corrente, mentre
+ <command>setenv</command> definisce una variabile per la shell corrente e
+ per le altre sotto-shell. Le variabili di ambiente
+ <literal>USER</literal>, <literal>TERM</literal> e <literal>PATH</literal>
+ sono automaticamente importate ed esportate dalle variabili
+ <literal>user</literal>, <literal>term</literal> e <literal>path</literal>
+ della shell &man.csh.1;. Quindi <command>setenv</command> non &egrave;
+ necessario per queste variabili. La shell C usa il simbolo ~ per indicare
+ la directory home dell'utente in un path, come in
+ <filename>~/.cshrc</filename> o per specificare una directory di login di
+ un altro utente, come in
+ <filename>~<replaceable>username</replaceable>/.cshrc</filename>.</para>
+
+ <para>Alcune variabili predefinite usate dalla shell C sono:</para>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <colspec colwidth="1.5in">
+
+ <tbody>
+ <row>
+ <entry><literal>argv</literal></entry>
+
+ <entry>La lista degli argomenti della shell corrente</entry>
+ </row>
+
+ <row>
+ <entry><literal>cwd</literal></entry>
+
+ <entry>La directory di lavoro corrente</entry>
+ </row>
+
+ <row>
+ <entry><literal>history</literal></entry>
+
+ <entry>Imposta la dimensione della lista di history (storia) da
+ memorizzare</entry>
+ </row>
+
+ <row>
+ <entry><literal>home</literal></entry>
+
+ <entry>La directory home dell'utente, visualizzabile con
+ <literal>$HOME</literal></entry>
+ </row>
+
+ <row>
+ <entry><literal>ignoreeof</literal></entry>
+
+ <entry>Quando viene settata, EOF (<keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>D</keycap>
+ </keycombo>) viene ignorato dal terminale</entry>
+ </row>
+
+ <row>
+ <entry><literal>noclobber</literal></entry>
+
+ <entry>Quando viene settata si impedisce di redirigere l'output per
+ sovrascrivere file esistenti</entry>
+ </row>
+
+ <row>
+ <entry><literal>noglob</literal></entry>
+
+ <entry>Quando viene settata si impedisce l'espansione dei nomi di
+ file all'interno di un confronto con uno schema wild card</entry>
+ </row>
+
+ <row>
+ <entry><literal>path</literal></entry>
+
+ <entry>I path di ricerca dei comandi, visualizzabile con
+ <literal>$PATH</literal></entry>
+ </row>
+
+ <row>
+ <entry><literal>prompt</literal></entry>
+
+ <entry>Setta il prompt della linea di comando (&prompt.user; di
+ default)</entry>
+ </row>
+
+ <row>
+ <entry><literal>savehist</literal></entry>
+
+ <entry>Numero di volte (di login) che bisogna mantenere memorizzata
+ la lista di history nel file <filename>.history</filename></entry>
+ </row>
+
+ <row>
+ <entry><literal>shell</literal></entry>
+
+ <entry>Il path name completo della shell corrente, visualizzabile
+ con <literal>$SHELL</literal></entry>
+ </row>
+
+ <row>
+ <entry><literal>status</literal></entry>
+
+ <entry>Il codice di stato di uscita dell'ultimo comando
+ (0=uscita normale, 1=comando fallito)</entry>
+ </row>
+
+ <row>
+ <entry><literal>term</literal></entry>
+
+ <entry>Il proprio tipo di terminale, visualizzabile con
+ <literal>$TERM</literal></entry>
+ </row>
+
+ <row>
+ <entry><literal>user</literal></entry>
+
+ <entry>Il proprio nome utente, username, visualizzabile con
+ <literal>$USER</literal></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>Un semplice file <filename>.cshrc</filename> potrebbe essere come il
+ seguente:</para>
+
+ <programlisting>
+set path=(/usr/bin /usr/ucb /usr/local/bin ~/bin . ) # setta il path
+set prompt = "{`hostname` `whoami` !} " # setta il promt primario ;
+ # % di default
+set noclobber # non redirige l'output su file esistenti
+set ignoreeof #ignora EOF (Ctrl+D) in questa shell
+set history=100 savehist=50 # mantiene una lista history di comandi e la
+ # memorizza tra vari (50) login
+# alias
+alias h history # alias h per history
+alias ls "/usr/bin/ls -sbF" # alias ls per ls -sbF
+alias ll ls -al # alias ll per ls -sbFal (combina queste
+ # opzioni con quelle di ls sopra citate)
+alias cd 'cd \!*;pwd' # alias cd per stampare la directory di lavoro
+ # corrente dopo aver cambiato directory
+umask 077</programlisting>
+
+ <para>Alcune nuove caratteristiche che non sono state viste nel
+ file <filename>.profile</filename> (shell &man.sh.1;) sono
+ <literal>noclobber</literal>, <literal>ignoreeof</literal> e
+ <literal>history</literal>. <literal>Noclobber</literal> indica che
+ l'output non pu&ograve; essere rediretto su un file esistente, mentre
+ <literal>ignoreeof</literal> specifica che EOF (
+ <keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>D</keycap>
+ </keycombo>) non causa l'uscita dalla shell di login o l'uscita dal
+ sistema.</para>
+
+ <para>Con la caratteristica di <emphasis>history</emphasis> si possono
+ richiamare comandi eseguiti precedentemente e rieseguirli, eventualmente
+ con dei cambiamenti.</para>
+
+ <para>Un <emphasis>alias</emphasis> permette di usare uno specifico nome
+ <emphasis>alias</emphasis> al posto del comando completo. Nell'esempio
+ precedente, il risultato di digitare <command>ls</command> sar&agrave;
+ quello di eseguire <command>/usr/bin/ls -sbF</command>. Si pu&ograve;
+ verificare quale comando <command>ls</command> &egrave; nel proprio path
+ con il comando &man.which.1;, ad esempio:</para>
+
+ <screen>&prompt.user; <userinput>which ls</userinput>
+ls: alias di /usr/bin/ls -sbF</screen>
+
+ <para>Un semplice file <filename>.login</filename> potrebbe essere come il
+ seguente:</para>
+
+ <programlisting># .login
+stty erase ^H # setta Control+H come tasto di eliminazione
+set noglob # impedisce un confronto con uno schema wild card
+eval `tset -Q -s -m ':?xterm'` # chiede il tipo di terminale presupponendo
+ # xterm
+unset noglob # riabilita un confronto con uno schema wild card</programlisting>
+
+ <para>Abilitando e disabilitando <literal>noglob</literal> intorno a
+ &man.tset.1; si impedisce di confondere il tipo di terminale con
+ qualche espansione dei nomi di file in un confronto con uno schema
+ (pattern) wild card.</para>
+
+ <para>Se si effettuano cambiamenti al proprio file di inizializzazione,
+ questi possono essere attivati eseguendo il file modificato. Per la shell
+ &man.csh.1; questo &egrave; possibile attraverso il comando
+ built-in <command>source</command>, esempio:</para>
+
+ <para><command>source .cshrc</command></para>
+
+ <para>Per altre informazioni circa la shell &man.csh.1; digitare
+ <command>man csh</command> al prompt di shell.</para>
+ </sect1>
+
+ <sect1 id="shells-job-control">
+ <title>Controllo dei job</title>
+
+ <para>Con la shell C, &man.csh.1; e molte altre nuove shell, incluse alcune
+ nuove shell Bourne, si possono mettere i job in background apporrendo
+ <emphasis>&amp;</emphasis> al comando, cos&igrave; come succede per la
+ shell &man.sh.1;. Questo pu&ograve; anche essere fatto, una volta
+ sottoposto il comando, digitando <keycombo action="simul">
+ <keycap>Control</keycap>
+ <keycap>Z</keycap>
+ </keycombo> per sospendere il job e quindi <command>bg</command> per
+ metterlo in background. Per riportarlo in foreground si digita
+ <command>fg</command>.</para>
+
+ <para>Si possono avere molti job eseguiti in background. Quando questi sono
+ in background, non sono connessi alla tastiera per l'input, ma possono
+ tuttavia mostrare l'output nel terminale, sparpagliandolo con qualsiasi
+ cosa ci sia digitata o mostrata attraverso il job corrente. Si pu&ograve;
+ avere la necessit&agrave; di redirigere I/O in o da un file per un job in
+ background. La propria tastiera &egrave; solamente connessa al corrente
+ job in foreground.</para>
+
+ <para>Il comando built-in <command>jobs</command> permette di elencare i
+ propri job in background. Si pu&ograve; usare il comando &man.kill.1; per
+ terminare un job in background. In questi comandi, con la notazione
+ <emphasis>%<replaceable>n</replaceable></emphasis> ci si riferisce
+ all'<replaceable>n-esimo</replaceable> job in background, rimpiazzando
+ <replaceable>n</replaceable> con il numero di job proveniente dall'output
+ di <command>jobs</command>. Quindi si termina il secondo job in
+ background con <command>kill %2</command> e si riprende il terzo job in
+ foreground con <command>fg %3</command>.</para>
+ </sect1>
+
+ <sect1 id="shells-history">
+ <title>History</title>
+
+ <para>La shell C, la shell Korn e molte altre shell avanzate, mantengono
+ informazioni sui comandi che sono stati eseguiti in shell. La
+ quantit&agrave; di storia memorizzabile dipende dalla shell utilizzata.
+ Qui si descriveranno le caratteristiche di history della shell C.</para>
+
+ <para>Si possono usare le variabili <literal>history</literal> e
+ <literal>savehist</literal> per settare rispettivamente quanti comandi
+ della shell corrente memorizzare e per quanti login mantenerli.
+ Si pu&ograve; inserire in <filename>.cshrc</filename> la seguente linea
+ per memorizzare 100 comandi della shell corrente fino a 50 prossimi
+ login.</para>
+
+ <para><command>set history=100 savehist=50</command></para>
+
+ <para>La shell mantiene traccia della storia dei comandi tra un login e
+ l'altro memorizzandola nel file <filename>~/.history</filename>.</para>
+
+ <para>Si pu&ograve; usare il comando built-in <command>history</command> per
+ richiamare i comandi eseguiti precedentemente, ad esempio per stampare gli
+ ultimi 10:</para>
+
+ <screen>&prompt.user; <userinput>history 10</userinput>
+52 cd workshop
+53 ls
+54 cd Unix_intro
+55 ls
+56 pwd
+57 date
+58 w
+59 alias
+60 history
+61 history 10</screen>
+
+ <para>Si pu&ograve; ripetere l'ultimo comando digitando
+ <command>!!</command>:</para>
+
+ <screen>&prompt.user; <userinput>!!</userinput>
+53 ls
+54 cd Unix_intro
+55 ls
+56 pwd
+57 date
+58 w
+59 alias
+60 history
+61 history 10
+62 history 10</screen>
+
+ <para>Si pu&ograve; ripetere un comando numerato introducendo il numero con
+ un <command>!</command>, esempio:</para>
+
+ <screen>&prompt.user; <userinput>!57</userinput>
+date
+Tue Apr 9 09:55:31 EDT 1996</screen>
+
+ <para>Si pu&ograve; ripetere un comando che inizia con qualche stringa,
+ introducendo la parte iniziale univoca della stringa con un
+ <command>!</command>, esempio:</para>
+
+ <screen>&prompt.user; <userinput>!da</userinput>
+date
+Tue Apr 9 09:55:31 EDT 1996</screen>
+
+ <para>Quando la shell valuta la linea di comando verifica subito la
+ sostituzione di history prima di interpretare qualche altra cosa. Per
+ usare uno di questi caratteri speciali in un comando di shell &egrave;
+ necessario usare un escape, o effettuare un quoting, apporrendo un \ prima
+ del carattere, esempio \!. I caratteri di sostituzione di history sono
+ sintetizzati nella tabella seguente:</para>
+
+ <table frame=all id="shells-table-history-sob">
+ <title>Comandi di sostituzione di history per la shell C</title>
+
+ <tgroup cols="2">
+ <colspec colwidth="1.5in">
+
+ <thead>
+ <row>
+ <entry align="center">Comando</entry>
+
+ <entry align="center">Funzione sostitutiva</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry><command>!!</command></entry>
+
+ <entry>ripete l'ultimo comando</entry>
+ </row>
+
+ <row>
+ <entry><command>!<replaceable>n</replaceable></command></entry>
+
+ <entry>ripete il comando numero <replaceable>n</replaceable></entry>
+ </row>
+
+ <row>
+ <entry><command>!-<replaceable>n</replaceable></command></entry>
+
+ <entry>ripete l'<replaceable>n-esimo</replaceable> comando partendo
+ dall'ultimo</entry>
+ </row>
+
+ <row>
+ <entry><command>!<replaceable>str</replaceable></command></entry>
+
+ <entry>ripete il comando che inizia con la stringa
+ <replaceable>str</replaceable></entry>
+ </row>
+
+ <row>
+ <entry><command>!?<replaceable>str</replaceable>?</command></entry>
+
+ <entry>ripete il comando con all'interno
+ <replaceable>str</replaceable></entry>
+ </row>
+
+ <row>
+ <entry><command>!?<replaceable>str</replaceable>?%</command></entry>
+
+ <entry>seleziona il primo argomento che ha
+ <replaceable>str</replaceable> all'interno</entry>
+ </row>
+
+ <row>
+ <entry><command>!:</command></entry>
+
+ <entry>ripete l'ultimo comando, generalmente usato con una
+ modifica</entry>
+ </row>
+
+ <row>
+ <entry><command>!:<replaceable>n</replaceable></command></entry>
+
+ <entry>seleziona l'<replaceable>n-esimo</replaceable> argomento
+ dell'ultimo comando (n=0 &egrave; il nome del comando)</entry>
+ </row>
+
+ <row>
+ <entry><command>!:<replaceable>n</replaceable>-<replaceable>m</replaceable></command></entry>
+
+ <entry>seleziona gli argomenti tra
+ l'<replaceable>n-esimo</replaceable> e
+ l'<replaceable>m-esimo</replaceable> argomento dell'ultimo
+ comando</entry>
+ </row>
+
+ <row>
+ <entry><command>!^</command></entry>
+
+ <entry>seleziona il primo argomento dell'ultimo comando (come
+ <command>!:1</command>)</entry>
+ </row>
+
+ <row>
+ <entry><command>!$</command></entry>
+
+ <entry>seleziona l'ultimo argomento dell'ultimo comando</entry>
+ </row>
+
+ <row>
+ <entry><command>!*</command></entry>
+
+ <entry>seleziona tutti gli argomenti del precedente comando</entry>
+ </row>
+
+ <row>
+ <entry><command>!:<replaceable>n</replaceable>*</command></entry>
+
+ <entry>seleziona gli argomenti
+ dall'<replaceable>n-esimo</replaceable> all'ultimo, incluso, del
+ precedente comando</entry>
+ </row>
+
+ <row>
+ <entry><command>!:<replaceable>n</replaceable>-</command></entry>
+
+ <entry>seleziona gli argomenti
+ dall'<replaceable>n-esimo</replaceable> all'ultimo, escluso, del
+ precedente comando</entry>
+ </row>
+
+ <row>
+ <entry><command>^<replaceable>str1</replaceable>^<replaceable>str2</replaceable>^</command></entry>
+
+ <entry>rimpiazza <replaceable>str1</replaceable> con
+ <replaceable>str2</replaceable> nella prima occorrenza nel
+ precedente comando</entry>
+ </row>
+
+ <row>
+ <entry><command>!<replaceable>n</replaceable>:s/<replaceable>str1</replaceable>/<replaceable>str2</replaceable>/</command></entry>
+
+ <entry>sostituisce <replaceable>str1</replaceable> con
+ <replaceable>str2</replaceable> nella prima occorrenza
+ nell'<replaceable>n-esimo</replaceable> comando, finendo con una
+ sostituzione globale <emphasis>g</emphasis>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>Altre informazioni sono descritte nelle <emphasis>pagine
+ man</emphasis>.</para>
+ </sect1>
+
+ <sect1 id="shells-change">
+ <title>Cambiare la propria shell</title>
+
+ <para>Per cambiare la propria shell si usano generalmente i comandi
+ &man.chsh.1; o <command>passwd -e</command>. Il flag di opzione, qui
+ <option>-e</option>, pu&ograve; cambiare da sistema a sistema
+ (<option>-s</option> su sistemi basati su BSD), quindi verificare le
+ proprie <emphasis>pagine man</emphasis> sul proprio sistema per un
+ uso corretto. Alcune volte questa caratteristica &egrave; disabilitata.
+ Se non si riesce a cambiare la propria shell contattare il proprio
+ amministratore di sistema (System Administrator).</para>
+
+ <para>La nuova shell deve essere un path name assoluto di una valida shell
+ sul sistema. Le shell disponibili variano da sistema a sistema. Inoltre
+ il path name assoluto della shell pu&ograve; cambiare. Normalmente, per
+ la shell Bourne e la shell C sono standard e sono:</para>
+
+ <para><filename>/bin/sh</filename></para>
+
+ <para><filename>/bin/csh</filename></para>
+
+ <para>Alcuni sistemi hanno anche la shell Korn standard normalmente
+ in:</para>
+
+ <para><filename>/bin/ksh</filename></para>
+
+ <para>Altre shell, che sono poco popolari e non distribuite normalmente
+ dal venditore di OS, sono &man.bash.1; e &man.tcsh.1;. Queste potrebbero
+ essere situate in <filename>/bin</filename> o in una directory locale,
+ esempio <filename>/usr/local/bin</filename> o
+ <filename>/opt/local/bin</filename>. Se si sceglie una shell non standard
+ del OS, ci si deve assicurare che quella shell e tutte le shell di login
+ disponibili sul sistema siano elencate nel file
+ <filename>/etc/shells</filename>. Se questo file esiste e la propria
+ shell non &egrave; elencata in esso, il demone per il trasferimento di
+ file, &man.ftpd.8;, ti impedir&agrave; una connessione ftp su questa
+ macchina. Se tale file non esiste, solamente account con shell
+ <quote>standard</quote> possono connettersi via &man.ftp.1;.</para>
+
+ <para>Si pu&ograve; sempre provare una shell prima di settarla come la
+ propria shell di default. Per fare questo si deve digitare il nome della
+ shell che si desidera utilizzare, come qualsiasi altro comando.</para>
+ </sect1>
+</chapter>
+
+<!--
+ Local Variables:
+ mode: sgml
+ sgml-indent-data: t
+ sgml-omittag: nil
+ sgml-always-quote-attributes: t
+ sgml-parent-document: ("../book.sgml" "book" "chapter")
+ End:
+--> \ No newline at end of file
diff --git a/it_IT.ISO8859-15/books/unix-introduction/special-features/chapter.sgml b/it_IT.ISO8859-15/books/unix-introduction/special-features/chapter.sgml
new file mode 100644
index 0000000000..691fc65a61
--- /dev/null
+++ b/it_IT.ISO8859-15/books/unix-introduction/special-features/chapter.sgml
@@ -0,0 +1,565 @@
+<!--
+ The FreeBSD Italian Documentation Project
+
+ $FreeBSD$
+-->
+
+<chapter id="special-features">
+ <title>Caratteristiche speciali di Unix</title>
+
+ <para>Uno dei pi&ugrave; importanti contributi che Unix ha dato ai sistemi
+ operativi &egrave; stato quello di fornire molti strumenti per creare lavori
+ ordinari e per ottenere le informazioni che si desiderano. Un altro
+ &egrave; rappresentato dal modo standard con cui i dati sono memorizzati e
+ trasmessi in un sistema Unix. Questo permette di trasferire dati
+ <emphasis>in</emphasis> un file, nel terminale video o in un programma,
+ oppure <emphasis>da</emphasis> un file, dalla tastiera o da un programma,
+ sempre in maniera uniforme. Il trattamento standardizzato dei dati supporta
+ due importanti caratteristiche di Unix: la redirezione di I/O e il
+ piping.</para>
+
+ <para>Con la <emphasis>redirezione dell'output</emphasis>, l'output di un
+ comando viene rediretto su un file piuttosto che sul terminale video.
+ Con la <emphasis>redirezione dell'input</emphasis>, l'input di un comando
+ viene preso da un file piuttosto che dalla tastiera. Sono possibili
+ altre tecniche di redirezione dell'input e dell'output come
+ si vedr&agrave; in seguito. Con il <emphasis>piping</emphasis>, l'output di
+ un comando pu&ograve; essere usato come input di un comando successivo.
+ In questo capitolo si discuter&agrave; di alcune delle caratteristiche e
+ degli strumenti disponibili per gli utenti Unix.</para>
+
+ <sect1 id="special-features-file-desc">
+ <title>Descrittori di file</title>
+
+ <para>Ci sono 3 descrittori di file standard:</para>
+
+ <informaltable frame="none">
+ <tgroup cols="3">
+ <colspec colwidth="1in">
+
+ <colspec colwidth="0.5in">
+
+ <tbody>
+ <row>
+ <entry>&man.stdin.4;</entry>
+
+ <entry>0</entry>
+
+ <entry>Standard input per il programma</entry>
+ </row>
+
+ <row>
+ <entry>&man.stdout.4;</entry>
+
+ <entry>1</entry>
+
+ <entry>Standard output dal programma</entry>
+ </row>
+
+ <row>
+ <entry>&man.stderr.4;</entry>
+
+ <entry>2</entry>
+
+ <entry>Standard error (output) dal programma</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>Normalmente l'input viene preso dalla tastiera o da un file.
+ Generalmente l'output, sia &man.stdout.4; che &man.stderr.4;, scorre nel
+ terminale, ma pu&ograve; essere rediretto, uno o entrambi, su uno o
+ pi&ugrave; file.</para>
+
+ <para>Si possono specificare descrittori di file addizionali, denotandoli
+ con un numero da 3 a 9 e redirigendo l'I/O attraverso questi.</para>
+ </sect1>
+
+ <sect1 id="special-features-file-redir">
+ <title>Redirezione di file</title>
+
+ <para>La redirezione dell'output prende l'output di un comando e lo
+ posiziona nel file specificato. La redirezione dell'input legge il file
+ specificato come input per un comando. La tabella che segue sintetizza le
+ possibili modalit&agrave; di redirezione.</para>
+
+ <table frame="all" id="special-features-table-file-redir">
+ <title>Redirezione di file</title>
+
+ <tgroup cols="2">
+ <colspec colwidth="1.5in">
+
+ <thead>
+ <row>
+ <entry align="center">SIMBOLO</entry>
+
+ <entry align="center">REDIREZIONE</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry><command>&gt;</command></entry>
+
+ <entry>redirezione dell'output</entry>
+ </row>
+
+ <row>
+ <entry><command>&gt;!</command></entry>
+
+ <entry>come sopra, ma non tiene conto dell'opzione
+ <emphasis>noclobber</emphasis> per &man.csh.1;</entry>
+ </row>
+
+ <row>
+ <entry><command>&gt;&gt;</command></entry>
+
+ <entry>appende l'output</entry>
+ </row>
+
+ <row>
+ <entry><command>&gt;&gt;!</command></entry>
+
+ <entry>come sopra, ma non tiene conto dell'opzione
+ <emphasis>noclobber</emphasis> su &man.csh.1; e crea il file se
+ non esiste</entry>
+ </row>
+
+ <row>
+ <entry><command>|</command></entry>
+
+ <entry>incalana (pipe) l'output nell'input di un altro
+ comando</entry>
+ </row>
+
+ <row>
+ <entry><command>&lt;</command></entry>
+
+ <entry>redirezione dell'input</entry>
+ </row>
+
+ <row>
+ <entry><command>&lt;&lt;<replaceable>Stringa</replaceable></command></entry>
+
+ <entry>legge da standard input fino a quando incontra una linea
+ contenente solo la parola <replaceable>Stringa</replaceable>.
+ Anche conosciuto come <emphasis>here document</emphasis>
+ (vedere il <link
+ linkend="shell-programming">Capitolo 9</link>)</entry>
+ </row>
+
+ <row>
+ <entry><command>&lt;&lt;\<replaceable>Stringa</replaceable></command></entry>
+
+ <entry>come sopra, ma le sostituzioni di shell non sono
+ permesse</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>Un esempio di redirezione dell'output &egrave;:</para>
+
+ <para><command>cat <replaceable>file1 file2</replaceable> &gt;
+ <replaceable>file3</replaceable></command></para>
+
+ <para>Il precedente comando concatena
+ <filename><replaceable>file1</replaceable></filename>
+ e <filename><replaceable>file2</replaceable></filename> e redirige (manda)
+ l'output in <filename><replaceable>file3</replaceable></filename>. Se
+ <filename><replaceable>file3</replaceable></filename> non esiste, viene
+ creato. Se esiste, verr&agrave; troncato a lunghezza zero prima che il
+ nuovo contenuto sia inserito, oppure, se l'opzione
+ <emphasis>noclobber</emphasis> della shell &man.csh.1; &egrave; abilitata,
+ il comando verr&agrave; rifiutato (vedere la shell &man.csh.1; nel
+ <link linkend="shells">Capitolo 5</link>). I file originali
+ <filename><replaceable>file1</replaceable></filename> e
+ <filename><replaceable>file2</replaceable></filename> rimarranno
+ come erano prima dell'esecuzione del comando, ossia due entit&agrave;
+ separate.</para>
+
+ <para>L'output viene appeso a un file con la forma:</para>
+
+ <para><command>cat <replaceable>file1</replaceable> &gt;&gt;
+ <replaceable>file2</replaceable></command></para>
+
+ <para>Questo comando appende il contenuto di
+ <filename><replaceable>file1</replaceable></filename> alla fine
+ dell'esistente <filename><replaceable>file2</replaceable></filename>
+ (<filename><replaceable>file2</replaceable></filename> non viene
+ soprascritto).</para>
+
+ <para>L'input &egrave; rediretto (preso) da un file con la forma:</para>
+
+ <para><command><replaceable>programma</replaceable> &lt;
+ <replaceable>file</replaceable></command></para>
+
+ <para>Questo comando prende l'input per il
+ <command><replaceable>programma</replaceable></command> da
+ <filename><replaceable>file</replaceable></filename>.</para>
+
+ <para>Per incanalare (pipe) l'output di un programma nell'input di un altro
+ programma si usa la forma:</para>
+
+ <para><command><replaceable>comando</replaceable>|<replaceable>comando</replaceable></command></para>
+
+ <para>Questo comando assegna l'output del primo comando all'input del
+ secondo comando.</para>
+
+ <sect2 id="special-features-file-redir-csh">
+ <title>Csh</title>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <colspec colwidth="2in">
+
+ <tbody>
+ <row>
+ <entry><command>&gt;&amp;
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>redirige &man.stdout.4; e &man.stderr.4; in
+ <filename><replaceable>file</replaceable></filename></entry>
+ </row>
+
+ <row>
+ <entry><command>&gt;&gt;&amp;
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>appende &man.stdout.4; e &man.stderr.4; in
+ <filename><replaceable>file</replaceable></filename></entry>
+ </row>
+
+ <row>
+ <entry><command>|&amp;
+ <replaceable>comando</replaceable></command></entry>
+
+ <entry>crea una pipe tra &man.stdout.4;-&man.stderr.4; e il
+ <command><replaceable>comando</replaceable></command></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>Per redirigere &man.stdout.4; e &man.stderr.4; in due file separati
+ si deve prima redirigere &man.stdout.4; in una sotto-shell,
+ cos&igrave;:</para>
+
+ <screen>&prompt.user; <userinput>(<replaceable>comando</replaceable> > <replaceable>out_file</replaceable>) >& <replaceable>err_file</replaceable></userinput></screen>
+ </sect2>
+
+ <sect2 id="special-features-file-redir-sh">
+ <title>Sh</title>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <colspec colwidth="2in">
+
+ <tbody>
+ <row>
+ <entry><command>2&gt;
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>redirige &man.stderr.4; in
+ <filename><replaceable>file</replaceable></filename></entry>
+ </row>
+
+ <row>
+ <entry><command>&gt; <replaceable>file</replaceable>
+ 2&gt;&amp;1</command></entry>
+
+ <entry>redirige &man.stdout.4; e &man.stderr.4; in
+ <filename><replaceable>file</replaceable></filename></entry>
+ </row>
+
+ <row>
+ <entry><command>&gt;&gt; <replaceable>file</replaceable>
+ 2&gt;&amp;1</command></entry>
+
+ <entry>appende &man.stdout.4; e &man.stderr.4; in
+ <filename><replaceable>file</replaceable></filename></entry>
+ </row>
+
+ <row>
+ <entry><command>2&gt;&amp;1 |
+ <replaceable>comando</replaceable></command></entry>
+
+ <entry>crea una pipe tra &man.stdout.4;-&man.stderr.4; e il
+ <replaceable>comando</replaceable></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>Per redirigere &man.stdout.4; e &man.stderr.4; in due file separati
+ si pu&ograve; fare:</para>
+
+ <screen>$ <userinput><replaceable>comando</replaceable> 1> <replaceable>out_file</replaceable> 2> <replaceable>err_file</replaceable></userinput></screen>
+
+ <para>oppure, data la redirezione di default per &man.stdout.4;:</para>
+
+ <screen>$ <userinput><replaceable>comando</replaceable> > <replaceable>out_file</replaceable> 2> <replaceable>err_file</replaceable></userinput></screen>
+
+ <para>Con la shell Bourne si possono specificare altri descrittori di file
+ (da 3 a 9) e redirigere l'output attraverso questi. Questo pu&ograve;
+ essere fatto con la forma:</para>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <colspec colwidth="1in">
+
+ <tbody>
+ <row>
+ <entry><command><replaceable>n</replaceable>&gt;&amp;<replaceable>m</replaceable></command></entry>
+
+ <entry>redirige il descrittore di file
+ <replaceable>n</replaceable> sul descrittore di file
+ <replaceable>m</replaceable></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>Questo meccanismo viene utilizzato per mandare &man.stderr.4; nello
+ stesso posto di &man.stdout.4;, <command>2&gt;&amp;1</command>, quando
+ si vuole avere i messaggi di errore e i normali messaggi in un file
+ piuttosto che sul terminale. Se si vuole che solamente i messaggi di
+ errore vadano nel file, si pu&ograve; usare un descrittore di file di
+ supporto, 3. Si redirige prima 3 su 2, quindi 2 su 1 e in fine si
+ redirige 1 su 3.</para>
+
+ <screen>$ <userinput>(<replaceable>comando</replaceable> 3>&2 2>&1 1>&3) > <replaceable>file</replaceable></userinput></screen>
+
+ <para>Questo manda &man.stderr.4; in 1 e &man.stdout.4; in 3 che &egrave;
+ rediretto su 2. In questo modo, in effetti, si ribaltano i normali
+ significati dei descrittori di file 1 e 2. Si pu&ograve; sperimentare
+ tutto questo con l'esempio seguente:</para>
+
+ <screen>$ <userinput>(cat <replaceable>file</replaceable> 3>&2 2>&1 1>&3) > <replaceable>errfile</replaceable></userinput></screen>
+
+ <para>Quindi se <filename><replaceable>file</replaceable></filename>
+ &egrave; letto, l'informazione &egrave; scartata dall'output del
+ comando, ma se <filename><replaceable>file</replaceable></filename> non
+ pu&ograve; essere letto, i messaggi di errore sono messi nel file
+ <filename><replaceable>errfile</replaceable></filename> per usi
+ futuri.</para>
+
+ <para>I descrittori di file che sono stati creati possono essere chiusi
+ con:</para>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <colspec colwidth="1in">
+
+ <tbody>
+ <row>
+ <entry><command><replaceable>m</replaceable>&lt;&amp;-</command></entry>
+
+ <entry>chiude un descrittore di file di input</entry>
+ </row>
+
+ <row>
+ <entry><command>&lt;&amp;-</command></entry>
+
+ <entry>chiude &man.stdin.4;</entry>
+ </row>
+
+ <row>
+ <entry><command><replaceable>m</replaceable>&gt;&amp;-</command></entry>
+
+ <entry>chiude un descrittore di file di output</entry>
+ </row>
+
+ <row>
+ <entry><command>&gt;&amp;-</command></entry>
+
+ <entry>chiude &man.stdout.4;</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </sect2>
+ </sect1>
+
+ <sect1 id="special-features-special-comm-simb">
+ <title>Altri speciali simboli di comando</title>
+
+ <para>Oltre ai simboli di redirezione dei file ci sono altri
+ simboli speciali che si possono usare su linea di comando.
+ Alcuni di questi sono:</para>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <colspec colwidth="1.5in">
+
+ <tbody>
+ <row>
+ <entry><command>;</command></entry>
+
+ <entry>separatore di comandi</entry>
+ </row>
+
+ <row>
+ <entry><command>&amp;</command></entry>
+
+ <entry>esegue un comando in background</entry>
+ </row>
+
+ <row>
+ <entry><command>&amp;&amp;</command></entry>
+
+ <entry>esegue il comando seguente (a questo simbolo) solamente se il
+ comando precedente (a questo simbolo) &egrave; stato completato
+ con successo, esempio:
+ <command>grep <replaceable>stringa file</replaceable> && cat
+ <replaceable>file</replaceable></command></entry>
+ </row>
+
+ <row>
+ <entry><command>||</command></entry>
+
+ <entry>esegue il comando seguente (a questo simbolo) solamente se il
+ comando precedente (a questo simbolo) non &egrave; stato
+ completato con successo, esempio:
+ <command>grep <replaceable>stringa file</replaceable> ||
+ echo "Stringa non trovata."</command></entry>
+ </row>
+
+ <row>
+ <entry><command>( )</command></entry>
+
+ <entry>i comandi tra parentesi sono eseguiti in una sotto-shell.
+ L'output della sotto-shell pu&ograve; essere manipolato come
+ specificato nelle precedenti sezioni.</entry>
+ </row>
+
+ <row>
+ <entry><command>' '</command></entry>
+
+ <entry>segni di quoting letterali. All'interno di questi segni di
+ quoting non viene permesso ad alcuni caratteri di assumere
+ significati speciali.</entry>
+ </row>
+
+ <row>
+ <entry><command>\</command></entry>
+
+ <entry>considera il prossimo carattere letteralmente
+ (escape)</entry>
+ </row>
+
+ <row>
+ <entry><command>" "</command></entry>
+
+ <entry>segni di quoting regolari. All'interno di questi segni di
+ quoting sono permesse sostituzioni di variabili e di comando
+ (non disattivano $ e \ all'interno della stringa).</entry>
+ </row>
+
+ <row>
+ <entry><command>`<replaceable>comando</replaceable>`</command></entry>
+
+ <entry>prende l'output del comando e lo sostituisce nell'argomento
+ su linea di comando</entry>
+ </row>
+
+ <row>
+ <entry><command>#</command></entry>
+
+ <entry>ogni cosa che lo segue fino a un newline &egrave; un
+ commento</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>Inoltre, il carattere \ pu&ograve; essere usato per effettuare un
+ escape sul carattere di newline, in modo tale da continuare un
+ lungo comando su pi&ugrave; di una linea fisica di testo.</para>
+ </sect1>
+
+ <sect1 id="special-features-wildcard">
+ <title>Meta caratteri</title>
+
+ <para>La shell e alcuni programmi di manipolazione testo permettono i
+ <emphasis>meta-caratteri</emphasis>, chiamati anche
+ <emphasis>wild card</emphasis>, i quali vengono rimpiazzati dai
+ corrispondenti schemi (pattern). Per i nomi di file questi
+ <emphasis>meta-caratteri</emphasis> e i loro significati sono:</para>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <colspec colwidth="1.5in">
+
+ <tbody>
+ <row>
+ <entry><emphasis>?</emphasis></entry>
+
+ <entry>indica un singolo carattere alla posizione
+ indicata</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>*</emphasis></entry>
+
+ <entry>indica una stringa di zero o pi&ugrave;
+ caratteri</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>[abc...]</emphasis></entry>
+
+ <entry>indica un carattere tra quelli racchiusi</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>[a-e]</emphasis></entry>
+
+ <entry>indica un carattere tra quelli nel range a, b, c, d,
+ e</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>[!def]</emphasis></entry>
+
+ <entry>indica un carattere tra quelli non inclusi in parentesi,
+ solamente &man.sh.1;</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>{abc,bcd,cde}</emphasis></entry>
+
+ <entry>indica un set di caratteri tra quelli inclusi in parentesi,
+ separati da una virgola (,) (niente spazi), solamente
+ &man.csh.1;</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>~</emphasis></entry>
+
+ <entry>indica la directory home dell'utente corrente, solamente
+ &man.csh.1;</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>~<replaceable>user</replaceable></emphasis></entry>
+
+ <entry>indica la directory home dell'utente specificato, solamente
+ &man.csh.1;</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </sect1>
+</chapter>
+
+<!--
+ Local Variables:
+ mode: sgml
+ sgml-indent-data: t
+ sgml-omittag: nil
+ sgml-always-quote-attributes: t
+ sgml-parent-document: ("../book.sgml" "book" "chapter")
+ End:
+--> \ No newline at end of file
diff --git a/it_IT.ISO8859-15/books/unix-introduction/structure/chapter.sgml b/it_IT.ISO8859-15/books/unix-introduction/structure/chapter.sgml
new file mode 100644
index 0000000000..2a67e9991a
--- /dev/null
+++ b/it_IT.ISO8859-15/books/unix-introduction/structure/chapter.sgml
@@ -0,0 +1,175 @@
+<!--
+ The FreeBSD Italian Documentation Project
+
+ $FreeBSD$
+-->
+
+<chapter id="structure">
+ <title>Struttura di Unix</title>
+
+ <sect1 id="structure-os">
+ <title>Il sistema operativo</title>
+
+ <para>Unix &egrave; un sistema operativo a strati. Lo strato pi&ugrave;
+ interno &egrave; l'hardware il quale fornisce servizi al OS. Il sistema
+ operativo (OS), riferito in Unix come al <emphasis>kernel</emphasis>,
+ interagisce direttamente con l'hardware e fornisce i servizi ai programmi
+ utente. I programmi utente non necessitano di conoscere informazioni
+ sull'hardware. Devono solo sapere come interagire con il kernel ed
+ &egrave; quest'ultimo a fornire i servizi richiesti. Uno dei pi&ugrave
+ grandi fattori che ha contribuito alla richiesta di Unix da parte dei
+ programmatori &egrave; stato che molti programmi utente corretti
+ sono indipendenti dall'hardware sottostante, e ci&ograve; li rende
+ facilmente trasportabili su nuovi sistemi.</para>
+
+ <para>I programmi utente interagiscono con il kernel attraverso un set di
+ <emphasis>system call</emphasis> (chiamate di sistema) standard. Queste
+ system call chiedono dei servizi, servizi che saranno forniti dal kernel.
+ Cos&igrave; i servizi possono includere un accesso a un file: aprire,
+ chiudere, leggere, scrivere un file, creare un link o eseguire un file;
+ creare o aggiornare degli account (informazioni relative ad un utente come
+ nome, password, ecc.); cambiare il proprietario di un file o di una
+ directory; spostarsi in una nuova directory; creare, sospendere o
+ terminare un processo; abilitare l'accesso a un dispositivo hardware e
+ impostare dei limiti sulle risorse di sistema.</para>
+
+ <para>Unix &egrave; un sistema operativo <emphasis>multi-user</emphasis>
+ (multi-utente) e <emphasis>multi-tasking</emphasis> (multi-processo). Si
+ possono avere molti utenti <quote>loggati</quote> simultaneamente nel
+ sistema (multi-user), ognuno dei quali esegue alcuni programmi
+ (multi-tasking). &Egrave; compito del kernel mantenere ogni processo e
+ ogni utente separato e regolare l'accesso all'hardware di sistema, inclusa
+ la cpu, la memoria, il disco e altri dispositivi di I/O.</para>
+
+<programlisting>
+FIGURA 2.1 Struttura di un sistema Unix
+
+ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+| |
+| Programmi |
+| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
+| | | |
+| | Kernel | |
+| | _ _ _ _ _ _ _ _ _ _ _ _ _ _ | |
+| | | Hardware | | |
+| | |_ _ _ _ _ _ _ _ _ _ _ _ _ _| | |
+| | | |
+| | System Call | |
+| |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _| |
+| |
+|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|</programlisting>
+ </sect1>
+
+ <sect1 id="structure-file-system">
+ <title>Il file system</title>
+
+ <para>L'aspetto del file system di Unix &egrave; paragonabile alla struttura
+ rovesciata di un albero. Si parte dall'alto con la directory
+ <emphasis>root</emphasis>, denotata con <filename>/</filename>, per poi
+ scendere attraverso sotto-directory sottostanti la root.</para>
+
+<programlisting>
+FIGURA 2.2 Struttura del file system di Unix
+
+
+ /(root) 1 livello
+ | | | | |
+ bin dev etc tmp usr 2 livello
+ | | | | | | | | |
+ sh date csh ttya cua0 passwd group bin lib 3 livello
+ |
+ gcc 4 livello
+
+ .... n livello</programlisting>
+
+ <para>Ogni nodo &egrave; o un <emphasis>file</emphasis> o una
+ <emphasis>directory</emphasis> di file, dove quest'ultima pu&ograve;
+ contenere altri file e directory. Un file o una directory vengono
+ specificati attraverso il loro <emphasis>path name</emphasis> (percorso
+ del nome del file o della directory), il quale pu&ograve; essere un path
+ name assoluto oppure un path name relativo ad un'altra locazione. Un path
+ name assoluto inizia con la directory root, <filename>/</filename>,
+ seguono poi i <quote>rami</quote> del file system, ognuno separato da /,
+ fino a raggiungere il file desiderato, come per esempio:</para>
+
+ <para><filename>/home/condron/source/xntp</filename></para>
+
+ <para>Un path name relativo specifica un percorso relativo ad un altro path
+ name, che usualmente &egrave; la directory di lavoro corrente in cui ci si
+ trova. Sono ora introdotte due directory speciali:</para>
+
+ <para><filename>.</filename> la directory corrente</para>
+
+ <para><filename>..</filename> la directory padre della directory
+ corrente</para>
+
+ <para>Quindi se si &egrave; in <filename>/home/frank</filename> e si
+ desidera specificare un path nel modo relativo si pu&ograve; usare:</para>
+
+ <para><filename>../condron/source/xntp</filename></para>
+
+ <para>Questo indica che si deve prima salire di un livello di directory,
+ quindi passare attraverso la directory <filename>condron</filename>,
+ seguire la directory <filename>source</filename> e quindi
+ <filename>xntp</filename>.</para>
+ </sect1>
+
+ <sect1 id="structure-directories-files-inodes">
+ <title>Directory, file e inode Unix</title>
+
+ <para>Ogni <emphasis>directory</emphasis> e ogni <emphasis>file</emphasis>
+ sono inclusi nella loro directory padre. Nel caso della directory root,
+ la directory padre &egrave; se stessa. Una directory &egrave; un file
+ contenente una tabella che elenca i file contenuti nella directory stessa,
+ dove ai nomi dei file in lista vengono assegnati i corrispondenti numeri
+ di <emphasis>inode</emphasis>. Un inode &egrave; un file speciale,
+ progettato per essere letto dal kernel al fine di conoscere alcune
+ informazioni su ciascun file. Un inode specifica i permessi del file, il
+ proprietario del file, la data di creazione, quella dell'ultimo accesso e
+ quella dell'ultima modifica del file e la posizione fisica dei blocchi di
+ dati sul disco che contengono il file.</para>
+
+ <para>Il sistema non richiede qualche struttura particolare per i dati
+ contenuti nel file. Il file pu&ograve; essere ASCII o binario o una
+ combinazione di questi e pu&ograve; rappresentare dati testuali, uno
+ script di shell, un codice oggetto compilato per un programma, una tabella
+ di directory, robaccia o qualunque cosa si voglia.</para>
+
+ <para>Non c'&egrave; un'intestazione, una traccia, un'etichetta o il
+ carattere <emphasis>EOF</emphasis> come parte del file.</para>
+ </sect1>
+
+ <sect1 id="structure-programs">
+ <title>Programmi Unix</title>
+
+ <para>Un <emphasis>programma</emphasis> o un <emphasis>comando</emphasis>
+ interagisce con il kernel per fornire l'ambiente e realizzare le
+ funzioni richieste dall'utente. Un programma pu&ograve; essere: un file
+ di shell eseguibile, conosciuto come uno script di shell, un comando
+ interno (built-in) alla shell o un file sorgente compilato in codice
+ oggetto.</para>
+
+ <para>La <emphasis>shell</emphasis> &egrave; un interprete a linea di
+ comando. L'utente interagisce con il kernel attraverso la shell. Si
+ pu&ograve; scrivere uno script ASCII (testo) in modo tale da essere
+ interpretato da una shell.</para>
+
+ <para>I programmi di sistema sono generalmente in forma binaria, compilati
+ partendo da un codice sorgente in C. Questi si trovano in posti come
+ <filename>/bin</filename>, <filename>/usr/bin</filename>,
+ <filename>/usr/local/bin</filename>, <filename>/usr/ucb</filename>, ecc.
+ Questi comandi forniscono quelle funzionalit&agrave; che normalmente si
+ pensano essere di Unix. Alcuni di questi sono &man.sh.1;, &man.csh.1;,
+ &man.date.1;, &man.who.1;, &man.more.1;, &man.ls.1; e molti altri.</para>
+ </sect1>
+</chapter>
+
+<!--
+ Local Variables:
+ mode: sgml
+ sgml-indent-data: t
+ sgml-omittag: nil
+ sgml-always-quote-attributes: t
+ sgml-parent-document: ("../book.sgml" "book" "chapter")
+ End:
+--> \ No newline at end of file
diff --git a/it_IT.ISO8859-15/books/unix-introduction/system-resource/chapter.sgml b/it_IT.ISO8859-15/books/unix-introduction/system-resource/chapter.sgml
new file mode 100644
index 0000000000..015343a0fd
--- /dev/null
+++ b/it_IT.ISO8859-15/books/unix-introduction/system-resource/chapter.sgml
@@ -0,0 +1,1199 @@
+<!--
+ The FreeBSD Italian Documentation Project
+
+ $FreeBSD$
+-->
+
+<chapter id="system-resource">
+ <title>Risorse di sistema e stampa</title>
+
+ <sect1 id="system-resource-">
+ <title>Risorse di sistema</title>
+
+ <para>Comandi per gestire le risorse di sistema.</para>
+
+ <table frame="all" id="system-resource-table-commands">
+ <title>Comandi per le risorse di sistema</title>
+
+ <tgroup cols="2">
+ <colspec colwidth="3.7in">
+
+ <thead>
+ <row>
+ <entry align="center">Comando/Sintassi</entry>
+
+ <entry align="center">Cosa fa</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry><command>chsh</command> (<command>passwd -e/-s</command>)
+ <command><replaceable>username
+ login_shell</replaceable></command></entry>
+
+ <entry>cambia la shell di login dell'utente (spesso solo attraverso
+ il super-user)</entry>
+ </row>
+
+ <row>
+ <entry><command>date
+ [<replaceable>opzioni</replaceable>]</command></entry>
+
+ <entry>visualizza data e ora corrente</entry>
+ </row>
+
+ <row>
+ <entry><command>df [<replaceable>opzioni</replaceable>]
+ [<replaceable>risorsa</replaceable>]</command></entry>
+
+ <entry>riporta una sintesi dei blocchi del disco e degli inode
+ liberi e usati</entry>
+ </row>
+
+ <row>
+ <entry><command>du [<replaceable>opzioni</replaceable>]
+ [<replaceable>directory o file</replaceable>]</command></entry>
+
+ <entry>riporta la quantit&agrave; di spazio di disco usato</entry>
+ </row>
+
+ <row>
+ <entry><command>hostname/uname</command></entry>
+
+ <entry>visualizza o setta (solamente super-user) il nome della
+ macchina in uso</entry>
+ </row>
+
+ <row>
+ <entry><command>kill [<replaceable>opzioni</replaceable>]
+ [<replaceable>-SEGNALE</replaceable>]
+ [<replaceable>pid#</replaceable>]
+ [%<replaceable>job</replaceable>]</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>man [<replaceable>opzioni</replaceable>]
+ <replaceable>comando</replaceable></command></entry>
+
+ <entry>visualizza la pagina (<emphasis>man</emphasis>) del manuale
+ relativa al comando specificato</entry>
+ </row>
+
+ <row>
+ <entry><command>passwd
+ [<replaceable>opzioni</replaceable>]</command></entry>
+
+ <entry>setta o modifica la propria password</entry>
+ </row>
+
+ <row>
+ <entry><command>ps
+ [<replaceable>opzioni</replaceable>]</command></entry>
+
+ <entry>mostra lo stato dei processi attivi</entry>
+ </row>
+
+ <row>
+ <entry><command>script
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>salva tutto ci&ograve; che appare sullo schermo in un file
+ fino a quando viene eseguito il comando
+ <command>exit</command></entry>
+ </row>
+
+ <row>
+ <entry><command>stty
+ [<replaceable>opzioni</replaceable>]</command></entry>
+
+ <entry>setta o visualizza le opzioni del terminale di
+ controllo</entry>
+ </row>
+
+ <row>
+ <entry><command>whereis [<replaceable>opzioni</replaceable>]
+ <replaceable>comando</replaceable></command></entry>
+
+ <entry>riporta le posizioni del file binario, del sorgente e della
+ pagina man relative al comando specificato</entry>
+ </row>
+
+ <row>
+ <entry><command>which
+ <replaceable>comando</replaceable></command></entry>
+
+ <entry>riporta il percorso (path) del comando specificato o l'alias
+ di shell in uso</entry>
+ </row>
+
+ <row>
+ <entry><command>who</command> oppure <command>w</command></entry>
+
+ <entry>riporta gli utenti <quote>loggati</quote> e i loro processi
+ in esecuzione</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <sect2 id="system-resource-df">
+ <title>df - riepiloga i blocchi del disco e lo spazio usato</title>
+
+ <para>Il comando &man.df.1; &egrave; usato per riportare il numero di
+ blocchi del disco e di inode liberi e usati per ogni file system.
+ Il formato dell'output e le valide opzioni sono molto specifiche dal
+ sistema operativo e dalla versione del programma in uso.</para>
+
+ <para><emphasis>Sintassi</emphasis></para>
+
+ <para><command>df [<replaceable>opzioni</replaceable>]
+ [<replaceable>risorsa</replaceable>]</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>solo il file system locale (SVR4)</entry>
+ </row>
+
+ <row>
+ <entry><option>-k</option></entry>
+
+ <entry>riporta in kilobyte (SVR4)</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para><emphasis>Esempi:</emphasis></para>
+
+ <screen>{Unix prompt 1} <userinput>df</userinput>
+Filesystem kbytes used avail capacity Mounted on
+
+/dev/sd0a 20895 19224 0 102% /
+/dev/sd0h 319055 131293 155857 46% /usr
+/dev/sd1g 637726 348809 225145 61% /usr/local
+/dev/sd1a 240111 165489 50611 77% /home/guardian
+peri:/usr/local/backup
+ 1952573 976558 780758 56% /usr/local/backup
+peri:/home/peri 726884 391189 263007 60% /home/peri
+peri:/usr/spool/mail
+ 192383 1081 172064 1% /var/spool/mail
+peri:/acs/peri/2
+ 723934 521604 129937 80% /acs/peri/2</screen>
+ </sect2>
+
+ <sect2 id="system-resource-du">
+ <title>du - mostra lo spazio del disco usato</title>
+
+ <para>Il comando &man.du.1; riporta la quantit&agrave; di spazio di disco
+ usato per i file o per le directory specificate.</para>
+
+ <para><emphasis>Sintassi</emphasis></para>
+
+ <para><command>du [<replaceable>opzioni</replaceable>]
+ [<replaceable>directory o file</replaceable>]</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>mostra l'uso del disco per ogni file, non solo per le
+ sotto-directory</entry>
+ </row>
+
+ <row>
+ <entry><option>-s</option></entry>
+
+ <entry>mostra solo la somma totale</entry>
+ </row>
+
+ <row>
+ <entry><option>-k</option></entry>
+
+ <entry>riporta in kilobyte (SVR4)</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para><emphasis>Esempi:</emphasis></para>
+
+ <screen>{Unix prompt 3} <userinput>du</userinput>
+ 1 ./.elm
+ 1 ./Mail
+ 1 ./News
+20 ./uc
+86 .</screen>
+
+ <screen>{Unix prompt 4} <userinput>du -a uc</userinput>
+7 uc/Unixgrep.txt
+5 uc/editors.txt
+1 uc/.emacs
+1 uc/.exrc
+4 uc/telnet.ftp
+1 uc/uniq.tee.txt
+20 uc</screen>
+ </sect2>
+
+ <sect2 id="system-resource-ps">
+ <title>ps - mostra lo stato dei processi attivi</title>
+
+ <para>Il comando &man.ps.1; &egrave; usato per mostrare i processi
+ correntemente eseguiti sul sistema. Il formato dell'output e le
+ valide opzioni dipendono molto dal sistema operativo e dalla versione
+ del programma in uso.</para>
+
+ <para><emphasis>Sintassi</emphasis></para>
+
+ <para><command>ps [<replaceable>opzioni</replaceable>]</command></para>
+
+ <para><emphasis>Opzioni generali</emphasis></para>
+
+ <informaltable frame="none">
+ <tgroup cols="3">
+ <colspec colwidth="1in">
+
+ <colspec colwidth="1in">
+
+ <thead>
+ <row>
+ <entry>BSD</entry>
+
+ <entry>SVR4</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry><option>-a</option></entry>
+
+ <entry><option>-e</option></entry>
+
+ <entry>tutti i processi di tutti gli utenti</entry>
+ </row>
+
+ <row>
+ <entry><option>-e</option></entry>
+
+ <entry></entry>
+
+ <entry>ambiente di esecuzione</entry>
+ </row>
+
+ <row>
+ <entry><option>-g</option></entry>
+
+ <entry></entry>
+
+ <entry>processi del gruppo amministrativo come
+ <groupname>well</groupname></entry>
+ </row>
+
+ <row>
+ <entry><option>-l</option></entry>
+
+ <entry><option>-l</option></entry>
+
+ <entry>formato lungo</entry>
+ </row>
+
+ <row>
+ <entry><option>-u</option></entry>
+
+ <entry><option>-u <replaceable>user</replaceable></option></entry>
+
+ <entry>relazione specifica di un utente</entry>
+ </row>
+
+ <row>
+ <entry><option>-x</option></entry>
+
+ <entry><option>-e</option></entry>
+
+ <entry>anche i processi non eseguiti da terminali</entry>
+ </row>
+
+ <row>
+ <entry></entry>
+
+ <entry><option>-f</option></entry>
+
+ <entry>lista completa</entry>
+ </row>
+
+ <row>
+ <entry><option>-w</option></entry>
+
+ <entry></entry>
+
+ <entry>riporta i primi 132 caratteri per linea</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <note>
+ <para>Poich&egrave; il comando &man.ps.1 &egrave; molto dipendente dal
+ sistema, si raccomanda di consultare le <emphasis>pagine
+ man</emphasis> del proprio sistema per i dettagli delle opzioni e per
+ l'interpretazione dell'output di &man.ps.1;.</para>
+ </note>
+
+ <para><emphasis>Esempi:</emphasis></para>
+
+ <screen>{Unix prompt 5} <userinput>ps</userinput>
+PID TT STAT TIME COMMAND
+15549 p0 IW 0:00 -tcsh (tcsh)
+15588 p0 IW 0:00 man nice
+15594 p0 IW 0:00 sh -c less /tmp/man15588
+15595 p0 IW 0:00 less /tmp/man15588
+15486 p1 S 0:00 -tcsh (tcsh)
+15599 p1 T 0:00 emacs Unixgrep.txt
+15600 p1 R 0:00 ps</screen>
+ </sect2>
+
+ <sect2 id="system-resource-kill">
+ <title>kill - termina un processo</title>
+
+ <para>Il comando &man.kill.1; manda un segnale a un processo,
+ generalmente per terminarlo.</para>
+
+ <para><emphasis>Sintassi</emphasis></para>
+
+ <para><command>kill [<replaceable>-SEGNALE</replaceable>]
+ <replaceable>id-processo</replaceable></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>visualizza i segnali disponibili per kill</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para><emphasis>Esempi:</emphasis></para>
+
+ <screen>{Unix prompt 9} <userinput>kill -l</userinput>
+HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM URG STOP
+TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALRM PROF WINCH LOST USR1 USR2</screen>
+
+ <para>Il segnale <option>-KILL</option>, anche specificato con
+ <option>-9</option> (a causa della nona posizione assunta nella lista
+ precedente), &egrave; il maggior segnale comunemente usato con
+ &man.kill.1;. A differenza di altri segnali, questo, una volta captato,
+ non pu&ograve; essere ignorato dal programma.</para>
+
+ <screen>{Unix prompt 10} <userinput>kill -9 15599</userinput>
+[1] + Killed emacs Unixgrep.txt</screen>
+ </sect2>
+
+ <sect2 id="system-resource-who">
+ <title>who - mostra gli utenti attuali</title>
+
+ <para>Il comando &man.who.1; riporta chi &egrave; correntemente
+ <quote>loggato</quote> nel sistema.</para>
+
+ <para><emphasis>Sintassi</emphasis></para>
+
+ <para><command>who [<option>am i</option>]</command></para>
+
+ <para><emphasis>Esempi:</emphasis></para>
+
+ <screen>beauty condron&gt; <userinput>who</userinput>
+wmtell ttyp1 Apr 21 20:15 (apple.acs.ohio-s)
+fbwalk ttyp2 Apr 21 23:21 (worf.acs.ohio-st)
+stwang ttyp3 Apr 21 23:22 (127.99.25.8)
+david ttyp4 Apr 21 22:27 (slip1-61.acs.ohi)
+tgardner ttyp5 Apr 21 23:07 (picard.acs.ohio-)
+awallace ttyp6 Apr 21 23:00 (ts31-4.homenet.o)
+gtl27 ttyp7 Apr 21 23:24 (data.acs.ohio-st)
+ccchang ttyp8 Apr 21 23:32 (slip3-10.acs.ohi)
+condron ttypc Apr 21 23:38 (lcondron-mac.acs)
+dgildman ttype Apr 21 22:30 (slip3-36.acs.ohi)
+fcbetz ttyq2 Apr 21 21:12 (ts24-10.homenet.)</screen>
+
+ <screen>beauty condron&gt; <userinput>who am i</userinput>
+beauty!condron ttypc Apr 21 23:38 (lcondron-mac.acs)</screen>
+ </sect2>
+
+ <sect2 id="system-resource-whereis">
+ <title>whereis - riporta le locazioni del programma</title>
+
+ <para>Il comando &man.whereis.1; riporta le locazioni del file
+ sorgente, di quello binario e del file delle pagine man associate al
+ comando.</para>
+
+ <para><emphasis>Sintassi</emphasis></para>
+
+ <para><command>whereis [<replaceable>opzioni</replaceable>]
+ <replaceable>comando</replaceable></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>riporta solamente i file binari</entry>
+ </row>
+
+ <row>
+ <entry><option>-m</option></entry>
+
+ <entry>riporta solamente la sezione manuale</entry>
+ </row>
+
+ <row>
+ <entry><option>-s</option></entry>
+
+ <entry>riporta solamente i file sorgenti</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para><emphasis>Esempi:</emphasis></para>
+
+ <screen>brigadier: condron [69]&gt; <userinput>whereis Mail</userinput>
+Mail: /usr/ucb/Mail /usr/lib/Mail.help /usr/lib/Mail.rc /usr/man/man1/Mail.1</screen>
+
+ <screen>brigadier: condron [70]&gt; <userinput>whereis -b Mail</userinput>
+Mail: /usr/ucb/Mail /usr/lib/Mail.help /usr/lib/Mail.rc</screen>
+
+ <screen>brigadier: condron [71]&gt; <userinput>whereis -m Mail</userinput>
+Mail: /usr/man/man1/Mail.1</screen>
+ </sect2>
+
+ <sect2 id="system-resource-which">
+ <title>which - riporta il comando trovato</title>
+
+ <para>Il comando &man.which.1; riporta il nome del file che sar&agrave;
+ eseguito quando il comando specificato viene invocato. Questo
+ pu&ograve; essere un path name assoluto o il primo alias trovato nel
+ proprio path.</para>
+
+ <para><emphasis>Sintassi</emphasis></para>
+
+ <para><command>which <replaceable>comando</replaceable></command></para>
+
+ <para><emphasis>Esempi:</emphasis></para>
+
+ <screen>brigadier: condron [73]&gt; <userinput>which Mail</userinput>
+/usr/ucb/Mail</screen>
+ </sect2>
+
+ <sect2 id="system-resource-hostname-unname">
+ <title>hostname/uname - nome della macchina</title>
+
+ <para>Il comando &man.hostname.1; (<command>uname -u</command> su SysV)
+ riporta il nome host della macchina nella quale l'utente &egrave;
+ <quote>loggato</quote>, esempio:</para>
+
+ <screen>brigadier: condron [91]&gt; <userinput>hostname</userinput>
+brigadier</screen>
+
+ <para>&man.uname.1; ha opzioni aggiuntive per visualizzare informazioni
+ circa l'hardware del sistema e la versione del software.</para>
+ </sect2>
+
+ <sect2 id="system-resource-script">
+ <title>script - memorizza la propria schermata di I/O</title>
+
+ <para>Il comando &man.script.1; crea una documentazione della propria
+ sessione di I/O. Usando il comando &man.script.1; si possono catturare
+ tutti i dati trasmessi da e per il proprio terminale visuale fino
+ all'uscita (con <command>exit</command>) del programma stesso.
+ Pu&ograve; essere utile durante un processo di debugging, per
+ documentare le azioni che si stanno sperimentando o per avere una
+ copia stampabile per una attenta lettura successiva.</para>
+
+ <para><emphasis>Sintassi</emphasis></para>
+
+ <para><command>script [<option>-a</option>]
+ [<replaceable>file</replaceable>] &lt;...&gt; exit</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 al file</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>Di default, <filename>typescript</filename> &egrave; il nome del
+ file usato dal comando &man.script.1;.</para>
+
+ <para>Ci si deve ricordare di digitare <command>exit</command> per
+ terminare la propria sessione script e chiudere cos&igrave; il file
+ <filename>typescript</filename>.</para>
+
+ <para><emphasis>Esempi:</emphasis></para>
+
+ <screen>beauty condron&gt; <userinput>script</userinput>
+Script started, file is typescript</screen>
+
+ <screen>beauty condron&gt; <userinput>ps</userinput>
+PID TT STAT TIME COMMAND
+23323 p8 S 0:00 -h -i (tcsh)
+23327 p8 R 0:00 ps
+18706 pa S 0:00 -tcsh (tcsh)
+23315 pa T 0:00 emacs
+23321 pa S 0:00 script
+23322 pa S 0:00 script
+3400 pb I 0:00 -tcsh (tcsh)</screen>
+
+ <screen>beauty condron&gt; <userinput>kill -9 23315</userinput></screen>
+
+ <screen>beauty condron&gt; <userinput>date</userinput>
+Mon Apr 22 22:29:44 EDT 1996</screen>
+
+ <screen>beauty condron&gt; <userinput>exit</userinput>
+exit
+Script done, file is typescript
+[1] + Killed emacs</screen>
+
+ <screen>beauty condron&gt; <userinput>cat typescript</userinput>
+Script started on Mon Apr 22 22:28:36 1996
+
+beauty condron&gt;ps
+PID TT STAT TIME COMMAND
+23323 p8 S 0:00 -h -i (tcsh)
+23327 p8 R 0:00 ps
+18706 pa S 0:00 -tcsh (tcsh)
+23315 pa T 0:00 emacs
+23321 pa S 0:00 script
+23322 pa S 0:00 script
+3400 pb I 0:00 -tcsh (tcsh)
+
+beauty condron&gt;kill -9 23315
+
+beauty condron&gt;date
+Mon Apr 22 22:29:44 EDT 1996
+
+beauty condron&gt;exit
+exit
+
+script done on Mon Apr 22 22:30:02 1996</screen>
+
+ <screen>beauty condron&gt; <userinput></userinput></screen>
+ </sect2>
+
+ <sect2 id="system-resource-date">
+ <title>date - data e ora corrente</title>
+
+ <para>Il comando &man.date.1; mostra la data e l'ora corrente.
+ Un super-user pu&ograve; modificare la data e l'ora.</para>
+
+ <para><emphasis>Sintassi</emphasis></para>
+
+ <para><command>date [<replaceable>opzioni</replaceable>]
+ [<replaceable>+formato</replaceable>]</command></para>
+
+ <para><emphasis>Opzioni generali</emphasis></para>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <colspec colwidth="1in">
+
+ <tbody>
+ <row>
+ <entry><option>-u</option></entry>
+
+ <entry>usa Universal Time (o Greenwich Mean Time)</entry>
+ </row>
+
+ <row>
+ <entry><option>+<replaceable>formato</replaceable></option></entry>
+
+ <entry>specifica il formato di output</entry>
+ </row>
+
+ <row>
+ <entry align="center"><option>%a</option></entry>
+
+ <entry>abbreviazione giorni, da Sabato a Domenica</entry>
+ </row>
+
+ <row>
+ <entry align="center"><option>%h</option></entry>
+
+ <entry>abbreviazione mesi, da Gennaio a Dicembre</entry>
+ </row>
+
+ <row>
+ <entry align="center"><option>%j</option></entry>
+
+ <entry>giorno dell'anno, da 001 a 366</entry>
+ </row>
+
+ <row>
+ <entry align="center"><option>%n</option></entry>
+
+ <entry>new-line</entry>
+ </row>
+
+ <row>
+ <entry align="center"><option>%t</option></entry>
+
+ <entry>tab</entry>
+ </row>
+
+ <row>
+ <entry align="center"><option>%y</option></entry>
+
+ <entry>ultime due cifre dell'anno, da 00 a 99</entry>
+ </row>
+
+ <row>
+ <entry align="center"><option>%D</option></entry>
+
+ <entry>formato data MM/DD/YY</entry>
+ </row>
+
+ <row>
+ <entry align="center"><option>%H</option></entry>
+
+ <entry>ora, da 00 a 23</entry>
+ </row>
+
+ <row>
+ <entry align="center"><option>%M</option></entry>
+
+ <entry>minuti, da 00 a 59</entry>
+ </row>
+
+ <row>
+ <entry align="center"><option>%S</option></entry>
+
+ <entry>secondi, da 00 a 59</entry>
+ </row>
+
+ <row>
+ <entry align="center"><option>%T</option></entry>
+
+ <entry>formato ora HH:MM:SS</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para><emphasis>Esempi:</emphasis></para>
+
+ <screen>beauty condron&gt; <userinput>date</userinput>
+Mon Jun 10 09:01:05 EDT 1996</screen>
+
+ <screen>beauty condron&gt; <userinput>date -u</userinput>
+Mon Jun 10 13:01:33 GMT 1996</screen>
+
+ <screen>beauty condron&gt; <userinput>date +%a%t%D</userinput>
+Mon 06/10/96</screen>
+
+ <screen>beauty condron&gt; <userinput>date '+%y:%j'</userinput>
+96:162</screen>
+ </sect2>
+ </sect1>
+
+ <sect1 id="system-resource-print">
+ <title>Comandi di stampa</title>
+
+ <table frame=all id="system-resource-table-print-commands">
+ <title>Comandi di stampa</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>lpq</command> (<command>lpstat</command>)
+ <command>[<replaceable>opzioni</replaceable>]</command></entry>
+
+ <entry>mostra lo stato dei job (lavori) di stampa</entry>
+ </row>
+
+ <row>
+ <entry><command>lpr</command> (<command>lp</command>)
+ <command>[<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>stampa con una stampante specifica</entry>
+ </row>
+
+ <row>
+ <entry><command>lprm</command> (<command>cancel</command>)
+ <command>[<replaceable>opzioni</replaceable>]</command></entry>
+
+ <entry>rimuove un job di stampa dalla coda di stampa</entry>
+ </row>
+
+ <row>
+ <entry><command>pr [<replaceable>opzioni</replaceable>]
+ [<replaceable>file</replaceable>]</command></entry>
+
+ <entry>filtra il file e lo stampa sul terminale</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>I comandi di stampa permettono di stampare file sullo standard output
+ (&man.pr.1;) o attraverso una stampante (&man.lp.1; e &man.lpr.1) fino a
+ filtrare l'output. I comandi di stampa di <emphasis>BSD</emphasis> e
+ <emphasis>SysV</emphasis> usano diversi nomi e diverse opzioni per
+ produrre lo stesso risultato: &man.lpr.1;, &man.lprm.1; e &man.lpq.1;
+ contro &man.lp.1;, <command>cancel</command> e <command>lpstat</command>
+ rispettivamente per BSD e SysV, sottopongono, cancellano e verificano lo
+ stato di un job (lavoro) di stampa.</para>
+
+ <sect2 id="system-resource-print-lp-lpr">
+ <title>lp/lpr - sottopone un job di stampa</title>
+
+ <para>Il comando &man.lp.1; o &man.lpr.1; sottopone il file specificato o
+ lo standard input al demone di stampa per essere stampato. Ad ogni job
+ viene assegnato un unico id di richiesta che pu&ograve; essere usato
+ in seguito per verificare o cancellare il job mentre &egrave; nella
+ coda di stampa.</para>
+
+ <para><emphasis>Sintassi</emphasis></para>
+
+ <para><command>lp [<replaceable>opzioni</replaceable>]
+ <replaceable>filename</replaceable></command></para>
+
+ <para><command>lpr [<replaceable>opzioni</replaceable>]
+ <replaceable>filename</replaceable></command></para>
+
+ <para><emphasis>Opzioni generali</emphasis></para>
+
+ <informaltable frame="none">
+ <tgroup cols="3">
+ <colspec colwidth="1.6in">
+
+ <colspec colwidth="1.4in">
+
+ <thead>
+ <row>
+ <entry>lp</entry>
+
+ <entry>lpr</entry>
+
+ <entry>funzione</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry><option>-n
+ <replaceable>numero</replaceable></option></entry>
+
+ <entry><option>-<replaceable>#numero</replaceable></option></entry>
+
+ <entry>numero di copie</entry>
+ </row>
+
+ <row>
+ <entry><option>-t
+ <replaceable>titolo</replaceable></option></entry>
+
+ <entry><option>-T<replaceable>titolo</replaceable></option></entry>
+
+ <entry>titolo del job</entry>
+ </row>
+
+ <row>
+ <entry><option>-d
+ <replaceable>destinazione</replaceable></option></entry>
+
+ <entry><option>-P<replaceable>stampante</replaceable></option></entry>
+
+ <entry>nome della stampante</entry>
+ </row>
+
+ <row>
+ <entry><option>-c</option></entry>
+
+ <entry>(default)</entry>
+
+ <entry>copia il file in coda prima di stamparlo</entry>
+ </row>
+
+ <row>
+ <entry>(default)</entry>
+
+ <entry><option>-s</option></entry>
+
+ <entry>non copia il file in coda prima di stamparlo</entry>
+ </row>
+
+ <row>
+ <entry><option>-o
+ <replaceable>opzioni</replaceable></option></entry>
+
+ <entry></entry>
+
+ <entry>opzioni addizionali, esempio
+ <option>nobanner</option></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>I file che iniziano con i simboli <literal>%!</literal> sono
+ considerati file contenenti comandi PostScript.</para>
+
+ <para><emphasis>Esempi:</emphasis></para>
+
+ <para>Per stampare il file <filename>ssh.ps</filename>:</para>
+
+ <screen>&prompt.user; <userinput>lp ssh.ps</userinput>
+request id is lp-153 (1 file(s))</screen>
+
+ <para>Questo sottopone il job nella coda della stampante di default,
+ <devicename>lp</devicename>, con l'id di richiesta
+ <literal>lp-153</literal>.</para>
+ </sect2>
+
+ <sect2 id="system-resource-print-lpstat-lpq">
+ <title>lpstat/lpq - verifica lo stato di un job di stampa</title>
+
+ <para>Si pu&ograve; verificare lo stato del proprio job di stampa con il
+ comando <command>lpstat</command> o &man.lpq.1;.</para>
+
+ <para><emphasis>Sintassi</emphasis></para>
+
+ <para><command>lpstat
+ [<replaceable>opzioni</replaceable>]</command></para>
+
+ <para><command>lpq [<replaceable>opzioni</replaceable>]
+ [<replaceable>job#</replaceable>]
+ [<replaceable>username</replaceable>]</command></para>
+
+ <para><emphasis>Opzioni generali</emphasis></para>
+
+ <informaltable frame="none">
+ <tgroup cols="3">
+ <colspec colwidth="1.5in">
+
+ <colspec colwidth="1.5in">
+
+ <colspec colwidth="3.5in">
+
+ <thead>
+ <row>
+ <entry>lpstat</entry>
+
+ <entry>lpq</entry>
+
+ <entry>funzione</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry><option>-d</option></entry>
+
+ <entry>(<devicename>lp</devicename> di default)</entry>
+
+ <entry>lista dei sistemi destinazione di default</entry>
+ </row>
+
+ <row>
+ <entry><option>-s</option></entry>
+
+ <entry></entry>
+
+ <entry>riassume lo stato di stampa</entry>
+ </row>
+
+ <row>
+ <entry><option>-t</option></entry>
+
+ <entry></entry>
+
+ <entry>stampa tutte le informazioni dello stato di stampa</entry>
+ </row>
+
+ <row>
+ <entry><option>-u
+ [<replaceable>login-ID-list</replaceable>]</option></entry>
+
+ <entry></entry>
+
+ <entry>lista dell'utente specificato</entry>
+ </row>
+
+ <row>
+ <entry><option>-v</option></entry>
+
+ <entry></entry>
+
+ <entry>elenca le stampanti conosciute dal sistema</entry>
+ </row>
+
+ <row>
+ <entry><option>-p
+ <replaceable>stampante</replaceable></option></entry>
+
+ <entry><option>-P<replaceable>stampante</replaceable></option></entry>
+
+ <entry>stampa lo stato della stampante specificata</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para><emphasis>Esempi:</emphasis></para>
+
+ <screen>&prompt.user; <userinput>lpstat</userinput>
+lp-153 frank 208068 Apr 29 15:14 on lp </screen>
+ </sect2>
+
+ <sect2 id="system-resource-print-cancel-lprm">
+ <title>cancel/lprm - cancella un job di stampa</title>
+
+ <para>Alcuni utenti possono cancellare solamente i loro job di
+ stampa.</para>
+
+ <para><emphasis>Sintassi</emphasis></para>
+
+ <para><command>cancel [<replaceable>id-richiesta</replaceable>]
+ [<replaceable>stampante</replaceable>]</command></para>
+
+ <para><command>lprm [<replaceable>opzioni</replaceable>]
+ [<replaceable>job#</replaceable>]
+ [<replaceable>username</replaceable>]</command></para>
+
+ <para><emphasis>Opzioni generali</emphasis></para>
+
+ <informaltable frame="none">
+ <tgroup cols="3">
+ <colspec colwidth="2in">
+
+ <colspec colwidth="2in">
+
+ <colspec colwidth="2in">
+
+ <thead>
+ <row>
+ <entry>cancel</entry>
+
+ <entry>lprm</entry>
+
+ <entry>funzione</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry></entry>
+
+ <entry><option>-P<replaceable>stampante</replaceable></option></entry>
+
+ <entry>specifica la stampante</entry>
+ </row>
+
+ <row>
+ <entry></entry>
+
+ <entry><option>-</option></entry>
+
+ <entry>tutti i job dell'utente</entry>
+ </row>
+
+ <row>
+ <entry><option>-u
+ [<replaceable>login-ID-list</replaceable>]</option></entry>
+
+ <entry></entry>
+
+ <entry>lista dell'utente</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para><emphasis>Esempi:</emphasis></para>
+
+ <para>Per cancellare il job sottomesso in precedenza:</para>
+
+ <screen>&prompt.user; <userinput>cancel lp-153</userinput></screen>
+ </sect2>
+
+ <sect2 id="system-resource-print-pr">
+ <title>pr - prepara file per la stampa</title>
+
+ <para>Il comando &man.pr.1; stampa l'intestazione e le informazioni
+ traccia che circoscrivono il file formattato. Si pu&ograve; specificare
+ il numero di pagine da stampare, le linee per pagina, le colonne, le
+ linee bianche, si pu&ograve; specificare la larghezza di pagina,
+ l'intestazione e le informazioni traccia e in che modo trattare il
+ carattere tab.</para>
+
+ <para><emphasis>Sintassi</emphasis></para>
+
+ <para><command>pr [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></para>
+
+ <para><emphasis>Opzioni generali</emphasis></para>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <colspec colwidth="2in">
+
+ <tbody>
+ <row>
+ <entry><option>+<replaceable>numero_pagina</replaceable></option></entry>
+
+ <entry>inizia a stampare al numero di pagina specificato</entry>
+ </row>
+
+ <row>
+ <entry><option>-<replaceable>colonne</replaceable></option></entry>
+
+ <entry>numero di colonne</entry>
+ </row>
+
+ <row>
+ <entry><option>-a</option></entry>
+
+ <entry>modifica l'opzione <replaceable>-colonne</replaceable> per
+ riempire le colonne nell'ordine round-robin</entry>
+ </row>
+
+ <row>
+ <entry><option>-d</option></entry>
+
+ <entry>doppio spazio</entry>
+ </row>
+
+ <row>
+ <entry><option>-e [<replaceable>carattere</replaceable>]
+ [<replaceable>gap</replaceable>]</option></entry>
+
+ <entry>spazio tab</entry>
+ </row>
+
+ <row>
+ <entry><option>-h
+ <replaceable>stringa_intestazione</replaceable></option></entry>
+
+ <entry>intestazione per ogni pagina</entry>
+ </row>
+
+ <row>
+ <entry><option>-l
+ <replaceable>linee</replaceable></option></entry>
+
+ <entry>linee per pagina</entry>
+ </row>
+
+ <row>
+ <entry><option>-t</option></entry>
+
+ <entry>non stampa l'intestazione e la traccia per ogni
+ pagina</entry>
+ </row>
+
+ <row>
+ <entry><option>-w
+ <replaceable>larghezza</replaceable></option></entry>
+
+ <entry>larghezza di pagina</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para><emphasis>Esempi:</emphasis></para>
+
+ <para>Il file contenente la lista di libri di P. G. Wodehouse Lord
+ Emsworth dovrebbe essere stampato con 14 linee per pagina (incluse 5 di
+ intestazione e 5 (vuote) linee traccia), dove l'opzione
+ <option>-e</option> specifica in che modo convertire i tab:</para>
+
+ <screen>&prompt.user; <userinput>pr -l 14 -e42 wodehouse</userinput>
+
+
+
+
+
+Apr 29 11:11 1996 wodehouse_emsworth_books Page 1
+
+
+
+
+Something Fresh [1915] Uncle Dynamite [1948]
+Leave it to Psmith [1923] Pigs Have Wings [1952]
+Summer Lightning [1929] Cocktail Time [1958]
+Heavy Weather [1933] Service with a Smile [1961]
+
+
+
+
+
+Apr 29 11:11 1996 wodehouse_emsworth_books Page 2
+
+
+
+
+Blandings Castle and Elsewhere [1935] Galahad at Blandings [1965]
+Uncle Fred in the Springtime [1939] A Pelican at Blandings [1969]
+Full Moon [1947] Sunset at Blandings [1977]</screen>
+ </sect2>
+ </sect1>
+</chapter>
+
+<!--
+ Local Variables:
+ mode: sgml
+ sgml-indent-data: t
+ sgml-omittag: nil
+ sgml-always-quote-attributes: t
+ sgml-parent-document: ("../book.sgml" "book" "chapter")
+ End:
+--> \ No newline at end of file
diff --git a/it_IT.ISO8859-15/books/unix-introduction/text-processing/chapter.sgml b/it_IT.ISO8859-15/books/unix-introduction/text-processing/chapter.sgml
new file mode 100644
index 0000000000..1c86cbbae9
--- /dev/null
+++ b/it_IT.ISO8859-15/books/unix-introduction/text-processing/chapter.sgml
@@ -0,0 +1,1124 @@
+<!--
+ The FreeBSD Italian Documentation Project
+
+ $FreeBSD$
+-->
+
+<chapter id="text-processing">
+ <title>Manipolazione del testo</title>
+
+ <sect1 id="text-processing-reg-exp-syntax">
+ <title>Sintassi delle espressioni regolari</title>
+
+ <para>Alcuni programmi di manipolazione del testo come
+ &man.grep.1;, &man.egrep.1;, &man.sed.1;, &man.awk.1; e &man.vi.1;
+ consentono di ricercare uno schema (pattern) piuttosto che una stringa
+ fissa. Questi schemi testuali sono conosciuti come <emphasis>espressioni
+ regolari</emphasis>. Si pu&ograve; formare un'espressione regolare
+ combinando caratteri normali con caratteri speciali, anche conosciuti
+ come <emphasis>meta-caratteri</emphasis>, secondo le successive regole.
+ Con queste espressioni regolari si pu&ograve; <emphasis>confrontare uno
+ schema</emphasis> su dati testuali. Le espressioni regolari si
+ presentano in tre diverse forme:</para>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <colspec colwidth="1.5in">
+
+ <tbody>
+ <row>
+ <entry><emphasis>Ancoraggi</emphasis></entry>
+
+ <entry>legano lo schema a una posizione sulla linea</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>Serie di caratteri</emphasis></entry>
+
+ <entry>indicano un carattere in una singola posizione</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>Modificatori</emphasis></entry>
+
+ <entry>specificano quante volte ripetere l'espressione
+ precedente</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>Segue la sintassi delle espressioni regolari. Alcuni programmi
+ accettano tutte queste sintassi, altri ne accettano solo alcune:</para>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <colspec colwidth="1in">
+
+ <tbody>
+ <row>
+ <entry><emphasis>.</emphasis></entry>
+
+ <entry>indica <emphasis>un</emphasis> singolo carattere eccetto
+ quello di newline</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>*</emphasis></entry>
+
+ <entry>indica <emphasis>zero o pi&ugrave;</emphasis> istanze del
+ singolo carattere (o meta-carattere) che lo precede</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>[<replaceable>abc</replaceable>]</emphasis></entry>
+
+ <entry>indica un carattere tra quelli racchiusi</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>[<replaceable>a-d</replaceable>]</emphasis></entry>
+
+ <entry>indica un carattere tra quelli compresi nel range</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>[^<replaceable>exp</replaceable>]</emphasis></entry>
+
+ <entry>indica un carattere tra quelli <emphasis>non</emphasis>
+ inclusi nell'espressione</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>^<replaceable>abc</replaceable></emphasis></entry>
+
+ <entry>l'espressione regolare deve iniziare all'<emphasis>inizio
+ della linea</emphasis> (Ancoraggio)</entry>
+ </row>
+
+ <row>
+ <entry><emphasis><replaceable>abc</replaceable>$</emphasis></entry>
+
+ <entry>l'espressione regolare deve finire alla <emphasis>fine della
+ linea</emphasis> (Ancoraggio)</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>\</emphasis></entry>
+
+ <entry>tratta il carattere successivo letteralmente. Viene
+ normalmente usato per mantenere inalterato il significato di un
+ carattere speciale come . e *.</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>\{<replaceable>n</replaceable>,<replaceable>m</replaceable>\}</emphasis></entry>
+
+ <entry>confronta l'espressione regolare precedente un numero minimo
+ <replaceable>n</replaceable> di volte e un numero massimo
+ <replaceable>m</replaceable> di volte
+ (<replaceable>n</replaceable> e <replaceable>m</replaceable>
+ possono assumere valori tra 0 e 255). I simboli \{ e \}
+ dovrebbero essere intesi come singoli operatori. In questo caso
+ il simbolo \ che precede le parentesi non &egrave; il carattere di
+ escape, ma assume un nuovo significato.</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>\&lt;<replaceable>abc</replaceable>\&gt;</emphasis></entry>
+
+ <entry>confronta l'espressione regolare racchiusa trattandola come
+ una singola parola. I limiti della parola sono definiti iniziando
+ con un newline o qualche altra cosa, eccetto una lettera, una
+ cifra o un underscore ( _ ), e finendo con la stessa cosa o con un
+ carattere di fine linea. Ancora, i simboli \&lt; e \&gt;
+ dovrebbero essere intesi come singoli operatori.</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>\(<replaceable>abc</replaceable>\)</emphasis></entry>
+
+ <entry>salva lo schema racchiuso in un buffer. Possono essere
+ salvati per ogni linea fino a nove schemi. &Egrave; possibile
+ riferirsi a questi schemi tramite la combinazione di caratteri
+ \<replaceable>n</replaceable>. Ancora una volta i simboli \( e \)
+ dovrebbero essere intesi come singoli operatori.</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>\<replaceable>n</replaceable></emphasis></entry>
+
+ <entry>dove <replaceable>n</replaceable> varia tra 1 e 9. Confronta
+ l'<replaceable>n-sima</replaceable> espressione precedentemente
+ salvata per la linea corrente. Le espressioni sono numerate
+ partendo da sinistra. Il simbolo \<replaceable>n</replaceable>
+ dovrebbe essere inteso come un singolo operatore.</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>&amp;</emphasis></entry>
+
+ <entry>mostra lo schema di ricerca precedente (usato al posto della
+ stringa)</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>Ci sono alcuni meta-caratteri usati solamente da &man.awk.1; e
+ &man.egrep.1;. Questi sono:</para>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <colspec colwidth="0.5in">
+
+ <tbody>
+ <row>
+ <entry><emphasis>+</emphasis></entry>
+
+ <entry>confronta una o pi&ugrave; delle espressioni precedenti (a
+ questo simbolo)</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>?</emphasis></entry>
+
+ <entry>confronta zero o alcune delle espressioni precedenti (a
+ questo simbolo)</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>|</emphasis></entry>
+
+ <entry>separatore. Confronta sia l'espressione precedente (a questo
+ simbolo) sia quella seguente</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>( )</emphasis></entry>
+
+ <entry>raggruppa le espressioni regolari all'interno delle parentesi
+ e applica una serie di confronti</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>Alcuni esempi di <emphasis>espressioni regolari</emphasis> comuni
+ sono:</para>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <colspec colwidth="2in">
+
+ <thead>
+ <row>
+ <entry>espressione regolare</entry>
+
+ <entry>indica</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry>cat</entry>
+
+ <entry>la stringa <emphasis>cat</emphasis></entry>
+ </row>
+
+ <row>
+ <entry>.at</entry>
+
+ <entry>alcune occorrenze di un carattere precedente ad
+ <emphasis>at</emphasis>, come cat, rat, mat, bat, fat, hat</entry>
+ </row>
+
+ <row>
+ <entry>xy*z</entry>
+
+ <entry>alcune occorrenze di un <emphasis>x</emphasis>, seguite da
+ zero o pi&ugrave; <emphasis>y</emphasis> e seguite da una
+ <emphasis>z</emphasis>.</entry>
+ </row>
+
+ <row>
+ <entry>^cat</entry>
+
+ <entry><emphasis>cat</emphasis> all'inizio della linea</entry>
+ </row>
+
+ <row>
+ <entry>cat$</entry>
+
+ <entry><emphasis>cat</emphasis> alla fine della linea</entry>
+ </row>
+
+ <row>
+ <entry>\*</entry>
+
+ <entry>alcune occorrenze di un asterisco</entry>
+ </row>
+
+ <row>
+ <entry>[cC]at</entry>
+
+ <entry><emphasis>cat</emphasis> o <emphasis>Cat</emphasis></entry>
+ </row>
+
+ <row>
+ <entry>[^a-zA-Z]</entry>
+
+ <entry>alcune occorrenze di caratteri non alfabetici</entry>
+ </row>
+
+ <row>
+ <entry>[0-9]$</entry>
+
+ <entry>alcune linee che finiscono con un numero</entry>
+ </row>
+
+ <row>
+ <entry>[A-Z][A-Z]*</entry>
+
+ <entry>una o pi&ugrave; lettere maiuscole</entry>
+ </row>
+
+ <row>
+ <entry>[A-Z]*</entry>
+
+ <entry>zero o alcune lettere maiuscole (in altre parole,
+ qualcosa)</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </sect1>
+
+ <sect1 id="text-processing-commands">
+ <title>Comandi di manipolazione del testo</title>
+
+ <table frame="all" id="text-processing-table-commands">
+ <title>Comandi di manipolazione del testo</title>
+
+ <tgroup cols="2">
+ <colspec colwidth="4.5in">
+
+ <thead>
+ <row>
+ <entry align="center">Comando/Sintassi</entry>
+
+ <entry align="center">Cosa fa</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry><command>awk/nawk [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>esamina gli schemi (pattern) all'interno di un file ed
+ elabora i risultati</entry>
+ </row>
+
+ <row>
+ <entry><command>grep/egrep/fgrep
+ [<replaceable>opzioni</replaceable>]
+ '<replaceable>stringa di ricerca</replaceable>'
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>ricerca nell'argomento (in questo caso probabilmente un
+ file) tutte le occorrenze della stringa di ricerca e le
+ elenca</entry>
+ </row>
+
+ <row>
+ <entry><command>sed [<replaceable>opzioni</replaceable>]
+ <replaceable>file</replaceable></command></entry>
+
+ <entry>editor di flusso per manipolare file da uno script o da
+ linea di comando</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <sect2 id="text-processing-commands-grep">
+ <title>grep</title>
+
+ <para>Questa sezione fornisce un'introduzione all'uso delle
+ <emphasis>espressioni regolari</emphasis> con &man.grep.1;.</para>
+
+ <para>L'utility &man.grep.1; viene usata per ricercare espressioni
+ regolari comuni che si presentano nei file Unix. Le espressioni
+ regolari, come quelle viste in precedenza, sono meglio specificate
+ all'interno di apostrofi (o caratteri di quoting singoli) quando
+ usate con l'utility &man.grep.1;. L'utility &man.egrep.1; fornisce
+ una capacit&agrave; di ricerca attraverso un set esteso di
+ meta-caratteri. La sintassi dell'utility &man.grep.1;, alcune delle
+ possibili opzioni e alcuni semplici esempi sono mostrati di
+ seguito.</para>
+
+ <para><emphasis>Sintassi</emphasis></para>
+
+ <para><command>grep [<replaceable>opzioni</replaceable>]
+ <replaceable>expreg</replaceable>
+ [<replaceable>file</replaceable>]</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>ignora la differenza tra caratteri maiuscoli e
+ minuscoli</entry>
+ </row>
+
+ <row>
+ <entry><option>-c</option></entry>
+
+ <entry>riporta solamente la somma del numero di linee contenenti
+ le corrispondenze, non le corrispondenze stesse</entry>
+ </row>
+
+ <row>
+ <entry><option>-v</option></entry>
+
+ <entry>inverte la ricerca, visualizzando solo le linee senza
+ corrispondenza</entry>
+ </row>
+
+ <row>
+ <entry><option>-n</option></entry>
+
+ <entry>mostra un numero di linea insieme alla linea su cui
+ &egrave; stata trovata una corrispondenza</entry>
+ </row>
+
+ <row>
+ <entry><option>-s</option></entry>
+
+ <entry>lavora in silenzio, riportando solo lo stato
+ finale:</entry>
+ </row>
+
+ <row>
+ <entry></entry>
+
+ <entry>0, per corrispondenze trovate</entry>
+ </row>
+
+ <row>
+ <entry></entry>
+
+ <entry>1, per nessuna corrispondenza</entry>
+ </row>
+
+ <row>
+ <entry></entry>
+
+ <entry>2, per errori</entry>
+ </row>
+
+ <row>
+ <entry><option>-l</option></entry>
+
+ <entry>elenca i nomi dei file, ma non le linee, nei quali sono
+ state trovate corrispondenze</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para><emphasis>Esempi:</emphasis></para>
+
+ <para>Si consideri il seguente file:</para>
+
+ <screen>{Unix prompt 5} <userinput>cat num.list</userinput>
+ 1 15 fifteen
+ 2 14 fourteen
+ 3 13 thirteen
+ 4 12 twelve
+ 5 11 eleven
+ 6 10 ten
+ 7 9 nine
+ 8 8 eight
+ 9 7 seven
+10 6 six
+11 5 five
+12 4 four
+13 3 three
+14 2 two
+15 1 one</screen>
+
+ <para>Ecco alcuni esempi di &man.grep.1; usando tale file.
+ Nel primo si ricerca il numero <emphasis>15</emphasis>:</para>
+
+ <screen>{Unix prompt 6} <userinput>grep '15' num.list</userinput>
+ 1 15 fifteen
+15 1 one</screen>
+
+ <para>Ora si usa l'opzione <option>-c</option> per contare il numero di
+ linee che corrispondono al precedente criterio di ricerca:</para>
+
+ <screen>{Unix prompt 7} <userinput>grep -c '15' num.list</userinput>
+2</screen>
+
+ <para>Qui la ricerca &egrave; pi&ugrave; generale: si selezionano tutte le
+ linee che contengono il carattere <emphasis>1</emphasis> seguito da un
+ <emphasis>1</emphasis> o un <emphasis>2</emphasis> o un
+ <emphasis>5</emphasis>:</para>
+
+ <screen>{Unix prompt 8} <userinput>grep '1[125]' num.list</userinput>
+ 1 15 fifteen
+ 4 12 twelve
+ 5 11 eleven
+11 5 five
+12 4 four
+15 1 one</screen>
+
+ <para>Ora si ricercano tutte le linee che <emphasis>iniziano</emphasis>
+ con uno <emphasis>spazio</emphasis>:</para>
+
+ <screen>{Unix prompt 9} <userinput>grep '^ ' num.list</userinput>
+ 1 15 fifteen
+ 2 14 fourteen
+ 3 13 thirteen
+ 4 12 twelve
+ 5 11 eleven
+ 6 10 ten
+ 7 9 nine
+ 8 8 eight
+ 9 7 seven</screen>
+
+ <para>Ora tutte le linee che <emphasis>non iniziano</emphasis> con uno
+ <emphasis>spazio</emphasis>:</para>
+
+ <screen>{Unix prompt 10} <userinput>grep '^[^ ]' num.list</userinput>
+10 6 six
+11 5 five
+12 4 four
+13 3 three
+14 2 two
+15 1 one</screen>
+
+ <para>L'ultimo esempio pu&ograve; anche essere realizzato usando l'opzione
+ <option>-v</option> insieme all stringa di ricerca originale,
+ esempio:</para>
+
+ <screen>{Unix prompt 11} <userinput>grep -v '^ ' num.list</userinput>
+10 6 six
+11 5 five
+12 4 four
+13 3 three
+14 2 two
+15 1 one</screen>
+
+ <para>Ora si ricercano tutte le linee che <emphasis>iniziano</emphasis>
+ con carattere <emphasis>compreso</emphasis> tra <emphasis>1</emphasis> e
+ <emphasis>9</emphasis>:</para>
+
+ <screen>{Unix prompt 12} <userinput>grep '^[1-9]' num.list</userinput>
+10 6 six
+11 5 five
+12 4 four
+13 3 three
+14 2 two
+15 1 one</screen>
+
+ <para>In questo esempio si ricercano alcune istanze di
+ <emphasis>t</emphasis> seguite da <emphasis>zero o alcune</emphasis>
+ occorrenze di <emphasis>e</emphasis>:</para>
+
+ <screen>{Unix prompt 13} <userinput>grep 'te*' num.list</userinput>
+ 1 15 fifteen
+ 2 14 fourteen
+ 3 13 thirteen
+ 4 12 twelve
+ 6 10 ten
+ 8 8 eight
+13 3 three
+14 2 two</screen>
+
+ <para>In questo esempio si ricercano alcune istanze di
+ <emphasis>t</emphasis> seguite da <emphasis>una o alcune</emphasis>
+ occorrenze di e:</para>
+
+ <screen>{Unix prompt 14} <userinput>grep 'tee*' num.list</userinput>
+1 15 fifteen
+2 14 fourteen
+3 13 thirteen
+6 10 ten</screen>
+
+ <para>Si pu&ograve; prendere il proprio input da un programma,
+ anzich&egrave; da un file. Qui si riportano alcune linee di output del
+ comando &man.who.1; che iniziano con la lettera
+ <emphasis>l</emphasis>.</para>
+
+ <screen>{Unix prompt 15} <userinput>who | grep '^l'</userinput>
+lcondron ttyp0 Dec 1 02:41 (lcondron-pc.acs.)</screen>
+ </sect2>
+
+ <sect2 id="text-processing-commands-sed">
+ <title>sed</title>
+
+ <para>L'editor di flusso non interattivo &man.sed.1; manipola un
+ flusso di input, linea per linea, creando specifici cambiamenti e
+ mandando il risultato su standard output.</para>
+
+ <para><emphasis>Sintassi</emphasis></para>
+
+ <para><command>sed [<replaceable>opzioni</replaceable>]
+ <replaceable>comando_di_editing</replaceable>
+ [<replaceable>file</replaceable>]</command></para>
+
+ <para>Il formato per i comandi di editing &egrave;:</para>
+
+ <para><command>[<replaceable>indirizzo1</replaceable>[,<replaceable>indirizzo2</replaceable>]]
+ [<replaceable>funzione</replaceable>]
+ [<replaceable>argomenti</replaceable>]</command></para>
+
+ <para>dove gli indirizzi sono facoltativi e possono essere separati dalla
+ funzione tramite spazi o tab. La funzione &egrave; obbligatoria.
+ L'argomento pu&ograve; essere facoltativo o obbligatorio a seconda della
+ funzione usata.</para>
+
+ <para>Gli <emphasis>indirizzi di linea numerati</emphasis> sono numeri
+ decimali di linea che partono dalla prima linea di input e si
+ incrementano di uno per ogni linea. Se vengono stabiliti pi&ugrave;
+ file di input il contatore continua cumulativamente attraverso i file.
+ L'ultima linea di input pu&ograve; essere specificata con il carattere
+ $.</para>
+
+ <para>Gli <emphasis>indirizzi di contesto</emphasis> sono schemi di
+ espressioni regolari racchiusi tra caratteri di slashe (/).</para>
+
+ <para>I comandi possono avere 0, 1 o 2 indirizzi separati da virgola con i
+ seguenti effetti:</para>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <colspec colwidth="2in">
+
+ <thead>
+ <row>
+ <entry># indirizzi</entry>
+
+ <entry>linee considerate</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry>0</entry>
+
+ <entry>tutte le linee di input</entry>
+ </row>
+
+ <row>
+ <entry>1</entry>
+
+ <entry>solamente le linee che corrispondono agli indirizzi
+ specificati</entry>
+ </row>
+
+ <row>
+ <entry>2</entry>
+
+ <entry>dalla prima linea che corrisponde al primo indirizzo fino
+ alla linea che corrisponde al secondo indirizzo, inclusa. Il
+ processo viene ripetuto per le linee interne.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>Le <emphasis>funzioni di sostituzione</emphasis> permettono di
+ ricercare contesti e sono specificate nella forma:</para>
+
+ <para><command>s/<replaceable>schema_espressione_regolare</replaceable>/<replaceable>stringa_di_rimpiazzo</replaceable>/<replaceable>flag</replaceable></command></para>
+
+ <para>e possono essere quotate con caratteri di quoting singoli (') se
+ sono specificate opzioni o funzioni aggiuntive. Questi schemi sono
+ identici agli indirizzi di contesto, eccetto che, mentre questi sono
+ normalmente chiusi tra slashe (/), nelle funzioni sono permessi alcuni
+ normali caratteri per specificare i delimitatori, oltre a newline e
+ spazio. La stringa di rimpiazzo non &egrave; uno schema di
+ espressione regolare; qui i caratteri non hanno significati speciali,
+ fatta eccezione di:</para>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <colspec colwidth="0.5in">
+
+ <tbody>
+ <row>
+ <entry><emphasis>&amp;</emphasis></entry>
+
+ <entry>che sostituisce tale simbolo con la stringa
+ <replaceable>schema_espressione_regolare</replaceable></entry>
+ </row>
+
+ <row>
+ <entry><emphasis>\<replaceable>n</replaceable></emphasis></entry>
+
+ <entry>sostituisce tale simbolo con
+ l'<replaceable>n-esima</replaceable> stringa corrispondente a
+ <replaceable>schema_espressione_regolare</replaceable> chiusa
+ tra una coppia di '\(','\)'</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>Questi caratteri speciali possono essere messi in escape con il
+ carattere backslash (\) per rimuovere il loro significato
+ speciale.</para>
+
+ <para><emphasis>Opzioni generali</emphasis></para>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <colspec colwidth="1.5in">
+
+ <tbody>
+ <row>
+ <entry><option>-e
+ <replaceable>script</replaceable></option></entry>
+
+ <entry>script di editing</entry>
+ </row>
+
+ <row>
+ <entry><option>-n</option></entry>
+
+ <entry>non stampa l'output di default, ma solamente quelle linee
+ specificate dalle funzioni <command>p</command> o
+ <command>s///p</command></entry>
+ </row>
+
+ <row>
+ <entry><option>-f
+ <replaceable>script_file</replaceable></option></entry>
+
+ <entry>prende lo script di editing dal file specificato</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>Alcune valide flag per le funzioni sostitutive sono:</para>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <colspec colwidth="0.5in">
+
+ <tbody>
+ <row>
+ <entry><option>d</option></entry>
+
+ <entry>cancella lo schema</entry>
+ </row>
+
+ <row>
+ <entry><option>g</option></entry>
+
+ <entry>sostituzione globale dello schema</entry>
+ </row>
+
+ <row>
+ <entry><option>p</option></entry>
+
+ <entry>stampa le linee</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para><emphasis>Esempi:</emphasis></para>
+
+ <para>Questo esempio modifica tutte le accidentali virgole (,) in una
+ virgola seguita da uno spazio (, ) quindi crea l'output:</para>
+
+ <screen>&prompt.user; <userinput>cat filey | sed s/,/,\ /g</userinput></screen>
+
+ <para>Il seguente esempio rimuove tutte le accidentali
+ <emphasis>Jr</emphasis> precedute da uno spazio
+ (<emphasis>Jr</emphasis>) all'interno del file
+ <filename>filey</filename>:</para>
+
+ <screen>&prompt.user; <userinput>cat filey | sed s/\ Jr//g</userinput></screen>
+
+ <para>Per realizzare operazioni multiple sull'input, si precede ogni
+ operazione con l'opzione <option>-e</option> (edit) e si quota la
+ stringa. Ad esempio, per filtrare le linee contenenti <quote>Date:
+ </quote> e <quote>From: </quote> e rimpiazzarle senza i due punti
+ (:):</para>
+
+ <screen>&prompt.user; <userinput>sed -e 's/Date: /Date /' -e 's/From: /From /'</userinput></screen>
+
+ <para>Per visualizzare solamente le linee del file che iniziano con
+ <quote>Date:</quote> e includerne una che inizia con
+ <quote>Name:</quote>:</para>
+
+ <screen>&prompt.user; <userinput>sed -n '/^Date:/,/^Name:/p'</userinput></screen>
+
+ <para>Per stampare solamente le prime 10 linee dell'input (un rimpiazzo di
+ &man.head.1;):</para>
+
+ <screen>&prompt.user; <userinput>sed -n 1,10p</userinput></screen>
+ </sect2>
+
+ <sect2 id="text-processing-commands-awk-nawk-gawk">
+ <title>awk, nawk, gawk</title>
+
+ <para>&man.awk.1; &egrave; un linguaggio di elaborazione e ricerca di
+ schemi. Il suo nome deriva dalle ultime iniziali dei tre autori:
+ Alfred. V. Aho, Peter. J.Weinberger e Brian. W. Kernighan.
+ <command>nawk</command> &egrave; un <emphasis>nuovo</emphasis>
+ &man.awk.1;, una nuova versione del programma e &man.gawk.1; &egrave;
+ il <emphasis>gnu</emphasis> &man.awk.1;, da parte della Free Software
+ Foundation. Ogni versione &egrave; leggermente differente. Qui ci si
+ limiter&agrave; ad illustrare semplici esempi che potrebbero andar bene
+ per tutte le versioni. In alcuni sistemi operativi &man.awk.1; &egrave;
+ in realt&agrave; <command>nawk</command>.</para>
+
+ <para>&man.awk.1; ricerca schemi nel suo input e realizza le operazioni
+ specificate su ogni linea o sui campi di linea che contengono tali
+ schemi. Le espressioni dello schema di confronto per &man.awk.1;
+ possono essere specificate sia attraverso linea di comando, sia
+ inserendole in un file e usando l'opzione <option>-f
+ <replaceable>file_programma</replaceable></option>.</para>
+
+ <para><emphasis>Sintassi</emphasis></para>
+
+ <para><command>awk <replaceable>programma</replaceable>
+ [<replaceable>file</replaceable>]</command></para>
+
+ <para>dove <replaceable>programma</replaceable> &egrave; composto da uno o
+ pi&ugrave; dei seguenti campi:</para>
+
+ <para><replaceable>schema</replaceable>
+ { <replaceable>azione</replaceable> }</para>
+
+ <para>Ogni linea di input viene verificata con lo schema di confronto
+ insieme alla specifica azione che bisogna realizzare per ogni
+ corrispondenza trovata. Questo continua attraverso la completa sequenza
+ di schemi, quindi la prossima linea di input viene verificata.</para>
+
+ <para>L'<emphasis>input</emphasis> &egrave; diviso tra
+ <emphasis>record</emphasis> e <emphasis>campi</emphasis>. Il separatore
+ di <emphasis>record</emphasis> di default &egrave; newline e la
+ variabile <literal>NR</literal> tiene il conto dei record. Il
+ separatore di <emphasis>campo</emphasis> di default &egrave; uno spazio
+ bianco, <emphasis>spazi</emphasis> e <emphasis>tab</emphasis>, e la
+ variabile <literal>NF</literal> tiene il conto dei campi. I separatori
+ di input del campo, <literal>FS</literal> e del record,
+ <literal>RS</literal>, possono essere settati in qualsiasi momento per
+ farli corrispondere a singoli caratteri specifici. I separatori di
+ output del campo, <literal>OFS</literal> e del record,
+ <literal>ORS</literal>, possono essere modificati, se si desidera, con
+ singoli caratteri specifici.
+ <literal>$<replaceable>n</replaceable></literal>, dove
+ <replaceable>n</replaceable> &egrave; un intero, viene usato per
+ rappresentare l'<replaceable>n-esimo</replaceable> campo di un record
+ di input, mentre <literal>$0</literal> rappresenta l'intero record
+ di input.</para>
+
+ <para><literal>BEGIN</literal> e <literal>END</literal> sono speciali
+ schemi che vengono verificati rispettivamente all'inizio dell'input,
+ prima che il primo campo sia letto e alla fine dell'input, dopo che
+ l'ultimo campo &egrave; stato letto.</para>
+
+ <para>La <emphasis>stampa</emphasis> &egrave; permessa attraverso
+ l'istruzione <command>print</command> e l'istruzione per la stampa
+ formattata <command>printf</command>.</para>
+
+ <para>Gli <emphasis>schemi</emphasis> (pattern) possono essere
+ espressioni regolari, espressioni aritmetiche relazionali, espressioni
+ di valutazione di stringhe e combinazioni buleane di alcune di queste.
+ In quest'ultimo caso gli schemi possono essere combinati con i seguenti
+ operatori buleani, usando le parentesi per definire le
+ combinazioni:</para>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <colspec colwidth="0.5in">
+
+ <tbody>
+ <row>
+ <entry><emphasis>||</emphasis></entry>
+
+ <entry>or</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>&amp;&amp;</emphasis></entry>
+
+ <entry>and</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>!</emphasis></entry>
+
+ <entry>not</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>La separazione di schemi con virgole definisce un
+ <emphasis>range</emphasis> in cui lo schema &egrave; applicabile,
+ esempio:</para>
+
+ <para><command>/<replaceable>primo</replaceable>/,/<replaceable>ultimo</replaceable>/</command></para>
+
+ <para>seleziona tutte le linee partendo con quella che contiene
+ <replaceable>primo</replaceable> e continuando inclusivamente fino alla
+ linea che contiene <replaceable>ultimo</replaceable>.</para>
+
+ <para>Per selezionare le linee da 15 a 20 si usa il seguente
+ schema:</para>
+
+ <para>NR==15 , NR==20</para>
+
+ <para>Le <emphasis>espressioni regolari</emphasis> devono essere chiuse
+ tra slashe (/) e i meta-caratteri possono essere messi in escape con il
+ carattere di backslash (\). Le espressioni regolari possono essere
+ raggruppate con gli operatori seguenti:</para>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <colspec colwidth="0.5in">
+
+ <tbody>
+ <row>
+ <entry><emphasis>|</emphasis></entry>
+
+ <entry>per alternative separate</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>+</emphasis></entry>
+
+ <entry>una o pi&ugrave;</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>?</emphasis></entry>
+
+ <entry>zero o una</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>Un confronto di espressione regolare pu&ograve; essere specificato
+ con:</para>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <colspec colwidth="0.5in">
+
+ <tbody>
+ <row>
+ <entry><emphasis>~</emphasis></entry>
+
+ <entry>contiene l'espressione</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>!~</emphasis></entry>
+
+ <entry>non contiene l'espressione</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>Quindi il programma:</para>
+
+ <programlisting>$1 ~ /[Ff]rank/</programlisting>
+
+ <para>&egrave; vero se il primo campo, $1, contiene "Frank" o "frank"
+ dovunque all'interno del campo. Per confrontare un campo identico a
+ "Frank" o "frank" si usa:</para>
+
+ <programlisting>$1 ~ /^[Ff]rank$/</programlisting>
+
+ <para>Le <emphasis>espressioni relazionali</emphasis> sono permesse usando
+ i seguenti operatori relazionali:</para>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <colspec colwidth="0.5in">
+
+ <tbody>
+ <row>
+ <entry>&lt;</entry>
+
+ <entry>minore di</entry>
+ </row>
+
+ <row>
+ <entry>&lt;=</entry>
+
+ <entry>minore o uguale a</entry>
+ </row>
+
+ <row>
+ <entry>= =</entry>
+
+ <entry>uguale a</entry>
+ </row>
+
+ <row>
+ <entry>&gt;=</entry>
+
+ <entry>maggiore o uguale a</entry>
+ </row>
+
+ <row>
+ <entry>!=</entry>
+
+ <entry>non uguale a</entry>
+ </row>
+
+ <row>
+ <entry>&gt;</entry>
+
+ <entry>maggiore di</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>Non si pu&ograve; conoscere su due piedi se le variabili sono
+ stringhe o numeri. Se nessun operando &egrave; riconosciuto per essere
+ un numero, sono realizzati confronti di stringhe. Altrimenti, viene
+ realizzata una comparazione numerica. In mancanza di informazioni per
+ il contrario, viene realizzata una comparazione di stringa, cos&igrave;
+ questa:</para>
+
+ <para>$1 &gt; $2</para>
+
+ <para>verr&agrave; valutata con valori di tipo stringa. Per assicurarsi
+ una valutazione numerica, costruire qualcosa simile a:</para>
+
+ <para>( $1 + 0 ) &gt; $2</para>
+
+ <para>Le <emphasis>funzioni matematiche</emphasis> exp, log e sqrt sono di
+ tipo built-in.</para>
+
+ <para>Altre funzioni <emphasis>built-in</emphasis> sono:</para>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <colspec colwidth="1.5in">
+
+ <tbody>
+ <row>
+ <entry><emphasis>index(<replaceable>s</replaceable>,<replaceable>t</replaceable>)</emphasis></entry>
+
+ <entry>ritorna la posizione della stringa
+ <replaceable>s</replaceable> dove si presenta il primo
+ <replaceable>t</replaceable> o 0 se non esiste</entry>
+ </row>
+
+ <row>
+ <entry><emphasis>lenght(<replaceable>s</replaceable>)</emphasis></entry>
+
+ <entry>ritorna la lunghezza della stringa
+ <replaceable>s</replaceable></entry>
+ </row>
+
+ <row>
+ <entry><emphasis>substr(<replaceable>s</replaceable>,<replaceable>m</replaceable>,<replaceable>n</replaceable>)</emphasis></entry>
+
+ <entry>ritorna l'<replaceable>n-esimo</replaceable> carattere della
+ sottostringa di <replaceable>s</replaceable>, iniziando dalla
+ posizione <replaceable>m</replaceable></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>Gli <emphasis>array</emphasis> sono dichiarati automaticamente
+ quando vengono usati, per esempio:</para>
+
+ <para><literal>arr[i]=$1</literal></para>
+
+ <para>assegna il primo campo del corrente record di input all'i-esimo
+ elemento dell'array.</para>
+
+ <para>Le espressioni di controllo di flusso <emphasis>if-else</emphasis>,
+ <emphasis>while</emphasis> e <emphasis>for</emphasis> sono permesse con
+ la sintassi del <emphasis>C</emphasis>:</para>
+
+ <para><command>for (i=1; i &lt;= NF; i++) {azioni}</command></para>
+
+ <para><command>while (i&lt;=NF) {azioni}</command></para>
+
+ <para><command>if (i&lt;NF) {azioni}</command></para>
+
+ <para><emphasis>Opzioni generali</emphasis></para>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <colspec colwidth="1.5in">
+
+ <tbody>
+ <row>
+ <entry><option>-f
+ <replaceable>file_programma</replaceable></option></entry>
+
+ <entry>legge i comandi dal file specificato</entry>
+ </row>
+
+ <row>
+ <entry><option>-F<replaceable>c</replaceable></option></entry>
+
+ <entry>usa il carattere <replaceable>c</replaceable> come il
+ carattere di separatore di campo</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para><emphasis>Esempi:</emphasis></para>
+
+ <screen>&prompt.user; <userinput>cat filex | tr a-z A-Z | awk -F: '{printf("7R %-6s %-9s %-24s \n",$1,$2,$3)}' > upload.file</userinput></screen>
+
+ <para>effettua <command>cat</command> su <filename>filex</filename>, che
+ &egrave; formattato in questo modo:</para>
+
+ <programlisting>nfb791:99999999:smith
+7ax791:999999999:jones
+8ab792:99999999:chen
+8aa791:999999999:mcnulty</programlisting>
+
+ <para>cambiando tutti i caratteri minuscoli in caratteri maiuscoli con
+ l'utility &man.tr.1; e formattando il file come mostrato di seguito, il
+ quale viene scritto nel file <filename>upload.file</filename></para>
+
+ <programlisting>7R NFB791 99999999 SMITH
+7R 7AX791 999999999 JONES
+7R 8AB792 99999999 CHEN
+7R 8AA791 999999999 MCNULTY</programlisting>
+ </sect2>
+ </sect1>
+</chapter>
+
+<!--
+ Local Variables:
+ mode: sgml
+ sgml-indent-data: t
+ sgml-omittag: nil
+ sgml-always-quote-attributes: t
+ sgml-parent-document: ("../book.sgml" "book" "chapter")
+ End:
+--> \ No newline at end of file