diff options
author | Tom Rhodes <trhodes@FreeBSD.org> | 2003-03-19 18:46:43 +0000 |
---|---|---|
committer | Tom Rhodes <trhodes@FreeBSD.org> | 2003-03-19 18:46:43 +0000 |
commit | 2e6dbe9339f479aa202df40d4bf72e905344eac6 (patch) | |
tree | 1695e38c2014ffa0c215c5e090341e2f4794da36 | |
parent | ef89ca0a6d1c816e5f80104647590992a97ae069 (diff) | |
download | doc-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
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à 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>© 1996-1998 University Technology Services, The Ohio State + University, Baker Systems Engineering Building, 1971 Neil Avenue, + Columbus, OH 43210.</para> + + <para>Tutti i diritti riservati. La ridistribuzione e l'uso, con o senza + modifiche, sono permesse purchè siano rispettate le seguenti + condizioni:</para> + + <orderedlist> + <listitem> + <para>La ridistribuzione deve contenere la precedente nota di + copyright, questa lista di condizioni, e il seguente + disclaimer.</para> + </listitem> + + <listitem> + <para>Né il nome dell'Università né i nomi dei + suoi contributori possono essere usati per appoggiare o promuovere + prodotti o servizi derivanti da questo documento senza un precedente + specifico permesso scritto.</para> + </listitem> + </orderedlist> + + <para>QUESTA PUBBLICAZIONE VIENE FORNITA <quote>COSÌ + COM'È</quote> SENZA NESSUN TIPO DI GARANZIA. QUESTA + PUBBLICAZIONE PUÒ CONTENERE IMPRECISIONI TECNICHE O ERRORI + TIPOGRAFICI.</para> + + <para>Unix è un marchio registrato della The Open Group, AT&T + è 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 è un sistema + operativo unico, come molti potrebbero pensare, bensì è + una grande famiglia di sistemi operativi (come ad esempio FreeBSD, + NetBSD, OpenBSD, BSD, AIX, System V, SunOS, varie distribuzioni di + Linux, ecc.), aventi comandi e caratteristiche simili e disponibili per + molte architetture hardware (come ad esempio x86, alpha, ecc.).</para> + + <para>Copyright e URL rivisti nel Settembre 1998.</para> + </abstract> + </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 è chiamata chap.foo, dove foo è il valore + dell'attributo id di quel capitolo, e corrisponde al nome della directory + nella quale il file sgml del capitolo è salvato. + + I capitoli devono essere listati nell'ordine in cui sono referenziati. + + $FreeBSD$ +--> + +<!ENTITY chap.preface SYSTEM "preface/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ò 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ò 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à 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à 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ù caratteri stampabili + terminanti in <NL> o <NULL>. 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ù 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 è <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à 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ù caratteri stampabili + terminati con <NL> o <NULL>. 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ù 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ò 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 è utile nel determinare quale versione di un + file dovrebbe essere mantenuta quando c'è più 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 è 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 + < e quelle del secondo file sono precedute da >.</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à 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 + è in posizione 1)</entry> + </row> + + <row> + <entry><option>-d + <replaceable>delimitatore</replaceable></option></entry> + + <entry>delimitatore di campo (tab di default)</entry> + </row> + + <row> + <entry><option>-f + <replaceable>lista_campi</replaceable></option></entry> + + <entry>campi da selezionare (il primo campo è 1)</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Sia la lista dei caratteri che quella dei campi possono contenere + numeri (in ordine crescente) separati da virgole o da spazi bianchi e + possono contenere un trattino (-) per indicare un range. La mancanza di + un numero prima del trattino (esempio -5) o dopo il trattino + (esempio 5-), specifica rispettivamente un range completo che inizia con + il primo carattere o campo, o finisce con l'ultimo carattere o campo. + I caratteri bianchi di separazione di lista devono essere chiusi tra + caratteri di quoting. I campi di delimitazione possono essere chiusi + tra quoting se hanno un significato speciale di shell, ad esempio quando + specificano un carattere di tab o spazio.</para> + + <para><emphasis>Esempi:</emphasis></para> + + <para>In questi esempi si userà il file + <filename>users</filename>:</para> + + <programlisting>jdoe John Doe 4/15/96 +lsmith Laura Smith 3/12/96 +pchen Paul Chen 1/5/96 +jhsu Jake Hsu 4/17/96 +sphilip Sue Phillip 4/2/96</programlisting> + + <para>Se si desidera solo lo username e il nome reale dell'utente, il + comando &man.cut.1; può essere usato per ottenere solamente + queste informazioni:</para> + + <screen>&prompt.user; <userinput>cut -f 1,2 users</userinput> +jdoe John Doe +lsmith Laura Smith +pchen Paul Chen +jhsu Jake Hsu +sphilip Sue Phillip</screen> + + <para>Il comando &man.cut.1; può essere usato con altre opzioni. + L'opzione <option>-c</option> permette di selezionare caratteri. Per + selezionare i primi 4 caratteri:</para> + + <screen>&prompt.user; <userinput>cut -c 1-4 users</userinput></screen> + + <para>che produrrà:</para> + + <screen>jdoe +lsmi +pche +jhsu +sphi</screen> + + <para>in questo modo si selezionano solamente i primi 4 caratteri di ogni + linea.</para> + </sect2> + + <sect2 id="commands-work-files-paste"> + <title>paste - fusione di file</title> + + <para>Il comando &man.paste.1; permette di combinare insieme due + file. In una fusione, il delimitatore di default tra le colonne + è un tab, ma le opzioni permettono di usare altri + delimitatori.</para> + + <para><emphasis>Sintassi</emphasis></para> + + <para><command>paste [<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ò + comprendere singoli caratteri come una virgola, una stringa quotata, + uno spazio o alcune delle seguenti sequenze di escape:</para> + + <informaltable frame="none"> + <tgroup cols="2"> + <colspec colwidth="0.5in"> + + <tbody> + <row> + <entry>\n</entry> + + <entry>carattere newline</entry> + </row> + + <row> + <entry>\t</entry> + + <entry>carattere tab</entry> + </row> + + <row> + <entry>\\</entry> + + <entry>carattere backslash</entry> + </row> + + <row> + <entry>\0</entry> + + <entry>stringa vuota (carattere non-null)</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Può essere necessario quotare i delimitatori che hanno + significati speciali di shell.</para> + + <para>Un trattino (-) al posto di un nome di file viene usato per + indicare che quel campo dovrebbe venire da standard input.</para> + + <para><emphasis>Esempi:</emphasis></para> + + <para>Dato il file <filename>users</filename>:</para> + + <programlisting>jdoe John Doe 4/15/96 +lsmith Laura Smith 3/12/96 +pchen Paul Chen 1/5/96 +jhsu Jake Hsu 4/17/96 +sphilip Sue Phillip 4/2/96</programlisting> + + <para>e il file <filename>phone</filename>:</para> + + <programlisting>John Doe 555-6634 +Laura Smith 555-3382 +Paul Chen 555-0987 +Jake Hsu 555-1235 +Sue Phillip 555-7623</programlisting> + + <para>il comando &man.paste.1; può essere usato in combinazione + con il comando &man.cut.1; per creare un nuovo file, + <filename>listing</filename>, che include per tutti gli utenti lo + username, il nome reale, l'ultimo login e il numero di telefono. + Prima si estraggono i numeri di telefono all'interno del file temporaneo + <filename>temp.file</filename>:</para> + + <screen>&prompt.user; <userinput>cut -f2 phone > temp.file</userinput> +555-6634 +555-3382 +555-0987 +555-1235 +555-7623</screen> + + <para>Il risultato può essere incollato alla fine di ogni linea di + <filename>users</filename> e quindi rediretto nel nuovo file, + <filename>listing</filename>:</para> + + <screen>&prompt.user; <userinput>paste users temp.file > listing</userinput> +jdoe John Doe 4/15/96 237-6634 +lsmith Laura Smith 3/12/96 878-3382 +pchen Paul Chen 1/5/96 888-0987 +jhsu Jake Hsu 4/17/96 545-1235 +sphilip Sue Phillip 4/2/96 656-7623</screen> + + <para>Tutto questo può anche essere realizzato su una linea senza + il file temporaneo, con lo stesso risultato:</para> + + <screen>&prompt.user; <userinput>cut -f2 phone | paste users - > listing</userinput></screen> + + <para>In questo caso il trattino (-) funge come sostituto per il campo di + input (indica cioè l'output del comando &man.cut.1;).</para> + </sect2> + + <sect2 id="commands-work-files-touch"> + <title>touch - crea un file</title> + + <para>Il comando &man.touch.1; può essere usato per creare un nuovo + (vuoto) file o per aggiornare l'ultima data/ora di accesso di un + file esistente. Il comando viene usato primariamente quando uno script + richiede la pre-esistenza di un file (ad esempio per appendere delle + informazioni) o quando uno script controlla l'ultima data/ora in cui una + funzione è stata realizzata.</para> + + <para><emphasis>Sintassi</emphasis></para> + + <para><command>touch [<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> è:</para> + + <para><option><replaceable>MMDDhhmm</replaceable>[<replaceable>YY</replaceable>]</option></para> + + <para>dove questi simboli hanno gli stessi significati dei simboli + mostrati in precedenza.</para> + + <para>La data non può essere settata prima del 1969 o dopo il 18 + Gennaio 2038 (dipende dalle versione del sistema operativo Unix).</para> + + <para><emphasis>Esempi:</emphasis></para> + + <para>Per creare un file:</para> + + <screen>&prompt.user; <userinput>touch <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ò 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 è + <option>-lwc</option>.</para> + + <para><emphasis>Esempi:</emphasis></para> + + <para>Dato il file <filename>users</filename>:</para> + + <programlisting>jdoe John Doe 4/15/96 +lsmith Laura Smith 3/12/96 +pchen Paul Chen 1/5/96 +jhsu Jake Hsu 4/17/96 +sphilip Sue Phillip 4/2/96</programlisting> + + <para>il risultato dell'uso del comando &man.wc.1; su tale file è + il seguente:</para> + + <screen>&prompt.user; <userinput>wc users</userinput> +5 20 121 users</screen> + + <para>Il primo numero indica il numero di linee nel file, il secondo + indica il numero di parole e il terzo numero indica il numero di + caratteri.</para> + + <para>Usando il comando &man.wc.1; con una delle opzioni sopra citate + (<option>-l</option> per linee; <option>-w</option> per parole o + <option>-c</option> per caratteri) si ottiene come risultato solo + una delle precedenti informazioni. Per esempio, + <command>wc -l users</command> produce il risultato seguente:</para> + + <screen>5 users</screen> + </sect2> + + <sect2 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 + è 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 è abituato ad usare un comando chiamato + <command>chkmag</command>, ma il comando è stato riscritto e il + nuovo nome è <command>chkit</command>, creando un link simbolico + gli utenti eseguiranno automaticamente <command>chkit</command> quando + digitano il comando <command>chkmag</command>, eliminando la transizione + per il nuovo comando.</para> + + <para>Un link simbolico può essere creato nel modo seguente:</para> + + <screen>&prompt.user; <userinput>ln -s chkit chkmag</userinput></screen> + + <para>Ora il lungo listato per questi due file è il + seguente:</para> + + <screen>16 -rwxr-x--- 1 lindadb acs 15927 Apr 23 04:10 chkit +1 lrwxrwxrwx 1 lindadb acs 5 Apr 23 04:11 chkmag -> chkit</screen> + + <para>Notare che mentre i permessi di <command>chkmag</command> sono + aperti a tutti, poichè è linkato a + <command>chkit</command>, le caratteristiche dei permessi, del gruppo e + del proprietario di <command>chkit</command> saranno rispettate quando + <command>chkmag</command> viene invocato.</para> + + <para>Con un link simbolico, il link può esistere senza che il file + o la directory a cui è collegato esista.</para> + + <para>Un <emphasis>hard link</emphasis> può solamente essere creato + per un altro file sullo stesso file system, ma non per una directory + (eccetto per il super-user). Un hard link crea un nuovo elemento di + directory puntante allo stesso inode del file originale. Il file + linkato deve esistere prima che l'hard link possa essere creato. + Il file non sarà cancellato fino a quando tutti gli hard link + saranno rimossi. Per linkare i due file precedenti tramite un hard + link:</para> + + <screen>&prompt.user; <userinput>ln chkit chkmag</userinput></screen> + + <para>Quindi un lungo listato mostra che il numero di + <emphasis>inode</emphasis> (742) è lo stesso per entrambi i + file:</para> + + <screen>&prompt.user; <userinput>ls -il chkit chkmag</userinput> +742 -rwxr-x--- 2 lindadb acs 15927 Apr 23 04:10 chkit +742 -rwxr-x--- 2 lindadb acs 15927 Apr 23 04:10 chkmag</screen> + </sect2> + + <sect2 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à simili + all'opzione <option>-k + <replaceable>chiave</replaceable></option>.</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Per gli elementi di <emphasis>posizione</emphasis> + (<option>+/-</option>), <replaceable>pos1</replaceable> è il + numero di parola di inizio, iniziando da <emphasis>0</emphasis> e + <replaceable>pos2</replaceable> è il numero di parola di fine. + Quando -<replaceable>pos2</replaceable> non è specificato, il + campo di ordinamento continua fino alla fine del file. Sia + <replaceable>pos1</replaceable> che <replaceable>pos2</replaceable> + possono essere specificati nella forma + <replaceable>w</replaceable>.<replaceable>c</replaceable>, dove + <replaceable>w</replaceable> è il numero di parola e + <replaceable>c</replaceable> è il carattere all'interno della + parola. Per <emphasis>c 0</emphasis> si specifica il delimitatore che + precede il primo carattere e <emphasis>1</emphasis> è il primo + carattere della parola. Questi elementi possono essere seguiti da un + tipo di modificatore, esempio <emphasis>n</emphasis> per numerico, + <emphasis>b</emphasis> per saltare gli spazi bianchi ,ecc.</para> + + <para>Il campo <replaceable>chiave</replaceable> dell'opzione + <option>-k</option> ha la seguente sintassi:</para> + + <para><replaceable>campo_inizio</replaceable> + [<replaceable>tipo</replaceable>] + [ ,<replaceable>campo_fine</replaceable> + [<replaceable>tipo</replaceable>] ]</para> + + <para>dove:</para> + + <informaltable frame="none"> + <tgroup cols="2"> + <colspec colwidth="2.5in"> + + <tbody> + <row> + <entry><replaceable>campo_inizio, campo_fine</replaceable></entry> + + <entry>definiscono le chiavi per restringere l'ordinamento su una + porzione di linea</entry> + </row> + + <row> + <entry><replaceable>tipo</replaceable></entry> + + <entry>modifica l'ordinamento: validi modificatori sono dati dai + singoli caratteri (bdfiMnr) derivanti dalle simili opzioni di + ordinamento, ad esempio un tipo <emphasis>b</emphasis> equivale + a <option>-b</option>, ma applicato solamente nello specifico + campo di azione</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para><emphasis>Esempi:</emphasis></para> + + <para>Dato il file <filename>users</filename>:</para> + + <programlisting>jdoe John Doe 4/15/96 +lsmith Laura Smith 3/12/96 +pchen Paul Chen 1/5/96 +jhsu Jake Hsu 4/17/96 +sphilip Sue Phillip 4/2/96</programlisting> + + <para>ordinando con &man.sort.1; gli utenti si produce:</para> + + <programlisting>jdoe John Doe 4/15/96 +jhsu Jake Hsu 4/17/96 +lsmith Laura Smith 3/12/96 +pchen Paul Chen 1/5/96 +sphilip Sue Phillip 4/2/96</programlisting> + + <para>Se, tuttavia, si desidera un elenco in ordine di nome, si usa + l'opzione per specificare su quale campo ordinare (i campi sono numerati + partendo da 0):</para> + + <screen>&prompt.user; <userinput>sort +2 users</userinput> +pchen Paul Chen 1/5/96 +jdoe John Doe 4/15/96 +jhsu Jake Hsu 4/17/96 +sphilip Sue Phillip 4/2/96 +lsmith Laura Smith 3/12/96</screen> + + <para>Per ribaltare l'ordine:</para> + + <screen>&prompt.user; <userinput>sort -r users</userinput> +sphilip Sue Phillip 4/2/96 +pchen Paul Chen 1/5/96 +lsmith Laura Smith 3/12/96 +jhsu Jake Hsu 4/17/96 +jdoe John Doe 4/15/96</screen> + + <para>Un'opzione particolarmente utile di ordinamento è l'opzione + <option>-u</option>, che elimina gli elementi duplicati nel file mentre + si ordina il file. Per esempio, il file + <filename>todays.logins</filename>:</para> + + <programlisting>sphillip +jchen +jdoe +lkeres +jmarsch +ageorge +lkeres +proy +jchen</programlisting> + + <para>mostra una lista di ogni username che ha effettuato il login nel + sistema in giornata. Se si vuole conoscere quanti unici utenti abbiano + effettuato il login nel sistema in giornata, usando &man.sort.1; + con l'opzione <option>-u</option>, la lista conterrà ciascun + utente una volta sola. (Il comando può essere mandato in pipe a + <command>wc -l</command> per ottenere direttamente il numero):</para> + + <screen>&prompt.user; <userinput>sort -u todays.logins</userinput> +ageorge +jchen +jdoe +jmarsch +lkeres +proy +sphillip</screen> + </sect2> + + <sect2 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; è + 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ù 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ò essere: + <emphasis>d</emphasis> = decimale, <emphasis>o</emphasis> = + ottale <emphasis>x</emphasis> = esadecimale (solamente + SVR4)</entry> + </row> + + <row> + <entry><option>-o</option></entry> + + <entry>fa precedere alla stringa l'offset di byte in decimale + (solamente BSD)</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para><emphasis>Esempi:</emphasis></para> + + <screen>&prompt.user; <userinput>strings /bin/cut</userinput> +SUNW_OST_OSCMD +nessun delimitatore specificato +delimitatore non valido +b:c:d:f:ns +cut: -n può solo essere usato con -b +cut: -d può solo essere usato con -f +cut: -s può solo essere usato con -f +nessuna lista specificata +cut: %s non si riesce ad aprire +il range specificato non è valido +troppi range specificati +i range devono essere crescenti +carattere non valido nel range +Errore interno nel processare l'input +carattere multibyte non valido +incapace di allocare memoria sufficiente +incapace di allocare memoria sufficiente +cut: +uso: cut -b lista [-n] [filename ...] + cut -c lista [filename ...] + cut -f lista [-d delim] [-s] [filename]</screen> + </sect2> + + <sect2 id="commands-work-files-file"> + <title>file - mostra il tipo di file</title> + + <para>Il comando &man.file.1; esamina il file specificato e cerca di + determinare che tipo di file esso sia. Questo viene fatto leggendo i + primi byte del file e confrontandoli con la tabella + <filename>/etc/magic</filename>. Il comando &man.file.1; + può determinare file di testo ASCII, file formattati tar, file + compressi, ecc.</para> + + <para><emphasis>Sintassi</emphasis></para> + + <para><command>file [<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> + è <emphasis>0</emphasis> o assente, il carattere + <replaceable>x</replaceable> viene assunto come valida corrispondenza + richiesta in <replaceable>stringa1</replaceable>.</para> + + <para>I caratteri possono includere le notazioni + <emphasis>\<replaceable>ottale</replaceable></emphasis> (BSD e SVR4) e + <emphasis>\<replaceable>carattere</replaceable></emphasis> (solamente + SVR4). Qui <emphasis><replaceable>ottale</replaceable></emphasis> viene + sostituito da una, due o tre cifre di interi ottali che codificano un + carattere ASCII e + <emphasis><replaceable>carattere</replaceable></emphasis> può + essere uno di questi:</para> + + <informaltable frame="none"> + <tgroup cols="2"> + <colspec colwidth="0.5in"> + + <tbody> + <row> + <entry><emphasis>b</emphasis></entry> + + <entry>back space</entry> + </row> + + <row> + <entry><emphasis>f</emphasis></entry> + + <entry>form feed</entry> + </row> + + <row> + <entry><emphasis>n</emphasis></entry> + + <entry>newline</entry> + </row> + + <row> + <entry><emphasis>r</emphasis></entry> + + <entry>return</entry> + </row> + + <row> + <entry><emphasis>t</emphasis></entry> + + <entry>tab</entry> + </row> + + <row> + <entry><emphasis>v</emphasis></entry> + + <entry>tab verticale</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>La versione SVR4 di &man.tr.1; permette l'operando + :<replaceable>classe</replaceable>: nel campo stringa dove + <replaceable>classe</replaceable> può assumere uno dei seguenti + valori di classificazione carattere:</para> + + <informaltable frame="none"> + <tgroup cols="2"> + <colspec colwidth="1in"> + + <tbody> + <row> + <entry><emphasis>alpha</emphasis></entry> + + <entry>caratteri alfabetici</entry> + </row> + + <row> + <entry><emphasis>lower</emphasis></entry> + + <entry>caratteri alfabetici minuscoli</entry> + </row> + + <row> + <entry><emphasis>upper</emphasis></entry> + + <entry>caratteri alfabetici maiuscoli</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para><emphasis>Opzioni generali</emphasis></para> + + <informaltable frame="none"> + <tgroup cols="2"> + <colspec colwidth="0.5in"> + + <tbody> + <row> + <entry><option>-c</option></entry> + + <entry>completa il set di caratteri in + <replaceable>stringa1</replaceable></entry> + </row> + + <row> + <entry><option>-d</option></entry> + + <entry>cancella i caratteri in + <replaceable>stringa1</replaceable></entry> + </row> + + <row> + <entry><option>-s</option></entry> + + <entry>modifica una stringa di caratteri ripetuti in + <replaceable>stringa1</replaceable> in caratteri singoli</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para><emphasis>Esempi:</emphasis></para> + + <para>L'esempio seguente usa come file di input una lista di libri di + P. G. Wodehouse Jeeves & Wooster.</para> + + <programlisting>The Inimitable Jeeves [1923] The Mating Season [1949] +Carry On, Jeeves [1925] Ring for Jeeves [1953] +Very Good, Jeeves [1930] Jeeves and the Feudal Spirit [1954] +Thank You, Jeeves [1934] Jeeves in the Offing [1960] +Right Ho, Jeeves [1934] Stiff Upper Lip, Jeeves [1963] +The Code of the Woosters [1938] Much Obliged, Jeeves [1971] +Joy in the Morning [1946] Aunts Aren't Gentlemen [1974]</programlisting> + + <para>Per tradurre tutte le lettere alfabetiche minuscole in maiuscole si + possono usare:</para> + + <para><command>tr '[a-z]' '[A-Z]'</command></para> + + <para>oppure</para> + + <para><command>tr '[:lower:]' '[:upper:]'</command></para> + + <para>Affinchè &man.tr.1; legga da &man.stdin.4; si usa &man.cat.1; + in pipe con &man.tr.1;, così:</para> + + <screen>&prompt.user; <userinput>cat wodehouse | tr '[a-z]' '[A-Z]'</userinput> +THE INIMITABLE JEEVES [1923] THE MATING SEASON [1949] +CARRY ON, JEEVES [1925] RING FOR JEEVES [1953] +VERY GOOD, JEEVES [1930] JEEVES AND THE FEUDAL SPIRIT [1954] +THANK YOU, JEEVES [1934] JEEVES IN THE OFFING [1960] +RIGHT HO, JEEVES [1934] STIFF UPPER LIP, JEEVES [1963] +THE CODE OF THE WOOSTERS [1938] MUCH OBLIGED, JEEVES [1971] +JOY IN THE MORNING [1946] AUNTS AREN'T GENTLEMEN [1974]</screen> + + <para>Ora si cancellano tutti i numeri con:</para> + + <screen>&prompt.user; <userinput>cat wodehouse | tr -d '[0-9]'</userinput> +The Inimitable Jeeves [] The Mating Season [] +Carry On, Jeeves [] Ring for Jeeves [] +Very Good, Jeeves [] Jeeves and the Feudal Spirit [] +Thank You, Jeeves [] Jeeves in the Offing [] +Right Ho, Jeeves [] Stiff Upper Lip, Jeeves [] +The Code of the Woosters [] Much Obliged, Jeeves [] +Joy in the Morning [] Aunts Aren't Gentlemen []</screen> + + <para>Per trattenere tutte le occorrenze multiple dei caratteri e, r + e f:</para> + + <screen>&prompt.user; <userinput>cat wodehouse | tr -s 'erf'</userinput> +The Inimitable Jeves [1923] The Mating Season [1949] +Cary On, Jeves [1925] Ring for Jeves [1953] +Very Good, Jeves [1930] Jeves and the Feudal Spirit [1954] +Thank You, Jeves [1934] Jeves in the Ofing [1960] +Right Ho, Jeves [1934] Stif Upper Lip, Jeves [1963] +The Code of the Woosters [1938] Much Obliged, Jeves [1971] +Joy in the Morning [1946] Aunts Aren't Gentlemen [1974]</screen> + </sect2> + + <sect2 id="commands-work-files-find"> + <title>find - cerca file</title> + + <para>Il comando &man.find.1; può cercare file in modo + ricorsivo nell'albero di directory indicato, confrontando il tipo di + file o lo schema specificato. &man.find.1; può quindi elencare i + file o eseguire arbitrari comandi in base ai risultati.</para> + + <para><emphasis>Sintassi</emphasis></para> + + <para><command>find <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> è:</para> + + <informaltable frame="none"> + <tgroup cols="2"> + <colspec colwidth="0.5in"> + + <tbody> + <row> + <entry><option>+<replaceable>n</replaceable></option></entry> + + <entry>più di <replaceable>n</replaceable> giorni</entry> + </row> + + <row> + <entry><replaceable>n</replaceable></entry> + + <entry>esattamente <replaceable>n</replaceable> giorni</entry> + </row> + + <row> + <entry><option>-<replaceable>n</replaceable></option></entry> + + <entry>meno di <replaceable>n</replaceable> giorni</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Alcune caratteristiche dei file che &man.find.1; può + ricercare sono:</para> + + <para>la <emphasis>data</emphasis> dell'ultimo accesso o dell'ultima + modifica al file:</para> + + <informaltable frame="none"> + <tgroup cols="2"> + <colspec colwidth="1.5in"> + + <tbody> + <row> + <entry align="center"><option>-atime + <replaceable>n</replaceable></option></entry> + + <entry>data di accesso, vero se l'accesso è di + <replaceable>n</replaceable> giorni fà</entry> + </row> + + <row> + <entry align="center"><option>-ctime + <replaceable>n</replaceable></option></entry> + + <entry>data di cambiamento, vero se lo stato del file è + stato modificato <replaceable>n</replaceable> giorni + fà</entry> + </row> + + <row> + <entry align="center"><option>-mtime + <replaceable>n</replaceable></option></entry> + + <entry>data di modifica, vero se i dati del file sono stati + modificati <replaceable>n</replaceable> giorni fà</entry> + </row> + + <row> + <entry><option>-newer + <replaceable>filename</replaceable></option></entry> + + <entry>vero se più recente del file specificato</entry> + </row> + + <row> + <entry><option>-type + <replaceable>tipo</replaceable></option></entry> + + <entry><emphasis>tipo</emphasis> di <emphasis>file</emphasis>, + dove <replaceable>tipo</replaceable> può essere:</entry> + </row> + + <row> + <entry align="center"><emphasis>b</emphasis></entry> + + <entry>file speciale a blocchi</entry> + </row> + + <row> + <entry align="center"><emphasis>c</emphasis></entry> + + <entry>file speciale a caratteri</entry> + </row> + + <row> + <entry align="center"><emphasis>d</emphasis></entry> + + <entry>directory</entry> + </row> + + <row> + <entry align="center"><emphasis>l</emphasis></entry> + + <entry>link simbolico</entry> + </row> + + <row> + <entry align="center"><emphasis>p</emphasis></entry> + + <entry>file pipe (fifo)</entry> + </row> + + <row> + <entry align="center"><emphasis>f</emphasis></entry> + + <entry>file regolare</entry> + </row> + + <row> + <entry><option>-fstype + <replaceable>tipo</replaceable></option></entry> + + <entry><emphasis>tipo</emphasis> di <emphasis>file + system</emphasis>, dove <replaceable>tipo</replaceable> + può essere un valido tipo di file system, esempio + <emphasis>ufs</emphasis> (Unix File System) e + <emphasis>nfs</emphasis> (Network File System)</entry> + </row> + + <row> + <entry><option>-user + <replaceable>username</replaceable></option></entry> + + <entry>vero se il file appartiene all'utente specificato</entry> + </row> + + <row> + <entry><option>-group + <replaceable>groupname</replaceable></option></entry> + + <entry>vero se il file appartiene al gruppo specificato</entry> + </row> + + <row> + <entry><option>-perm + [-]<replaceable>modi</replaceable></option></entry> + + <entry>permessi del file, dove <replaceable>modi</replaceable> + è la modalità ottale usata dal comando + &man.chmod.1;. Quando <replaceable>modi</replaceable> è + preceduto da un segno meno, solamente i bit che sono specificati + vengono confrontati.</entry> + </row> + + <row> + <entry><option>-exec + <replaceable>comando</replaceable></option></entry> + + <entry>esegue il comando specificato. La fine del comando viene + indicata con un escape e punto e virgola (\;). L'argomento del + comando, {}, sostituisce il path name corrente.</entry> + </row> + + <row> + <entry><option>-name + <replaceable>filename</replaceable></option></entry> + + <entry>vero se il nome del file è quello specificato. + Confronti con schemi wild card sono permessi se il + meta-carattere viene messo in escape per la shell con un + backslash (\)</entry> + </row> + + <row> + <entry><option>-ls</option></entry> + + <entry>sempre vero. Stampa una lista lunga del path name + corrente</entry> + </row> + + <row> + <entry><option>-print</option></entry> + + <entry>stampa i path name trovati (default per SVR4, non per + BSD)</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Sono permesse espressioni complesse. Le espressioni devono essere + raggruppate tra parentesi (mettendo in escape le parentesi con un + backslash per impedire alla shell di interpretarle). Il simbolo di + esclamazione (!) può essere usato per <emphasis>negare</emphasis> + un'espressione. Gli operatori: <option>-a</option> + (<emphasis>and</emphasis>) e <option>-o</option> + (<emphasis>or</emphasis>) vengono usati per raggruppare + espressioni.</para> + + <para><emphasis>Esempi:</emphasis></para> + + <para>&man.find.1; può ricercare in modo ricorsivo attraverso + sotto-directory, ma per lo scopo di questi esempi saranno usati i + seguenti file:</para> + + <screen>14 -rw-r--r-- 1 frank staff 6682 Feb 5 10:04 library + 6 -r--r----- 1 frank staff 3034 Mar 16 1995 netfile +34 -rw-r--r-- 1 frank staff 17351 Feb 5 10:04 standard + 2 -rwxr-xr-x 1 frank staff 386 Apr 26 09:51 tr25*</screen> + + <para>Per trovare tutti i file più recenti del file + <filename>library</filename>:</para> + + <screen>&prompt.user; <userinput>find . -newer library -print</userinput> +./tr25 +./standard</screen> + + <para>Per trovare tutti i file con i permessi di lettura o esecuzione per + l'utenza altri e quindi modificare gli stessi in modo da + disabilitarli:</para> + + <screen>&prompt.user; <userinput>find . \( -perm -004 -o -perm -001 \) -exec chmod o-rx {} \; -exec ls -al {} \;</userinput> +-rw-r----- 1 frank staff 6682 Feb 5 10:04 ./library +-rwxr-x--- 1 frank staff 386 Apr 26 09:51 ./tr25 +-rw-r----- 1 frank staff 17351 Feb 5 10:04 ./standard</screen> + + <para>Nell'esempio precedente le parentesi e i punti e virgola sono messi + in escape con un backslash per impedire alla shell di interpretarli. + Le parentesi graffe sono automaticamente rimpiazzate dai risultati della + precedente ricerca e il punto e virgola chiude il comando.</para> + + <para>Si possono ricercare alcuni nomi di file contenenti la stringa + <quote>ar</quote> con:</para> + + <screen>&prompt.user; <userinput>find . -name \*ar\* -ls</userinput> +326584 7 -rw-r----- 1 frank staff 6682 Feb 5 10:04 ./library +326585 17 -rw-r----- 1 frank staff 17351 Feb 5 10:04 ./standard</screen> + + <para>dove l'opzione <option>-ls</option> mostra un listato lungo, numeri + di inode inclusi.</para> + </sect2> + </sect1> + + <sect1 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 è 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à.</entry> + </row> + + <row> + <entry><option>-v</option></entry> + + <entry>verbose. Riporta la percentuale di riduzione del + file.</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>&man.zcat.1; scrive su standard output. Equivale a + <command>uncompress -c</command>.</para> + + <para><emphasis>Esempi:</emphasis></para> + + <para>Dati i file:</para> + + <screen>96 -rw-r--r-- 1 lindadb acs 45452 Apr 24 09:13 logins.beauty +184 -rw-r--r-- 1 lindadb acs 90957 Apr 24 09:13 logins.bottom +152 -rw-r--r-- 1 lindadb acs 75218 Apr 24 09:13 logins.photon +168 -rw-r--r-- 1 lindadb acs 85970 Apr 24 09:13 logins.top</screen> + + <para>Questi possono essere compressi con:</para> + + <screen>&prompt.user; <userinput>compress logins.*</userinput></screen> + + <para>che crea i file:</para> + + <screen>24 -rw-r--r-- 1 lindadb acs 8486 Apr 24 09:13 logins.beauty.Z +40 -rw-r--r-- 1 lindadb acs 16407 Apr 24 09:13 logins.bottom.Z +24 -rw-r--r-- 1 lindadb acs 10909 Apr 24 09:13 logins.photon.Z +32 -rw-r--r-- 1 lindadb acs 16049 Apr 24 09:13 logins.top.Z</screen> + + <para>I file originali sono persi.</para> + + <para>Per visualizzare un file compresso, viene usato il comando + &man.zcat.1;:</para> + + <screen>&prompt.user; <userinput>zcat logins.beauty.Z | head</userinput> +beauty:01/22/94:#total logins,4338:#different UIDs,2290 +beauty:01/23/94:#total logins,1864:#different UIDs,1074 +beauty:01/24/94:#total logins,2317:#different UIDs,1242 +beauty:01/25/94:#total logins,3673:#different UIDs,2215 +beauty:01/26/94:#total logins,3532:#different UIDs,2216 +beauty:01/27/94:#total logins,3096:#different UIDs,1984 +beauty:01/28/94:#total logins,3724:#different UIDs,2212 +beauty:01/29/94:#total logins,3460:#different UIDs,2161 +beauty:01/30/94:#total logins,1408:#different UIDs,922 +beauty:01/31/94:#total logins,2175:#different UIDs,1194</screen> + + <para>Una visualizzazione del file utilizzando un altro comando al posto + di &man.zcat.1; può produrre un difficile risultato + binario.</para> + + <para>Il comando &man.uncompress.1; viene usato per far ritornare il file + compresso nel suo formato originale:</para> + + <screen>&prompt.user; <userinput>uncompress logins.*.Z ; ls -als logins.*</userinput> + 96 -rw-r--r-- 1 lindadb acs 45452 Apr 24 09:13 logins.beauty +184 -rw-r--r-- 1 lindadb acs 90957 Apr 24 09:13 logins.bottom +152 -rw-r--r-- 1 lindadb acs 75218 Apr 24 09:13 logins.photon +168 -rw-r--r-- 1 lindadb acs 85970 Apr 24 09:13 logins.top</screen> + + <para>In aggiunta alle utility standard di Unix &man.compress.1;, + &man.uncompress.1;, &man.zcat.1; ci sono un set di utility + <emphasis>GNU</emphasis> liberamente disponibili. Queste creano + persino un miglior lavoro di compressione utilizzando un algoritmo + più efficiente. I programmi GNU che forniscono + funzionalità simili ai precedenti sono spesso installati + rispettivamente come &man.gzip.1;, &man.gunzip.1; e &man.zcat.1;. + I nomi dei file compressi con &man.gzip.1; hanno l'estensione + <filename>.z</filename> o <filename>.gz</filename>. Il software GNU + può essere ottenuto via ftp anonimo: <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ù maneggevole una grande quantità 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ò essere un file su disco, un dispositivo a nastro o + standard input/output. L'ultimo modo viene rappresentato tramite un + trattino.</para> + + <para><emphasis>Esempi:</emphasis></para> + + <para>Dati i file di dimensioni seguenti:</para> + + <screen>45 logs.beauty +89 logs.bottom +74 logs.photon +84 logs.top</screen> + + <para>&man.tar.1; può combinare questi in un solo file, + <filename>logfile.tar</filename>:</para> + + <screen>&prompt.user; <userinput>tar -cf logfile.tar logs.* ; ls -s logfile.tar</userinput> +304 logfile.tar</screen> + + <para>In Internet, molti siti di archivio FTP anonimi memorizzano i loro + pacchetti in formati tar compressi, quindi i file finiscono in + <filename>.tar.Z</filename> o <filename>.tar.gz</filename>. Per + estrarre i file da uno di questi file archivio si può prima + decomprimerlo, o usare l'appropriato comando &man.zcat.1; e mandare in + pipe il risultato a &man.tar.1;, esempio:</para> + + <screen>&prompt.user; <userinput>zcat <replaceable>archive</replaceable>.tar.Z | tar -xvf -</userinput></screen> + + <para>dove il trattino alla fine del comando &man.tar.1; indica che il + file è preso da &man.stdin.4;.</para> + </sect2> + + <sect2 id="commands-file-arch-comp-conv-uuencode-uudecode"> + <title>uuencode/uudecode - codifica/decodifica un file</title> + + <para>Per codificare un file binario in ASCII 7-bit si usa il comando + &man.uuencode.1;. Per decodificare il file ASCII 7-bit in binario + si usa il comando &man.uudecode.1;. Il suffisso + <quote><emphasis>uu</emphasis></quote> nei nomi deriva dal fatto che + questi comandi fanno parte del set di comandi Unix-to-Unix CoPy (UUCP). + I comandi &man.uuencode.1; e &man.uudecode.1; sono generalmente usati + quando si mandano file binari via e-mail. Con l'e-mail non c'è + garanzia che file binari 8-bit siano trasferiti correttamente. Quindi + per garantire una corretta consegna si può codificare il file + binario, sia direttamente su linea di comando, includendo il file + codificato, sia indirettamente, lasciando al proprio programma di posta + MIME questo lavoro. In modo simile, l'utente decodifica il file + ricevuto.</para> + + <para><emphasis>Sintassi</emphasis></para> + + <para><command>uuencode [<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à quando + decodificherà il file codificato. Il file inizia e finisce + rispettivamente con le parole chiavi <emphasis>begin</emphasis> e + <emphasis>end</emphasis>, esempio:</para> + + <programlisting>begin 555 binary_filename + +M?T5,1@$" 0 " ( ! %"W #0 5"< 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ò + essere:</entry> + </row> + + <row> + <entry align="center"><option>ascii</option></entry> + + <entry>converte da EBCDIC a ASCII</entry> + </row> + + <row> + <entry align="center"><option>ebcdic</option></entry> + + <entry>converte da ASCII a EBCDIC</entry> + </row> + + <row> + <entry align="center"><option>lcase</option></entry> + + <entry>converte i caratteri maiuscoli in minuscoli</entry> + </row> + + <row> + <entry align="center"><option>ucase</option></entry> + + <entry>converte i caratteri minuscoli in maiuscoli</entry> + </row> + + <row> + <entry align="center"><option>swab</option></entry> + + <entry>scambia ogni coppia di byte dei dati di input</entry> + </row> + + <row> + <entry align="center"><option>noerror</option></entry> + + <entry>non ferma il processo su un errore in input</entry> + </row> + + <row> + <entry align="center"><option>sync</option></entry> + + <entry>riempie ogni blocco di input alla dimensione di + <option>ibs</option>, apporrendo byte nulli se + necessario</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>La dimensione dei blocchi viene specificata in byte e può + finire in <emphasis>k</emphasis>, <emphasis>b</emphasis> o + <emphasis>w</emphasis> per indicare rispettivamente 1024 (kilo), 512 + (blocco) o 2 (parola) byte.</para> + + <para><emphasis>Esempi:</emphasis></para> + + <para>Per copiare un file da un dispositivo a nastro in un altro:</para> + + <screen>&prompt.user; <userinput>dd if=/dev/rmt/0 of=/dev/rmt/1</userinput> +20+0 records in +20+0 records out</screen> + + <para>Per copiare file posti in un dispositivo a nastro, scritti su una + macchina big endian con una dimensione di 20 blocchi, in file su + una machina little endian che ha un nastro inserito nel suo dispositivo, + si ha la necessità di scambiare le coppie di byte, in questo + modo:</para> + + <screen>&prompt.user; <userinput>dd if=/dev/rmt/0 of=new_file ibs=20b conv=swab</userinput> +1072+0 records in +21440+0 records out</screen> + + <para>A completamento dell'operazione, &man.dd.1; riporta il numero dei + blocchi totali e dei blocchi parziali per entrambi i file di + input e di output.</para> + </sect2> + + <sect2 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à verbose</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para><emphasis>Esempi:</emphasis></para> + + <para>Per dare un'occhiata all'attuale contenuto del seguente file, un + elenco di romanzi di Wodehouse Lord Emsworth:</para> + + <programlisting>Something Fresh [1915] Uncle Dynamite [1948] +Leave it to Psmith [1923] Pigs Have Wings [1952] +Summer Lightning [1929] Cocktail Time [1958] +Heavy Weather [1933] Service with a Smile [1961] +Blandings Castle and Elsewhere [1935] Galahad at Blandings [1965] +Uncle Fred in the Springtime [1939] A Pelican at Blandings [1969] +Full Moon [1947] Sunset at Blandings [1977]</programlisting> + + <para>si può usare:</para> + + <screen>&prompt.user; <userinput>od -c wodehouse</userinput> +0000000 S o m e t h i n g F r e s h +0000020 [ 1 9 1 5 ] \t U n c l e D y n +0000040 a m i t e [ 1 9 4 8 ] \n L e a +0000060 v e i t t o P s m i t h +0000100 [ 1 9 2 3 ] \t P i g s H a v e +0000120 W i n g s [ 1 9 5 2 ] \n S u +0000140 m m e r L i g h t n i n g [ +0000160 1 9 2 9 ] \t C o c k t a i l T +0000200 i m e [ 1 9 5 8 ] \n H e a v y +0000220 W e a t h e r [ 1 9 3 3 ] \t +0000240 S e r v i c e w i t h a S +0000260 m i l e [ 1 9 6 1 ] \n B l a n +0000300 d i n g s C a s t l e a n d +0000320 E l s e w h e r e [ 1 9 3 5 +0000340 ] \t G a l a h a d a t B l a +0000360 n d i n g s [ 1 9 6 5 ] \n U n +0000400 c l e F r e d i n t h e +0000420 S p r i n g t i m e [ 1 9 3 9 +0000440 ] \t A P e l i c a n a t B +0000460 l a n d i n g s [ 1 9 6 9 ] \n +0000500 F u l l M o o n [ 1 9 4 7 ] +0000520 \t S u n s e t a t B l a n d +0000540 i n g s [ 1 9 7 7 ] \n +0000554</screen> + </sect2> + </sect1> + + <sect1 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; è un servizio di login remoto che + è stato in passato un'esclusiva dello Unix BSD 4.3 di Berkeley. + Essenzialmente, offre le stesse funzionalità di &man.telnet.1;, + eccetto che &man.rlogin.1; lascia passare al computer remoto le + informazioni dell'ambiente di login dell'utente. Le macchine possono + essere configurate per permettere connessioni da fidati host senza + richiedere la password dell'utente. Una versione più sicura di + questo protocollo è la Sicura SHell + <application>SSH</application>, software scritto da Tatu Ylonen e + disponibile via: <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à la modalità 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à 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 è 23, + la porta telnet. Altre porte vengono usate per il debugging dei servizi + di rete e per ragioni speciali.</para> + + <para><emphasis>Esempi:</emphasis></para> + + <screen>&prompt.user; <userinput>telnet oscar.us.ohio-state.edu</userinput></screen> + + <screen>&prompt.user; <userinput>tn3270 ohstmvsa.acs.ohio-state.edu</userinput></screen> + + <screen>&prompt.user; <userinput>ftp magnus.acs.ohio-state.edu</userinput></screen> + + <para>La macchina remota richiederà di identificarsi tramite login + e password. Spesso, le macchine organizzate come archivi di + software o di informazioni, permettono connessioni ftp anonime. Ci si + collega tramite &man.ftp.1; alla macchina remota e si effettua il + login come <username>anonymous</username> (il login + <username>ftp</username> è equivalente su molte macchine) + cioè, 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 è correttamente collegati a un computer + remoto tramite &man.telnet.1; e &man.rlogin.1; (e assumendo che sia + stata assegnata l'emulazione del terminale) si potrà utilizzare + la macchina come al solito.</para> + + <para>Una volta che si è correttamente collegati ad un computer + remoto tramite &man.ftp.1;, si può trasferire un file in quel + computer con il comando <command>put</command> o prenderlo da quel + computer con il comando <command>get</command>. La sintassi è la + seguente:</para> + + <para><command>put <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ò 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 è 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 è un esempio di file .plan per l'id workshop di nyssa. +Questo id è stato usato in questa settimana da Frank Fiamingo, Linda +DeBula, e Linda Condron, mentre insegnavano ad usare una nuova versione +di Unix workshop sviluppata per l'UTS. + +Sperando di aver insegnato qualcosa. +Frank, Linda, & Linda</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à nel realizzare certe + operazioni comuni. Poichè questi comandi si focalizzano su + comunicazioni con host remoti nella rete locale (o in Internet), i nomi + dei comandi iniziano con la lettera <emphasis>r</emphasis>: + &man.rlogin.1;, &man.rsh.1; e &man.rcp.1;. La possibilità di + accesso remoto tramite questi comandi è sostenuta (opzionalmente) + attraverso il file <filename>~/.rhosts</filename> di ogni singolo utente + e dal file generale di sistema <filename>/etc/hosts.equiv</filename>. + Per ragioni di sicurezza questi possono essere limitati ad alcuni + host.</para> + + <para>Il comando &man.rlogin.1; permette un accesso di login remoto + su un altro host della rete locale. &man.rlogin.1; passa + informazioni all'host remoto circa l'ambiente locale, incluso il valore + della variabile d'ambiente <literal>TERM</literal>.</para> + + <para>Il comando &man.rsh.1; fornisce la possibilità di invocare + una shell Unix su un host remoto della rete locale con lo scopo di + eseguirci comandi di shell. Questa capacità è simile alla + funzione shell escape disponibile generalmente all'interno di un + software di sistema Unix come editor ed email.</para> + + <para>Il comando &man.rcp.1; fornisce la possibilità di + copiare file dall'host locale ad un host remoto della rete + locale.</para> + + <para><emphasis>Sintassi</emphasis></para> + + <para><command>rlogin [-l <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> è della forma:</para> + + <para><replaceable>host_remoto utente_remoto</replaceable></para> + + <para>dove l'elenco + <username><replaceable>utente_remoto</replaceable></username> è + opzionale. Per esempio, se Heather Jones vuole essere in grado di + connettersi alla <hostid role="hostname">macchina1</hostid> (dove il suo + username è <username>heather</username>) dalla + <hostid role="hostname">macchina2</hostid> (dove il suo username + è <username>jones</username>) o dalla + <hostid role="hostname">macchina3</hostid> (dove il suo username + è <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ì 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ù 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 + è stato notato attraverso questo documento (esempio + &man.ed.1;, &man.ex.1;, &man.sed.1;, &man.awk.1;, la famiglia + <application>grep</application> e la famiglia + <application>roff</application>). Tra gli editor, l'editor visuale (o a + schermo pieno) standard su Unix è <application>vi</application>. + Questa applicazione comprende un super-set, per così dire, di + caratteristiche di &man.ed.1; e di &man.ex.1; (gli editor a linea di + Unix).</para> + + <para>&man.vi.1; è un editor modale. Questo significa che ha + modalità specifiche che permettono l'inserimento del testo, la + cancellazione del testo e l'inserimento dei comandi. Si può lasciare + la modalità di inserimento premendo il tasto <keycap>escape</keycap>. + In questo modo ci si porta nella modalità comando. L'editor + di linea &man.ex.1; è incorporato in &man.vi.1;. Si può + passare dalla modalità a schermo pieno a quella a linea di comando (e + viceversa) quando si desidera. In modalità <emphasis>vi</emphasis> + premere <keycap>Q</keycap> per andare in modalità + <emphasis>ex</emphasis>. In modaltà <emphasis>ex</emphasis>, al + prompt : digitare <command>vi</command> per ritornare in modalità + <emphasis>vi</emphasis>. Inoltre è disponibile una modalità + di &man.vi.1; in sola lettura, che può essere invocata con + &man.view.1;.</para> + + <para>Un altro editor comune nei sistemi Unix, specialmente nei college e + negli ambienti universitari, è <application>emacs</application> (che + sta per <quote>editing macros</quote>). Mentre &man.vi.1; è in + generale compreso nel sistema operativo Unix, &man.emacs.1; usualmente non + lo è. <application>Emacs</application> viene distribuito dalla Free + Software Foundation ed è discutibilmente il più potente editor + disponibile per Unix. <application>Emacs</application> è un software + di sistema molto grande ed è un grossa risorsa di sistema per un + utente di computer.</para> + + <para>La Free Software Foundation e il progetto GNU (del quale + <application>emacs</application> fa parte) sono stati fondati da Richard + Stallman e dai suoi soci, i quali credono (come specificato nel manifesto + GNU) che condividere il software sia <quote>l'atto fondamentale di amicizia + tra programmatori</quote>. La loro General Public License garantisce il + diritto d'uso, di modifica e di distribuzione di + <application>emacs</application> (incluso il suo codice sorgente) ed + è stata progettata specificatamente per impedire a qualcuno di + prendersi un profitto finanziario da <application>emacs</application> o da + altri software conseguiti attraverso la Free Software Foundation. Molti dei + loro software, incluso <application>emacs</application>, sono disponibili + via <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ò contenere macro per mappare battute di tasti in + funzioni usando la funzione <command>map</command>. All'interno di + &man.vi.1; queste macro possono essere definite con il comando + <command>:map</command>. I caratteri di controllo possono essere inseriti + digitando prima <keycombo action="simul"> + <keycap>Ctrl</keycap> + <keycap>V</keycap> + </keycombo>, quindi il carattere di controllo desiderato. Alcune opzioni + disponibili in &man.vi.1; sono mostrate qui sotto. Alcuni sistemi Unix + non accettano certe di queste opzioni.</para> + + <informaltable frame="none"> + <tgroup cols="2"> + <colspec colwidth="2in"> + + <tbody> + <row> + <entry><command>:set all</command></entry> + + <entry>visualizza tutti i settaggi delle opzioni</entry> + </row> + + <row> + <entry><command>:set ignorecase</command></entry> + + <entry>ignora il maiuscolo e minuscolo di un carattere in una + ricerca</entry> + </row> + + <row> + <entry><command>:set list</command></entry> + + <entry>visualizza tab e return</entry> + </row> + + <row> + <entry><command>:set nolist</command></entry> + + <entry>mette off l'opzione <option>list</option></entry> + </row> + + <row> + <entry><command>:set number</command></entry> + + <entry>visualizza i numeri di linea</entry> + </row> + + <row> + <entry><command>:set nonumber</command></entry> + + <entry>disattiva i numeri di linea</entry> + </row> + + <row> + <entry><command>:set showmode</command></entry> + + <entry>visualizza l'indicazione che la modalità di + inserimento è on</entry> + </row> + + <row> + <entry><command>:set noshowmode</command></entry> + + <entry>mette off l'opzione <option>showmode</option></entry> + </row> + + <row> + <entry><command>:set + wrapmargin=<replaceable>n</replaceable></command></entry> + + <entry>mette on la modalità word-wrap a + <replaceable>n</replaceable> spazi dal margine destro</entry> + </row> + + <row> + <entry><command>:set wrapmargin=0</command></entry> + + <entry>mette off l'opzione <option>wrapmargin</option></entry> + </row> + + <row> + <entry><command>:set warn</command></entry> + + <entry>visualizza l'avvertimento <quote>Ultima modifica non + registrata</quote></entry> + </row> + + <row> + <entry><command>:set nowarn</command></entry> + + <entry>mette off l'avvertimento di scrittura + <option>warn</option></entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Segue un esempio di file <filename>.exrc</filename>:</para> + + <programlisting>set wrapmargin=10 +set number +set list +set warn +set ignorecase +map K {!}fmt -80 # riformatta questo paragrafo, {!}, usando fmt a + # 80 caratteri per linea +map ^Z :!spell # invoca spell, :!, per verificare lo splelling di + # una parola (ritorna a vi con Ctrl+D)</programlisting> + </sect1> + + <sect1 id="editors-emacs"> + <title>Configurare la propria sessione emacs</title> + + <para>Configurare l'ambiente di &man.emacs.1; equivale a creare chiamate a + funzioni LISP. &man.emacs.1; è infinitamente personalizzabile + tramite variabili <emphasis>emacs</emphasis>, funzioni built-in e + attraverso la programmazione Emacs LISP. I settaggi possono essere + specificati dal minibuffer (o da linea di comando) durante una sessione + <emphasis>emacs</emphasis>. Alternativamente, i settaggi usati di + frequente possono essere attivati automaticamente quando viene invocato + &man.emacs.1;, usando il file <filename>.emacs</filename>. Benchè + una discussione del Emacs LISP vada oltre lo scopo di questo documento, + seguono alcuni esempi di configurazioni per &man.emacs.1;.</para> + + <para>Per settare o verificare variabili <emphasis>emacs</emphasis> o per + usare le sue funzioni built-in, si usa il tasto <keycap>escape</keycap> + (<emphasis>Meta</emphasis> è come &man.emacs.1; si riferisce a + questo) seguito dalla lettera <keycap>x</keycap>, quindi la variabile o + la funzione e i suoi argomenti.</para> + + <informaltable frame="none"> + <tgroup cols="2"> + <colspec colwidth="3in"> + + <tbody> + <row> + <entry><command><keycap>M</keycap>, <keycap>x</keycap> + what-line</command></entry> + + <entry>quale linea è 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><return></keycap> + fill-column <keycap><return></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><return></keycap> + auto-save-interval <keycap><return></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><return></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> è 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, #<return>16 +(global-set-key "\M-#" 'goto-line) +; Per sapere su che linea si è, digitare M, n +(global-set-key "\M-n" 'what-line) +(message "~/.emacs loaded.") +(message "")</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; è case sensitive + (sensibile alla differenza minuscolo e maiuscolo).</para> + + <para><emphasis>Comandi movimento cursore:</emphasis></para> + + <para>(<replaceable>n</replaceable>) indica un numero ed è + opzionale</para> + + <informaltable frame="none"> + <tgroup cols="2"> + <colspec colwidth="1.5in"> + + <tbody> + <row> + <entry><command>(<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ù</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ù 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 è 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>:<linee considerate> + s/vecchio/nuovo/g</command></entry> + </row> + + <row> + <entry><command><keycap>&</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><</keycap></command></entry> + + <entry>inizio buffer</entry> + </row> + + <row> + <entry><command><keycap>M</keycap>, + <keycap>></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><return></keycap> fill-column + <keycap><return></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><return></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 è collegato a un sistema Unix, gli + viene chiesto di inserire un <emphasis>login</emphasis> username + (nome utente) e una <emphasis>password</emphasis> (codice segreto). Il + login username è il nome univoco dell'utente sul sistema. La + password è un codice modificabile conosciuto solo dall'utente. + Alla richiesta di <emphasis>login</emphasis>, l'utente deve inserire lo + username e alla richiesta della <emphasis>password</emphasis>, deve essere + inserita la password effettiva.</para> + + <note> + <para><emphasis>Unix è un sistema case sensitive</emphasis> (fa + distinzione tra caratteri minuscoli e maiuscoli). Quindi sia il + <emphasis>login</emphasis> username che la <emphasis>password</emphasis> + devono essere inseriti esattamente come sono stati creati; il login + username è normalmente in minuscolo.</para> + </note> + + <sect2 id="getting-started-login-terminal-type"> + <title>Tipi di terminali</title> + + <para>Molti sistemi sono configurati in modo tale da richiedere all'utente + il tipo di terminale da usare, il quale dovrebbe essere settato al tipo + di terminale usato nella fase di login. Molti computer lavorano + se si sceglie il tipo <literal>vt100</literal>. Gli utenti connessi + tramite una workstation Sun molto probabilmente useranno il tipo + <literal>sun</literal>; quelli che usano un Terminale-X molto + probabilmente useranno <literal>xterms</literal> oppure + <literal>xterm</literal>.</para> + + <para>Il tipo di terminale indica al sistema Unix come interagire quando + una sessione viene aperta.</para> + + <para>Può essere necessario risettare il tipo di terminale, + digitando il comando:</para> + + <informaltable frame="none"> + <tgroup cols="2"> + <colspec colwidth="3.3in"> + + <tbody> + <row> + <entry><command>setenv TERM <replaceable><tipo di + terminale></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, è + 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><tipo di + terminale></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><tipo di terminale></replaceable> è + 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 è importate sia per la sicurezza + del sistema sia per una sicurezza personale, perciò la password + per il proprio account può essere cambiata a propria scelta. Il + comando per cambiare una password è + &man.passwd.1;. Verrà chiesto di inserire sia la propria + vecchia password, sia la nuova password desiderata, quest'ultima due + volte. Se si sbaglia la propria vecchia password o non si inserisce + quella nuova nello stesso modo per due volte, il sistema + indicherà che la password non ha subito cambiamenti.</para> + + <para>Alcuni amministratori di sistema hanno programmi che verificano + l'accuratezza di una password (che deve essere sufficientemente criptica + per assicurare una certa sicurezza al sistema). Un cambiamento di + password può essere rifiutato da questi programmi.</para> + + <para>Quando si sceglie una password, è importante che questa non + sia in qualche modo indovinabile né per qualche sconosciuto + che tenta di scoprirla né per un conoscente. I suggerimenti per + scegliere e mantenere una password sono i seguenti:</para> + + <itemizedlist> + <listitem> + <para>non usare una parola (o parole) di un linguaggio;</para> + </listitem> + + <listitem> + <para>non usare il proprio nome;</para> + </listitem> + + <listitem> + <para>non usare informazioni che possono essere trovate nel proprio + portafoglio;</para> + </listitem> + + <listitem> + <para>non usare informazioni comunemente conosciute circa se stessi + (come il soprannome, patente di guida, ecc.);</para> + </listitem> + + <listitem> + <para>non usare caratteri di controllo. Alcuni sistemi non li + accettano;</para> + </listitem> + + <listitem> + <para>non scrivere la password in qualche posto;</para> + </listitem> + + <listitem> + <para>non dare la propria password a *nessuno*;</para> + </listitem> + </itemizedlist> + + <itemizedlist> + <listitem> + <para>usare un mix di tipi di caratteri (alfabetici, numerici, + speciali);</para> + </listitem> + + <listitem> + <para>usare un mix di caratteri maiuscoli e caratteri + minuscoli;</para> + </listitem> + + <listitem> + <para>usare un minimo di 6 caratteri;</para> + </listitem> + + <listitem> + <para>scegliere una password in modo da poterla ricordare;</para> + </listitem> + + <listitem> + <para>cambiare di frequente la propria password;</para> + </listitem> + + <listitem> + <para>assicurarsi che nessuna persona vicino a voi vi guardi quando si + inserisce la propria password.</para> + </listitem> + </itemizedlist> + </sect2> + + <sect2 id="getting-started-login-exiting"> + <title>Uscita</title> + + <para><keycombo action="simul"> + <keycap>Ctrl</keycap> + <keycap>D</keycap> + </keycombo> - indica la fine di un flusso di dati; + può far uscire dal sistema un utente. L'ultimo caso è + disabilitato su molti sistemi</para> + + <para><keycombo action="simul"> + <keycap>Ctrl</keycap> + <keycap>C</keycap> + </keycombo> - interruzione</para> + + <para>&man.logout.1; - rilascia il sistema</para> + + <para>&man.exit.1; - rilascia la shell</para> + </sect2> + + <sect2 id="getting-started-login-identity"> + <title>Identità</title> + + <para>Il sistema identifica un utente attraverso il numero di utente e il + numero di gruppo (rispettivamente <emphasis>userid</emphasis> e + <emphasis>groupid</emphasis>) assegnati dall'amministratore di sistema. + Generalmente non è necessario conoscere il proprio userid e + groupid, poichè il sistema traduce in modo automatico lo userid + in username (e viceversa) ed il groupid in groupname (e viceversa). + Probabilmente si conosce già lo username: è il nome + utilizzato per il login. Il groupname non è ovvio, e in + realtà si può appartenere a più di un gruppo. Il + proprio gruppo primario è quello associato con il proprio + username nel file database delle password, configurato + dall'amministratore di sistema. Similmente, c'è un file database + per i gruppi, dove l'amministratore di sistema può assegnare + gruppi aggiuntivi ad un utente.</para> + + <para>Nei seguenti esempi il simbolo &prompt.user; è il proprio + prompt di shell e non va digitato.</para> + + <para>Si può determinare il proprio userid e la lista dei gruppi di + appartenenza con i comandi &man.id.1; e &man.groups.1;. Su alcuni + sistemi &man.id.1; mostra le informazioni sull'utente e le informazioni + sul gruppo primario, esempio:</para> + + <screen>&prompt.user; <userinput>id</userinput> +uid=1101(frank) gid=10(staff)</screen> + + <para>su altri sistemi mostra anche le informazioni sui gruppi aggiuntivi + di appartenenza:</para> + + <screen>&prompt.user; <userinput>id</userinput> +uid=1101(frank) gid=10(staff) groups=10(staff),5(operator),14(sysadmin),110(uts)</screen> + + <para>Il comando &man.groups.1; mostra le informazioni di tutti i gruppi + di appartenenza, esempio:</para> + + <screen>&prompt.user; <userinput>groups</userinput> +staff sysadmin uts operator</screen> + </sect2> + </sect1> + + <sect1 id="getting-started-comm-line-struct"> + <title>Struttura della linea di comando di Unix</title> + + <para>Un <emphasis>comando</emphasis> è un programma che chiama + il sistema Unix per qualche compito. Un comando ha la forma:</para> + + <para><command><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ù 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à 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à 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ù + 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 è generalmente indicata con + <keycombo action="simul"> + <keycap>Ctrl</keycap> + <keycap><replaceable>Tasto</replaceable></keycap> + </keycombo> (oppure <keycombo action="simul"> + <keycap>^</keycap> + <keycap><replaceable>Tasto</replaceable></keycap> + </keycombo>). <keycombo action="simul"> + <keycap>Control</keycap> + <keycap>S</keycap> + </keycombo> può essere scritto come <keycombo action="simul"> + <keycap>Ctrl</keycap> + <keycap>S</keycap> + </keycombo> (oppure <keycombo action="simul"> + <keycap>^</keycap> + <keycap>S</keycap> + </keycombo>). Con i tasti di controllo le lettere maiuscole e minuscole + sono la stessa cosa, così <keycombo action="simul"> + <keycap>Ctrl</keycap> + <keycap>S</keycap> + </keycombo> è lo stesso di <keycombo action="simul"> + <keycap>Ctrl</keycap> + <keycap>s</keycap> + </keycombo>. Questo particolare esempio (<keycombo action="simul"> + <keycap>Ctrl</keycap> + <keycap>S</keycap> + </keycombo>) è un segnale di <emphasis>stop</emphasis> e + dice al terminale di non accettare più input. Il terminale + rimarrà sospeso finchè un segnale di + <emphasis>start</emphasis> <keycombo action="simul"> + <keycap>Ctrl</keycap> + <keycap>Q</keycap> + </keycombo> non sarà generato.</para> + + <para><keycombo action="simul"> + <keycap>Ctrl</keycap> + <keycap>U</keycap> + </keycombo> è normalmente il segnale di + <quote><emphasis>cancellazione di linea</emphasis></quote> per il proprio + terminale. Quando lo si digita, l'intera linea di input viene + cancellata.</para> + + <para>Nell'editor &man.vi.1; si possono inserire i tasti + di controllo all'interno del file di testo facendo seguire a + <keycombo action="simul"> + <keycap>Ctrl</keycap> + <keycap>V</keycap> + </keycombo> il carattere di controllo desiderato; così per + inserire in un documento <keycombo action="simul"> + <keycap>Ctrl</keycap> + <keycap>H</keycap> + </keycombo> si digita <keycombo action="simul"> + <keycap>Ctrl</keycap> + <keycap>V</keycap> + </keycombo>, <keycombo action="simul"> + <keycap>Ctrl</keycap> + <keycap>H</keycap> + </keycombo>.</para> + </sect1> + + <sect1 id="getting-started-stty"> + <title>stty - controllo del terminale</title> + + <para>&man.stty.1; mostra o configura le opzioni di controllo del terminale. + L'abbreviazione <quote><emphasis>tty</emphasis></quote> risale fino ai + giorni dei <quote>teletypewrite</quote>, che erano associati alla + trasmissione di messaggi telegrafici ed erano primitivi modelli di + terminali di computer.</para> + + <para>Per i nuovi utenti, l'uso principale del comando &man.stty.1; riguarda + l'assegnazione della funzione di <quote>cancellazione di linea</quote> ad + un tasto specifico per i loro terminali. Per i programmatori di sistema o + per chi scrive script di shell, il comando &man.stty.1; fornisce uno + strumento prezioso per la configurazione di molti aspetti legati al + controllo di I/O di un dispositivo specifico, inclusi i seguenti:</para> + + <itemizedlist> + <listitem> + <para>carattere di erase (eliminazione carattere) e di + line-kill (eliminazione linea);</para> + </listitem> + + <listitem> + <para>velocità di trasmissione dati;</para> + </listitem> + + <listitem> + <para>controllo di parità sulla trasmissione dati;</para> + </listitem> + + <listitem> + <para>controllo del flusso hardware;</para> + </listitem> + + <listitem> + <para>carattere di nuova linea (<NL>), di return (<CR>) e di + alimentazione linea (<LF>);</para> + </listitem> + + <listitem> + <para>interpretazione del carattere tab;</para> + </listitem> + + <listitem> + <para>modifica di un input grezzo;</para> + </listitem> + + <listitem> + <para>trasformazione di lettere minuscole in lettere maiuscole.</para> + </listitem> + </itemizedlist> + + <para>Il comando &man.stty.1; è molto dipendente dal sistema, quindi + consultare le relative <emphasis>pagine man</emphasis> sul proprio sistema + per i dettagli.</para> + + <para><emphasis>Sintassi</emphasis></para> + + <para><command>stty [<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à specifica dei sistemi operativi + conformi al Digital Equipment Corporation (che distinguono ERASE + da BACKSPACE) (non disponibile su tutti i sistemi)</entry> + </row> + + <row> + <entry><option>kill</option></entry> + + <entry>imposta il carattere per LINE-KILL</entry> + </row> + + <row> + <entry><option>erase</option></entry> + + <entry>imposta il carattere per ERASE</entry> + </row> + + <row> + <entry><option>intr</option></entry> + + <entry>imposta il carattere per INTERRUPT</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para><emphasis>Esempi:</emphasis></para> + + <para>Con il comando &man.stty.1; si possono visualizzare e cambiare i + settaggi del proprio terminale di controllo. Per visualizzare tutti + (<option>-a</option>) i settaggi correnti:</para> + + <screen>&prompt.user; <userinput>stty -a</userinput> +speed 38400 baud, 24 rows, 80 columns +parenb -parodd cs7 -cstopb -hupcl cread -clocal -crtscts +-ignbrk brkint ignpar -parmrk -inpck istrip -inlcr -igncr icrnl -iuclc +ixon -ixany -ixoff imaxbel +isig iexten icanon -xcase echo echoe echok -echonl -noflsh -tostop +echoctl -echoprt echoke +opost -olcuc onlcr -ocrnl -onocr -onlret -ofill -ofdel +erase kill werase rprnt flush lnext susp intr quit stop eof +^H ^U ^W ^R ^O ^V ^Z/^Y ^C ^\ ^S/^Q ^D</screen> + + <para>Per cambiare i settaggi usando &man.stty.1;, ad esempio per cambiare + il carattere di erase da <keycombo action="simul"> + <keycap>Ctrl</keycap> + <keycap>?</keycap> + </keycombo> (il tasto elimina) a <keycombo action="simul"> + <keycap>Ctrl</keycap> + <keycap>H</keycap> + </keycombo>:</para> + + <screen>&prompt.user; <userinput>stty erase ^H</userinput></screen> + + <para>Questo setterà l'opzione del terminale solamente per la + sessione corrente. Per far in modo che questo comando sia eseguito + automaticamente ad ogni login, è possibile inserire tale comando + nel file <filename>.login</filename> o <filename>.profile</filename> di + cui si parlerà più avanti.</para> + </sect1> + + <sect1 id="getting-started-get-help"> + <title>Ottenere aiuto</title> + + <para>Il manuale di Unix, usualmente chiamato <emphasis>man page</emphasis> + (pagine man), è disponibile per spiegare l'uso del sistema Unix e + dei suoi comandi. Per servirsi di una pagina man digitare il comando + &man.man.1; al prompt di sistema seguito dal comando di cui si necessitano + informazioni.</para> + + <para><emphasis>Sintassi</emphasis></para> + + <para><command>man [<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ò usare &man.man.1; per ottenere una linea riassuntiva di + alcuni comandi che contengono la parola che si vuole ricercare con + l'opzione <option>-k</option>, ad esempio per cercare la parola + <emphasis>password</emphasis>, si digita:</para> + + <screen>&prompt.user; <userinput>man -k password</userinput> +passwd (5) - password file +passwd (1) - cambia la password</screen> + + <para>Il numero in parentesi indica la sezione delle pagine man dove sono + stati trovati i riferimenti. Si può accedere a quella pagina man + (di default si fa riferimento al numero di sezione più basso, ma si + può usare un'opzione su linea di comando per specificarne uno + differente) con:</para> + + <screen>&prompt.user; <userinput>man passwd</userinput> +PASSWD(1) USER COMMANDS PASSWD(1) + +NOME +passwd - cambia password + +SINTASSI +passwd [ -e login_shell ] [ username ] + +DESCRIZIONE +passwd cambia (o setta) la password di un utente. +passwd chiede per due volte la nuova password, senza mostrarla. +Questo per prendere in considerazione la possibilità di digitare errori. +Solamente l'utente stesso e il super-user possono cambiare la password +di un utente. + +OPZIONI + +-e Cambia la shell di login dell'utente.</screen> + + <para>Qui l'output è stato parafrasato e troncato per una questione + di spazio e di copyright.</para> + </sect1> + + <sect1 id="getting-started-directory-nav-control"> + <title>Navigazione e controllo delle directory</title> + + <para>Il file system di Unix è organizzato come la struttura + ramificata di un albero a partire da root. La directory + <emphasis>root</emphasis> del sistema è rappresentata dal carattere + di slash in avanti (<filename>/</filename>). Le directory di sistema e + quelle degli utenti sono organizzate sotto la directory + <emphasis>root</emphasis>. In Unix l'utente non ha una directory root; + generalmente dopo il login gli utenti vengono posizionati nella loro + directory <emphasis>home</emphasis>. Gli utenti possono creare altre + directory sotto la loro directory <emphasis>home</emphasis>. La tabella + che segue mostra alcuni comandi per la navigazione tra directory.</para> + + <table frame="all" 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à 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> & + <command>mkdir</command></entry> + </row> + + <row> + <entry>cambia directory</entry> + + <entry><command>cd</command></entry> + + <entry><command>cd</command> & + <command>chdir</command></entry> + </row> + + <row> + <entry>rimuove una directory</entry> + + <entry><command>rmdir</command></entry> + + <entry><command>rm</command> & + <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ò determinare in che punto si è + nella gerarchia del file system mostrando la directory di lavoro con il + comando &man.pwd.1;, esempio:</para> + + <screen>&prompt.user; <userinput>pwd</userinput> +/home/frank/src</screen> + </sect2> + + <sect2 id="getting-started-directory-nav-control-cd"> + <title>cd - cambia directory</title> + + <para>Ci si può portare in una nuova directory con il comando + &man.cd.1;, cambio di directory. &man.cd.1; accetta sia path name + (percorsi) assoluti sia path name relativi.</para> + + <para><emphasis>Sintassi</emphasis></para> + + <para><command>cd [<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 è 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 è possibile con il + comando &man.mkdir.1;, crea directory. Di nuovo si può + specificare un path name assoluto o relativo della directory che si + vuole creare.</para> + + <para><emphasis>Sintassi</emphasis></para> + + <para><command>mkdir [<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ù avanti in questo + Capitolo)</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para><emphasis>Esempi:</emphasis></para> + + <screen>&prompt.user; <userinput>mkdir /home/frank/data</userinput></screen> + + <para>oppure se la directory di lavoro corrente è + <filename>/home/frank</filename>, il seguente comando è + equivalente:</para> + + <screen>&prompt.user; <userinput>mkdir data</userinput></screen> + </sect2> + + <sect2 id="getting-started-directory-nav-control-rmdir"> + <title>rmdir - rimuove una directory</title> + + <para>Per rimuovere una directory è necessario che questa sia + vuota. Altrimenti bisogna prima rimuovere i file contenuti in essa. + Inoltre, non si può rimuovere una directory se questa è la + directory di lavoro corrente, bisogna prima uscire da + quest'ultima.</para> + + <para><emphasis>Sintassi</emphasis></para> + + <para><command>rmdir + <replaceable>directory</replaceable></command></para> + + <para><emphasis>Esempi:</emphasis></para> + + <para>Per rimuovere la directory vuota + <filename>/home/frank/data</filename> mentre si è in + <filename>/home/frank</filename> usare:</para> + + <screen>&prompt.user; <userinput>rmdir data</userinput></screen> + + <para>oppure</para> + + <screen>&prompt.user; <userinput>rmdir /home/frank/data</userinput></screen> + </sect2> + + <sect2 id="getting-started-directory-nav-control-ls"> + <title>ls - mostra i contenuti delle directory</title> + + <para>Il comando per visualizzare le proprie directory e i propri file + è &man.ls.1;. È possibile ottenere, attraverso le opzioni, + informazioni circa la dimensione, il tipo, i permessi, la data di + creazione, di modifica e di accesso del file.</para> + + <para><emphasis>Sintassi</emphasis></para> + + <para><command>ls [<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 è un link simbolico, mostra le + informazioni del file o della directory a cui il link si + riferisce, non le informazioni del link stesso</entry> + </row> + + <row> + <entry><option>-l</option></entry> + + <entry>listato lungo: mostra i modi, informazioni di link, il + proprietario, la dimensione, la data dell'ultima modifica del + file. Se il file è un link simbolico, una freccia + (-->) precede il percorso del file collegato.</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Il <emphasis>campo modi</emphasis> viene fornito dall'opzione + <option>-l</option> e consiste di 10 caratteri. Il primo carattere + è uno dei seguenti:</para> + + <informaltable frame="none"> + <tgroup cols="2"> + <colspec colwidth="2in"> + + <thead> + <row> + <entry>CARATTERE</entry> + + <entry>SE L'ELEMENTO E'</entry> + </row> + </thead> + + <tbody> + <row> + <entry><emphasis>d</emphasis></entry> + + <entry>directory</entry> + </row> + + <row> + <entry><emphasis>-</emphasis></entry> + + <entry>file ordinario</entry> + </row> + + <row> + <entry><emphasis>b</emphasis></entry> + + <entry>file speciale per dispositivi a blocchi</entry> + </row> + + <row> + <entry><emphasis>c</emphasis></entry> + + <entry>file speciale per dispositivi a caratteri</entry> + </row> + + <row> + <entry><emphasis>l</emphasis></entry> + + <entry>link simbolico</entry> + </row> + + <row> + <entry><emphasis>s</emphasis></entry> + + <entry>socket</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>I 9 caratteri successivi sono raggruppati in 3 blocchi di 3 + caratteri ciascuno. Indicano i <emphasis>permessi di accesso al + file</emphasis>: i primi 3 caratteri si riferiscono ai permessi del + <emphasis>proprietario</emphasis> del file, i successivi 3 ai permessi + degli utenti del <emphasis>gruppo</emphasis> Unix assegnato al file e + gli ultimi 3 caratteri ai permessi degl'<emphasis>altri</emphasis> + utenti sul sistema. Possono assumere i seguenti simboli:</para> + + <informaltable frame="none"> + <tgroup cols="2"> + <colspec colwidth="0.4in"> + + <tbody> + <row> + <entry><emphasis>r</emphasis></entry> + + <entry>permesso di lettura</entry> + </row> + + <row> + <entry><emphasis>w</emphasis></entry> + + <entry>permesso di scrittura</entry> + </row> + + <row> + <entry><emphasis>x</emphasis></entry> + + <entry>permesso di esecuzione</entry> + </row> + + <row> + <entry><emphasis>-</emphasis></entry> + + <entry>permesso negato</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Esistono altri permessi, specificamente progettati per essere usati + in speciali situazioni. Questi sono spiegati nelle pagine man di + &man.ls.1;.</para> + + <para><emphasis>Esempi:</emphasis></para> + + <para>Per mostrare i file in una directory</para> + + <screen>&prompt.user; <userinput>ls</userinput> +demofiles frank linda</screen> + + <para>Per mostrare tutti i file in una directory, inclusi i file nascosti + (iniziano con un punto):</para> + + <screen>&prompt.user; <userinput>ls -a</userinput> +. .cshrc .history .plan .rhosts frank +.. .emacs .login .profile demofiles linda</screen> + + <para>Per avere un listato lungo:</para> + + <screen>&prompt.user; <userinput>ls -al</userinput> +total 24 +drwxr-sr-x 5 workshop acs 512 Jun 7 11:12 . +drwxr-xr-x 6 root sys 512 May 29 09:59 .. +-rwxr-xr-x 1 workshop acs 532 May 20 15:31 .cshrc +-rw------- 1 workshop acs 525 May 20 21:29 .emacs +-rw------- 1 workshop acs 622 May 24 12:13 .history +-rwxr-xr-x 1 workshop acs 238 May 14 09:44 .login +-rw-r--r-- 1 workshop acs 273 May 22 23:53 .plan +-rwxr-xr-x 1 workshop acs 413 May 14 09:36 .profile +-rw------- 1 workshop acs 49 May 20 20:23 .rhosts +drwx------ 3 workshop acs 512 May 24 11:18 demofiles +drwx------ 2 workshop acs 512 May 21 10:48 frank +drwx------ 3 workshop acs 512 May 24 10:59 linda</screen> + </sect2> + </sect1> + + <sect1 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ò 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à 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à 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> & + <command>ren</command></entry> + </row> + + <row> + <entry>elimina un file</entry> + + <entry><command>rm</command></entry> + + <entry><command>erase</command> & + <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à tutto quello che è stato fatto è aver + aggiornato l'elemento della tabella di directory per attribuire al file + il nuovo nome. Il contenuto del file rimane come era prima della + rinominazione.</para> + </sect2> + + <sect2 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à che quel + file non esiste più. In realtà tutto quello che è + stato fatto è aver rimosso l'elemento dalla tabella di directory + e marcato l'inode come <quote>non usato</quote>. Il contenuto del file + è ancora sul disco, ma ora il sistema non ha più modo di + identificare quei blocchi di dati con il nome del file eliminato. Non + c'è un certo comando per + <quote><emphasis>riprendere</emphasis></quote> un file che è + stato eliminato in questo modo. Per questa ragione molti utenti alle + prime armi effettuano un alias del comando di eliminazione in + <command>rm -i</command> dove l'opzione <option>-i</option> chiede di + confermare prima di rimuovere il file. Simili alias sono generalmente + messi nel file <filename>.cshrc</filename> per la shell C (vedere il + <link linkend="shells">Capitolo 5</link>).</para> + </sect2> + + <sect2 id="getting-started-file-mant-comm-file-perm"> + <title>Permessi dei file</title> + + <para>Ciascun file e directory ha permessi che stabiliscono chi può + <emphasis>leggerlo</emphasis>, <emphasis>scriverlo</emphasis> e/o + <emphasis>eseguirlo</emphasis>. Per scoprire i permessi assegnati a un + file, può essere usato il comando &man.ls.1; con l'opzione + <option>-l</option>. Quando si ha la necessità di conoscere il + gruppo per il quale i permessi sono stati assegnati si può usare + l'opzione <option>-g</option> insieme a <command>ls -l</command> + (solamente BSD).</para> + + <para>Quando si usa il comando <command>ls -lg</command> su un file + (<command>ls -l</command> su SysV) l'output sarà mostrato come + il seguente:</para> + + <screen>-rwxr-x--- user Unixgroup size Month nn hh:mm filename</screen> + + <para>La zona dedicata ai caratteri e trattini + (<emphasis>-rwxr-x---</emphasis>) è la zona che mostra il tipo di + file e i permessi del file, come spiegato nella precedente sezione. + Quindi la stringa di permessi dell'esempio, + <emphasis>-rwxr-x---</emphasis>, permette al proprietario + <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.) è &man.chmod.1; (cambio dei modi). La sintassi richiede + l'uso del comando con tre cifre (rappresentanti i permessi del + <emphasis>proprietario</emphasis> (<emphasis>u</emphasis>), i permessi + del <emphasis>gruppo</emphasis> (<emphasis>g</emphasis>) e i permessi + degli <emphasis>altri</emphasis> utenti (<emphasis>o</emphasis>)) + seguite da un argomento (che può essere un nome di un file o una + lista di file e directory). Oppure può essere usato con una + rappresentazione simbolica dei permessi, indicando a quale utenza questi + vanno applicati.</para> + + <para>Ogni tipo di permesso è rappresentato dal proprio numero + equivalente:</para> + + <para><emphasis>lettura=4, scrittura=2, esecuzione=1</emphasis></para> + + <para>o da singoli caratteri:</para> + + <para><emphasis>lettura=r, scrittura=w, esecuzione=x</emphasis></para> + + <para>Il permesso <emphasis>4</emphasis> o <emphasis>r</emphasis> + specifica il permesso di <emphasis>lettura</emphasis>. Se i permessi + desiderati sono lettura e scrittura, il 4 (rappresentante la lettura) e + il 2 (rappresentante la scrittura) sono addizionati per ottenere il + permesso 6. Quindi, un permesso settato a 6 vorrà concedere un + permesso di lettura e di scrittura.</para> + + <para>Alternativamente si può usare una notazione simbolica che + usa un carattere rappresentativo per l'utenza a cui ci si riferisce, uno + per il permesso e uno per l'operazione, dove l'operazione può + essere:</para> + + <informaltable frame="none"> + <tgroup cols="2"> + <colspec colwidth="0.7in"> + + <tbody> + <row> + <entry>+</entry> + + <entry>aggiunge permessi</entry> + </row> + + <row> + <entry>-</entry> + + <entry>rimuove permessi</entry> + </row> + + <row> + <entry>=</entry> + + <entry>setta permessi</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Quindi per settare i permessi di lettura e di scrittura per il + proprietario del file si usa nella notazione simbolica + <emphasis>u=rw</emphasis>.</para> + + <para><emphasis>Sintassi</emphasis></para> + + <informaltable frame="none"> + <tgroup cols="2"> + <colspec colwidth="3.5in"> + + <tbody> + <row> + <entry><command>chmod <replaceable>nnn</replaceable> + [<replaceable>lista argomenti</replaceable>]</command></entry> + + <entry>modalità numerica</entry> + </row> + + <row> + <entry><command>chmod [<replaceable>chi</replaceable>] + <replaceable>op</replaceable> + [<replaceable>perm</replaceable>] + [<replaceable>lista argomenti</replaceable>]</command></entry> + + <entry>modalità simbolica</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>dove <replaceable>nnn</replaceable> sono i tre numeri rappresentanti + i permessi del <emphasis>proprietario</emphasis>, del + <emphasis>gruppo</emphasis> e degli <emphasis>altri</emphasis> utenti; + <replaceable>chi</replaceable> può essere + <emphasis>u,g,o</emphasis> oppure <emphasis>a</emphasis> (tutti) e + <replaceable>perm</replaceable> può essere + <emphasis>r,w,x</emphasis>. Nella notazione simbolica si può + separare la specifica dei permessi con una virgola, 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 + è:</para> + + <para><command>chmod 755 file1</command> oppure + <command>chmod u=rwx,go=rx file1</command></para> + + <note> + <para>Quando si assegnano i permessi a un file per l'utenza + <emphasis>gruppo</emphasis> e per l'utenza <emphasis>altri</emphasis> + è necessario che il minimo permesso di esecuzione (inteso come + permesso di accesso) per la directory nella quale il file è + posizionato sia abilitato. Un semplice modo per far questo è + posizionarsi nella directory nella quale i permessi devo essere + garantiti e digitare:</para> + + <para><command>chmod 711 .</command> oppure + <command>chmod u=rw,+x .</command> oppure + <command>chmod u=rwx,go=x .</command></para> + + <para>dove il punto (.) indica la + <emphasis>directory corrente</emphasis>.</para> + </note> + </sect2> + + <sect2 id="getting-started-file-mant-comm-chown"> + <title>chown - cambio del proprietario del file</title> + + <para>Il proprietario di un file può essere cambiato con il comando + &man.chown.8;. Su molte versioni Unix questo può essere + realizzato solo dal super-user, ad esempio, un utente normale non + può attribuire i suoi file ad altri proprietari. &man.chown.8; + è usato come qui sotto, dove &prompt.root; rappresenta il prompt + di shell per il super-user.</para> + + <para><emphasis>Sintassi</emphasis></para> + + <informaltable frame="none"> + <tgroup cols="2"> + <colspec colwidth="3.5in"> + + <tbody> + <row> + <entry><command>chown [<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ù + 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ò 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> è 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à 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><spazio></emphasis></entry> + + <entry>per vedere la schermata successiva</entry> + </row> + + <row> + <entry align="center"><emphasis><return>o<CR></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ù (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ò 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à di gestione dell'esecuzione di un + processo in shell corrente: la shell non aspetta la fine di tale + processo ma continua la sua normale esecuzione</para> + + <para><emphasis>Vedere:</emphasis> + <link linkend="shells-job-control">sezione 5.5</link></para> + </glossdef> + </glossentry> + + <glossentry> + <glossterm>backquote</glossterm> + + <glossdef> + <para>caratteri speciali utilizzati per inserire in una stringa l'output + del comando specificato tra questi caratteri</para> + + <para><emphasis>Vedere:</emphasis> <link + linkend="shell-programming-sett-param-val">sezione 9.2</link></para> + </glossdef> + </glossentry> + + <glossentry> + <glossterm>built-in</glossterm> + + <glossdef> + <para>comandi incorporati nel codice della shell</para> + + <para><emphasis>Vedere:</emphasis> <link + linkend="shells-built-in-comm">sezione 5.1</link></para> + </glossdef> + </glossentry> + </glossdiv> + + <glossdiv> + <title>C</title> + + <glossentry> + <glossterm>case sensitive</glossterm> + + <glossdef> + <para>distinzione tra lettere maiuscole e lettere minuscole</para> + </glossdef> + </glossentry> + </glossdiv> + + <glossdiv> + <title>D</title> + + <glossentry> + <glossterm>directory-home</glossterm> + + <glossdef> + <para>è la directory dell'utente, nella quale ci si ritrova + (in generale) dopo la fase di login</para> + + <para><emphasis>Vedere:</emphasis> <link + linkend="getting-started-directory-nav-control">sezione + 3.6</link></para> + </glossdef> + </glossentry> + + <glossentry> + <glossterm>directory-root</glossterm> + + <glossdef> + <para>è la directory padre di tutte le altre directory (indicata + spesso con il segno /)</para> + + <para><emphasis>Vedere:</emphasis> <link + linkend="structure-file-system">sezione 2.2</link></para> + </glossdef> + </glossentry> + </glossdiv> + + <glossdiv> + <title>E</title> + + <glossentry> + <glossterm>editor</glossterm> + + <glossdef> + <para>strumenti per manipolare testi (programmi, ecc.)</para> + + <para><emphasis>Vedere:</emphasis> <link linkend="editors">Capitolo + 10</link></para> + </glossdef> + </glossentry> + + <glossentry> + <glossterm>EOF</glossterm> + + <glossdef> + <para>sta per <quote>end of file</quote> e indica la fine del + file</para> + </glossdef> + </glossentry> + </glossdiv> + + <glossdiv> + <title>F</title> + + <glossentry> + <glossterm>filename</glossterm> + + <glossdef> + <para>nome del file</para> + </glossdef> + </glossentry> + + <glossentry> + <glossterm>file system</glossterm> + + <glossdef> + <para>architettura formata da un insieme di strutture dati che permetto + di organizzare e gestire i dati su disco</para> + + <para><emphasis>Vedere:</emphasis> <link + linkend="structure-file-system">sezione 2.2</link></para> + </glossdef> + </glossentry> + + <glossentry> + <glossterm>foreground</glossterm> + + <glossdef> + <para>riferito alla modalità di gestione dell'esecuzione di un + processo in shell corrente: la shell aspetta che il processo termini + prima di riprendere la sua esecuzione</para> + + <para><emphasis>Vedere:</emphasis> <link + linkend="shells-job-control">sezione 5.5</link></para> + </glossdef> + </glossentry> + </glossdiv> + + <glossdiv> + <title>G</title> + + <glossentry> + <glossterm>groupid</glossterm> + + <glossdef> + <para>numero che identifica in maniera univoca un gruppo di utenti su un + sistema Unix</para> + + <para><emphasis>Vedere:</emphasis> <link + linkend="getting-started-login-identity">sezione 3.1.4</link></para> + </glossdef> + </glossentry> + + <glossentry> + <glossterm>groupname</glossterm> + + <glossdef> + <para>nome che identifica un gruppo su un sistema Unix</para> + + <para><emphasis>Vedere:</emphasis> <link + linkend="getting-started-login-identity">sezione 3.1.4</link></para> + </glossdef> + </glossentry> + </glossdiv> + + <glossdiv> + <title>H</title> + + <glossentry> + <glossterm>hard link</glossterm> + + <glossdef> + <para>link fisico tra due file</para> + + <para><emphasis>Vedere:</emphasis> <link + linkend="commands-work-files-ln">sezione 8.1.7</link></para> + </glossdef> + </glossentry> + + <glossentry> + <glossterm>here document</glossterm> + + <glossdef> + <para>speciale forma di quoting</para> + + <para><emphasis>Vedere:</emphasis> <link + linkend="shell-programming-here-doc">sezione 9.6</link></para> + </glossdef> + </glossentry> + + <glossentry> + <glossterm>history</glossterm> + + <glossdef> + <para>storia dei comandi digitati precedentemente</para> + + <para><emphasis>Vedere:</emphasis> <link + linkend="shells-history">sezione 5.6</link></para> + </glossdef> + </glossentry> + </glossdiv> + + <glossdiv> + <title>I</title> + + <glossentry> + <glossterm>inode</glossterm> + + <glossdef> + <para>struttura di dati contenente informazioni sui file</para> + + <para><emphasis>Vedere:</emphasis> <link + linkend="structure-directories-files-inodes">sezione 2.3</link></para> + </glossdef> + </glossentry> + </glossdiv> + + <glossdiv> + <title>J</title> + + <glossentry> + <glossterm>job</glossterm> + + <glossdef> + <para>sinonimo di processo</para> + </glossdef> + </glossentry> + </glossdiv> + + <glossdiv> + <title>K</title> + + <glossentry> + <glossterm>kernel</glossterm> + + <glossdef> + <para>è il cuore del sistema operativo, il posto in cui sono + caricati tutti i driver per i device, gestisce i processi, le + operazione di I/O, ecc.</para> + </glossdef> + </glossentry> + </glossdiv> + + <glossdiv> + <title>L</title> + + <glossentry> + <glossterm>login</glossterm> + + <glossdef> + <para>riferito sia al nome utente di un account Unix (login username) + sia alla fase (fase di login) di accesso a un sistema Unix + (login+password) (il riferimento risulta chiaro dal contesto)</para> + + <para><emphasis>Vedere:</emphasis> <link + linkend="getting-started-login">sezione 3.1</link></para> + </glossdef> + </glossentry> + </glossdiv> + + <glossdiv> + <title>M</title> + + <glossentry> + <glossterm>man page</glossterm> + + <glossdef> + <para>pagina del manuale di un sistema Unix</para> + + <para><emphasis>Vedere:</emphasis> <link + linkend="getting-started-get-help">sezione 3.5</link></para> + </glossdef> + </glossentry> + + <glossentry> + <glossterm>multi-level file system </glossterm> + + <glossdef> + <para>file system a più livelli organizzati in gerarchia</para> + + <para><emphasis>Vedere:</emphasis> <link + linkend="structure-file-system">sezione 2.2</link></para> + </glossdef> + </glossentry> + + <glossentry> + <glossterm>multi-processor</glossterm> + + <glossdef> + <para>o multi-tasking; capacità del sistema operativo che + permette di eseguire più programmi (processi) senza doverne + aspettare la terminazione sequenziale</para> + + <para><emphasis>Vedere:</emphasis> <link linkend="structure-os">sezione + 2.1</link></para> + </glossdef> + </glossentry> + + <glossentry> + <glossterm>multi-user</glossterm> + + <glossdef> + <para>capacità del sistema operativo che permette di gestire + più utenti contemporaneamente</para> + + <para><emphasis>Vedere:</emphasis> <link linkend="structure-os">sezione + 2.1</link></para> + </glossdef> + </glossentry> + </glossdiv> + + <glossdiv> + <title>O</title> + + <glossentry> + <glossterm>OS</glossterm> + + <glossdef> + <para>operating system, sistema operativo</para> + </glossdef> + </glossentry> + </glossdiv> + + <glossdiv> + <title>P</title> + + <glossentry> + <glossterm>password</glossterm> + + <glossdef> + <para>codice segreto di un account Unix utilizzato per autenticare un + utente nel sistema</para> + + <para><emphasis>Vedere:</emphasis> <link + linkend="getting-started-login">sezione 3.1</link> e + <link + linkend="getting-started-login-passwords">sezione 3.1.2</link></para> + </glossdef> + </glossentry> + + <glossentry> + <glossterm>path name</glossterm> + + <glossdef> + <para>percorso dei nomi, che indica i <quote>rami</quote> del file + system (directory separate da un /) che bisogna attraversare per + raggiungere un determinato file o directory</para> + + <para><emphasis>Vedere:</emphasis> <link + linkend="structure-file-system">sezione 2.2</link></para> + </glossdef> + </glossentry> + + <glossentry> + <glossterm>pattern</glossterm> + + <glossdef> + <para>schema</para> + </glossdef> + </glossentry> + + <glossentry> + <glossterm>pipe/piping</glossterm> + + <glossdef> + <para>meccanismo che porta l'output di un comando nell'input di + un altro</para> + + <para><emphasis>Vedere:</emphasis> <link + linkend="special-features-file-redir">sezione 6.2</link></para> + </glossdef> + </glossentry> + </glossdiv> + + <glossdiv> + <title>Q</title> + + <glossentry> + <glossterm>quoting</glossterm> + + <glossdef> + <para>tecnica di interpretazione di una stringa da parte della + shell</para> + + <para><emphasis>Vedere:</emphasis> <link + linkend="shell-programming-quoting">sezione 9.3</link></para> + </glossdef> + </glossentry> + </glossdiv> + + <glossdiv> + <title>S</title> + + <glossentry> + <glossterm>script</glossterm> + + <glossdef> + <para>programma scritto nel linguaggio della shell</para> + + <para><emphasis>Vedere:</emphasis> <link + linkend="shell-programming-scripts">sezione 9.1</link></para> + </glossdef> + </glossentry> + + <glossentry> + <glossterm>shell</glossterm> + + <glossdef> + <para>interprete a linea di comando. È l'interfaccia tra + l'utente e il sistema operativo (kernel)</para> + + <para><emphasis>Vedere:</emphasis> <link linkend="shells">Capitolo + 5</link></para> + </glossdef> + </glossentry> + + <glossentry> + <glossterm>simbolic link</glossterm> + + <glossdef> + <para>link simbolico (collegamento tramite path name) tra due file o + directory</para> + + <para><emphasis>Vedere:</emphasis> <link + linkend="commands-work-files-ln">sezione 8.1.7</link></para> + </glossdef> + </glossentry> + + <glossentry> + <glossterm>system call</glossterm> + + <glossdef> + <para>sono delle procedure (routine) standard, che i programmi utente + utilizzano per accedere ai servizi che il kernel mette + a disposizione</para> + + <para><emphasis>Vedere:</emphasis> <link linkend="structure-os">sezione + 2.1</link></para> + </glossdef> + </glossentry> + + <glossentry> + <glossterm>standard error</glossterm> + + <glossdef> + <para>dispositivo standard di errori (terminale di default)</para> + + <para><emphasis>Vedere:</emphasis> <link + linkend="special-features-file-desc">sezione 6.1</link></para> + </glossdef> + </glossentry> + + <glossentry> + <glossterm>standard input</glossterm> + + <glossdef> + <para>dispositivo standard di ingresso (tastiera di default)</para> + + <para><emphasis>Vedere:</emphasis> <link + linkend="special-features-file-desc">sezione 6.1</link></para> + </glossdef> + </glossentry> + + <glossentry> + <glossterm>standard output</glossterm> + + <glossdef> + <para>dispositivo standard di uscita (terminale di default)</para> + + <para><emphasis>Vedere:</emphasis> <link + linkend="special-features-file-desc">sezione 6.1</link></para> + </glossdef> + </glossentry> + + <glossentry> + <glossterm>super-user</glossterm> + + <glossdef> + <para>o root, utente speciale che amministra un sistema Unix</para> + </glossdef> + </glossentry> + </glossdiv> + + <glossdiv> + <title>U</title> + + <glossentry> + <glossterm>userid</glossterm> + + <glossdef> + <para>numero che identifica univocamente l'utente su un sistema + Unix</para> + + <para><emphasis>Vedere:</emphasis> <link + linkend="getting-started-login-identity">sezione 3.1.4</link></para> + </glossdef> + </glossentry> + + <glossentry> + <glossterm>username</glossterm> + + <glossdef> + <para>o user, nome di un utente Unix (utilizzato nella fase di + login)</para> + + <para><emphasis>Vedere:</emphasis> <link + linkend="getting-started-login-identity">sezione 3.1.4</link></para> + </glossdef> + </glossentry> + </glossdiv> + + <glossdiv> + <title>V</title> + + <glossentry> + <glossterm>verbose</glossterm> + + <glossdef> + <para>modalità di esecuzione di un comando che fornisce molte + informazioni addizionali (utile per gli utenti novizi)</para> + </glossdef> + </glossentry> + </glossdiv> + + <glossdiv> + <title>W</title> + + <glossentry> + <glossterm>wild card</glossterm> + + <glossdef> + <para>anche conosciuti come meta-caratteri, sono caratteri speciali + utilizzati in alcune circostanze per il confronto/sostituzione di + caratteri</para> + + <para><emphasis>Vedere:</emphasis> <link + linkend="special-features-wildcard">sezione 6.4</link></para> + </glossdef> + </glossentry> + + <glossentry> + <glossterm>word-wrap</glossterm> + + <glossdef> + <para>meccanismo che invia alla prossima riga l'intera parola fuori + margine</para> + </glossdef> + </glossentry> + </glossdiv> +</glossary> + +<!-- + 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à multi-utente (multi-user), multi-processo (multi-processor) + e un file system multi-livello (gerarchico) + (multi-level file system).</para> + + <para>1969 AT&T era infelice del progresso di Multics e abbandona il + progetto. Ken Thompson, Dennis Ritchie, Rudd Canaday e Doug McIlroy, + alcuni programmatori dei Bell Lab che avevano lavorato nel progetto Multics, + progettano e implementano su un PDP-7 la prima versione del file system Unix + insieme ad alcune utility. Il nome Unix è stato assegnato da parte + di Brian Kernighan come gioco di parole su Multics.</para> + + <para>1 Gennaio 1970 Inizio di Unix.</para> + + <para>1971 Il sistema ora gira su un PDP-11 con 16 Kbyte di memoria, di cui + 8 Kbyte per i programmi utente, e con un disco di 512 Kbyte.</para> + + <para>Il suo primo reale impiego è come strumento di manipolazione + del testo in esclusiva per il dipartimento dei Bell Lab. Quel tipo di + utilizzo giustifica ulteriormente la ricerca e lo sviluppo attraverso la + programmazione di gruppo. Unix attira i programmatori perchè + è stato progettato con queste caratteristiche:</para> + + <itemizedlist> + <listitem> + <para>ambiente di programmazione;</para> + </listitem> + + <listitem> + <para>semplice interfaccia utente;</para> + </listitem> + + <listitem> + <para>semplici utility che possono essere combinate per realizzare potenti + funzioni;</para> + </listitem> + + <listitem> + <para>file system gerarchico (ad albero);</para> + </listitem> + + <listitem> + <para>semplice interfacciamento con i dispositivi, in armonia con il + formato dei file;</para> + </listitem> + + <listitem> + <para>sistema multi-utente e multi-processo;</para> + </listitem> + + <listitem> + <para>architettura indipendente e trasparente all'utente.</para> + </listitem> + </itemizedlist> + + <para>1973 Unix è riscritto prevalentemente in C, un nuovo linguaggio + di programmazione sviluppato da Dennis Ritchie. La codifica in questo + linguaggio di alto livello diminuisce fortemente lo sforzo necessario per + portare Unix su nuove macchine.</para> + + <para>1974 Thompson e Ritchie descrivono in una relazione pubblicata in un + comunicato dell'ACM il nuovo sistema operativo Unix. Unix genera + entusiasmo nella comunità accademica che lo vede come un potente + strumento di insegnamento per lo studio della programmazione di sistemi. + Poichè il decreto del 1956 impedisce ad AT&T di + commercializzare il prodotto, viene concessa una licenza + all'Università per scopi educativi e una per esistenza + commerciale.</para> + + <para>1977 Ci sono circa 500 siti Unix nel mondo.</para> + + <para>1980 BSD 4.1 (software sviluppato da Berkeley).</para> + + <para>1983 SunOS, BSD 4.2, Sys V.</para> + + <para>1984 Ci sono circa 100.000 siti Unix che girano su differenti + piattaforme hardware, con differenti capacità.</para> + + <para>1988 AT&T e Sun Microsystem sviluppano System V Release 4 (SVR4). + Questo sarà in futuro implementato in UnixWare e Solaris 2.</para> + + <para>1993 Novell compra Unix da AT&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 è rivolto in prevalenza a quelle persone che si + avvicinano per la prima volta a Unix, ma non solo.</para> + + <para>Prima di iniziare ad esporre la traduzione di questo documento + volevo dire alcune cose. Alcune parole del testo originale in lingua + inglese non sono state tradotte in italiano, vuoi perchè la + rispettiva traduzione in italiano non è efficiente in termini di + comprensibilità, vuoi perchè è di uso comune far + riferimento a queste direttamente in lingua inglese (vedi login, quoting, + built-in, here document, shell, background, pipe, script, ecc.). Inoltre mi + è sembrato opportuno e logico modificare l'ultima sezione di questo + documento, bibliografia di Unix (testi in lingua inglese), in una breve + bibliografia italiana di Unix. Infine ho aggiunto un glossario dove poter + trovare un elenco dei termini inglesi più caldi incontrati in questo + documento e il loro significato corrispondente.</para> + + <para>Non mi resta che augurarvi una buona lettura.</para> + + <bridgehead 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> è per i nomi dei file, + per gli URL, per il testo enfatizzato, e per il primo utilizzo dei + termini tecnici.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><varname>Monospazio</varname></term> + + <listitem> + <para>Un font <varname>monospazio</varname> è usato per i + messaggi di errore, i comandi, le variabili di ambiente, i nomi di + host, i nomi degli utenti, i nomi dei gruppi, i nomi dei device, le + variabili, e i frammenti di codice.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><application>Grassetto</application></term> + + <listitem> + <para>Un font in <application>grassetto</application> è per le + applicazioni, i comandi, e i tasti.</para> + </listitem> + </varlistentry> + </variablelist> + + <bridgehead 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 è direttamente eseguibile. + Si fa immediatamente seguire a quel simbolo il nome della shell + o del programma da eseguire (gli spazi sono permessi), usando un path name + assoluto. Generalmente si possono avere fino a 32 caratteri, forse di + più su alcuni sistemi e si può includere qualche opzione. + Quindi per inizializzare uno script per la shell Bourne la prima linea + dovrà essere:</para> + + <programlisting>#! /bin/sh</programlisting> + + <para>e per la shell C:</para> + + <programlisting>#! /bin/csh -f</programlisting> + + <para>dove l'opzione <option>-f</option> indica che la shell non deve + leggere il file <filename>.cshrc</filename>. Alcuni spazi bianchi + seguenti il magico simbolo, #!, sono opzionali.</para> + + <para>Inoltre si deve specificare che lo script è eseguibile, + settando gli opportuni bit sul file con il comando &man.chmod.1;, + esempio:</para> + + <screen>&prompt.user; <userinput>chmod +x <replaceable>shell_script</replaceable></userinput></screen> + + <para>All'interno degli script il simbolo # indica un commento da quel punto + fino alle fine della linea; #! è un caso speciale se trovato come + primo carattere del file.</para> + </sect1> + + <sect1 id="shell-programming-sett-param-val"> + <title>Settare i valori dei parametri</title> + + <para>I valori di un parametro, ad esempio <literal>param</literal>, sono + assegnati così:</para> + + <informaltable frame="none"> + <tgroup cols="2"> + <colspec colwidth="1.5in"> + + <thead> + <row> + <entry>Shell Bourne</entry> + + <entry>Shell C</entry> + </row> + </thead> + + <tbody> + <row> + <entry><command>param=<replaceable>valore</replaceable></command></entry> + + <entry><command>set param = + <replaceable>valore</replaceable></command></entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>dove <replaceable>valore</replaceable> è una valida stringa che + può essere chiusa tra caratteri di quoting singoli + ('<replaceable>valore</replaceable>') o doppi + ("<replaceable>valore</replaceable>") per permettere alcuni spazi bianchi + all'interno del valore della stringa. Quando viene racchiusa con dei + caratteri backquote (`<replaceable>valore</replaceable>`) la stringa viene + prima valutata dalla shell e viene sostituita con il risultato ottenuto + dalla valutazione. Questo viene spesso usato per eseguire un comando, + sostituendo l'output del comando a <replaceable>valore</replaceable>, + esempio:</para> + + <screen>$ <userinput>day=`date +%a`</userinput></screen> + + <screen>$ <userinput>echo $day</userinput> +Wed</screen> + + <para>Dopo che il valore del parametro è stato assegnato, si accede + al valore corrente del parametro usando la notazione + <literal>$param</literal> o <literal>${param}</literal>.</para> + </sect1> + + <sect1 id="shell-programming-quoting"> + <title>Quoting</title> + + <para>Le stringhe possono essere quotate per controllare il modo in cui la + shell interpreta alcuni parametri o variabili all'interno della stringa. + Per delimitare le stringhe si possono usare i caratteri di quoting singoli + (') o doppi ("). I caratteri di quoting doppi definiscono la stringa e + permettono la sostituzione di variabile. I carattere di quoting singoli + definiscono la stringa ma impediscono la sostituzione di variabile. + Un backslash (\) prima di un carattere viene posto per effettuare un + escape su di esso, specificando che il sistema deve considerare il + carattere letteralmente, senza assegnarli alcun significato speciale. + Queste tecniche di quoting possono essere usate per separare una variabile + da una stringa fissa. Come esempio si consideri la variabile + <literal>var</literal>, a cui è stata assegnata il valore + <literal>bat</literal>, e la stringa costante <literal>man</literal>. Se + si vuole combinare queste stringhe per ottenere come risultato la stringa + <literal>batman</literal> si può sperimentare:</para> + + <para><literal>$varman</literal></para> + + <para>ma questo non funzionerà, poichè la shell tenta di + valutare una variabile chiamata <literal>varman</literal>, che non esiste. + Per ottenere il risultato desiderato si ha la necessità di separare + le stringhe tramite quoting o di isolare la variabile con delle parentesi + graffe ({}), in questo modo:</para> + + <informaltable frame="none"> + <tgroup cols="2"> + <colspec colwidth="1.5in"> + + <tbody> + <row> + <entry><literal>"$var"man</literal></entry> + + <entry>- quoting sulla variabile</entry> + </row> + + <row> + <entry><literal>$var""man</literal></entry> + + <entry>- separazione di parametri</entry> + </row> + + <row> + <entry><literal>$var"man"</literal></entry> + + <entry>- quoting sulla costante</entry> + </row> + + <row> + <entry><literal>$var''man</literal></entry> + + <entry>- separazione di parametri</entry> + </row> + + <row> + <entry><literal>$var'man'</literal></entry> + + <entry>- quoting sulla costante</entry> + </row> + + <row> + <entry><literal>$var\man</literal></entry> + + <entry>- separazione di parametri</entry> + </row> + + <row> + <entry><literal>${var}man</literal></entry> + + <entry>- si isola la variabile</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Queste funzionano tutte poichè ", ', \, { e } non sono validi + caratteri per un nome di variabile.</para> + + <para>Non si può usare</para> + + <para><literal>'$var'man</literal></para> + + <para><literal>\$varman</literal></para> + + <para>poichè impediscono che la sostituzione della variabile + prenda posto.</para> + + <para>Quando si usano le parentesi graffe, queste devono circondare + solamente la variabile, senza includere il $, altrimenti saranno incluse + come parte del risultato della stringa, esempio:</para> + + <screen>&prompt.user; <userinput>echo {$var}man</userinput> +{bat}man</screen> + </sect1> + + <sect1 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ò essere illustrato con alcuni + semplici script. Per la shell Bourne lo script potrebbe essere:</para> + + <programlisting>#!/bin/sh +echo "$#:" $# +echo '$#:' $# +echo '$-:' $- +echo '$?:' $? +echo '$$:' $$ +echo '$!:' $! +echo '$3:' $3 +echo '$0:' $0 +echo '$*:' $* +echo '$@:' $@</programlisting> + + <para>Quando viene eseguito con alcuni argomenti, mostra i valori delle + variabili di shell, esempio:</para> + + <screen>$ <userinput>./variables.sh one two three four five</userinput> +5: 5 +$#: 5 +$-: +$?: 0 +$$: 12417 +$!: +$3: three +$0: ./variables.sh +$*: one two three four five +$@: one two three four five</screen> + + <para>Come si può notare, si ha la necessità di usare un + carattere di quoting singolo per impedire alla shell di assegnare + significati speciali a $. Il carattere di quoting doppio, come nella + prima struttura <command>echo</command>, permette di rimpiazzare il nome + della variabile con il suo valore.</para> + + <para>Similmente, per le variabili della shell C si possono illustrare le + sostituzioni di variabili tramite il seguente script:</para> + + <programlisting>#!/bin/csh -f +echo '$$:' $$ +echo '$3:' $3 +echo '$0:' $0 +echo '$*:' $* +echo '$argv[2]:' $argv[2] +echo '${argv[4]}:' ${argv[4]} +echo '$#argv:' $#argv</programlisting> + + <para>che quando eseguito con alcuni argomenti mostra il risultato + seguente:</para> + + <screen>&prompt.user; <userinput>./variables.csh one two three four five +</userinput> +$$: 12419 +$3: three +$0: ./variables.csh +$*: one two three four five +$argv[2]: two +${argv[4]}: four +$#argv: 5</screen> + </sect1> + + <sect1 id="shell-programming-param-sost"> + <title>Sostituzione di parametri</title> + + <para>Si può riferirsi ai parametri in modo astratto e sostituire i + loro valori in base a delle condizioni, usando gli operatori definiti qui + sotto. Ancora una volta si possono usare le parentesi graffe ({}) per + isolare la variabile e il suo operatore.</para> + + <informaltable frame="none"> + <tgroup cols="2"> + <colspec colwidth="2in"> + + <tbody> + <row> + <entry><literal>$<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'è + 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 è 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 è 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> è 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 è settato + allora si visualizza il messaggio. Se + <replaceable>parametro</replaceable> è settato allora si + usa il valore corrente.</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Non ci sono spazi nei precedenti operatori. Se un due punti (:) viene + inserito prima di -, =, + o ? allora si effettua prima un test per vedere + se il parametro ha un settaggio <emphasis>non-nullo</emphasis>.</para> + + <para>La shell C ha alcuni modi aggiuntivi per la sostituzione di + parametri:</para> + + <informaltable frame="none"> + <tgroup cols="2"> + <colspec colwidth="1.5in"> + + <tbody> + <row> + <entry><literal>$lista[<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 è settato, 0 + altrimenti</entry> + </row> + + <row> + <entry><literal>${?<replaceable>parametro</replaceable>}</literal></entry> + + <entry>come sopra</entry> + </row> + + <row> + <entry><literal>$<</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à 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à un valore +2: two: two # non sostituisce, ha già 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> è una forma di quoting + che permette alle variabili di shell di essere sostituite. È una + forma speciale di redirezione che inizia con una linea contenente + solamente <emphasis><<<replaceable>PAROLA</replaceable></emphasis> + e finisce con una linea contenete solamente + <emphasis><replaceable>PAROLA</replaceable></emphasis>. Nella shell + Bourne si può impedire la sostituzione di shell effettuando un + escape su <emphasis><replaceable>PAROLA</replaceable></emphasis>, mettendo + un \ davanti a <emphasis><replaceable>PAROLA</replaceable></emphasis> + sulla linea di redirezione, esempio + <emphasis><<\<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 << EOF cat << EOF +Questo here document Questo here document +$non $fa $non $fa +sostituzione di variabile sostituzione di variabile +EOF EOF +cat << \EOF cat << \EOF +Questo here document Questo here document +$non $fa $non $fa +sostituzione di variabile sostituzione di variabile +EOF \EOF</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ò 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 <return> +param=hello frank</screen> + </sect2> + + <sect2 id="shell-programming-int-input-csh"> + <title>Csh</title> + + <para>&man.csh.1; usa il simbolo <literal>$<</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 = $< + 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 <return> +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ù + flessibilità. 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ò essere omesso facendo precedere a } un + newline. Spazi e newline aggiuntivi sono permessi. + Alcuni esempi di funzioni possono essere visti nel semplice file + <filename>.profile</filename> discusso nei primi capitoli, dove si avevano + delle funzioni per <command>ls</command> e <command>ll</command>:</para> + + <para><command>ls() { /bin/ls -sbF "$@";}</command></para> + + <para><command>ll() { ls -al "$@";}</command></para> + + <para>La prima funzione ridefinisce &man.ls.1; affinchè le opzioni + <option>-sbF</option> siano sempre fornite dal comando standard + <command>/bin/ls</command> e in modo da agire in base all'input fornito, + <literal>$@</literal>. La seconda di queste funzioni prende il valore + corrente di <command>ls</command> (la funzione precedente) e aggiunge le + opzioni <option>-al</option>.</para> + + <para>Le funzioni sono molto utili negli script di shell. Il seguente + script è una versione semplificata di uno script utilizzato per + effettuare automaticamente il backup su nastro delle partizioni di + sistema.</para> + + <programlisting>#!/bin/sh +# Script cron per un completo backup del sistema +HOST=`/bin/uname -n` +admin=frank +Mt=/bin/mt +Dump=/usr/sbin/ufsdump +Mail=/bin/mailx +device=/dev/rmt/0n +Rewind="$Mt -f $device rewind" +Offline="$Mt -f $device rewoffl" +# Failure - exit +failure () { + $Mail -s "Backup fallito - $HOST" $admin << EOF_failure + $HOST + Script cron backup fallito. A quanto pare non c'è il nastro nel dispositivo. + EOF_failure + exit 1 + } +# Dump failure - exit +dumpfail () { + $Mail -s "Backup fallito - $HOST" $admin << EOF_dumpfail + $HOST + Script cron backup fallito. A quanto pare non c'è il nastro nel dispositivo. + EOF_dumpfail + exit 1 + } +# Success +success () { + $Mail -s "Backup completato con successo - $HOST" $admin << EOF_success + $HOST + Script cron backup apparentemente riuscito. Il file /etc/dumpdates è: + `/bin/cat /etc/dumpdates` + EOF_success + } +# Conferma nastro nel device +$Rewind || failure +$Dump 0uf $device / || dumpfail +$Dump 0uf $device /usr || dumpfail +$Dump 0uf $device /home || dumpfail +$Dump 0uf $device /var || dumpfail +($Dump 0uf $device /var/spool/mail || dumpfail) && success +$Offline</programlisting> + + <para>Questo script illustra alcuni argomenti che sono stati trattati in + questo documento. Lo script inizia settando i valori di alcuni parametri. + <literal>HOST</literal> viene inizializzato dall'output di un comando, + <literal>admin</literal> è l'amministratore di sistema, + <literal>Mt</literal>, <literal>Dump</literal> e <literal>Mail</literal> + sono nomi di programmi, <literal>device</literal> è il dispositivo + speciale usato per accedere al nastro, <literal>Rewind</literal> e + <literal>Offline</literal> contengono i comandi rispettivamente per + riavvolgere e scaricare il nastro usando il riferimento + <literal>Mt</literal> e le necessarie opzioni. Vengono definite + tre funzioni: <command>failure</command>, <command>dumpfail</command> e + <command>success</command>. Tutte le funzioni in questo script utilizzano + la forma <emphasis>here document</emphasis> per realizzare il contenuto + della funzione stessa. Si introducono ora gli operatori logici + <emphasis>OR</emphasis> (<emphasis>||</emphasis>) e + <emphasis>AND</emphasis> (<emphasis>&&</emphasis>); ciascuno è + posizionato tra una coppia di comandi. Per l'operatore + <emphasis>OR</emphasis>, il secondo comando viene eseguito solamente se + il primo comando non è stato completato con successo. Per + l'operatore <emphasis>AND</emphasis>, il secondo comando viene + eseguito solamente se il primo comando è stato completato con + successo.</para> + + <para>Lo scopo principale dello script è realizzare i comandi + <command>Dump</command>, ad esempio copiando i file system specificati. + Prima si tenta di eseguire il riavvolgimento del nastro. Se questo + fallisce, <literal>|| failure</literal>, si esegue la funzione + <command>failure</command> e si esce dal programma. Se invece questo ha + successo si procede con il backup a turno di ogni partizione, ogni volta + verificando che questa operazione sia completamente riuscita + (<literal>|| dumpfail</literal>). Se questa operazione non viene eseguita + completamente con successo si esegue la procedura + <command>dumpfail</command> e si esce. Se l'ultimo backup ha successo si + procede con la funzione <command>success</command> (<literal>(...) && + success</literal>). In fine si riavvolge il nastro e lo si manda fuori + linea affinchè altri utenti non possano accidentalmente scriverci + sopra.</para> + </sect1> + + <sect1 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> è + 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> è vera (true) +[<command>elif</command> <replaceable>condizione2</replaceable> + <command>then</command> lista di comandi se <replaceable>condizione2</replaceable> è vera (true)] +[<command>else</command> + lista di comandi se <replaceable>condizione1</replaceable> è falsa (false)] +<command>fi</command></programlisting> + + <para>Le condizioni sono sottoposte usualmente al comando &man.test.1; o + <command>[]</command> (Vedere la <link + linkend="shell-programming-control-comm-test">sezione 9.9.6</link>). + L'<command>if</command> e <command>then</command> devono essere + separati con un newline o un punto e virgola (;).</para> + + <programlisting>#!/bin/sh +if [ $# -ge 2 ] +then + echo $2 +elif [ $# -eq 1 ]; then + echo $1 +else + echo Nessun input +fi</programlisting> + + <para>Sono richiesti degli spazi nel formato della condizione di + &man.test.1;, uno dopo <command>[</command> e uno prima di + <command>]</command>. Questo script potrebbe comportarsi in modo + differente a seconda che ci siano zero, uno o più argomenti su + linea di comando. Iniziando con nessun argomento:</para> + + <screen>$ <userinput>./if.sh</userinput> +Nessun input</screen> + + <para>Ora con un argomento:</para> + + <screen>$ <userinput>./if.sh one</userinput> +one</screen> + + <para>E ora con due argomenti:</para> + + <screen>$ <userinput>./if.sh one two</userinput> +two</screen> + </sect3> + + <sect3 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> è vera (true) +[<command>else</command> <command>if</command> (<replaceable>condizione2</replaceable>) <command>then</command> + lista di comandi se <replaceable>condizione2</replaceable> è vera (true)] +[<command>else</command> + lista di comandi se <replaceable>condizione1</replaceable> è falsa (false)] +<command>endif</command></programlisting> + + <para>L'<command>if</command> e <command>then</command> devono stare + sulla stessa linea.</para> + + <programlisting>#!/bin/csh -f +if ( $#argv >= 2 ) then + echo $2 +else if ( $#argv == 1 ) then + echo $1 +else + echo Nessun input +endif</programlisting> + + <para>Di nuovo, questo script potrebbe comportarsi in modo differente a + seconda che ci siano zero, uno o più argomenti su linea di + comando. Iniziando con nessun argomento:</para> + + <screen>&prompt.user; <userinput>./if.csh</userinput> +Nessun input</screen> + + <para>Ora con un argomento:</para> + + <screen>&prompt.user; <userinput>./if.csh one</userinput> +one</screen> + + <para>E ora con due argomenti:</para> + + <screen>&prompt.user; <userinput>./if.csh one two</userinput> +two</screen> + </sect3> + </sect2> + + <sect2 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> è opzionale e può essere + usato per interrompere lo switch dopo che si è verificata una + corrispondenza del valore di tipo stringa del parametro confrontato. + <command>Switch</command> non accetta | nella lista degli schemi, ma + permette di unire insieme diverse strutture <command>case</command> + per fornire un simile risultato. Il seguente script di shell C ha lo + stesso comportamento dell'esempio precedente, riferito al + <command>case</command> della shell Bourne.</para> + + <programlisting>#!/bin/csh -f +switch ($1) + case aa: + case ab: + echo A + breaksw + case b?: + echo -n "B " + echo $1 + breaksw + case c*: + echo C + breaksw + default: + echo D +endsw</programlisting> + </sect3> + </sect2> + + <sect2 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> è opzionale, + presupponendo <literal>$@</literal> se nulla viene specificato. Ogni + valore in questa lista viene sostituito sequenzialmente in + <replaceable>variabile</replaceable> fino a quando la lista risulta + vuota. Possono essere usati wild card, che vengono applicati ai + nomi dei file nella directory corrente. Di seguito si illustra il + ciclo <command>for</command> che copia tutti i file che finiscono con + <filename>.old</filename> negli stessi nomi che finiscono però + con <filename>.new</filename>. In questi esempi l'utility + &man.basename.1; estrae la parte base del nome affinchè + si possa modificarne l'estensione.</para> + + <programlisting>#!/bin/sh +for file in *.old +do + newf=`basename $file .old` + cp $file $newf.new +done</programlisting> + </sect3> + + <sect3 id="shell-programming-control-comm-for-foreach-csh"> + <title>Csh</title> + + <programlisting><command>foreach</command> <replaceable>variabile</replaceable> (<replaceable>lista_di_valori</replaceable>) + <replaceable>lista di comandi</replaceable> +<command>end</command></programlisting> + + <para>L'equivalente script in shell C per copiare tutti i file con + estensione <filename>.old</filename> negli stessi file con estensione + <filename>.new</filename> è:</para> + + <programlisting>#!/bin/csh -f +foreach file (*.old) + set newf = `basename $file .old` + cp $file $newf.new +end</programlisting> + </sect3> + </sect2> + + <sect2 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> è:</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 + è:</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 è solamente disponibile per la + shell Bourne.</para> + + <programlisting><command>until</command> <replaceable>condizione</replaceable> +<command>do</command> + lista di comandi se la condizione è falsa +<command>done</command></programlisting> + + <para>La condizione viene verificata all'inizio di ogni ciclo e il ciclo + termina quando la condizione è vera.</para> + + <para>Uno script equivalente all'esempio del <command>while</command> + precedente è:</para> + + <programlisting>#!/bin/sh +until [ $# -le 0 ] +do + echo $1 + shift +done</programlisting> + + <para>Si noti che qui si verifica per <emphasis>minore o + uguale</emphasis>, piuttosto che per <emphasis>maggiore</emphasis>, + poichè il ciclo <command>until</command> viene abilitato da una + condizione <emphasis>falsa</emphasis>.</para> + + <para>Sia il ciclo <command>until</command> che il + <command>while</command> sono solamente eseguiti se la condizione + è soddisfatta. La condizione viene valutata prima + dell'esecuzione dei comandi.</para> + </sect2> + + <sect2 id="shell-programming-control-comm-test"> + <title>test</title> + + <para>Le espressioni condizionali vengono valutate per valori + <emphasis>veri</emphasis> o <emphasis>falsi</emphasis>. Questo, di + solito, viene realizzato con &man.test.1; o equivalentemente con i suoi + operatori <command>[]</command>. Se la condizione viene valutata vera, + viene settato uno stato di uscita zero (<emphasis>TRUE</emphasis>), + altrimenti viene settato uno stato di uscita non-zero + (<emphasis>FALSE</emphasis>). Se non ci sono argomenti viene settato + uno stato di uscita non-zero. Gli operatori utilizzati nelle + espressioni condizionali della shell Bourne sono mostrati qui + sotto.</para> + + <para>Per i <emphasis>nomi di file</emphasis> le opzioni per + &man.test.1; sono date con la sintassi seguente:</para> + + <para><option>-<replaceable>opzione</replaceable></option> + <replaceable>filename</replaceable></para> + + <para>Le opzioni di &man.test.1; disponibili per i + <emphasis>file</emphasis> includono:</para> + + <informaltable frame="none"> + <tgroup cols="2"> + <colspec colwidth="1in"> + + <tbody> + <row> + <entry><option>-r</option></entry> + + <entry>vero se il file esiste ed è leggibile</entry> + </row> + + <row> + <entry><option>-w</option></entry> + + <entry>vero se il file esiste ed è scrivibile</entry> + </row> + + <row> + <entry><option>-x</option></entry> + + <entry>vero se il file esiste ed è eseguibile</entry> + </row> + + <row> + <entry><option>-f</option></entry> + + <entry>vero se il file esiste ed è un file regolare (o per + &man.csh.1; esiste e non è una directory)</entry> + </row> + + <row> + <entry><option>-d</option></entry> + + <entry>vero se il file esiste ed è una directory</entry> + </row> + + <row> + <entry><option>-h</option> o <option>-L</option></entry> + + <entry>vero se il file esiste ed è un link + simbolico</entry> + </row> + + <row> + <entry><option>-c</option></entry> + + <entry>vero se il file esiste ed è un file speciale a + caratteri (ad esempio un dispositivo al quale si accede un + carattere alla volta)</entry> + </row> + + <row> + <entry><option>-b</option></entry> + + <entry>vero se il file esiste ed è un file speciale a + blocchi (ad esempio un dispositivo al quale si accede in blocchi + di dati)</entry> + </row> + + <row> + <entry><option>-p</option></entry> + + <entry>vero se il file esiste ed è un file pipe + (fifo)</entry> + </row> + + <row> + <entry><option>-u</option></entry> + + <entry>vero se il file esiste ed è setuid (ad esempio ha il + bit set-user-id settato a s o S nel terzo bit)</entry> + </row> + + <row> + <entry><option>-g</option></entry> + + <entry>vero se il file esiste ed è setgid (ad esempio ha il + bit set-group-id settato a s o S nel sesto bit)</entry> + </row> + + <row> + <entry><option>-k</option></entry> + + <entry>vero se il file esiste e ha lo sticky bit settato (una t + nel nono bit)</entry> + </row> + + <row> + <entry><option>-s</option></entry> + + <entry>vero se il file esiste ed ha una dimensione maggiore di + zero</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>C'è un test per i <emphasis>descrittori di + file</emphasis>:</para> + + <informaltable frame="none"> + <tgroup cols="2"> + <colspec colwidth="2in"> + + <tbody> + <row> + <entry><option>-t + [<replaceable>descrittore_file</replaceable>]</option></entry> + + <entry>vero se l'aperto descrittore del file specificato (1, + &man.stdout.4;, di default) è associato ad un + terminale</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Ci sono test per le <emphasis>stringhe</emphasis>:</para> + + <informaltable frame="none"> + <tgroup cols="2"> + <colspec colwidth="2in"> + + <tbody> + <row> + <entry><option>-z + <replaceable>stringa</replaceable></option></entry> + + <entry>vero se la lunghezza della stringa è zero</entry> + </row> + + <row> + <entry><option>-n + <replaceable>stringa</replaceable></option></entry> + + <entry>vero se la lunghezza della stringa non è + zero</entry> + </row> + + <row> + <entry><option><replaceable>stringa1</replaceable> = + <replaceable>stringa2</replaceable></option></entry> + + <entry>vero se <replaceable>stringa1</replaceable> è + identica a <replaceable>stringa2</replaceable></entry> + </row> + + <row> + <entry><option><replaceable>stringa1</replaceable> != + <replaceable>stringa2</replaceable></option></entry> + + <entry>vero se <replaceable>stringa1</replaceable> non è + identica a <replaceable>stringa2</replaceable></entry> + </row> + + <row> + <entry><replaceable>stringa</replaceable></entry> + + <entry>vero se la stringa non è nulla</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Ci sono dei confronti per gli interi:</para> + + <informaltable frame="none"> + <tgroup cols="2"> + <colspec colwidth="1.5in"> + + <tbody> + <row> + <entry><option><replaceable>n1</replaceable> -eq + <replaceable>n2</replaceable></option></entry> + + <entry>vero se gli interi <replaceable>n1</replaceable> e + <replaceable>n2</replaceable> sono uguali</entry> + </row> + + <row> + <entry><option><replaceable>n1</replaceable> -ne + <replaceable>n2</replaceable></option></entry> + + <entry>vero se gli interi <replaceable>n1</replaceable> e + <replaceable>n2</replaceable> non sono uguali</entry> + </row> + + <row> + <entry><option><replaceable>n1</replaceable> -gt + <replaceable>n2</replaceable></option></entry> + + <entry>vero se l'intero <replaceable>n1</replaceable> è + maggiore dell'intero <replaceable>n2</replaceable></entry> + </row> + + <row> + <entry><option><replaceable>n1</replaceable> -ge + <replaceable>n2</replaceable></option></entry> + + <entry>vero se l'intero <replaceable>n1</replaceable> è + maggiore o uguale dell'intero + <replaceable>n2</replaceable></entry> + </row> + + <row> + <entry><option><replaceable>n1</replaceable> -lt + <replaceable>n2</replaceable></option></entry> + + <entry>vero se l'intero <replaceable>n1</replaceable> è + minore dell'intero <replaceable>n2</replaceable></entry> + </row> + + <row> + <entry><option><replaceable>n1</replaceable> -le + <replaceable>n2</replaceable></option></entry> + + <entry>vero se l'intero <replaceable>n1</replaceable> è + minore o uguale dell'intero + <replaceable>n2</replaceable></entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Sono disponibili i seguenti <emphasis>operatori + logici</emphasis>:</para> + + <informaltable frame="none"> + <tgroup cols="2"> + <colspec colwidth="0.5in"> + + <tbody> + <row> + <entry><option>!</option></entry> + + <entry>negazione (unaria)</entry> + </row> + + <row> + <entry><option>-a</option></entry> + + <entry>and (binario)</entry> + </row> + + <row> + <entry><option>-o</option></entry> + + <entry>or (binario)</entry> + </row> + + <row> + <entry><option>()</option></entry> + + <entry>le espressioni all'interno di ( ) vengono raggruppate + insieme. Può essere necessario quotare le parentesi ( ) + per impedire alla shell di interpretarle.</entry> + </row> + </tbody> + </tgroup> + </informaltable> + </sect2> + + <sect2 id="shell-programming-control-comm-csh-log-rel-op"> + <title>Operatori relazionali e logici della shell C</title> + + <para>La shell C possiede un suo set di operatori logici e relazionali + built-in. In ordine decrescente di priorità questi sono:</para> + + <informaltable frame="none"> + <tgroup cols="2"> + <colspec colwidth="1.5in"> + + <tbody> + <row> + <entry><command>(...)</command></entry> + + <entry>raggruppa espressioni con ( )</entry> + </row> + + <row> + <entry><command>~</command></entry> + + <entry>inverso (il suo complemento)</entry> + </row> + + <row> + <entry><command>!</command></entry> + + <entry>negazione logica</entry> + </row> + + <row> + <entry><command>*, /, %</command></entry> + + <entry>moltiplicazione, divisione, modulo</entry> + </row> + + <row> + <entry><command>+, -</command></entry> + + <entry>addizione, sottrazione</entry> + </row> + + <row> + <entry><command><<, >></command></entry> + + <entry>shift a sinistra di bit, shift a destra di bit</entry> + </row> + + <row> + <entry><command><=</command></entry> + + <entry>minore o uguale</entry> + </row> + + <row> + <entry><command>>=</command></entry> + + <entry>maggiore o uguale</entry> + </row> + + <row> + <entry><command><</command></entry> + + <entry>minore</entry> + </row> + + <row> + <entry><command>></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>&</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>&&</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 è leggibile, + altrimenti ritorna falso (0)</entry> + </row> + + <row> + <entry><option>-w</option></entry> + + <entry>vero se il file esiste ed è scrivibile</entry> + </row> + + <row> + <entry><option>-x</option></entry> + + <entry>vero se il file esiste ed è eseguibile</entry> + </row> + + <row> + <entry><option>-f</option></entry> + + <entry>vero se il file esiste e non è una directory</entry> + </row> + + <row> + <entry><option>-d</option></entry> + + <entry>vero se il file esiste ed è una directory</entry> + </row> + + <row> + <entry><option>-e</option></entry> + + <entry>vero se il file esiste</entry> + </row> + + <row> + <entry><option>-o</option></entry> + + <entry>vero se l'utente corrente è il proprietario del + file</entry> + </row> + + <row> + <entry><option>-z</option></entry> + + <entry>vero se il file ha una lunghezza zero (file vuoto)</entry> + </row> + </tbody> + </tgroup> + </informaltable> + </sect2> + </sect1> +</chapter> + +<!-- + 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 è simile + al <emphasis>command.com</emphasis> in DOS. Una volta effettuato il login + nel sistema, viene assegnata la shell di default. La shell, al suo avvio, + legge i suoi file di inizializzazione e può settare alcune + variabili di ambiente, i path di ricerca dei comandi, gli alias dei comandi + ed eseguire qualche comando specificato in questi file.</para> + + <para>La prima shell è stata la shell Bourne, &man.sh.1;. Ogni + piattaforma Unix dispone della shell Bourne o di una shell Bourne + compatibile. Questa shell ha molte buone caratteristiche per controllare + l'input e l'output, ma non è molto adatta all'utente interattivo. + Per andare incontro a quest'ultimo è stata scritta la shell C, + &man.csh.1;, presente ora in molti, ma non tutti, i sistemi Unix. + Questa shell usa una sorta di sintassi C, il linguaggio con cui Unix + è stato scritto, ma ha molte scomode implementazioni + dell'input/output. La shell C ha il controllo dei job, quindi può + mandare un job eseguito in background (<quote>sotto shell</quote>) in + foreground (<quote>in shell corrente</quote>). Inoltre ha la funzione di + history (storia dei comandi) che permette di modificare e ripetere comandi + eseguiti precedentemente.</para> + + <para>Il prompt di default per la shell Bourne è <emphasis>$</emphasis> + (o &prompt.root; per l'utente root). Il prompt di default per la shell C + è &prompt.user;.</para> + + <para>Sono disponibili in rete molte altre shell. Quasi tutte sono basate + sulla shell &man.sh.1; o &man.csh.1; con estensioni per fornire il controllo + dei job alla shell &man.sh.1;, permettere di manipolare il modo di + esecuzione dei comandi su linea di comando, cercare attraverso i comandi + eseguiti precedentemente, fornire il completamento dei nomi dei comandi, + prompt personalizzati, ecc. Alcune delle seguenti shell maggiormente + conosciute potrebbero essere sul proprio amato sistema Unix: la shell korn, + <command>ksh</command>, di David Korn e la shell Bourne Again, &man.bash.1;, + dal progetto GNU Free Software Foundations, entrambe basate su &man.sh.1;, + la shell T-C, &man.tcsh.1; e l'estensione della shell C, + <command>cshe</command>, entrambe bastate su &man.csh.1;. In seguito si + descriveranno alcune delle caratteristiche di &man.sh.1; e &man.csh.1;, + così per iniziare.</para> + + <sect1 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ù + 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à 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ò 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 + (> 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 è + 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ù avanti.</para> + + <para>Per la shell C si può 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 è 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ò esserci un file di inizializzazione globale del + sistema, esempio <filename>/etc/profile</filename>. In tal caso, il file + globale del sistema sarà 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 è separata da due punti (:) e il punto + (<filename>.</filename>) specifica che la directory corrente è nel + proprio path. Se il punto non è nel proprio path, lo stesso + diventa un semplice elemento per eseguire un programma nella directory + corrente:</para> + + <para><command>./<replaceable>programma</replaceable></command></para> + + <para>Non è 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ò 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 è 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><CR></keycap>. Questo comando è 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> è eseguito solamente quando si effettua + il login. Il proprio file <filename>.cshrc</filename> è 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 è + 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ò 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à + quello di eseguire <command>/usr/bin/ls -sbF</command>. Si può + verificare quale comando <command>ls</command> è 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 è 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>&</emphasis> al comando, così come succede per la + shell &man.sh.1;. Questo può 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ò + avere la necessità di redirigere I/O in o da un file per un job in + background. La propria tastiera è solamente connessa al corrente + job in foreground.</para> + + <para>Il comando built-in <command>jobs</command> permette di elencare i + propri job in background. Si può usare il comando &man.kill.1; per + terminare un job in background. In questi comandi, con la notazione + <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à 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ò 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ò 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ò 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ò 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ò 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 è + 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 è 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ò 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 è 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ò 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 è elencata in esso, il demone per il trasferimento di + file, &man.ftpd.8;, ti impedirà una connessione ftp su questa + macchina. Se tale file non esiste, solamente account con shell + <quote>standard</quote> possono connettersi via &man.ftp.1;.</para> + + <para>Si può sempre provare una shell prima di settarla come la + propria shell di default. Per fare questo si deve digitare il nome della + shell che si desidera utilizzare, come qualsiasi altro comando.</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ù importanti contributi che Unix ha dato ai sistemi + operativi è stato quello di fornire molti strumenti per creare lavori + ordinari e per ottenere le informazioni che si desiderano. Un altro + è rappresentato dal modo standard con cui i dati sono memorizzati e + trasmessi in un sistema Unix. Questo permette di trasferire dati + <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à in seguito. Con il <emphasis>piping</emphasis>, l'output di + un comando può essere usato come input di un comando successivo. + In questo capitolo si discuterà di alcune delle caratteristiche e + degli strumenti disponibili per gli utenti Unix.</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ò essere rediretto, uno o entrambi, su uno o + più 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à 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>></command></entry> + + <entry>redirezione dell'output</entry> + </row> + + <row> + <entry><command>>!</command></entry> + + <entry>come sopra, ma non tiene conto dell'opzione + <emphasis>noclobber</emphasis> per &man.csh.1;</entry> + </row> + + <row> + <entry><command>>></command></entry> + + <entry>appende l'output</entry> + </row> + + <row> + <entry><command>>>!</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><</command></entry> + + <entry>redirezione dell'input</entry> + </row> + + <row> + <entry><command><<<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><<\<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 è:</para> + + <para><command>cat <replaceable>file1 file2</replaceable> > + <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à troncato a lunghezza zero prima che il + nuovo contenuto sia inserito, oppure, se l'opzione + <emphasis>noclobber</emphasis> della shell &man.csh.1; è abilitata, + il comando verrà 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à + separate.</para> + + <para>L'output viene appeso a un file con la forma:</para> + + <para><command>cat <replaceable>file1</replaceable> >> + <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 è rediretto (preso) da un file con la forma:</para> + + <para><command><replaceable>programma</replaceable> < + <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>>& + <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>>>& + <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>|& + <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ì:</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> + <replaceable>file</replaceable></command></entry> + + <entry>redirige &man.stderr.4; in + <filename><replaceable>file</replaceable></filename></entry> + </row> + + <row> + <entry><command>> <replaceable>file</replaceable> + 2>&1</command></entry> + + <entry>redirige &man.stdout.4; e &man.stderr.4; in + <filename><replaceable>file</replaceable></filename></entry> + </row> + + <row> + <entry><command>>> <replaceable>file</replaceable> + 2>&1</command></entry> + + <entry>appende &man.stdout.4; e &man.stderr.4; in + <filename><replaceable>file</replaceable></filename></entry> + </row> + + <row> + <entry><command>2>&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ò 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ò + essere fatto con la forma:</para> + + <informaltable frame="none"> + <tgroup cols="2"> + <colspec colwidth="1in"> + + <tbody> + <row> + <entry><command><replaceable>n</replaceable>>&<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>&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ò 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 è + rediretto su 2. In questo modo, in effetti, si ribaltano i normali + significati dei descrittori di file 1 e 2. Si può sperimentare + tutto questo con l'esempio seguente:</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> + è letto, l'informazione è scartata dall'output del + comando, ma se <filename><replaceable>file</replaceable></filename> non + può 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><&-</command></entry> + + <entry>chiude un descrittore di file di input</entry> + </row> + + <row> + <entry><command><&-</command></entry> + + <entry>chiude &man.stdin.4;</entry> + </row> + + <row> + <entry><command><replaceable>m</replaceable>>&-</command></entry> + + <entry>chiude un descrittore di file di output</entry> + </row> + + <row> + <entry><command>>&-</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>&</command></entry> + + <entry>esegue un comando in background</entry> + </row> + + <row> + <entry><command>&&</command></entry> + + <entry>esegue il comando seguente (a questo simbolo) solamente se il + comando precedente (a questo simbolo) è 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 è 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ò 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 è un + commento</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Inoltre, il carattere \ può essere usato per effettuare un + escape sul carattere di newline, in modo tale da continuare un + lungo comando su più di una linea fisica di testo.</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ù + 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 è un sistema operativo a strati. Lo strato più + interno è l'hardware il quale fornisce servizi al OS. Il sistema + operativo (OS), riferito in Unix come al <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 + è quest'ultimo a fornire i servizi richiesti. Uno dei più + grandi fattori che ha contribuito alla richiesta di Unix da parte dei + programmatori è stato che molti programmi utente corretti + sono indipendenti dall'hardware sottostante, e ciò li rende + facilmente trasportabili su nuovi sistemi.</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ì 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 è 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). È 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 è 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 è o un <emphasis>file</emphasis> o una + <emphasis>directory</emphasis> di file, dove quest'ultima può + 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ò 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 è 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 è in <filename>/home/frank</filename> e si + desidera specificare un path nel modo relativo si può 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 è se stessa. Una directory è un file + contenente una tabella che elenca i file contenuti nella directory stessa, + dove ai nomi dei file in lista vengono assegnati i corrispondenti numeri + di <emphasis>inode</emphasis>. Un inode è un file speciale, + progettato per essere letto dal kernel al fine di conoscere alcune + informazioni su ciascun file. Un inode specifica i permessi del file, il + proprietario del file, la data di creazione, quella dell'ultimo accesso e + quella dell'ultima modifica del file e la posizione fisica dei blocchi di + dati sul disco che contengono il file.</para> + + <para>Il sistema non richiede qualche struttura particolare per i dati + contenuti nel file. Il file può essere ASCII o binario o una + combinazione di questi e può rappresentare dati testuali, uno + script di shell, un codice oggetto compilato per un programma, una tabella + di directory, robaccia o qualunque cosa si voglia.</para> + + <para>Non c'è 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ò 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> è un interprete a linea di + comando. L'utente interagisce con il kernel attraverso la shell. Si + può scrivere uno script ASCII (testo) in modo tale da essere + interpretato da una shell.</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à 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à 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ò 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; è 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à 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; è 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è il comando &man.ps.1 è 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), è il maggior segnale comunemente usato con + &man.kill.1;. A differenza di altri segnali, questo, una volta captato, + non può 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 è 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> <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> <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]> <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]> <userinput>whereis -b Mail</userinput> +Mail: /usr/ucb/Mail /usr/lib/Mail.help /usr/lib/Mail.rc</screen> + + <screen>brigadier: condron [71]> <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à + eseguito quando il comando specificato viene invocato. Questo + può 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]> <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 è + <quote>loggato</quote>, esempio:</para> + + <screen>brigadier: condron [91]> <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ò 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>] <...> 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> è 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ì il file + <filename>typescript</filename>.</para> + + <para><emphasis>Esempi:</emphasis></para> + + <screen>beauty condron> <userinput>script</userinput> +Script started, file is typescript</screen> + + <screen>beauty condron> <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> <userinput>kill -9 23315</userinput></screen> + + <screen>beauty condron> <userinput>date</userinput> +Mon Apr 22 22:29:44 EDT 1996</screen> + + <screen>beauty condron> <userinput>exit</userinput> +exit +Script done, file is typescript +[1] + Killed emacs</screen> + + <screen>beauty condron> <userinput>cat typescript</userinput> +Script started on Mon Apr 22 22:28:36 1996 + +beauty condron>ps +PID TT STAT TIME COMMAND +23323 p8 S 0:00 -h -i (tcsh) +23327 p8 R 0:00 ps +18706 pa S 0:00 -tcsh (tcsh) +23315 pa T 0:00 emacs +23321 pa S 0:00 script +23322 pa S 0:00 script +3400 pb I 0:00 -tcsh (tcsh) + +beauty condron>kill -9 23315 + +beauty condron>date +Mon Apr 22 22:29:44 EDT 1996 + +beauty condron>exit +exit + +script done on Mon Apr 22 22:30:02 1996</screen> + + <screen>beauty condron> <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ò 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> <userinput>date</userinput> +Mon Jun 10 09:01:05 EDT 1996</screen> + + <screen>beauty condron> <userinput>date -u</userinput> +Mon Jun 10 13:01:33 GMT 1996</screen> + + <screen>beauty condron> <userinput>date +%a%t%D</userinput> +Mon 06/10/96</screen> + + <screen>beauty condron> <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ò essere usato + in seguito per verificare o cancellare il job mentre è 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ò 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ò specificare + il numero di pagine da stampare, le linee per pagina, le colonne, le + linee bianche, si può specificare la larghezza di pagina, + l'intestazione e le informazioni traccia e in che modo trattare il + carattere tab.</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ò 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ò <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ù</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 è il carattere di + escape, ma assume un nuovo significato.</entry> + </row> + + <row> + <entry><emphasis>\<<replaceable>abc</replaceable>\></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 \< e \> + 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. È 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>&</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ù 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ù <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ù 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à 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 + è 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 è più 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ò 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ò prendere il proprio input da un programma, + anzichè da un file. Qui si riportano alcune linee di output del + comando &man.who.1; che iniziano con la lettera + <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 è:</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 è obbligatoria. + L'argomento può 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ù + file di input il contatore continua cumulativamente attraverso i file. + L'ultima linea di input può 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 è 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>&</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; è 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> è un <emphasis>nuovo</emphasis> + &man.awk.1;, una nuova versione del programma e &man.gawk.1; è + il <emphasis>gnu</emphasis> &man.awk.1;, da parte della Free Software + Foundation. Ogni versione è leggermente differente. Qui ci si + limiterà ad illustrare semplici esempi che potrebbero andar bene + per tutte le versioni. In alcuni sistemi operativi &man.awk.1; è + in realtà <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> è composto da uno o + più 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> è diviso tra + <emphasis>record</emphasis> e <emphasis>campi</emphasis>. Il separatore + di <emphasis>record</emphasis> di default è newline e la + variabile <literal>NR</literal> tiene il conto dei record. Il + separatore di <emphasis>campo</emphasis> di default è 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> è 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 è stato letto.</para> + + <para>La <emphasis>stampa</emphasis> è 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>&&</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 è 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ù</entry> + </row> + + <row> + <entry><emphasis>?</emphasis></entry> + + <entry>zero o una</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Un confronto di espressione regolare può 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>è 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><</entry> + + <entry>minore di</entry> + </row> + + <row> + <entry><=</entry> + + <entry>minore o uguale a</entry> + </row> + + <row> + <entry>= =</entry> + + <entry>uguale a</entry> + </row> + + <row> + <entry>>=</entry> + + <entry>maggiore o uguale a</entry> + </row> + + <row> + <entry>!=</entry> + + <entry>non uguale a</entry> + </row> + + <row> + <entry>></entry> + + <entry>maggiore di</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Non si può conoscere su due piedi se le variabili sono + stringhe o numeri. Se nessun operando è riconosciuto per essere + un numero, sono realizzati confronti di stringhe. Altrimenti, viene + realizzata una comparazione numerica. In mancanza di informazioni per + il contrario, viene realizzata una comparazione di stringa, così + questa:</para> + + <para>$1 > $2</para> + + <para>verrà valutata con valori di tipo stringa. Per assicurarsi + una valutazione numerica, costruire qualcosa simile a:</para> + + <para>( $1 + 0 ) > $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 <= NF; i++) {azioni}</command></para> + + <para><command>while (i<=NF) {azioni}</command></para> + + <para><command>if (i<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 + è 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 |