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 @@
+
+
+
+ Una breve bibliografia Unix
+
+
+ Una breve bibliografia Unix
+
+
+
+
+
+
+
+
+ Titolo
+
+ Autori
+
+ Editore
+
+ Anno pub.
+
+
+
+
+
+ UNIX: concetti, strutture,
+ utilizzo
+
+ James R. Groff, Paul N. Weinberg
+
+ Jackson
+
+ 1988
+
+
+
+ Guida completa Unix System V. Release
+ 4
+
+ Coffin Steven
+
+ Mc Graw Hill
+
+ 1991
+
+
+
+ Introduzione all'architettura di sistema
+ Unix
+
+ Prabhat K. Andleigh
+
+ Jackson
+
+ 1991
+
+
+
+ Usare Unix senza fatica
+
+ John R. Levine, Margaret Levine Young
+
+ Mc Graw Hill
+
+ 1993
+
+
+
+ La grande guida Unix
+
+ John J. Valley
+
+ Jackson
+
+ 1993
+
+
+
+ Shell Unix guida alla
+ programmazione
+
+ Arthur, Burns
+
+ Mc Graw Hill
+
+ 1998
+
+
+
+ Introduzione alla struttura interna di
+ Unix
+
+ Le Van Huu
+
+ Unicopli
+
+ 1998
+
+
+
+ Unix guida completa
+
+ Rosen, Host, Farber, Rosinski
+
+ Mc Graw Hill
+
+ 1999
+
+
+
+ Gestione del sistema operativo Unix
+
+ Bruno Catalano, Ezio Raddi
+
+ Città Studi
+
+ 2000
+
+
+
+ Guida a Unix seconda edizione
+
+ Hahn H.
+
+ Mc Graw Hill
+
+ 2000
+
+
+
+ I segreti di Unix Seconda edizione
+
+ Armstrong James
+
+ Apogeo
+
+ 2000
+
+
+
+ Guida a Unix con Linux
+
+ Jack Dent, Tony Gaddis
+
+ Apogeo
+
+ 2001
+
+
+
+ Introduzione a Unix
+
+ David L. Schwartz
+
+ Apogeo
+
+ 2001
+
+
+
+ Unix manuale per l'amministratore di sistema - terza
+ edizione
+
+ Nemeth Evi, Snyder Garth, Seebass Scott, Hein Trent
+
+ Pearson Education Italia
+
+ 2002
+
+
+
+
+ Comandi Unix
+
+
+
+
+
+
+ Comando/Sintassi
+
+ Cosa fa
+
+
+
+
+
+ awk/nawk [opzioni]
+ file
+
+ esamina schemi in un file e processa i risultati
+
+
+
+ cat [opzioni]
+ file
+
+ concatena (lista) un file
+
+
+
+ cd
+ [directory]
+
+ cambia directory
+
+
+
+ chgrp [opzioni]
+ gruppo file
+
+ cambia il gruppo di appartenenza di un file
+
+
+
+ chmod [opzioni]
+ file
+
+ cambia i permessi di accesso a file o directory
+
+
+
+ chown [opzioni]
+ proprietario file
+
+ cambia il proprietario di un file; può essere solo
+ fatto dal super-user
+
+
+
+ chsh (passwd -e/-s) username
+ login_shell
+
+ cambia la shell di login dell'utente (spesso solamente
+ attraverso il super-user)
+
+
+
+ cmp [opzioni]
+ file1 file2
+
+ confronta due file e mostra dove avvengono le differenze
+ (file di testo e file binari)
+
+
+
+ compress [opzioni]
+ file
+
+ comprime il file specificato e lo salva con l'estensione
+ .Z
+
+
+
+ cp [opzioni]
+ file1 file2
+
+ copia file1
+ in file2;
+ file2 non dovrebbe
+ già esistere. Questo comando crea o sovrascrive
+ file2
+
+
+
+ cut (opzioni)
+ [file]
+
+ taglia specifici campi/caratteri dalle linee del file
+ specificato
+
+
+
+ date
+ [opzioni]
+
+ riporta data e ora corrente
+
+
+
+ dd [if=infile]
+ [of=outfile]
+ [operando=valore]
+
+ copia un file, converte tra ASCII e EBCDIC o scambia l'ordine
+ di byte, come specificato
+
+
+
+ diff [opzioni]
+ file1 file2
+
+ confronta i due file e visualizza le differenze (solamente
+ file di testo)
+
+
+
+ df [opzioni]
+ [risorsa]
+
+ riporta il sommario dei blocchi del disco e degli inode
+ liberi e usati
+
+
+
+ du [opzioni]
+ [directory o
+ file]
+
+ riporta lo spazio di disco usato
+
+
+
+ echo
+ [stringa di testo]
+
+ riporta la stringa di testo specificata in standard
+ output
+
+
+
+ ed o ex
+ [opzioni]
+ file
+
+ editor a linea di comando
+
+
+
+ emacs [opzioni]
+ file
+
+ editor a schermo-pieno
+
+
+
+ expr
+ argomenti
+
+ valuta gli argomenti. Usato per l'aritmetica, ecc. in
+ shell
+
+
+
+ file [opzioni]
+ file
+
+ classifica il tipo di file
+
+
+
+ find directory
+ [opzioni]
+ [azioni]
+
+ cerca file basandosi sul tipo o su uno schema
+
+
+
+ finger [opzioni]
+ user[@nomehost]
+
+ riporta informazioni circa gli utenti di macchine locali e
+ remote
+
+
+
+ ftp [opzioni]
+ host
+
+ trasferisce file utilizzando il protocollo di trasferimento
+ di file (FTP)
+
+
+
+ grep [opzioni]
+ 'stringa di ricerca'
+ argomento
+
+ ricerca nell'argomento (in questo caso
+ probabilmente un file) tutte le occorrenze della stringa di
+ ricerca specificata e le visualizza
+
+
+
+ egrep [opzioni]
+ 'stringa di ricerca'
+ argomento
+
+
+
+ fgrep [opzioni]
+ 'stringa di ricerca'
+ argomento
+
+
+
+ gzip [opzioni]
+ file
+
+ comprime o decomprime un file. I file compressi
+ vengo memorizzati con l'estensione
+ .gz
+
+
+
+ gunzip [opzioni]
+ file
+
+
+
+ zcat [opzioni]
+ file
+
+
+
+ head [-numero]
+ file
+
+ mostra le prime 10 (o numero di) linee di un file
+
+
+
+ hostname
+
+ mostra o setta (solamente super-user) il nome della macchina
+ attuale
+
+
+
+ kill [opzioni]
+ [-SEGNALE]
+ [pid#]
+ [%job]
+
+ manda un segnale al processo specificato dal numero di
+ processo id (pid#) o dal numero di
+ controllo del job (%n). Il segnale di
+ default termina il processo
+
+
+
+ ln [opzioni]
+ sorgente
+ destinazione
+
+ crea un collegamento di nome
+ destinazione a
+ sorgente
+
+
+
+ lpq
+ [opzioni]
+
+ mostra lo stato dei job di stampa
+
+
+
+ lpstat
+ [opzioni]
+
+
+
+ lpr [opzioni]
+ file
+
+ stampa sulla stampante specificata
+
+
+
+ lp [opzioni]
+ file
+
+
+
+ lprm
+ [opzioni]
+
+ rimuove un job di stampa dalla coda di
+ stampa
+
+
+
+ cancel
+ [opzioni]
+
+
+
+ ls [opzioni]
+ [directory o
+ file]
+
+ elenca il contenuto della directory specificata o i permessi
+ del file specificato
+
+
+
+ mail [opzioni]
+ [user]
+
+ semplice utility per la posta elettronica
+ disponibile su un sistema Unix. Si digita un punto come primo
+ carattere su una nuova linea per trasmettere il messaggio, un
+ punto interrogativo per richiamare l'help
+
+
+
+ mailx [opzioni]
+ [user]
+
+
+
+ Mail [opzioni]
+ [user]
+
+
+
+ man [opzioni]
+ comando
+
+ mostra la pagina di manuale (man)
+ del comando specificato
+
+
+
+ mkdir [opzioni]
+ directory
+
+ crea una directory
+
+
+
+ more [opzioni]
+ file
+
+ impaginatore di un file testuale
+
+
+
+ less [opzioni]
+ file
+
+
+
+ pg [opzioni]
+ file
+
+
+
+ mv [opzioni]
+ file1 file2
+
+ muove file1
+ in file2
+
+
+
+ od [opzioni]
+ file
+
+ dump su un file binario, in ottale, in ASCII, in
+ esadecimale, in decimale o in modalità carattere.
+
+
+
+ passwd
+ [opzioni]
+
+ setta o modifica la propria password
+
+
+
+ paste [opzioni]
+ file
+
+ incolla campi nelle linee del file specificato
+
+
+
+ pr [opzioni]
+ file
+
+ filtra il file e lo stampa su un terminale
+
+
+
+ ps
+ [opzioni]
+
+ mostra lo stato dei processi attivi
+
+
+
+ pwd
+
+ stampa la directory di lavoro (corrente)
+
+
+
+ rcp [opzioni]
+ nomehost
+
+ copia file in remoto dalla macchina corrente in un'altra
+ macchina
+
+
+
+ rlogin [opzioni]
+ nomehost
+
+ effettua il login in remoto su un'altra macchina
+
+
+
+ rm [opzioni]
+ file
+
+ rimuove (elimina) un file o una directory
+ ( elimina ricorsivamente la directory ed il suo
+ contenuto) ( chiede conferma prima di eliminare
+ i file)
+
+
+
+ rmdir [opzioni]
+ directory
+
+ rimuove una directory
+
+
+
+ rsh [opzioni]
+ nomehost
+
+ shell remota da eseguire su un'altra macchina
+
+
+
+ script
+ file
+
+ memorizza ogni cosa che appare sullo schermo in un file fino
+ a quando si esegue exit
+
+
+
+ sed [opzioni]
+ file
+
+ editor di flusso per editare file da uno script o da linea di
+ comando
+
+
+
+ sort [opzioni]
+ file
+
+ ordina le linee del file specificato basandosi sulle opzioni
+ scelte
+
+
+
+ source
+ file
+
+ legge i comandi dal file specificato
+ e li esegue nella shell corrente. source per
+ la shell C, . per la shell Bourne
+
+
+
+ . file
+
+
+
+ strings [opzioni]
+ file
+
+ riporta sequenze di 4 o più caratteri stampabili
+ terminanti in <NL> o <NULL>. Generalmente viene usato
+ per ricercare in file binari stringhe ASCII
+
+
+
+ stty
+ [opzioni]
+
+ setta o visualizza le opzioni del terminale di
+ controllo
+
+
+
+ tail [opzioni]
+ file
+
+ mostra le ultime linee (o parte) di un file
+
+
+
+ tar [opzioni]
+ [file]
+
+ archivio a nastro--riferirsi alle pagine man per dettagli su
+ come creare, elencare ed estrarre file da un archivio. I file tar
+ possono essere memorizzati su disco o su nastro.
+
+
+
+ tee [opzioni]
+ file
+
+ copia standard output in uno o più file
+
+
+
+ telnet [host
+ [porta]]
+
+ comunica con un altro host usando il protocollo
+ telnet
+
+
+
+ touch [opzioni]
+ [data/ora]
+ file
+
+ crea un file vuoto o aggiorna la data/ora di accesso di un
+ file esistente
+
+
+
+ tr [opzioni]
+ stringa1 stringa2
+
+ traduce i caratteri di stringa1
+ provenienti da standard input in quelli di
+ stringa2 per standard output
+
+
+
+ uncompress
+ file.Z
+
+ decomprime il file specificato e lo salva in un file
+
+
+
+ uniq [opzioni]
+ file
+
+ rimuove le linee ripetute in un file
+
+
+
+ uudecode
+ [file]
+
+ decodifica un file codificato con
+ uuencode, riportandolo al file
+ originale
+
+
+
+ uuencode [file]
+ nuovo_nome
+
+ codifica un file binario in codice ASCII 7-bit; utile quando
+ lo si trasmette via email, per essere poi decodificato come
+ nuovo_nome alla
+ destinazione
+
+
+
+ vi [opzioni]
+ file
+
+ editor visuale, a pieno schermo
+
+
+
+ wc [opzioni]
+ [file]
+
+ mostra il numero di parole (o di caratteri o di linee) del
+ file specificato
+
+
+
+ whereis [opzioni]
+ comando
+
+ riporta le locazioni del binario, del sorgente e della pagina
+ man per il comando specificato
+
+
+
+ which
+ comando
+
+ riporta il percorso del comando o l'alias di shell in
+ uso
+
+
+
+ who o w
+
+ riporta chi è loggato e quali processi
+ ha in esecuzione
+
+
+
+ zcat
+ file.Z
+
+ concatena (lista) il file non compresso a video, lasciando il
+ file compresso su disco
+
+
+
+
+
+
+
+
\ 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 @@
+
+
+
+ Altri comandi utili
+
+
+ Lavorare con i file
+
+ Questa sezione descrive alcuni comandi che possono risultare utili
+ nell'esaminare e manipolare il contenuto dei propri file.
+
+
+ Utilità file
+
+
+
+
+
+
+ Comando/Sintassi
+
+ Cosa fa
+
+
+
+
+
+ cmp [opzioni]
+ file1 file2
+
+ confronta due file e mostra dove avvengono le differenze
+ (file di testo e file binari)
+
+
+
+ cut [opzioni]
+ [file]
+
+ taglia specifici campi/caratteri dalle linee di un
+ file
+
+
+
+ diff [opzioni]
+ file1 file2
+
+ confronta due file e mostra le differenze
+ (solamente file di testo)
+
+
+
+ file [opzioni]
+ file
+
+ classifica il tipo di file
+
+
+
+ find directory
+ [opzioni]
+ [azioni]
+
+ cerca file basandosi sul tipo o su uno schema
+
+
+
+ ln [opzioni]
+ sorgente
+ destinazione
+
+ crea un link (collegamento) a
+ sorgente chiamato
+ destinazione
+
+
+
+ paste [opzioni]
+ file
+
+ aggiunge campi all'interno di un file
+
+
+
+ sort [opzioni]
+ file
+
+ riordina le linee di un file in accordo con le opzioni
+ specificate
+
+
+
+ strings [opzioni]
+ file
+
+ riporta sequenze di 4 o più caratteri stampabili
+ terminati con <NL> o <NULL>. Normalmente utilizzato
+ per ricercare stringhe ASCII in file binari.
+
+
+
+ tee [opzioni]
+ file
+
+ copia standard output in uno o più file
+
+
+
+ touch [opzioni]
+ [data/ora]
+ file
+
+ crea un file vuoto o aggiorna la data di accesso di un file
+ esistente
+
+
+
+ tr [opzioni]
+ stringa1 stringa2
+
+ traduce i caratteri di stringa1
+ provenienti da standard input in quelli di
+ stringa2 per standard output
+
+
+
+ uniq [opzioni]
+ file
+
+ rimuove le linee ripetute in un file
+
+
+
+ wc [opzioni]
+ [file]
+
+ mostra il numero di parole (o di caratteri o di linee) di
+ un file
+
+
+
+
+
+
+ cmp - confronta contenuti di file
+
+ Il comando &man.cmp.1; confronta due file, e (senza opzioni) riporta
+ la posizione della loro prima differenza. Può trattare confronti
+ sia tra file ASCII sia tra file binari. Il comando compie una
+ comparazione byte-per-byte.
+
+ Sintassi
+
+ cmp [opzioni]
+ file1 file2
+ [salto1]
+ [salto2]
+
+ I numeri di salto sono i numeri di byte da
+ saltare in ogni file prima di iniziare il confronto.
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ riporta ogni differenza
+
+
+
+
+
+ riporta solamente un valore di uscita, non le differenze
+ tra i byte
+
+
+
+
+
+ Esempi:
+
+ Dati i file mon.logins e
+ tues.logins:
+
+ ageorge ageorge
+bsmith cbetts
+cbetts jchen
+jchen jdoe
+jmarsch jmarsch
+lkeres lkeres
+mschmidt proy
+sphillip sphillip
+wyepp wyepp
+
+ Il confronto dei due file produce:
+
+ &prompt.user; cmp mon.logins tues.logins
+mon.logins tues.logins differ: char 9, line 2
+
+ Di default il comando riporta solamente la prima differenza
+ trovata.
+
+ Questo comando è utile nel determinare quale versione di un
+ file dovrebbe essere mantenuta quando c'è più di una
+ versione dello stesso file.
+
+
+
+ diff - differenze tra file
+
+ Il comando &man.diff.1; confronta due file, due directory,
+ ecc., e riporta tutte le differenze tra i due. Questo comando tratta
+ solamente file ASCII. Il suo formato di output è stato
+ progettato per fornire i cambiamenti necessari per convertire il primo
+ file nel secondo.
+
+ Sintassi
+
+ diff [opzioni]
+ file1 file2
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ ignora spazi contigui
+
+
+
+
+
+ ignora la differenza tra lettere minuscole e
+ maiuscole
+
+
+
+
+
+ ignora i caratteri di spazio e tab
+
+
+
+
+
+ produce un formato di output da utilizzare con l'editor
+ &man.ed.1;
+
+
+
+
+
+ esegue &man.diff.1; ricorsivamente attraverso le
+ sotto-directory
+
+
+
+
+
+ Esempi:
+
+ Per i file sopra citati mon.logins e
+ tues.logins, le loro differenze sono:
+
+ &prompt.user; diff mon.logins tues.logins
+2d1
+< bsmith
+4a4
+> jdoe
+7c7
+< mschmidt
+---
+> proy
+
+ Notare che l'output mostra sia l'elenco delle differenze sia in
+ quale file queste esistono. Le linee del primo file sono precedute da
+ < e quelle del secondo file sono precedute da >.
+
+
+
+ cut - seleziona parte di una linea di un file
+
+ Il comando &man.cut.1; permette di estrarre una parte di
+ un file che verrà utilizzata per un altro scopo.
+
+ Sintassi
+
+ cut [opzioni]
+ file
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ posizioni dei caratteri da selezionare (il primo carattere
+ è in posizione 1)
+
+
+
+
+
+ delimitatore di campo (tab di default)
+
+
+
+
+
+ campi da selezionare (il primo campo è 1)
+
+
+
+
+
+ Sia la lista dei caratteri che quella dei campi possono contenere
+ numeri (in ordine crescente) separati da virgole o da spazi bianchi e
+ possono contenere un trattino (-) per indicare un range. La mancanza di
+ un numero prima del trattino (esempio -5) o dopo il trattino
+ (esempio 5-), specifica rispettivamente un range completo che inizia con
+ il primo carattere o campo, o finisce con l'ultimo carattere o campo.
+ I caratteri bianchi di separazione di lista devono essere chiusi tra
+ caratteri di quoting. I campi di delimitazione possono essere chiusi
+ tra quoting se hanno un significato speciale di shell, ad esempio quando
+ specificano un carattere di tab o spazio.
+
+ Esempi:
+
+ In questi esempi si userà il file
+ users:
+
+ jdoe John Doe 4/15/96
+lsmith Laura Smith 3/12/96
+pchen Paul Chen 1/5/96
+jhsu Jake Hsu 4/17/96
+sphilip Sue Phillip 4/2/96
+
+ Se si desidera solo lo username e il nome reale dell'utente, il
+ comando &man.cut.1; può essere usato per ottenere solamente
+ queste informazioni:
+
+ &prompt.user; cut -f 1,2 users
+jdoe John Doe
+lsmith Laura Smith
+pchen Paul Chen
+jhsu Jake Hsu
+sphilip Sue Phillip
+
+ Il comando &man.cut.1; può essere usato con altre opzioni.
+ L'opzione permette di selezionare caratteri. Per
+ selezionare i primi 4 caratteri:
+
+ &prompt.user; cut -c 1-4 users
+
+ che produrrà:
+
+ jdoe
+lsmi
+pche
+jhsu
+sphi
+
+ in questo modo si selezionano solamente i primi 4 caratteri di ogni
+ linea.
+
+
+
+ paste - fusione di file
+
+ Il comando &man.paste.1; permette di combinare insieme due
+ file. In una fusione, il delimitatore di default tra le colonne
+ è un tab, ma le opzioni permettono di usare altri
+ delimitatori.
+
+ Sintassi
+
+ paste [opzioni]
+ file1 file2
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ elenco dei caratteri di delimitazione
+
+
+
+
+
+ concatena linee
+
+
+
+
+
+ L'elenco dei delimitatori può
+ comprendere singoli caratteri come una virgola, una stringa quotata,
+ uno spazio o alcune delle seguenti sequenze di escape:
+
+
+
+
+
+
+
+ \n
+
+ carattere newline
+
+
+
+ \t
+
+ carattere tab
+
+
+
+ \\
+
+ carattere backslash
+
+
+
+ \0
+
+ stringa vuota (carattere non-null)
+
+
+
+
+
+ Può essere necessario quotare i delimitatori che hanno
+ significati speciali di shell.
+
+ Un trattino (-) al posto di un nome di file viene usato per
+ indicare che quel campo dovrebbe venire da standard input.
+
+ Esempi:
+
+ Dato il file users:
+
+ jdoe John Doe 4/15/96
+lsmith Laura Smith 3/12/96
+pchen Paul Chen 1/5/96
+jhsu Jake Hsu 4/17/96
+sphilip Sue Phillip 4/2/96
+
+ e il file phone:
+
+ John Doe 555-6634
+Laura Smith 555-3382
+Paul Chen 555-0987
+Jake Hsu 555-1235
+Sue Phillip 555-7623
+
+ il comando &man.paste.1; può essere usato in combinazione
+ con il comando &man.cut.1; per creare un nuovo file,
+ listing, che include per tutti gli utenti lo
+ username, il nome reale, l'ultimo login e il numero di telefono.
+ Prima si estraggono i numeri di telefono all'interno del file temporaneo
+ temp.file:
+
+ &prompt.user; cut -f2 phone > temp.file
+555-6634
+555-3382
+555-0987
+555-1235
+555-7623
+
+ Il risultato può essere incollato alla fine di ogni linea di
+ users e quindi rediretto nel nuovo file,
+ listing:
+
+ &prompt.user; paste users temp.file > listing
+jdoe John Doe 4/15/96 237-6634
+lsmith Laura Smith 3/12/96 878-3382
+pchen Paul Chen 1/5/96 888-0987
+jhsu Jake Hsu 4/17/96 545-1235
+sphilip Sue Phillip 4/2/96 656-7623
+
+ Tutto questo può anche essere realizzato su una linea senza
+ il file temporaneo, con lo stesso risultato:
+
+ &prompt.user; cut -f2 phone | paste users - > listing
+
+ In questo caso il trattino (-) funge come sostituto per il campo di
+ input (indica cioè l'output del comando &man.cut.1;).
+
+
+
+ touch - crea un file
+
+ Il comando &man.touch.1; può essere usato per creare un nuovo
+ (vuoto) file o per aggiornare l'ultima data/ora di accesso di un
+ file esistente. Il comando viene usato primariamente quando uno script
+ richiede la pre-esistenza di un file (ad esempio per appendere delle
+ informazioni) o quando uno script controlla l'ultima data/ora in cui una
+ funzione è stata realizzata.
+
+ Sintassi
+
+ touch [opzioni]
+ [data/ora1]
+ file
+
+ touch [opzioni]
+ [-t data/ora2]
+ file
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ cambia la data/ora di accesso al file
+ (solamente SVR4)
+
+
+
+
+
+ non crea il file se non esiste
+
+
+
+
+
+ forza l'azione, nonostante i permessi di lettura/scrittura
+ del file
+
+
+
+
+
+ cambia la data/ora di modifica del file
+ (solamente SVR4)
+
+
+
+
+
+ usa la data/ora2 specificata, non la data/ora corrente
+ (solamente SVR4)
+
+
+
+
+
+ Quando si usa l'opzione , deve essere nella
+ forma:
+
+ [[CC]YY]
+ MMDDhhmm[.SS]
+
+ dove:
+
+
+
+
+
+
+
+ CC
+
+ prime due cifre dell'anno
+
+
+
+ YY
+
+ seconde due cifre dell'anno
+
+
+
+ MM
+
+ mese, 01-12
+
+
+
+ DD
+
+ giorno del mese, 01-31
+
+
+
+ hh
+
+ ora del giorno, 00-23
+
+
+
+ mm
+
+ minuti, 00-59
+
+
+
+ SS
+
+ secondi, 00-59
+
+
+
+
+
+ Il formato dell'opzione
+ è:
+
+
+
+ dove questi simboli hanno gli stessi significati dei simboli
+ mostrati in precedenza.
+
+ La data non può essere settata prima del 1969 o dopo il 18
+ Gennaio 2038 (dipende dalle versione del sistema operativo Unix).
+
+ Esempi:
+
+ Per creare un file:
+
+ &prompt.user; touch filename
+
+
+
+ wc - conta le parole in un file
+
+ &man.wc.1; sta per conta parole; il comando
+ può essere usato per contare il numero di linee, di caratteri o
+ di parole in un file.
+
+ Sintassi
+
+ wc [opzioni]
+ file
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ conta byte
+
+
+
+
+
+ conta caratteri (SVR4)
+
+
+
+
+
+ conta linee
+
+
+
+
+
+ conta parole
+
+
+
+
+
+ Se nessuna opzione viene specificata, l'opzione di default è
+ .
+
+ Esempi:
+
+ Dato il file users:
+
+ jdoe John Doe 4/15/96
+lsmith Laura Smith 3/12/96
+pchen Paul Chen 1/5/96
+jhsu Jake Hsu 4/17/96
+sphilip Sue Phillip 4/2/96
+
+ il risultato dell'uso del comando &man.wc.1; su tale file è
+ il seguente:
+
+ &prompt.user; wc users
+5 20 121 users
+
+ Il primo numero indica il numero di linee nel file, il secondo
+ indica il numero di parole e il terzo numero indica il numero di
+ caratteri.
+
+ Usando il comando &man.wc.1; con una delle opzioni sopra citate
+ ( per linee; per parole o
+ per caratteri) si ottiene come risultato solo
+ una delle precedenti informazioni. Per esempio,
+ wc -l users produce il risultato seguente:
+
+ 5 users
+
+
+
+ ln - crea un link a un altro file
+
+ Il comando &man.ln.1; crea un link (collegamento) o
+ un modo aggiuntivo per accedere (o attribuisce un nome addizionale) a un
+ altro file.
+
+ Sintassi
+
+ ln [opzioni]
+ sorgente
+ [destinazione]
+
+ Se non specificata, la
+ destinazione di default
+ è un file dello stesso nome di
+ sorgente posto nella
+ directory di lavoro corrente.
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ forza un link nonostante i permessi della
+ destinazione; non riporta errori (solamente SVR4 )
+
+
+
+
+
+ crea un link simbolico
+
+
+
+
+
+ Esempi:
+
+ Un link simbolico viene usato per creare un
+ nuovo percorso a un altro file o directory. Per esempio, se un gruppo
+ di utenti è abituato ad usare un comando chiamato
+ chkmag, ma il comando è stato riscritto e il
+ nuovo nome è chkit, creando un link simbolico
+ gli utenti eseguiranno automaticamente chkit quando
+ digitano il comando chkmag, eliminando la transizione
+ per il nuovo comando.
+
+ Un link simbolico può essere creato nel modo seguente:
+
+ &prompt.user; ln -s chkit chkmag
+
+ Ora il lungo listato per questi due file è il
+ seguente:
+
+ 16 -rwxr-x--- 1 lindadb acs 15927 Apr 23 04:10 chkit
+1 lrwxrwxrwx 1 lindadb acs 5 Apr 23 04:11 chkmag -> chkit
+
+ Notare che mentre i permessi di chkmag sono
+ aperti a tutti, poichè è linkato a
+ chkit, le caratteristiche dei permessi, del gruppo e
+ del proprietario di chkit saranno rispettate quando
+ chkmag viene invocato.
+
+ Con un link simbolico, il link può esistere senza che il file
+ o la directory a cui è collegato esista.
+
+ Un hard link può solamente essere creato
+ per un altro file sullo stesso file system, ma non per una directory
+ (eccetto per il super-user). Un hard link crea un nuovo elemento di
+ directory puntante allo stesso inode del file originale. Il file
+ linkato deve esistere prima che l'hard link possa essere creato.
+ Il file non sarà cancellato fino a quando tutti gli hard link
+ saranno rimossi. Per linkare i due file precedenti tramite un hard
+ link:
+
+ &prompt.user; ln chkit chkmag
+
+ Quindi un lungo listato mostra che il numero di
+ inode (742) è lo stesso per entrambi i
+ file:
+
+ &prompt.user; ls -il chkit chkmag
+742 -rwxr-x--- 2 lindadb acs 15927 Apr 23 04:10 chkit
+742 -rwxr-x--- 2 lindadb acs 15927 Apr 23 04:10 chkmag
+
+
+
+ sort - ordina il contenuto di un file
+
+ Il comando &man.sort.1; viene usato per ordinare le linee
+ di un file. Si possono usare diverse opzioni per stabilire il modo di
+ ordinamento e su quali campi ordinare il file. Senza opzioni,
+ &man.sort.1; confronta intere linee di un file e produce un ordinamento
+ ASCII (prima i numeri, lettere maiuscole e quindi lettere
+ minuscole).
+
+ Sintassi
+
+ sort [opzioni]
+ [+pos1 [-pos2]]
+ file
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ ignora gli spazi bianchi iniziali (spazi e tab) quando si
+ stabiliscono i carattere di inizio e di fine per la chiave di
+ ordinamento
+
+
+
+
+
+ ordinamento a dizionario, sono rilevanti solamente le
+ lettere, le cifre, spazi e tab
+
+
+
+
+
+ uguaglia lettere maiuscole e minuscole
+
+
+
+
+
+ ordinamento su chiavi specifiche (non disponibile su tutti
+ i sistemi)
+
+
+
+
+
+ ignora i caratteri non stampabili
+
+
+
+
+
+ ordinamento numerico
+
+
+
+
+
+ file di output
+
+
+
+
+
+ ribalta l'ordine
+
+
+
+
+
+ usa car come il carattere di
+ separatore di campo
+
+
+
+
+
+ unico; trascura multiple copie di linee uguali
+ (dopo l'ordinamento)
+
+
+
+
+
+ (vecchio stile) fornisce funzionalità simili
+ all'opzione .
+
+
+
+
+
+ Per gli elementi di posizione
+ (), pos1 è il
+ numero di parola di inizio, iniziando da 0 e
+ pos2 è il numero di parola di fine.
+ Quando -pos2 non è specificato, il
+ campo di ordinamento continua fino alla fine del file. Sia
+ pos1 che pos2
+ possono essere specificati nella forma
+ w.c, dove
+ w è il numero di parola e
+ c è il carattere all'interno della
+ parola. Per c 0 si specifica il delimitatore che
+ precede il primo carattere e 1 è il primo
+ carattere della parola. Questi elementi possono essere seguiti da un
+ tipo di modificatore, esempio n per numerico,
+ b per saltare gli spazi bianchi ,ecc.
+
+ Il campo chiave dell'opzione
+ ha la seguente sintassi:
+
+ campo_inizio
+ [tipo]
+ [ ,campo_fine
+ [tipo] ]
+
+ dove:
+
+
+
+
+
+
+
+ campo_inizio, campo_fine
+
+ definiscono le chiavi per restringere l'ordinamento su una
+ porzione di linea
+
+
+
+ tipo
+
+ modifica l'ordinamento: validi modificatori sono dati dai
+ singoli caratteri (bdfiMnr) derivanti dalle simili opzioni di
+ ordinamento, ad esempio un tipo b equivale
+ a , ma applicato solamente nello specifico
+ campo di azione
+
+
+
+
+
+ Esempi:
+
+ Dato il file users:
+
+ jdoe John Doe 4/15/96
+lsmith Laura Smith 3/12/96
+pchen Paul Chen 1/5/96
+jhsu Jake Hsu 4/17/96
+sphilip Sue Phillip 4/2/96
+
+ ordinando con &man.sort.1; gli utenti si produce:
+
+ jdoe John Doe 4/15/96
+jhsu Jake Hsu 4/17/96
+lsmith Laura Smith 3/12/96
+pchen Paul Chen 1/5/96
+sphilip Sue Phillip 4/2/96
+
+ Se, tuttavia, si desidera un elenco in ordine di nome, si usa
+ l'opzione per specificare su quale campo ordinare (i campi sono numerati
+ partendo da 0):
+
+ &prompt.user; sort +2 users
+pchen Paul Chen 1/5/96
+jdoe John Doe 4/15/96
+jhsu Jake Hsu 4/17/96
+sphilip Sue Phillip 4/2/96
+lsmith Laura Smith 3/12/96
+
+ Per ribaltare l'ordine:
+
+ &prompt.user; sort -r users
+sphilip Sue Phillip 4/2/96
+pchen Paul Chen 1/5/96
+lsmith Laura Smith 3/12/96
+jhsu Jake Hsu 4/17/96
+jdoe John Doe 4/15/96
+
+ Un'opzione particolarmente utile di ordinamento è l'opzione
+ , che elimina gli elementi duplicati nel file mentre
+ si ordina il file. Per esempio, il file
+ todays.logins:
+
+ sphillip
+jchen
+jdoe
+lkeres
+jmarsch
+ageorge
+lkeres
+proy
+jchen
+
+ mostra una lista di ogni username che ha effettuato il login nel
+ sistema in giornata. Se si vuole conoscere quanti unici utenti abbiano
+ effettuato il login nel sistema in giornata, usando &man.sort.1;
+ con l'opzione , la lista conterrà ciascun
+ utente una volta sola. (Il comando può essere mandato in pipe a
+ wc -l per ottenere direttamente il numero):
+
+ &prompt.user; sort -u todays.logins
+ageorge
+jchen
+jdoe
+jmarsch
+lkeres
+proy
+sphillip
+
+
+
+ tee - copia l'output di un comando
+
+ Il comando &man.tee.1; manda lo standard input nel file
+ specificato e anche nello standard output. Viene spesso usato in una
+ pipe di comandi.
+
+ Sintassi
+
+ tee [opzioni]
+ [file]
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ appende l'output ai file
+
+
+
+
+
+ ignora gli interrupt
+
+
+
+
+
+ Esempi:
+
+ In questo primo esempio l'output di &man.who.1; è
+ visualizzato sullo schermo e memorizzato nel file
+ users.file:
+
+ brigadier: condron [55]> who | tee users.file
+condron ttyp0 Apr 22 14:10 (lcondron-pc.acs.)
+frank ttyp1 Apr 22 16:19 (nyssa)
+condron ttyp9 Apr 22 15:52 (lcondron-mac.acs)
+
+ brigadier: condron [56]> cat users.file
+condron ttyp0 Apr 22 14:10 (lcondron-pc.acs.)
+frank ttyp1 Apr 22 16:19 (nyssa)
+condron ttyp9 Apr 22 15:52 (lcondron-mac.acs)
+
+ Nel prossimo esempio l'output di &man.who.1; viene mandato nei file
+ users.a e users.b.
+ Viene anche mandato in pipe con il comando &man.wc.1;, che riporta il
+ numero di linee.
+
+ brigadier: condron [57]> who | tee users.a users.b | wc -l
+3
+
+ brigadier: condron [58]> cat users.a
+condron ttyp0 Apr 22 14:10 (lcondron-pc.acs.)
+frank ttyp1 Apr 22 16:19 (nyssa)
+condron ttyp9 Apr 22 15:52 (lcondron-mac.acs)
+
+ Nell'esempio seguente un listato lungo di directory viene mandato
+ nel file files.long. Inoltre viene messo in pipe
+ con il comando &man.grep.1; che riporta quali file sono stati modificati
+ in Agosto.
+
+ brigadier: condron [60]> ls -l | tee files.long |grep Aug
+1 drwxr-sr-x 2 condron 512 Aug 8 1995 News/
+2 -rw-r--r-- 1 condron 1076 Aug 8 1995 magnus.cshrc
+2 -rw-r--r-- 1 condron 1252 Aug 8 1995 magnus.login
+
+ brigadier: condron [63]> cat files.long
+total 34
+2 -rw-r--r-- 1 condron 1253 Oct 10 1995 #.login#
+1 drwx------ 2 condron 512 Oct 17 1995 Mail/
+1 drwxr-sr-x 2 condron 512 Aug 8 1995 News/
+5 -rw-r--r-- 1 condron 4299 Apr 21 00:18 editors.txt
+2 -rw-r--r-- 1 condron 1076 Aug 8 1995 magnus.cshrc
+2 -rw-r--r-- 1 condron 1252 Aug 8 1995 magnus.login
+7 -rw-r--r-- 1 condron 6436 Apr 21 23:50 resources.txt
+4 -rw-r--r-- 1 condron 3094 Apr 18 18:24 telnet.ftp
+1 drwxr-sr-x 2 condron 512 Apr 21 23:56 uc/
+1 -rw-r--r-- 1 condron 1002 Apr 22 00:14 uniq.tee.txt
+1 -rw-r--r-- 1 condron 1001 Apr 20 15:05 uniq.tee.txt~
+7 -rw-r--r-- 1 condron 6194 Apr 15 20:18 Unixgrep.txt
+
+
+
+ uniq - rimuove linee duplicate
+
+ Il comando &man.uniq.1; filtra le linee adiacenti duplicate in un
+ file.
+
+ Sintassi
+
+ uniq [opzioni]
+ [+|-n] file
+ [nuovo.file]
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ solo una copia delle linee ripetute
+
+
+
+
+
+ seleziona solamente le linee non ripetute
+
+
+
+
+
+ ignora i primi n
+ caratteri
+
+
+
+
+
+ come sopra (solamente SVR4)
+
+
+
+
+
+ salta i primi n campi, spazi
+ inclusi (spazi e tab)
+
+
+
+
+
+ come sopra (solamente SVR4)
+
+
+
+
+
+ Esempi:
+
+ Si consideri il seguente file e l'esempio, dove
+ &man.uniq.1; rimuove la quarta linea da file
+ e mette il risultato nel file nuovo.file.
+
+ {Unix prompt 1} cat file
+1 2 3 6
+4 5 3 6
+7 8 9 0
+7 8 9 0
+
+ {Unix prompt 2} uniq file nuovo.file
+
+ {Unix prompt 3} cat nuovo.file
+1 2 3 6
+4 5 3 6
+7 8 9 0
+
+ Qui sotto, l'opzione
+ del comando &man.uniq.1; viene usata per saltare i primi 2 campi
+ nel file e per filtrare le linee di uscita che sono duplicate dal terzo
+ campo in avanti.
+
+ {Unix prompt 4} uniq -2 file
+1 2 3 6
+7 8 9 0
+
+
+
+ strings - cerca stringhe ASCII
+
+ Per cercare stringhe ASCII, stampabili, in un file binario si usa il
+ comando &man.strings.1;. Questo comando ricerca sequenze di quattro o
+ più caratteri ASCII terminanti con un carattere newline o
+ con un carattere null. &man.strings.1; risulta utile per ricercare nomi
+ di file e possibili messaggi di errore all'interno di un programma
+ compilato, di cui non si ha il codice sorgente.
+
+ Sintassi
+
+ strings [opzioni]
+ file
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ usa numero come la minima
+ lunghezza della stringa, piuttosto di 4 (solamente SVR4)
+
+
+
+ numero
+
+ come sopra
+
+
+
+
+
+ fa precedere alla stringa l'offset di byte dall'inizio del
+ file; formato può essere:
+ d = decimale, o =
+ ottale x = esadecimale (solamente
+ SVR4)
+
+
+
+
+
+ fa precedere alla stringa l'offset di byte in decimale
+ (solamente BSD)
+
+
+
+
+
+ Esempi:
+
+ &prompt.user; strings /bin/cut
+SUNW_OST_OSCMD
+nessun delimitatore specificato
+delimitatore non valido
+b:c:d:f:ns
+cut: -n può solo essere usato con -b
+cut: -d può solo essere usato con -f
+cut: -s può solo essere usato con -f
+nessuna lista specificata
+cut: %s non si riesce ad aprire
+il range specificato non è valido
+troppi range specificati
+i range devono essere crescenti
+carattere non valido nel range
+Errore interno nel processare l'input
+carattere multibyte non valido
+incapace di allocare memoria sufficiente
+incapace di allocare memoria sufficiente
+cut:
+uso: cut -b lista [-n] [filename ...]
+ cut -c lista [filename ...]
+ cut -f lista [-d delim] [-s] [filename]
+
+
+
+ file - mostra il tipo di file
+
+ Il comando &man.file.1; esamina il file specificato e cerca di
+ determinare che tipo di file esso sia. Questo viene fatto leggendo i
+ primi byte del file e confrontandoli con la tabella
+ /etc/magic. Il comando &man.file.1;
+ può determinare file di testo ASCII, file formattati tar, file
+ compressi, ecc.
+
+ Sintassi
+
+ file [opzioni]
+ [-m file_magico]
+ [-f lista_file]
+ file
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ verifica il file magico per eventuali errori nel
+ formato
+
+
+
+
+
+ lista_file
+ contiene la lista dei file da esaminare
+
+
+
+
+
+ non segue i link simbolici (solamente SVR4)
+
+
+
+
+
+ segue i link simbolici (solamente BSD)
+
+
+
+
+
+ usa
+ file_magico
+ come il file magico al posto di
+ /etc/magic
+
+
+
+
+
+ Esempi:
+
+ Vengono elencati qui sotto gli output del comando
+ file filename per alcuni
+ file significativi.
+
+ /etc/magic: File di testo ascii
+/usr/local/bin/gzip: Eseguibile paginato SPARC Sun linkato dinamicamente
+/usr/bin/cut: Eseguibile MSB a 32 bit ELF per SPARC versione 1, linkato dinamicamente, stripped
+source.tar: Archivio tar USTAR
+source.tar.Z: Blocchi di dati compressi 16 bit
+
+
+
+ tr - traduce caratteri
+
+ Il comando &man.tr.1; traduce caratteri da &man.stdin.4; a
+ &man.stdout.4;.
+
+ Sintassi
+
+ tr [opzioni]
+ stringa1
+ [stringa2]
+
+ Con nessuna opzione i caratteri di
+ stringa1 sono tradotti nei caratteri di
+ stringa2, carattere per carattere,
+ nell'ordine degli array di stringa. Il primo carattere di
+ stringa1 viene tradotto nel primo carattere
+ di stringa2, ecc.
+
+ Un range di caratteri in una stringa viene specificato con un
+ trattino tra il carattere superiore e quello inferiore del range, ad
+ esempio per specificare tutte le lettere alfabetiche minuscole si usa
+ [a-z].
+
+ Ripetizioni di caratteri in stringa2
+ possono essere rappresentate con la notazione
+ [x*n],
+ dove il carattere x viene ripetuto
+ n volte. Se n
+ è 0 o assente, il carattere
+ x viene assunto come valida corrispondenza
+ richiesta in stringa1.
+
+ I caratteri possono includere le notazioni
+ \ottale (BSD e SVR4) e
+ \carattere (solamente
+ SVR4). Qui ottale viene
+ sostituito da una, due o tre cifre di interi ottali che codificano un
+ carattere ASCII e
+ carattere può
+ essere uno di questi:
+
+
+
+
+
+
+
+ b
+
+ back space
+
+
+
+ f
+
+ form feed
+
+
+
+ n
+
+ newline
+
+
+
+ r
+
+ return
+
+
+
+ t
+
+ tab
+
+
+
+ v
+
+ tab verticale
+
+
+
+
+
+ La versione SVR4 di &man.tr.1; permette l'operando
+ :classe: nel campo stringa dove
+ classe può assumere uno dei seguenti
+ valori di classificazione carattere:
+
+
+
+
+
+
+
+ alpha
+
+ caratteri alfabetici
+
+
+
+ lower
+
+ caratteri alfabetici minuscoli
+
+
+
+ upper
+
+ caratteri alfabetici maiuscoli
+
+
+
+
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ completa il set di caratteri in
+ stringa1
+
+
+
+
+
+ cancella i caratteri in
+ stringa1
+
+
+
+
+
+ modifica una stringa di caratteri ripetuti in
+ stringa1 in caratteri singoli
+
+
+
+
+
+ Esempi:
+
+ L'esempio seguente usa come file di input una lista di libri di
+ P. G. Wodehouse Jeeves & Wooster.
+
+ The Inimitable Jeeves [1923] The Mating Season [1949]
+Carry On, Jeeves [1925] Ring for Jeeves [1953]
+Very Good, Jeeves [1930] Jeeves and the Feudal Spirit [1954]
+Thank You, Jeeves [1934] Jeeves in the Offing [1960]
+Right Ho, Jeeves [1934] Stiff Upper Lip, Jeeves [1963]
+The Code of the Woosters [1938] Much Obliged, Jeeves [1971]
+Joy in the Morning [1946] Aunts Aren't Gentlemen [1974]
+
+ Per tradurre tutte le lettere alfabetiche minuscole in maiuscole si
+ possono usare:
+
+ tr '[a-z]' '[A-Z]'
+
+ oppure
+
+ tr '[:lower:]' '[:upper:]'
+
+ Affinchè &man.tr.1; legga da &man.stdin.4; si usa &man.cat.1;
+ in pipe con &man.tr.1;, così:
+
+ &prompt.user; cat wodehouse | tr '[a-z]' '[A-Z]'
+THE INIMITABLE JEEVES [1923] THE MATING SEASON [1949]
+CARRY ON, JEEVES [1925] RING FOR JEEVES [1953]
+VERY GOOD, JEEVES [1930] JEEVES AND THE FEUDAL SPIRIT [1954]
+THANK YOU, JEEVES [1934] JEEVES IN THE OFFING [1960]
+RIGHT HO, JEEVES [1934] STIFF UPPER LIP, JEEVES [1963]
+THE CODE OF THE WOOSTERS [1938] MUCH OBLIGED, JEEVES [1971]
+JOY IN THE MORNING [1946] AUNTS AREN'T GENTLEMEN [1974]
+
+ Ora si cancellano tutti i numeri con:
+
+ &prompt.user; cat wodehouse | tr -d '[0-9]'
+The Inimitable Jeeves [] The Mating Season []
+Carry On, Jeeves [] Ring for Jeeves []
+Very Good, Jeeves [] Jeeves and the Feudal Spirit []
+Thank You, Jeeves [] Jeeves in the Offing []
+Right Ho, Jeeves [] Stiff Upper Lip, Jeeves []
+The Code of the Woosters [] Much Obliged, Jeeves []
+Joy in the Morning [] Aunts Aren't Gentlemen []
+
+ Per trattenere tutte le occorrenze multiple dei caratteri e, r
+ e f:
+
+ &prompt.user; cat wodehouse | tr -s 'erf'
+The Inimitable Jeves [1923] The Mating Season [1949]
+Cary On, Jeves [1925] Ring for Jeves [1953]
+Very Good, Jeves [1930] Jeves and the Feudal Spirit [1954]
+Thank You, Jeves [1934] Jeves in the Ofing [1960]
+Right Ho, Jeves [1934] Stif Upper Lip, Jeves [1963]
+The Code of the Woosters [1938] Much Obliged, Jeves [1971]
+Joy in the Morning [1946] Aunts Aren't Gentlemen [1974]
+
+
+
+ find - cerca file
+
+ Il comando &man.find.1; può cercare file in modo
+ ricorsivo nell'albero di directory indicato, confrontando il tipo di
+ file o lo schema specificato. &man.find.1; può quindi elencare i
+ file o eseguire arbitrari comandi in base ai risultati.
+
+ Sintassi
+
+ find directory
+ [opzioni di ricerca]
+ [azioni]
+
+ Opzioni generali
+
+ Per l'opzione del tempo di ricerca, la notazione in giorni,
+ n è:
+
+
+
+
+
+
+
+
+
+ più di n giorni
+
+
+
+ n
+
+ esattamente n giorni
+
+
+
+
+
+ meno di n giorni
+
+
+
+
+
+ Alcune caratteristiche dei file che &man.find.1; può
+ ricercare sono:
+
+ la data dell'ultimo accesso o dell'ultima
+ modifica al file:
+
+
+
+
+
+
+
+
+
+ data di accesso, vero se l'accesso è di
+ n giorni fà
+
+
+
+
+
+ data di cambiamento, vero se lo stato del file è
+ stato modificato n giorni
+ fà
+
+
+
+
+
+ data di modifica, vero se i dati del file sono stati
+ modificati n giorni fà
+
+
+
+
+
+ vero se più recente del file specificato
+
+
+
+
+
+ tipo di file,
+ dove tipo può essere:
+
+
+
+ b
+
+ file speciale a blocchi
+
+
+
+ c
+
+ file speciale a caratteri
+
+
+
+ d
+
+ directory
+
+
+
+ l
+
+ link simbolico
+
+
+
+ p
+
+ file pipe (fifo)
+
+
+
+ f
+
+ file regolare
+
+
+
+
+
+ tipo di file
+ system, dove tipo
+ può essere un valido tipo di file system, esempio
+ ufs (Unix File System) e
+ nfs (Network File System)
+
+
+
+
+
+ vero se il file appartiene all'utente specificato
+
+
+
+
+
+ vero se il file appartiene al gruppo specificato
+
+
+
+
+
+ permessi del file, dove modi
+ è la modalità ottale usata dal comando
+ &man.chmod.1;. Quando modi è
+ preceduto da un segno meno, solamente i bit che sono specificati
+ vengono confrontati.
+
+
+
+
+
+ esegue il comando specificato. La fine del comando viene
+ indicata con un escape e punto e virgola (\;). L'argomento del
+ comando, {}, sostituisce il path name corrente.
+
+
+
+
+
+ vero se il nome del file è quello specificato.
+ Confronti con schemi wild card sono permessi se il
+ meta-carattere viene messo in escape per la shell con un
+ backslash (\)
+
+
+
+
+
+ sempre vero. Stampa una lista lunga del path name
+ corrente
+
+
+
+
+
+ stampa i path name trovati (default per SVR4, non per
+ BSD)
+
+
+
+
+
+ Sono permesse espressioni complesse. Le espressioni devono essere
+ raggruppate tra parentesi (mettendo in escape le parentesi con un
+ backslash per impedire alla shell di interpretarle). Il simbolo di
+ esclamazione (!) può essere usato per negare
+ un'espressione. Gli operatori:
+ (and) e
+ (or) vengono usati per raggruppare
+ espressioni.
+
+ Esempi:
+
+ &man.find.1; può ricercare in modo ricorsivo attraverso
+ sotto-directory, ma per lo scopo di questi esempi saranno usati i
+ seguenti file:
+
+ 14 -rw-r--r-- 1 frank staff 6682 Feb 5 10:04 library
+ 6 -r--r----- 1 frank staff 3034 Mar 16 1995 netfile
+34 -rw-r--r-- 1 frank staff 17351 Feb 5 10:04 standard
+ 2 -rwxr-xr-x 1 frank staff 386 Apr 26 09:51 tr25*
+
+ Per trovare tutti i file più recenti del file
+ library:
+
+ &prompt.user; find . -newer library -print
+./tr25
+./standard
+
+ Per trovare tutti i file con i permessi di lettura o esecuzione per
+ l'utenza altri e quindi modificare gli stessi in modo da
+ disabilitarli:
+
+ &prompt.user; find . \( -perm -004 -o -perm -001 \) -exec chmod o-rx {} \; -exec ls -al {} \;
+-rw-r----- 1 frank staff 6682 Feb 5 10:04 ./library
+-rwxr-x--- 1 frank staff 386 Apr 26 09:51 ./tr25
+-rw-r----- 1 frank staff 17351 Feb 5 10:04 ./standard
+
+ Nell'esempio precedente le parentesi e i punti e virgola sono messi
+ in escape con un backslash per impedire alla shell di interpretarli.
+ Le parentesi graffe sono automaticamente rimpiazzate dai risultati della
+ precedente ricerca e il punto e virgola chiude il comando.
+
+ Si possono ricercare alcuni nomi di file contenenti la stringa
+ ar con:
+
+ &prompt.user; find . -name \*ar\* -ls
+326584 7 -rw-r----- 1 frank staff 6682 Feb 5 10:04 ./library
+326585 17 -rw-r----- 1 frank staff 17351 Feb 5 10:04 ./standard
+
+ dove l'opzione mostra un listato lungo, numeri
+ di inode inclusi.
+
+
+
+
+ Archiviazione, compressione e conversione di file
+
+
+ Comandi di archiviazione, compressione e conversione di
+ file
+
+
+
+
+
+
+ Comando/Sintassi
+
+ Cosa fa
+
+
+
+
+
+ compress/uncompress/zcat
+ [opzioni]
+ file[.Z]
+
+ comprime o decomprime un file. I file compressi sono
+ memorizzati con l'estensione .Z
+
+
+
+ dd [if=infile]
+ [of=outfile]
+ [operando=valore]
+
+ copia un file, converte tra ASCII e EBCDIC o scambia
+ l'ordine dei byte, come specificato
+
+
+
+ gzip/gunzip/zcat
+ [opzioni]
+ file[.gz]
+
+ comprime o decomprime un file. I file compressi sono
+ memorizzati con l'estensione .gz
+
+
+
+ od [opzioni]
+ file
+
+ effettua un dump di un file binario in ottale, in ASCII, in
+ esadecimale, in decimale o in modo carattere.
+
+
+
+ tar [opzioni]
+ [file]
+
+ archivio a nastro - riferirsi alle pagine man per i dettagli
+ su come creare, visualizzare ed estrarre un archivio di file. I
+ file tar possono essere memorizzati su nastro o su disco.
+
+
+
+ uudecode
+ [file]
+
+ decodifica un file uuencoded, ricreando il file
+ originale
+
+
+
+ uuencode [file]
+ nuovo_nome
+
+ codifica un file binario in ASCII 7-bit; utile quando lo si
+ invia tramite email, per poi essere decodificato come
+ nuovo_nome alla
+ destinazione
+
+
+
+
+
+
+ Compressione di file
+
+ Il comando &man.compress.1; viene usato per ridurre lo spazio di
+ disco utilizzato da un file. Quando un file è stato compresso
+ usando il comando &man.compress.1;, il suffisso .Z
+ viene appeso al nome del file. I permessi, la data di accesso e di
+ modifica del file originale vengono preservati. Il comando
+ &man.uncompress.1; restituisce il file originale compresso con
+ &man.compress.1;.
+
+ Sintassi
+
+ compress [opzioni]
+ [file]
+
+ uncompress [opzioni]
+ [file.Z]
+
+ zcat [file.Z]
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ scrive su standard output e non crea o modifica alcun
+ file
+
+
+
+
+
+ forza la compressione del file, anche se questa non riduce
+ la dimensione del file o se il file destinazione
+ (file.Z) esiste
+ già.
+
+
+
+
+
+ verbose. Riporta la percentuale di riduzione del
+ file.
+
+
+
+
+
+ &man.zcat.1; scrive su standard output. Equivale a
+ uncompress -c.
+
+ Esempi:
+
+ Dati i file:
+
+ 96 -rw-r--r-- 1 lindadb acs 45452 Apr 24 09:13 logins.beauty
+184 -rw-r--r-- 1 lindadb acs 90957 Apr 24 09:13 logins.bottom
+152 -rw-r--r-- 1 lindadb acs 75218 Apr 24 09:13 logins.photon
+168 -rw-r--r-- 1 lindadb acs 85970 Apr 24 09:13 logins.top
+
+ Questi possono essere compressi con:
+
+ &prompt.user; compress logins.*
+
+ che crea i file:
+
+ 24 -rw-r--r-- 1 lindadb acs 8486 Apr 24 09:13 logins.beauty.Z
+40 -rw-r--r-- 1 lindadb acs 16407 Apr 24 09:13 logins.bottom.Z
+24 -rw-r--r-- 1 lindadb acs 10909 Apr 24 09:13 logins.photon.Z
+32 -rw-r--r-- 1 lindadb acs 16049 Apr 24 09:13 logins.top.Z
+
+ I file originali sono persi.
+
+ Per visualizzare un file compresso, viene usato il comando
+ &man.zcat.1;:
+
+ &prompt.user; zcat logins.beauty.Z | head
+beauty:01/22/94:#total logins,4338:#different UIDs,2290
+beauty:01/23/94:#total logins,1864:#different UIDs,1074
+beauty:01/24/94:#total logins,2317:#different UIDs,1242
+beauty:01/25/94:#total logins,3673:#different UIDs,2215
+beauty:01/26/94:#total logins,3532:#different UIDs,2216
+beauty:01/27/94:#total logins,3096:#different UIDs,1984
+beauty:01/28/94:#total logins,3724:#different UIDs,2212
+beauty:01/29/94:#total logins,3460:#different UIDs,2161
+beauty:01/30/94:#total logins,1408:#different UIDs,922
+beauty:01/31/94:#total logins,2175:#different UIDs,1194
+
+ Una visualizzazione del file utilizzando un altro comando al posto
+ di &man.zcat.1; può produrre un difficile risultato
+ binario.
+
+ Il comando &man.uncompress.1; viene usato per far ritornare il file
+ compresso nel suo formato originale:
+
+ &prompt.user; uncompress logins.*.Z ; ls -als logins.*
+ 96 -rw-r--r-- 1 lindadb acs 45452 Apr 24 09:13 logins.beauty
+184 -rw-r--r-- 1 lindadb acs 90957 Apr 24 09:13 logins.bottom
+152 -rw-r--r-- 1 lindadb acs 75218 Apr 24 09:13 logins.photon
+168 -rw-r--r-- 1 lindadb acs 85970 Apr 24 09:13 logins.top
+
+ In aggiunta alle utility standard di Unix &man.compress.1;,
+ &man.uncompress.1;, &man.zcat.1; ci sono un set di utility
+ GNU liberamente disponibili. Queste creano
+ persino un miglior lavoro di compressione utilizzando un algoritmo
+ più efficiente. I programmi GNU che forniscono
+ funzionalità simili ai precedenti sono spesso installati
+ rispettivamente come &man.gzip.1;, &man.gunzip.1; e &man.zcat.1;.
+ I nomi dei file compressi con &man.gzip.1; hanno l'estensione
+ .z o .gz. Il software GNU
+ può essere ottenuto via ftp anonimo: ftp://ftp.gnu.org/pub/gnu.
+
+
+
+ tar - archivio di file
+
+ Il comando &man.tar.1; raggruppa file in un dispositivo o in un file
+ per scopi di archiviazione. Il comando &man.tar.1; non comprime i file,
+ rende solamente più maneggevole una grande quantità di
+ file.
+
+ Sintassi
+
+ tar [opzioni]
+ [directory file]
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ crea un archivio (inizia scrivendo all'inizio del
+ file)
+
+
+
+
+
+ visualizza il contenuto
+
+
+
+
+
+ estrae da un archivio
+
+
+
+
+
+ verbose
+
+
+
+
+
+ nome del file di archivio
+
+
+
+
+
+ dimensione del blocco di archivio
+
+
+
+
+
+ &man.tar.1;, in generale, accetta le sue opzioni sia facendole
+ precedere da un trattino (-) sia senza trattino. Il file di archivio
+ può essere un file su disco, un dispositivo a nastro o
+ standard input/output. L'ultimo modo viene rappresentato tramite un
+ trattino.
+
+ Esempi:
+
+ Dati i file di dimensioni seguenti:
+
+ 45 logs.beauty
+89 logs.bottom
+74 logs.photon
+84 logs.top
+
+ &man.tar.1; può combinare questi in un solo file,
+ logfile.tar:
+
+ &prompt.user; tar -cf logfile.tar logs.* ; ls -s logfile.tar
+304 logfile.tar
+
+ In Internet, molti siti di archivio FTP anonimi memorizzano i loro
+ pacchetti in formati tar compressi, quindi i file finiscono in
+ .tar.Z o .tar.gz. Per
+ estrarre i file da uno di questi file archivio si può prima
+ decomprimerlo, o usare l'appropriato comando &man.zcat.1; e mandare in
+ pipe il risultato a &man.tar.1;, esempio:
+
+ &prompt.user; zcat archive.tar.Z | tar -xvf -
+
+ dove il trattino alla fine del comando &man.tar.1; indica che il
+ file è preso da &man.stdin.4;.
+
+
+
+ uuencode/uudecode - codifica/decodifica un file
+
+ Per codificare un file binario in ASCII 7-bit si usa il comando
+ &man.uuencode.1;. Per decodificare il file ASCII 7-bit in binario
+ si usa il comando &man.uudecode.1;. Il suffisso
+ uu nei nomi deriva dal fatto che
+ questi comandi fanno parte del set di comandi Unix-to-Unix CoPy (UUCP).
+ I comandi &man.uuencode.1; e &man.uudecode.1; sono generalmente usati
+ quando si mandano file binari via e-mail. Con l'e-mail non c'è
+ garanzia che file binari 8-bit siano trasferiti correttamente. Quindi
+ per garantire una corretta consegna si può codificare il file
+ binario, sia direttamente su linea di comando, includendo il file
+ codificato, sia indirettamente, lasciando al proprio programma di posta
+ MIME questo lavoro. In modo simile, l'utente decodifica il file
+ ricevuto.
+
+ Sintassi
+
+ uuencode [file_sorgente]
+ pathname_per_uudecode
+ [> nuovo_file]
+
+ uudecode [-p]
+ file_uuencode
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ manda l'output su standard output piuttosto che nel file di
+ default
+
+
+
+
+
+ Esempi:
+
+ La prima linea di un file codificato con &man.uuencode.1; include i
+ permessi e il nome del file
+ originale che &man.uudecode.1; utilizzerà quando
+ decodificherà il file codificato. Il file inizia e finisce
+ rispettivamente con le parole chiavi begin e
+ end, esempio:
+
+ begin 555 binary_filename
+
+M?T5,1@$" 0 " ( ! %"W #0 5"< T "
+M!0 H !4 % 8 T $ - "@ H 4 P
+M -0 !$ ! ! ! %"
+M%P !0A< % $ $ 4(8 -"& W& W% < 0
+M @ !0B T(@ )@ !P O=7-R+VQI8B]L9"YS
+M;RXQ ?< 'Y VP "O !VP )8 &6 !G0
+M %[ U0 %G !3 ;< #Q %Q !
+MEP :P !_ '@ !PP (P
+M N0 =H _0 $D Y < #F /L
+M01 $' $ & ! P #0A@ 4(8
+M" ! 0 !E !@ , T(@ %"( )@ $
+M 0 ( ;@ $ ' -"N !0K@ /H
+M $ # ', ! P #1J 4:@ #8 !
+M !Y 0 , TH %* !=X 0
+M@ @ # -/X !3^ "E, $ (4 !
+M 4_> )0 0 ". P
+; %0 P )@ $
+
+end
+
+
+
+ dd - copia di blocchi e conversione
+
+ Il comando &man.dd.1; permette di copiare dati da dispositivi
+ grezzi, come dischi o nastri, specificando la dimensione dei blocchi
+ di input e di output. &man.dd.1; era originariamente conosciuto
+ come il programma di copia disco-a-disco. Inoltre con &man.dd.1;
+ si possono convertire file in differenti formati, per esempio da EBCDIC
+ a ASCII, cambiare l'ordine dei byte, ecc.
+
+ Sintassi
+
+ dd [if=dispositivo_input]
+ [of=dispositivo_output]
+ [operando=valore]
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ il dispositivo o file di input
+
+
+
+
+
+ il dispositivo o file di output
+
+
+
+
+
+ Se i dispositivi di input o di output non sono specificati, si
+ assume come default rispettivamente lo standard input e lo standard
+ output.
+
+ Gli operandi possono essere:
+
+
+
+
+
+
+
+
+
+ dimensione del blocco di input (blocchi da 512 byte di
+ default)
+
+
+
+
+
+ dimensione del blocco di output (blocchi da 512 byte di
+ default)
+
+
+
+
+
+ setta entrambe le dimensioni dei blocchi di input e di
+ output
+
+
+
+
+
+ copia n file di input
+
+
+
+
+
+ salta n blocchi di input prima
+ di iniziare la copia
+
+
+
+
+
+ copia solamente n blocchi di
+ input
+
+
+
+
+
+ dove valore può
+ essere:
+
+
+
+
+
+ converte da EBCDIC a ASCII
+
+
+
+
+
+ converte da ASCII a EBCDIC
+
+
+
+
+
+ converte i caratteri maiuscoli in minuscoli
+
+
+
+
+
+ converte i caratteri minuscoli in maiuscoli
+
+
+
+
+
+ scambia ogni coppia di byte dei dati di input
+
+
+
+
+
+ non ferma il processo su un errore in input
+
+
+
+
+
+ riempie ogni blocco di input alla dimensione di
+ , apporrendo byte nulli se
+ necessario
+
+
+
+
+
+ La dimensione dei blocchi viene specificata in byte e può
+ finire in k, b o
+ w per indicare rispettivamente 1024 (kilo), 512
+ (blocco) o 2 (parola) byte.
+
+ Esempi:
+
+ Per copiare un file da un dispositivo a nastro in un altro:
+
+ &prompt.user; dd if=/dev/rmt/0 of=/dev/rmt/1
+20+0 records in
+20+0 records out
+
+ Per copiare file posti in un dispositivo a nastro, scritti su una
+ macchina big endian con una dimensione di 20 blocchi, in file su
+ una machina little endian che ha un nastro inserito nel suo dispositivo,
+ si ha la necessità di scambiare le coppie di byte, in questo
+ modo:
+
+ &prompt.user; dd if=/dev/rmt/0 of=new_file ibs=20b conv=swab
+1072+0 records in
+21440+0 records out
+
+ A completamento dell'operazione, &man.dd.1; riporta il numero dei
+ blocchi totali e dei blocchi parziali per entrambi i file di
+ input e di output.
+
+
+
+ od - dump ottale di un file
+
+ Il comando &man.od.1; effettua un dump di un file su &man.stdout.4;
+ in differenti formati, incluso l'ottale, il decimale, virgola mobile,
+ esadecimale e formato carattere.
+
+ Sintassi
+
+ od [opzioni]
+ file
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ dump ottale
+
+
+
+ |
+
+ dump decimale (-d) o decimale esteso (-D)
+
+
+
+ |
+
+ dump decimale marcato (-s) o decimale marcato esteso
+ (-S)
+
+
+
+ |
+
+ dump in virgola mobile (-f) o virgola mobile estesa
+ (double) (-F)
+
+
+
+ |
+
+ dump esadecimale (-x) o esadecimale esteso (-X)
+
+
+
+ |
+
+ dump in formato carattere (byte singolo) o carattere esteso
+ (carattere singolo o multi-byte, a seconda dai settaggi
+ locali)
+
+
+
+
+
+ modalità verbose
+
+
+
+
+
+ Esempi:
+
+ Per dare un'occhiata all'attuale contenuto del seguente file, un
+ elenco di romanzi di Wodehouse Lord Emsworth:
+
+ Something Fresh [1915] Uncle Dynamite [1948]
+Leave it to Psmith [1923] Pigs Have Wings [1952]
+Summer Lightning [1929] Cocktail Time [1958]
+Heavy Weather [1933] Service with a Smile [1961]
+Blandings Castle and Elsewhere [1935] Galahad at Blandings [1965]
+Uncle Fred in the Springtime [1939] A Pelican at Blandings [1969]
+Full Moon [1947] Sunset at Blandings [1977]
+
+ si può usare:
+
+ &prompt.user; od -c wodehouse
+0000000 S o m e t h i n g F r e s h
+0000020 [ 1 9 1 5 ] \t U n c l e D y n
+0000040 a m i t e [ 1 9 4 8 ] \n L e a
+0000060 v e i t t o P s m i t h
+0000100 [ 1 9 2 3 ] \t P i g s H a v e
+0000120 W i n g s [ 1 9 5 2 ] \n S u
+0000140 m m e r L i g h t n i n g [
+0000160 1 9 2 9 ] \t C o c k t a i l T
+0000200 i m e [ 1 9 5 8 ] \n H e a v y
+0000220 W e a t h e r [ 1 9 3 3 ] \t
+0000240 S e r v i c e w i t h a S
+0000260 m i l e [ 1 9 6 1 ] \n B l a n
+0000300 d i n g s C a s t l e a n d
+0000320 E l s e w h e r e [ 1 9 3 5
+0000340 ] \t G a l a h a d a t B l a
+0000360 n d i n g s [ 1 9 6 5 ] \n U n
+0000400 c l e F r e d i n t h e
+0000420 S p r i n g t i m e [ 1 9 3 9
+0000440 ] \t A P e l i c a n a t B
+0000460 l a n d i n g s [ 1 9 6 9 ] \n
+0000500 F u l l M o o n [ 1 9 4 7 ]
+0000520 \t S u n s e t a t B l a n d
+0000540 i n g s [ 1 9 7 7 ] \n
+0000554
+
+
+
+
+ Connessioni remote
+
+
+ Comandi per connessioni remote
+
+
+
+
+
+
+ Comando/Sintassi
+
+ Cosa fa
+
+
+
+
+
+ finger [opzioni]
+ user[@nomehost]
+
+ riporta informazioni sugli utenti delle macchine locali
+ e remote
+
+
+
+ ftp [opzioni]
+ host
+
+ trasferisce file utilizzando il protocollo di trasferimento
+ di file
+
+
+
+ rcp [opzioni]
+ nomehost
+
+ copia file in remoto dalla macchina corrente in un'altra
+ macchina
+
+
+
+ rlogin [opzioni]
+ nomehost
+
+ effettua il login in remoto su un'altra macchina
+
+
+
+ rsh [opzioni]
+ nomehost
+
+ shell remota da eseguire su un'altra macchina
+
+
+
+ telnet [host
+ [porta]]
+
+ comunica con un altro host utilizzando il protocollo
+ telnet
+
+
+
+
+
+
+ TELNET e FTP - protocollo di login remoto e di trasferimento di
+ file
+
+ TELNET e FTP sono
+ protocolli del livello applicazione di Internet. Le specifiche dei
+ protocolli FTP e TELNET sono state realizzate da molte organizzazioni,
+ incluso il Centro Nazionale per le Applicazioni di Supercomputer (NCSA),
+ molti altri domini pubblici e organizzazioni collaborative.
+
+ I programmi che implementano il protocollo
+ TELNET sono usualmente chiamati
+ telnet, ma non sempre. Alcune notevoli
+ eccezioni sono tn3270, WinQVT e
+ QWS3271, che implementano comunque il protocollo
+ TELNET. TELNET viene usato per effettuare il login remoto su un
+ altro computer in Internet.
+
+ I programmi che implementano il protocollo FTP
+ sono usualmente chiamati ftp, ma esistono
+ anche delle eccezioni. Il programma chiamato Fetch,
+ distribuito dalla Dartmouth College, WS_FTP, scritto
+ e distribuito da John Junod e Ftptool, scritto da
+ Mike Sullivan, sono implementazioni del protocollo FTP con
+ un'interfaccia utente grafica. Esiste una versione migliore di FTP,
+ ncftp che ha caratteristiche aggiuntive, scritto da
+ Mike Gleason. Comunque, l'implementazione del protocollo FTP viene
+ spesso inclusa nei programmi che implementano TELNET, come quello
+ distribuito dalla NCSA. FTP viene usato per trasferire file tra
+ computer su Internet.
+
+ &man.rlogin.1; è un servizio di login remoto che
+ è stato in passato un'esclusiva dello Unix BSD 4.3 di Berkeley.
+ Essenzialmente, offre le stesse funzionalità di &man.telnet.1;,
+ eccetto che &man.rlogin.1; lascia passare al computer remoto le
+ informazioni dell'ambiente di login dell'utente. Le macchine possono
+ essere configurate per permettere connessioni da fidati host senza
+ richiedere la password dell'utente. Una versione più sicura di
+ questo protocollo è la Sicura SHell
+ SSH, software scritto da Tatu Ylonen e
+ disponibile via: ftp://ftp.net.ohio-state.edu/pub/security/ssh.
+
+ Da un prompt Unix, questi programmi possono essere invocati
+ digitando il comando (nome del comando) e il nome (Internet) della
+ macchina remota alla quale ci si vuole connettere. Inoltre si possono
+ specificare diverse opzioni per questi comandi, come mostrato di
+ seguito.
+
+ Sintassi
+
+ telnet [opzioni]
+ [host_remoto
+ [porta]]
+
+ tn3270 [opzioni]
+ [host_remoto
+ [porta]]
+
+ ftp [opzioni]
+ [host_remoto]
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+ ftp
+
+ telnet
+
+ Azione
+
+
+
+
+
+
+
+
+
+ abilità la modalità di debugging
+
+
+
+
+
+
+
+ come sopra (solamente SVR4)
+
+
+
+
+
+
+
+ disabilita il prompt interattivo
+
+
+
+
+
+
+
+ non tenta un auto-login su una connessione
+
+
+
+
+
+
+
+ modalità verbose
+
+
+
+
+
+
+
+ si connette all'host remoto con il nome utente specificato
+ (solamente SVR4)
+
+
+
+
+
+
+
+ percorso dati 8-bit (solamente SVR4)
+
+
+
+
+
+ &man.telnet.1; e tn3270 hanno un'opzione per
+ specificare il numero di porta a cui connettersi sull'host remoto. Per
+ entrambi i comandi, il numero di porta di default è 23,
+ la porta telnet. Altre porte vengono usate per il debugging dei servizi
+ di rete e per ragioni speciali.
+
+ Esempi:
+
+ &prompt.user; telnet oscar.us.ohio-state.edu
+
+ &prompt.user; tn3270 ohstmvsa.acs.ohio-state.edu
+
+ &prompt.user; ftp magnus.acs.ohio-state.edu
+
+ La macchina remota richiederà di identificarsi tramite login
+ e password. Spesso, le macchine organizzate come archivi di
+ software o di informazioni, permettono connessioni ftp anonime. Ci si
+ collega tramite &man.ftp.1; alla macchina remota e si effettua il
+ login come anonymous (il login
+ ftp è equivalente su molte macchine)
+ cioè, quando viene richiesto il login si digita
+ anonymous (di solito per la password si inserisce
+ il proprio indirizzo email o qualsiasi altra cosa).
+
+ Una volta che si è correttamente collegati a un computer
+ remoto tramite &man.telnet.1; e &man.rlogin.1; (e assumendo che sia
+ stata assegnata l'emulazione del terminale) si potrà utilizzare
+ la macchina come al solito.
+
+ Una volta che si è correttamente collegati ad un computer
+ remoto tramite &man.ftp.1;, si può trasferire un file in quel
+ computer con il comando put o prenderlo da quel
+ computer con il comando get. La sintassi è la
+ seguente:
+
+ put nome-file-locale
+ nome-file-remoto
+
+ get nome-file-locale
+ nome-file-remoto
+
+ Sono disponibili altri comandi per &man.ftp.1;, a seconda della
+ specifica implementazione dell'FTP locale e remoto. Il comando
+ help visualizza un elenco di comandi disponibili.
+ Il comando help può visualizzare lo scopo di
+ un comando specifico. Esempi di validi comandi sono mostrati di
+ seguito:
+
+
+
+
+
+
+
+ help
+
+ mostra un elenco di comandi disponibili
+
+
+
+ help mget
+
+ mostra lo scopo del comando mget
+ (prendere file multipli)
+
+
+
+ pwd
+
+ mostra la corrente directory di lavoro
+
+
+
+ ls o dir
+
+ elenca il contenuto delle directory
+
+
+
+ cd
+
+ cambia directory
+
+
+
+ lcd
+
+ cambia la directory locale
+
+
+
+ open
+
+ specifica la macchina alla quale si vuole
+ connettersi
+
+
+
+ user
+
+ specifica il proprio id di login (nel caso che non venga
+ richiesto direttamente)
+
+
+
+ quit
+
+ esce dal programma FTP
+
+
+
+
+
+
+
+ finger - restituisce informazioni riguardo gli utenti
+
+ Il comando &man.finger.1; mostra il file .plan
+ di un utente specifico o riporta chi è attualmente
+ loggato su una specifica macchina. L'utente deve
+ permettere i permessi di lettura generale sul file
+ .plan.
+
+ Sintassi
+
+ finger [opzioni]
+ [user[@nomehost]]
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ forza il formato lungo di output
+
+
+
+
+
+ ottiene solo lo username, non il nome e cognome
+ reali
+
+
+
+
+
+ forza il formato corto di output
+
+
+
+
+
+ Esempi:
+
+ brigadier:condron [77]> finger workshop@nyssa
+Questo è un esempio di file .plan per l'id workshop di nyssa.
+Questo id è stato usato in questa settimana da Frank Fiamingo, Linda
+DeBula, e Linda Condron, mentre insegnavano ad usare una nuova versione
+di Unix workshop sviluppata per l'UTS.
+
+Sperando di aver insegnato qualcosa.
+Frank, Linda, & Linda
+
+ brigadier: condron [77]> finger
+Login Name TTY Idle When Where
+
+condron Linda S Condron p0 Sun 18:13 lcondron-mac.acs
+frank Frank G. Fiamingo p1 Mon 16:19 nyssa
+
+
+
+ Comandi remoti
+
+ Alcune macchine Unix possono essere collegate tra loro per formare
+ una rete locale (LAN). In questo caso succede spesso che un utente di
+ una macchina possieda validi accessi di login su molte altre macchine
+ della rete locale. Per questo tipo di utente sono disponibili comandi
+ Unix che forniscono una certa praticità nel realizzare certe
+ operazioni comuni. Poichè questi comandi si focalizzano su
+ comunicazioni con host remoti nella rete locale (o in Internet), i nomi
+ dei comandi iniziano con la lettera r:
+ &man.rlogin.1;, &man.rsh.1; e &man.rcp.1;. La possibilità di
+ accesso remoto tramite questi comandi è sostenuta (opzionalmente)
+ attraverso il file ~/.rhosts di ogni singolo utente
+ e dal file generale di sistema /etc/hosts.equiv.
+ Per ragioni di sicurezza questi possono essere limitati ad alcuni
+ host.
+
+ Il comando &man.rlogin.1; permette un accesso di login remoto
+ su un altro host della rete locale. &man.rlogin.1; passa
+ informazioni all'host remoto circa l'ambiente locale, incluso il valore
+ della variabile d'ambiente TERM.
+
+ Il comando &man.rsh.1; fornisce la possibilità di invocare
+ una shell Unix su un host remoto della rete locale con lo scopo di
+ eseguirci comandi di shell. Questa capacità è simile alla
+ funzione shell escape disponibile generalmente all'interno di un
+ software di sistema Unix come editor ed email.
+
+ Il comando &man.rcp.1; fornisce la possibilità di
+ copiare file dall'host locale ad un host remoto della rete
+ locale.
+
+ Sintassi
+
+ rlogin [-l username]
+ host_remoto
+
+ rsh [-l username]
+ host_remoto
+ [comando]
+
+ rcp
+ [[user1]@host1:]file_sorgente
+ [[user2]@host2:]file_destinazione
+
+ dove le parti tra parentesi ([]) sono opzionali.
+ &man.rcp.1; non richiede password, quindi si deve avere il
+ permesso per eseguire comandi remoti su una specifica macchina.
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ si connette all' host remoto con il nome utente specificato
+ (&man.rlogin.1; & &man.rsh.1;)
+
+
+
+
+
+ Il file .rhosts, se esiste nella directory home
+ dell'utente sull'host remoto, permette l'accesso tramite &man.rlogin.1;,
+ &man.rsh.1; e &man.rcp.1; agli host remoti senza richiedere la password
+ per tale account. Il file .rhosts contiene un
+ record per ogni coppia host remoto-username con il quale il proprietario
+ del file .rhosts desidera connettersi. Ogni record
+ nel file .rhosts è della forma:
+
+ host_remoto utente_remoto
+
+ dove l'elenco
+ utente_remoto è
+ opzionale. Per esempio, se Heather Jones vuole essere in grado di
+ connettersi alla macchina1 (dove il suo
+ username è heather) dalla
+ macchina2 (dove il suo username
+ è jones) o dalla
+ macchina3 (dove il suo username
+ è heather, lo stesso della
+ macchina1), lei potrebbe creare un file
+ .rhosts nella sua home directory sulla
+ macchina1. Il contenuto di questo file
+ potrebbe essere:
+
+ macchina2 jones
+macchina3
+
+-oppure-
+
+macchina2 jones
+macchina3 heather
+
+ Su alcuni sistemi il file /etc/hosts.equiv
+ presta lo stesso scopo per tutti gli utenti, al di fuori del super-user.
+ Così un file /etc/hosts.equiv
+ contenente:
+
+ macchina_remota
+
+ permette agli utenti provenienti da macchina_remota
+ che hanno gli stessi username della macchina corrente, di
+ connettersi a quest'ultima senza la necessita' di inserire la
+ password.
+
+ Un file /etc/hosts.equiv che contiene:
+
+ macchina_remota utente_remoto
+
+ permette a
+ utente_remoto su macchina_remota
+ di connettersi alla macchina corrente allo stesso modo dell'utente
+ locale, tranne che per il super-user.
+
+ I file /etc/hosts.equiv e
+ ~/.rhosts vanno usati con cautela.
+
+ Le versioni dei programmi &man.rcp.1;, &man.rsh.1; e &man.rlogin.1;
+ basati sulla Secure SHell (SSH) sono
+ liberamente disponibili e forniscono molta più sicurezza.
+
+
+
+
+
\ 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 @@
+
+
+
+ Editor
+
+ Esistono numerose utility per la manipolazione del testo in Unix, come
+ è stato notato attraverso questo documento (esempio
+ &man.ed.1;, &man.ex.1;, &man.sed.1;, &man.awk.1;, la famiglia
+ grep e la famiglia
+ roff). Tra gli editor, l'editor visuale (o a
+ schermo pieno) standard su Unix è vi.
+ Questa applicazione comprende un super-set, per così dire, di
+ caratteristiche di &man.ed.1; e di &man.ex.1; (gli editor a linea di
+ Unix).
+
+ &man.vi.1; è un editor modale. Questo significa che ha
+ modalità specifiche che permettono l'inserimento del testo, la
+ cancellazione del testo e l'inserimento dei comandi. Si può lasciare
+ la modalità di inserimento premendo il tasto escape.
+ In questo modo ci si porta nella modalità comando. L'editor
+ di linea &man.ex.1; è incorporato in &man.vi.1;. Si può
+ passare dalla modalità a schermo pieno a quella a linea di comando (e
+ viceversa) quando si desidera. In modalità vi
+ premere Q per andare in modalità
+ ex. In modaltà ex, al
+ prompt : digitare vi per ritornare in modalità
+ vi. Inoltre è disponibile una modalità
+ di &man.vi.1; in sola lettura, che può essere invocata con
+ &man.view.1;.
+
+ Un altro editor comune nei sistemi Unix, specialmente nei college e
+ negli ambienti universitari, è emacs (che
+ sta per editing macros). Mentre &man.vi.1; è in
+ generale compreso nel sistema operativo Unix, &man.emacs.1; usualmente non
+ lo è. Emacs viene distribuito dalla Free
+ Software Foundation ed è discutibilmente il più potente editor
+ disponibile per Unix. Emacs è un software
+ di sistema molto grande ed è un grossa risorsa di sistema per un
+ utente di computer.
+
+ La Free Software Foundation e il progetto GNU (del quale
+ emacs fa parte) sono stati fondati da Richard
+ Stallman e dai suoi soci, i quali credono (come specificato nel manifesto
+ GNU) che condividere il software sia l'atto fondamentale di amicizia
+ tra programmatori. La loro General Public License garantisce il
+ diritto d'uso, di modifica e di distribuzione di
+ emacs (incluso il suo codice sorgente) ed
+ è stata progettata specificatamente per impedire a qualcuno di
+ prendersi un profitto finanziario da emacs o da
+ altri software conseguiti attraverso la Free Software Foundation. Molti dei
+ loro software, incluso emacs, sono disponibili
+ via ftp://ftp.gnu.org/pub/gnu/ e
+ http://www.gnu.org/.
+
+ Sia &man.vi.1; che &man.emacs.1; permettono di creare file di
+ inizializzazione che possono contenere macro per controllare i settaggi e le
+ funzioni degli editor.
+
+
+ Configurare la propria sessione vi
+
+ Per configurare l'ambiente di &man.vi.1; certe opzioni possono essere
+ settate con il comando di linea dell'editor :set
+ durante una sessione di editing. In alternativa, le opzioni usate di
+ frequente possono essere automaticamente settate quando viene invocato
+ &man.vi.1;, attraverso il file .exrc. Inoltre,
+ questo file può contenere macro per mappare battute di tasti in
+ funzioni usando la funzione map. All'interno di
+ &man.vi.1; queste macro possono essere definite con il comando
+ :map. I caratteri di controllo possono essere inseriti
+ digitando prima
+ Ctrl
+ V
+ , quindi il carattere di controllo desiderato. Alcune opzioni
+ disponibili in &man.vi.1; sono mostrate qui sotto. Alcuni sistemi Unix
+ non accettano certe di queste opzioni.
+
+
+
+
+
+
+
+ :set all
+
+ visualizza tutti i settaggi delle opzioni
+
+
+
+ :set ignorecase
+
+ ignora il maiuscolo e minuscolo di un carattere in una
+ ricerca
+
+
+
+ :set list
+
+ visualizza tab e return
+
+
+
+ :set nolist
+
+ mette off l'opzione
+
+
+
+ :set number
+
+ visualizza i numeri di linea
+
+
+
+ :set nonumber
+
+ disattiva i numeri di linea
+
+
+
+ :set showmode
+
+ visualizza l'indicazione che la modalità di
+ inserimento è on
+
+
+
+ :set noshowmode
+
+ mette off l'opzione
+
+
+
+ :set
+ wrapmargin=n
+
+ mette on la modalità word-wrap a
+ n spazi dal margine destro
+
+
+
+ :set wrapmargin=0
+
+ mette off l'opzione
+
+
+
+ :set warn
+
+ visualizza l'avvertimento Ultima modifica non
+ registrata
+
+
+
+ :set nowarn
+
+ mette off l'avvertimento di scrittura
+
+
+
+
+
+
+ Segue un esempio di file .exrc:
+
+ set wrapmargin=10
+set number
+set list
+set warn
+set ignorecase
+map K {!}fmt -80 # riformatta questo paragrafo, {!}, usando fmt a
+ # 80 caratteri per linea
+map ^Z :!spell # invoca spell, :!, per verificare lo splelling di
+ # una parola (ritorna a vi con Ctrl+D)
+
+
+
+ Configurare la propria sessione emacs
+
+ Configurare l'ambiente di &man.emacs.1; equivale a creare chiamate a
+ funzioni LISP. &man.emacs.1; è infinitamente personalizzabile
+ tramite variabili emacs, funzioni built-in e
+ attraverso la programmazione Emacs LISP. I settaggi possono essere
+ specificati dal minibuffer (o da linea di comando) durante una sessione
+ emacs. Alternativamente, i settaggi usati di
+ frequente possono essere attivati automaticamente quando viene invocato
+ &man.emacs.1;, usando il file .emacs. Benchè
+ una discussione del Emacs LISP vada oltre lo scopo di questo documento,
+ seguono alcuni esempi di configurazioni per &man.emacs.1;.
+
+ Per settare o verificare variabili emacs o per
+ usare le sue funzioni built-in, si usa il tasto escape
+ (Meta è come &man.emacs.1; si riferisce a
+ questo) seguito dalla lettera x, quindi la variabile o
+ la funzione e i suoi argomenti.
+
+
+
+
+
+
+
+ M, x
+ what-line
+
+ quale linea è sul cursore?
+
+
+
+ M, x
+ auto-fill-mode
+
+ mette on word-wrap
+
+
+
+ M, x
+ auto-fill-mode
+
+ mette off word-wrap
+
+
+
+ M, x
+ set-variable <return>
+ fill-column <return> 45
+
+ setta la lunghezza di linea a 45 caratteri
+
+
+
+ M, x
+ set-variable <return>
+ auto-save-interval <return>
+ 300
+
+ salva automaticamente il file ogni 300 battute di
+ tasti
+
+
+
+ M, x
+ goto-line <return>
+ 16
+
+ muove il cursore alla linea 16
+
+
+
+ M, x
+ help-for-help
+
+ invoca l'help di emacs quando
+ Ctrl
+ h
+ è stato mappato al tasto
+ backspace
+
+
+
+
+
+ Segue un esempio del file .emacs:
+
+ (message "Loading ~/.emacs...")
+; I commenti iniziano con un punto e virgola e continuano fino alla fine della linea.
+(setq text-mode-hook 'turn-on-auto-fill) ;mette on word-wrap
+(setq fill-column 45) ;lunghezza di linea pari a 45 caratteri
+(setq auto-save-interval 300) ;salva il file ogni 300 battute di tasti
+; Costruisce (o mappa) la funzione di rubout (Ctrl+h) nel tasto backspace
+(global-set-key "\C-h" 'backward-delete-char-untabify)
+; Costruisce la funzione help emacs per la sequenza di battitura "Ctrl+x ?"
+(global-set-key "\C-x?" 'help-for-help)
+; Per saltare alla linea 16, digitare M, #<return>16
+(global-set-key "\M-#" 'goto-line)
+; Per sapere su che linea si è, digitare M, n
+(global-set-key "\M-n" 'what-line)
+(message "~/.emacs loaded.")
+(message "")
+
+
+
+ Veloce guida per vi
+
+ Tutti i comandi in &man.vi.1; sono preceduti dalla pressione del tasto
+ escape. Ogni volta che si deve intraprendere un nuovo
+ comando si deve utilizzare il tasto di escape.
+ Diversamente da dove indicato, &man.vi.1; è case sensitive
+ (sensibile alla differenza minuscolo e maiuscolo).
+
+ Comandi movimento cursore:
+
+ (n) indica un numero ed è
+ opzionale
+
+
+
+
+
+
+
+ (n)h
+
+ (n) spazi a sinistra
+
+
+
+ (n)j
+
+ (n) spazi giù
+
+
+
+ (n)k
+
+ (n) spazi su
+
+
+
+ (n)l
+
+ (n) spazi a destra
+
+
+
+
+
+ (Generalmente funzionano anche i tasti freccia)
+
+
+
+
+
+
+
+
+ Ctrl
+ F
+
+
+ avanti di una schermata
+
+
+
+
+ Ctrl
+ B
+
+
+ indietro di una schermata
+
+
+
+
+ Ctrl
+ D
+
+
+ giù di mezza schermata
+
+
+
+
+ Ctrl
+ U
+
+
+ su di mezza schermata
+
+
+
+
+
+ (Ctrl indica il tasto control; il
+ case sensitive non è importante)
+
+
+
+
+
+
+
+ H
+
+ all'inizio della linea superiore della schermata
+
+
+
+ M
+
+ all'inizio della linea mediana della schermata
+
+
+
+ L
+
+ all'inizio dell'ultima linea della schermata
+
+
+
+ G
+
+ all'inizio dell'ultima linea del file
+
+
+
+ (n)G
+
+ all'inizio della linea (n)
+
+
+
+ 0
+
+ (zero) all'inizio della linea
+
+
+
+ $
+
+ alla fine della linea
+
+
+
+ (n)w
+
+ avanti (n) parole
+
+
+
+ (n)b
+
+ indietro (n) parole
+
+
+
+ e
+
+ fine della parola
+
+
+
+
+
+ Inserimento testo:
+
+
+
+
+
+
+
+ i
+
+ inserimento testo prima del cursore
+
+
+
+ a
+
+ aggiunta testo dopo il cursore (non sovrascrive altro
+ testo)
+
+
+
+ I
+
+ inserimento testo all'inizio della linea
+
+
+
+ A
+
+ aggiunta testo alla fine della linea
+
+
+
+ r
+
+ sostituisce il carattere posto sotto il cursore con il
+ prossimo carattere digitato
+
+
+
+ R
+
+ sovrascrive i caratteri fino alla fine della linea (o fino a
+ quando il tasto escape viene digitato per
+ cambiare comando)
+
+
+
+ o
+
+ (alpha o) inserisce una nuova linea dopo la linea corrente
+ per inserire del testo
+
+
+
+ O
+
+ (alpha O) inserisce una nuova linea prima della linea
+ corrente per inserire del testo
+
+
+
+
+
+ Cancellazione testo:
+
+
+
+
+
+
+
+ dd
+
+ cancella la linea corrente
+
+
+
+ (n)dd
+
+ cancella (n) linee
+
+
+
+ (n)dw
+
+ cancella (n) parole
+
+
+
+ D
+
+ cancella dal cursore fino alla fine della linea
+
+
+
+ x
+
+ cancella il carattere corrente
+
+
+
+ (n)x
+
+ cancella (n) caratteri
+
+
+
+ X
+
+ cancella il carattere precedente
+
+
+
+
+
+ Comandi di modifica:
+
+
+
+
+
+
+
+ (n)cc
+
+ modifica (n) caratteri sulla linea
+ fino alla fine della linea (o fino a quando viene digitato il
+ tasto escape)
+
+
+
+ cw
+
+ modifica i caratteri di una parola fino alla fine della
+ parola (o fino a quando viene digitato il tasto
+ escape)
+
+
+
+ (n)cw
+
+ modifica i caratteri delle prossime
+ (n) parole
+
+
+
+ c$
+
+ modifica il testo alla fine della linea
+
+
+
+ ct(x)
+
+ modifica il testo alla lettera
+ (x)
+
+
+
+ C
+
+ modifica il testo rimanente sulla linea corrente (fino a
+ quando viene digitato il tasto escape)
+
+
+
+ ~
+
+ modifica il minuscolo/maiuscolo del carattere
+ corrente
+
+
+
+ J
+
+ unisce la linea corrente a quella successiva
+
+
+
+ u
+
+ annulla l'ultimo comando realizzato sulla linea
+ corrente
+
+
+
+ .
+
+ ripete l'ultima modifica
+
+
+
+ s
+
+ sostituisce il carattere corrente con il testo
+ digitato
+
+
+
+ S
+
+ sostituisce la linea corrente con il testo digitato
+
+
+
+ :s
+
+ sostituisce vecchie parole con nuove parole
+ :<linee considerate>
+ s/vecchio/nuovo/g
+
+
+
+ &
+
+ ripete l'ultimo comando di sostituzione
+ (:s)
+
+
+
+ (n)yy
+
+ strappa (n) linee
+ dal buffer
+
+
+
+ y(n)w
+
+ strappa (n) parole
+ dal buffer
+
+
+
+ p
+
+ inserisce il testo eliminato o strappato dopo
+ il cursore
+
+
+
+ P
+
+ inserisce il testo eliminato o strappato prima
+ del cursore
+
+
+
+
+
+ Manipolazione file:
+
+
+
+
+
+
+
+ :w
+ (file)
+
+ scrive i cambiamenti nel file specificato (file corrente di
+ default)
+
+
+
+ :wq
+
+ scrive i cambiamenti nel file corrente e conclude la sessione
+ di editing
+
+
+
+ :w!
+ (file)
+
+ sovrascrive il file (file corrente di default)
+
+
+
+ :q
+
+ esce dalla sessione di editing se non sono stati creati
+ cambiamenti
+
+
+
+ :q!
+
+ esce dalla sessione di editing e scarta eventuali
+ cambiamenti non salvati
+
+
+
+ :n
+
+ edita il prossimo file nella lista dell'argomento
+
+
+
+ :f
+ (nome)
+
+ modifica il nome del file corrente in quello
+ specificato
+
+
+
+ :r
+ (file)
+
+ legge il contenuto del file specificato all'interno del
+ corrente editing e alla corrente posizione del cursore
+ (inserisce un file)
+
+
+
+ :!(comando)
+
+ escape di shell
+
+
+
+ :r!(comando)
+
+ inserisce il risultato del comando di shell specificato nella
+ posizione corrente
+
+
+
+ ZZ
+
+ scrive i cambiamenti nel file corrente ed esce
+
+
+
+
+
+
+
+ Veloce guida per emacs
+
+ I comandi di &man.emacs.1; sono realizzati sia tramite la
+ simultanea pressione del tasto control (indicato da
+
+ Ctrl
+
+ ), sia attraverso il primo colpo del tasto di
+ escape (indicato da M,).
+
+ Comandi essenziali
+
+
+
+
+
+
+
+
+ Ctrl
+ h
+
+
+ help
+
+
+
+
+ Ctrl
+ x
+ , u
+
+ undo (annulla operazione precedente)
+
+
+
+
+ Ctrl
+ x
+ ,
+ Ctrl
+ g
+
+
+ esce dalla operazione o comando corrente
+
+
+
+
+ Ctrl
+ x
+ ,
+ Ctrl
+ s
+
+
+ salva il file
+
+
+
+
+ Ctrl
+ x
+ ,
+ Ctrl
+ c
+
+
+ chiude &man.emacs.1;
+
+
+
+
+
+ Movimenti cursore
+
+
+
+
+
+
+
+
+ Ctrl
+ f
+
+
+ avanti di un carattere
+
+
+
+
+ Ctrl
+ b
+
+
+ indietro di un carattere
+
+
+
+
+ Ctrl
+ p
+
+
+ linea precedente
+
+
+
+
+ Ctrl
+ n
+
+
+ linea successiva
+
+
+
+
+ Ctrl
+ a
+
+
+ inizio linea
+
+
+
+
+ Ctrl
+ e
+
+
+ fine linea
+
+
+
+
+ Ctrl
+ l
+
+
+ al centro della corrente linea sullo schermo
+
+
+
+
+ Ctrl
+ v
+
+
+ sfoglia avanti
+
+
+
+ M,
+ v
+
+ sfoglia indietro
+
+
+
+ M,
+ f
+
+ avanti di una parola
+
+
+
+ M,
+ b
+
+ indietro di una parola
+
+
+
+ M,
+ a
+
+ inizio periodo
+
+
+
+ M,
+ e
+
+ fine periodo
+
+
+
+ M,
+ {
+
+ inizio paragrafo
+
+
+
+ M,
+ }
+
+ fine paragrafo
+
+
+
+ M,
+ <
+
+ inizio buffer
+
+
+
+ M,
+ >
+
+ fine buffer
+
+
+
+
+
+ Altre funzioni importanti
+
+
+
+
+
+
+
+ M,
+ (n)
+
+ ripete il prossimo comando (n)
+ volte
+
+
+
+
+ Ctrl
+ d
+
+
+ cancella un carattere
+
+
+
+ M,
+ d
+
+ cancella una parola
+
+
+
+
+ Ctrl
+ k
+
+
+ elimina linea
+
+
+
+ M,
+ k
+
+ elimina periodo
+
+
+
+
+ Ctrl
+ s
+
+
+ ricerca in avanti
+
+
+
+
+ Ctrl
+ r
+
+
+ ricerca al rovescio
+
+
+
+ M,
+ %
+
+ sostituzione di query
+
+
+
+ M,
+ c
+
+ capitalizza parola
+
+
+
+ M,
+ u
+
+ parola in lettere maiuscole
+
+
+
+ M,
+ l
+
+ parola in lettere minuscole
+
+
+
+
+ Ctrl
+ t
+
+
+ commuta caratteri
+
+
+
+ M,
+ t
+
+ commuta parole
+
+
+
+
+ Ctrl
+ @
+
+
+ marca l'inizio di una regione
+
+
+
+
+ Ctrl
+ w
+
+
+ taglia/cancella tutto dalla marcatura al punto
+
+
+
+
+ Ctrl
+ y
+
+
+ incolla il testo eliminato o strappato
+ all'interno della locazione corrente
+
+
+
+ M,
+ q
+
+ riformatta il paragrafo
+
+
+
+ M,
+ g
+
+ riformatta ogni paragrafo nella regione
+
+
+
+
+
+
+
+
+
+
+
+ M, x
+ auto-fill-mode
+
+ mette on word wrap
+
+
+
+ M, x set-variable
+ <return> fill-column
+ <return> 45
+
+ setta la lunghezza di linea a 45 caratteri
+
+
+
+ M, x goto-line
+ <return> 16
+
+ muove il cursore alla linea 16
+
+
+
+
+
+
+
+
+
+
+
+ M,
+ w
+
+ copia la regione marcata
+
+
+
+
+ Ctrl
+ x
+ ,
+ Ctrl
+ f
+
+
+ cerca un file e lo legge
+
+
+
+
+ Ctrl
+ x
+ ,
+ Ctrl
+ v
+
+
+ cerca e legge un file alternativo
+
+
+
+
+ Ctrl
+ x
+ , i
+
+ inserisce un file alla posizione corrente
+
+
+
+
+ Ctrl
+ x
+ ,
+ Ctrl
+ s
+
+
+ salva il file
+
+
+
+
+ Ctrl
+ x
+ ,
+ Ctrl
+ w
+
+
+ scrive il buffer in un file differente
+
+
+
+
+ Ctrl
+ x
+ ,
+ Ctrl
+ c
+
+
+ esce da &man.emacs.1; e chiede di salvare
+
+
+
+
+
+
+
+
\ 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 @@
+
+
+
+ Iniziamo
+
+
+ Effettuare il login
+
+ Una volta che l'utente si è collegato a un sistema Unix, gli
+ viene chiesto di inserire un login username
+ (nome utente) e una password (codice segreto). Il
+ login username è il nome univoco dell'utente sul sistema. La
+ password è un codice modificabile conosciuto solo dall'utente.
+ Alla richiesta di login, l'utente deve inserire lo
+ username e alla richiesta della password, deve essere
+ inserita la password effettiva.
+
+
+ Unix è un sistema case sensitive (fa
+ distinzione tra caratteri minuscoli e maiuscoli). Quindi sia il
+ login username che la password
+ devono essere inseriti esattamente come sono stati creati; il login
+ username è normalmente in minuscolo.
+
+
+
+ Tipi di terminali
+
+ Molti sistemi sono configurati in modo tale da richiedere all'utente
+ il tipo di terminale da usare, il quale dovrebbe essere settato al tipo
+ di terminale usato nella fase di login. Molti computer lavorano
+ se si sceglie il tipo vt100. Gli utenti connessi
+ tramite una workstation Sun molto probabilmente useranno il tipo
+ sun; quelli che usano un Terminale-X molto
+ probabilmente useranno xterms oppure
+ xterm.
+
+ Il tipo di terminale indica al sistema Unix come interagire quando
+ una sessione viene aperta.
+
+ Può essere necessario risettare il tipo di terminale,
+ digitando il comando:
+
+
+
+
+
+
+
+ setenv TERM <tipo di
+ terminale>
+
+ -se si usa la shell C
+ (vedere Capitolo 5)
+
+
+
+
+
+ (Inoltre su alcuni sistemi Unix, ad esempio MAGNUS, è
+ necessario dare il comando unsetenv
+ TERMCAP.)
+
+ oppure
+
+
+
+
+
+
+
+ TERM=<tipo di
+ terminale>; export TERM
+
+ -se si usa la shell Bourne
+ (vedere Capitolo 5)
+
+
+
+
+
+ dove <tipo di terminale> è
+ il tipo di terminale, come vt100, che si desidera
+ settare.
+
+
+
+ Password
+
+ Quando viene assegnato il proprio account, si riceve una password
+ iniziale. Questa password è importate sia per la sicurezza
+ del sistema sia per una sicurezza personale, perciò la password
+ per il proprio account può essere cambiata a propria scelta. Il
+ comando per cambiare una password è
+ &man.passwd.1;. Verrà chiesto di inserire sia la propria
+ vecchia password, sia la nuova password desiderata, quest'ultima due
+ volte. Se si sbaglia la propria vecchia password o non si inserisce
+ quella nuova nello stesso modo per due volte, il sistema
+ indicherà che la password non ha subito cambiamenti.
+
+ Alcuni amministratori di sistema hanno programmi che verificano
+ l'accuratezza di una password (che deve essere sufficientemente criptica
+ per assicurare una certa sicurezza al sistema). Un cambiamento di
+ password può essere rifiutato da questi programmi.
+
+ Quando si sceglie una password, è importante che questa non
+ sia in qualche modo indovinabile né per qualche sconosciuto
+ che tenta di scoprirla né per un conoscente. I suggerimenti per
+ scegliere e mantenere una password sono i seguenti:
+
+
+
+ non usare una parola (o parole) di un linguaggio;
+
+
+
+ non usare il proprio nome;
+
+
+
+ non usare informazioni che possono essere trovate nel proprio
+ portafoglio;
+
+
+
+ non usare informazioni comunemente conosciute circa se stessi
+ (come il soprannome, patente di guida, ecc.);
+
+
+
+ non usare caratteri di controllo. Alcuni sistemi non li
+ accettano;
+
+
+
+ non scrivere la password in qualche posto;
+
+
+
+ non dare la propria password a *nessuno*;
+
+
+
+
+
+ usare un mix di tipi di caratteri (alfabetici, numerici,
+ speciali);
+
+
+
+ usare un mix di caratteri maiuscoli e caratteri
+ minuscoli;
+
+
+
+ usare un minimo di 6 caratteri;
+
+
+
+ scegliere una password in modo da poterla ricordare;
+
+
+
+ cambiare di frequente la propria password;
+
+
+
+ assicurarsi che nessuna persona vicino a voi vi guardi quando si
+ inserisce la propria password.
+
+
+
+
+
+ Uscita
+
+
+ Ctrl
+ D
+ - indica la fine di un flusso di dati;
+ può far uscire dal sistema un utente. L'ultimo caso è
+ disabilitato su molti sistemi
+
+
+ Ctrl
+ C
+ - interruzione
+
+ &man.logout.1; - rilascia il sistema
+
+ &man.exit.1; - rilascia la shell
+
+
+
+ Identità
+
+ Il sistema identifica un utente attraverso il numero di utente e il
+ numero di gruppo (rispettivamente userid e
+ groupid) assegnati dall'amministratore di sistema.
+ Generalmente non è necessario conoscere il proprio userid e
+ groupid, poichè il sistema traduce in modo automatico lo userid
+ in username (e viceversa) ed il groupid in groupname (e viceversa).
+ Probabilmente si conosce già lo username: è il nome
+ utilizzato per il login. Il groupname non è ovvio, e in
+ realtà si può appartenere a più di un gruppo. Il
+ proprio gruppo primario è quello associato con il proprio
+ username nel file database delle password, configurato
+ dall'amministratore di sistema. Similmente, c'è un file database
+ per i gruppi, dove l'amministratore di sistema può assegnare
+ gruppi aggiuntivi ad un utente.
+
+ Nei seguenti esempi il simbolo &prompt.user; è il proprio
+ prompt di shell e non va digitato.
+
+ Si può determinare il proprio userid e la lista dei gruppi di
+ appartenenza con i comandi &man.id.1; e &man.groups.1;. Su alcuni
+ sistemi &man.id.1; mostra le informazioni sull'utente e le informazioni
+ sul gruppo primario, esempio:
+
+ &prompt.user; id
+uid=1101(frank) gid=10(staff)
+
+ su altri sistemi mostra anche le informazioni sui gruppi aggiuntivi
+ di appartenenza:
+
+ &prompt.user; id
+uid=1101(frank) gid=10(staff) groups=10(staff),5(operator),14(sysadmin),110(uts)
+
+ Il comando &man.groups.1; mostra le informazioni di tutti i gruppi
+ di appartenenza, esempio:
+
+ &prompt.user; groups
+staff sysadmin uts operator
+
+
+
+
+ Struttura della linea di comando di Unix
+
+ Un comando è un programma che chiama
+ il sistema Unix per qualche compito. Un comando ha la forma:
+
+ comando
+ [opzioni]
+ [argomenti]
+
+ dove un argomento indica su cosa il comando deve
+ realizzare la sua azione, generalmente un file o una serie di file.
+ Un'opzione modifica il comando, cambiandone il modo di esecuzione.
+
+ I comandi sono case sensitive (sensibili alle lettere maiuscole e
+ minuscole). comando
+ e Comando non sono
+ la stessa cosa.
+
+ Le opzioni sono generalmente precedute da un
+ trattino (-) e per molti comandi, più opzioni
+ possono essere messe insieme nella forma:
+
+ comando
+ -[opzione][opzione][opzione]
+
+ esempio:
+
+ ls -alR
+
+ che mostrerà un listato lungo di tutti i file che si trovano
+ nella directory corrente e ricorsivamente anche quelli che si trovano in
+ tutte le sotto-directory.
+
+ In molti comandi si possono separare le opzioni, facendole precedere
+ ognuna da un trattino, esempio:
+
+ comando
+ -opzione1 -opzione2 -opzione3
+
+ come in:
+
+ ls -a -l -R
+
+ Alcuni comandi hanno opzioni che richiedono parametri. Le opzioni che
+ richiedono parametri sono di solito specificate separatamente,
+ esempio:
+
+ lpr -Pprinter3 -#2 file
+
+ che trasmetterà 2 copie del file specificato a
+ printer3.
+
+ Ci sono delle convenzioni standard per i comandi. Comunque, non tutti
+ i comandi Unix seguono questo standard. Alcuni non richiedono il trattino
+ prima dell'opzione e alcuni non permettono di mettere insieme più
+ opzioni, per esempio alcuni possono richiedere che ogni opzione sia
+ preceduta da un trattino e separata con uno spazio bianco da un'altra
+ opzione o argomento.
+
+ Le opzioni e la sintassi di un comando sono mostrate nelle
+ pagine man del comando.
+
+
+
+ Tasti di controllo
+
+ I tasti di controllo sono usati per realizzare
+ speciali funzioni su linea di comando o all'interno di un editor.
+ Queste funzioni possono essere generate premendo contemporaneamente il
+ tasto control e alcuni altri tasti.
+ Questa combinazione è generalmente indicata con
+
+ Ctrl
+ Tasto
+ (oppure
+ ^
+ Tasto
+ ).
+ Control
+ S
+ può essere scritto come
+ Ctrl
+ S
+ (oppure
+ ^
+ S
+ ). Con i tasti di controllo le lettere maiuscole e minuscole
+ sono la stessa cosa, così
+ Ctrl
+ S
+ è lo stesso di
+ Ctrl
+ s
+ . Questo particolare esempio (
+ Ctrl
+ S
+ ) è un segnale di stop e
+ dice al terminale di non accettare più input. Il terminale
+ rimarrà sospeso finchè un segnale di
+ start
+ Ctrl
+ Q
+ non sarà generato.
+
+
+ Ctrl
+ U
+ è normalmente il segnale di
+ cancellazione di linea per il proprio
+ terminale. Quando lo si digita, l'intera linea di input viene
+ cancellata.
+
+ Nell'editor &man.vi.1; si possono inserire i tasti
+ di controllo all'interno del file di testo facendo seguire a
+
+ Ctrl
+ V
+ il carattere di controllo desiderato; così per
+ inserire in un documento
+ Ctrl
+ H
+ si digita
+ Ctrl
+ V
+ ,
+ Ctrl
+ H
+ .
+
+
+
+ stty - controllo del terminale
+
+ &man.stty.1; mostra o configura le opzioni di controllo del terminale.
+ L'abbreviazione tty risale fino ai
+ giorni dei teletypewrite, che erano associati alla
+ trasmissione di messaggi telegrafici ed erano primitivi modelli di
+ terminali di computer.
+
+ Per i nuovi utenti, l'uso principale del comando &man.stty.1; riguarda
+ l'assegnazione della funzione di cancellazione di linea ad
+ un tasto specifico per i loro terminali. Per i programmatori di sistema o
+ per chi scrive script di shell, il comando &man.stty.1; fornisce uno
+ strumento prezioso per la configurazione di molti aspetti legati al
+ controllo di I/O di un dispositivo specifico, inclusi i seguenti:
+
+
+
+ carattere di erase (eliminazione carattere) e di
+ line-kill (eliminazione linea);
+
+
+
+ velocità di trasmissione dati;
+
+
+
+ controllo di parità sulla trasmissione dati;
+
+
+
+ controllo del flusso hardware;
+
+
+
+ carattere di nuova linea (<NL>), di return (<CR>) e di
+ alimentazione linea (<LF>);
+
+
+
+ interpretazione del carattere tab;
+
+
+
+ modifica di un input grezzo;
+
+
+
+ trasformazione di lettere minuscole in lettere maiuscole.
+
+
+
+ Il comando &man.stty.1; è molto dipendente dal sistema, quindi
+ consultare le relative pagine man sul proprio sistema
+ per i dettagli.
+
+ Sintassi
+
+ stty [opzioni]
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ mostra i settaggi del terminale
+
+
+
+
+
+ mostra tutte le opzioni
+
+
+
+
+
+ richiama ERASE come BS-spazio-BS
+
+
+
+
+
+ imposta la modalità specifica dei sistemi operativi
+ conformi al Digital Equipment Corporation (che distinguono ERASE
+ da BACKSPACE) (non disponibile su tutti i sistemi)
+
+
+
+
+
+ imposta il carattere per LINE-KILL
+
+
+
+
+
+ imposta il carattere per ERASE
+
+
+
+
+
+ imposta il carattere per INTERRUPT
+
+
+
+
+
+ Esempi:
+
+ Con il comando &man.stty.1; si possono visualizzare e cambiare i
+ settaggi del proprio terminale di controllo. Per visualizzare tutti
+ () i settaggi correnti:
+
+ &prompt.user; stty -a
+speed 38400 baud, 24 rows, 80 columns
+parenb -parodd cs7 -cstopb -hupcl cread -clocal -crtscts
+-ignbrk brkint ignpar -parmrk -inpck istrip -inlcr -igncr icrnl -iuclc
+ixon -ixany -ixoff imaxbel
+isig iexten icanon -xcase echo echoe echok -echonl -noflsh -tostop
+echoctl -echoprt echoke
+opost -olcuc onlcr -ocrnl -onocr -onlret -ofill -ofdel
+erase kill werase rprnt flush lnext susp intr quit stop eof
+^H ^U ^W ^R ^O ^V ^Z/^Y ^C ^\ ^S/^Q ^D
+
+ Per cambiare i settaggi usando &man.stty.1;, ad esempio per cambiare
+ il carattere di erase da
+ Ctrl
+ ?
+ (il tasto elimina) a
+ Ctrl
+ H
+ :
+
+ &prompt.user; stty erase ^H
+
+ Questo setterà l'opzione del terminale solamente per la
+ sessione corrente. Per far in modo che questo comando sia eseguito
+ automaticamente ad ogni login, è possibile inserire tale comando
+ nel file .login o .profile di
+ cui si parlerà più avanti.
+
+
+
+ Ottenere aiuto
+
+ Il manuale di Unix, usualmente chiamato man page
+ (pagine man), è disponibile per spiegare l'uso del sistema Unix e
+ dei suoi comandi. Per servirsi di una pagina man digitare il comando
+ &man.man.1; al prompt di sistema seguito dal comando di cui si necessitano
+ informazioni.
+
+ Sintassi
+
+ man [opzioni]
+ nome_comando
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ mostra alcune linee riassuntive dei comandi contenenti la
+ parola chiave richiesta
+
+
+
+
+
+ percorso per le pagine man
+
+
+
+
+
+ mostra tutte le pagine man trovate (SVR4)
+
+
+
+
+
+ Esempi:
+
+ Si può usare &man.man.1; per ottenere una linea riassuntiva di
+ alcuni comandi che contengono la parola che si vuole ricercare con
+ l'opzione , ad esempio per cercare la parola
+ password, si digita:
+
+ &prompt.user; man -k password
+passwd (5) - password file
+passwd (1) - cambia la password
+
+ Il numero in parentesi indica la sezione delle pagine man dove sono
+ stati trovati i riferimenti. Si può accedere a quella pagina man
+ (di default si fa riferimento al numero di sezione più basso, ma si
+ può usare un'opzione su linea di comando per specificarne uno
+ differente) con:
+
+ &prompt.user; man passwd
+PASSWD(1) USER COMMANDS PASSWD(1)
+
+NOME
+passwd - cambia password
+
+SINTASSI
+passwd [ -e login_shell ] [ username ]
+
+DESCRIZIONE
+passwd cambia (o setta) la password di un utente.
+passwd chiede per due volte la nuova password, senza mostrarla.
+Questo per prendere in considerazione la possibilità di digitare errori.
+Solamente l'utente stesso e il super-user possono cambiare la password
+di un utente.
+
+OPZIONI
+
+-e Cambia la shell di login dell'utente.
+
+ Qui l'output è stato parafrasato e troncato per una questione
+ di spazio e di copyright.
+
+
+
+ Navigazione e controllo delle directory
+
+ Il file system di Unix è organizzato come la struttura
+ ramificata di un albero a partire da root. La directory
+ root del sistema è rappresentata dal carattere
+ di slash in avanti (/). Le directory di sistema e
+ quelle degli utenti sono organizzate sotto la directory
+ root. In Unix l'utente non ha una directory root;
+ generalmente dopo il login gli utenti vengono posizionati nella loro
+ directory home. Gli utenti possono creare altre
+ directory sotto la loro directory home. La tabella
+ che segue mostra alcuni comandi per la navigazione tra directory.
+
+
+ Comandi di navigazione e controllo delle directory
+
+
+
+
+
+
+ Comando/Sintassi
+
+ Cosa fa
+
+
+
+
+
+ cd
+ [directory]
+
+ cambia directory
+
+
+
+ ls
+ [opzioni][directory
+ o file]
+
+ lista il contenuto della directory o i permessi del
+ file specificato
+
+
+
+ mkdir
+ [opzioni]
+ directory
+
+ crea una directory
+
+
+
+ pwd
+
+ mostra la directory (corrente) di lavoro
+
+
+
+ rmdir [opzioni]
+ directory
+
+ rimuove una directory
+
+
+
+
+
+ Se si ha una certa familiarità con DOS la tabella che segue
+ paragona i suoi simili comandi a quelli Unix in modo tale da fornire un
+ appropriato quadro di riferimento.
+
+
+ Comandi di navigazione e controllo delle directory Unix vs
+ DOS
+
+
+
+
+
+
+
+
+ Comando
+
+ Unix
+
+ DOS
+
+
+
+
+
+ lista il contenuto di una directory
+
+ ls
+
+ dir
+
+
+
+ crea una directory
+
+ mkdir
+
+ md &
+ mkdir
+
+
+
+ cambia directory
+
+ cd
+
+ cd &
+ chdir
+
+
+
+ rimuove una directory
+
+ rmdir
+
+ rm &
+ rmdir
+
+
+
+ ritorna alla directory home dell'utente
+
+ cd
+
+ cd\
+
+
+
+ mostra la directory corrente di lavoro
+
+ pwd
+
+ cd
+
+
+
+
+
+
+ pwd - mostra la directory di lavoro
+
+ In ogni momento si può determinare in che punto si è
+ nella gerarchia del file system mostrando la directory di lavoro con il
+ comando &man.pwd.1;, esempio:
+
+ &prompt.user; pwd
+/home/frank/src
+
+
+
+ cd - cambia directory
+
+ Ci si può portare in una nuova directory con il comando
+ &man.cd.1;, cambio di directory. &man.cd.1; accetta sia path name
+ (percorsi) assoluti sia path name relativi.
+
+ Sintassi
+
+ cd [directory]
+
+ Esempi:
+
+
+
+
+
+
+
+ cd (oppure chdir in
+ alcune shell)
+
+ cambia directory
+
+
+
+ cd
+
+ si posiziona nella directory home dell'utente
+
+
+
+ cd /
+
+ si posiziona nella directory di sistema roor (/)
+
+
+
+ cd ..
+
+ sale di un livello di directory
+
+
+
+ cd ../..
+
+ sale di due livelli di directory
+
+
+
+ cd
+ /completo/path/name/da/root
+
+ cambia directory rispetto a un path name assoluto
+ (notare lo slash iniziale)
+
+
+
+ cd
+ path/da/posizione/corrente
+
+ cambia directory rispetto a un path name relativo alla
+ posizione corrente (no slash iniziale)
+
+
+
+ cd
+ ~username/directory
+
+ cambia directory rispetto alla directory home dell'utente
+ specificato (il carattere ~ non è valido nella shell
+ Bourne; vedere il Capitolo 5).
+
+
+
+
+
+
+
+ mkdir - crea una directory
+
+ La gerarchia della propria directory home si estende creando
+ sotto-directory all'interno di essa. Questo è possibile con il
+ comando &man.mkdir.1;, crea directory. Di nuovo si può
+ specificare un path name assoluto o relativo della directory che si
+ vuole creare.
+
+ Sintassi
+
+ mkdir [opzioni]
+ directory
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ crea una directory intermedia (genitore), quando
+ necessario
+
+
+
+
+
+ permessi di accesso (SVR4). (Si vedranno i
+ modi più avanti in questo
+ Capitolo)
+
+
+
+
+
+ Esempi:
+
+ &prompt.user; mkdir /home/frank/data
+
+ oppure se la directory di lavoro corrente è
+ /home/frank, il seguente comando è
+ equivalente:
+
+ &prompt.user; mkdir data
+
+
+
+ rmdir - rimuove una directory
+
+ Per rimuovere una directory è necessario che questa sia
+ vuota. Altrimenti bisogna prima rimuovere i file contenuti in essa.
+ Inoltre, non si può rimuovere una directory se questa è la
+ directory di lavoro corrente, bisogna prima uscire da
+ quest'ultima.
+
+ Sintassi
+
+ rmdir
+ directory
+
+ Esempi:
+
+ Per rimuovere la directory vuota
+ /home/frank/data mentre si è in
+ /home/frank usare:
+
+ &prompt.user; rmdir data
+
+ oppure
+
+ &prompt.user; rmdir /home/frank/data
+
+
+
+ ls - mostra i contenuti delle directory
+
+ Il comando per visualizzare le proprie directory e i propri file
+ è &man.ls.1;. È possibile ottenere, attraverso le opzioni,
+ informazioni circa la dimensione, il tipo, i permessi, la data di
+ creazione, di modifica e di accesso del file.
+
+ Sintassi
+
+ ls [opzioni]
+ [argomenti]
+
+ Opzioni generali
+
+ Quando non viene usato nessun argomento, viene mostrato il contenuto
+ della directory corrente. Ci sono molte utili opzioni per il comando
+ &man.ls.1;. Segue una lista di alcune di queste. Quando si usa il
+ comando, le opzioni sono raggruppate insieme, precedute da un
+ trattino (-).
+
+
+
+
+
+
+
+
+
+ mostra tutti i file, inclusi quelli che iniziano con
+ un punto (.)
+
+
+
+
+
+ mostra solo i nomi delle directory, non i file
+ nella directory
+
+
+
+
+
+ indica il tipo di elemento terminandolo con un
+ simbolo:
+
+
+
+
+
+ directory /
+
+
+
+
+
+ socket =
+
+
+
+
+
+ link simbolico @
+
+
+
+
+
+ eseguibile *
+
+
+
+
+
+ mostra il gruppo Unix assegnato al file, richiede l'opzione
+ (BSD solamente) o su una macchina SVR4,
+ esempio Solaris, questa opzione ha l'effetto opposto
+
+
+
+
+
+ se il file è un link simbolico, mostra le
+ informazioni del file o della directory a cui il link si
+ riferisce, non le informazioni del link stesso
+
+
+
+
+
+ listato lungo: mostra i modi, informazioni di link, il
+ proprietario, la dimensione, la data dell'ultima modifica del
+ file. Se il file è un link simbolico, una freccia
+ (-->) precede il percorso del file collegato.
+
+
+
+
+
+ Il campo modi viene fornito dall'opzione
+ e consiste di 10 caratteri. Il primo carattere
+ è uno dei seguenti:
+
+
+
+
+
+
+
+ CARATTERE
+
+ SE L'ELEMENTO E'
+
+
+
+
+
+ d
+
+ directory
+
+
+
+ -
+
+ file ordinario
+
+
+
+ b
+
+ file speciale per dispositivi a blocchi
+
+
+
+ c
+
+ file speciale per dispositivi a caratteri
+
+
+
+ l
+
+ link simbolico
+
+
+
+ s
+
+ socket
+
+
+
+
+
+ I 9 caratteri successivi sono raggruppati in 3 blocchi di 3
+ caratteri ciascuno. Indicano i permessi di accesso al
+ file: i primi 3 caratteri si riferiscono ai permessi del
+ proprietario del file, i successivi 3 ai permessi
+ degli utenti del gruppo Unix assegnato al file e
+ gli ultimi 3 caratteri ai permessi degl'altri
+ utenti sul sistema. Possono assumere i seguenti simboli:
+
+
+
+
+
+
+
+ r
+
+ permesso di lettura
+
+
+
+ w
+
+ permesso di scrittura
+
+
+
+ x
+
+ permesso di esecuzione
+
+
+
+ -
+
+ permesso negato
+
+
+
+
+
+ Esistono altri permessi, specificamente progettati per essere usati
+ in speciali situazioni. Questi sono spiegati nelle pagine man di
+ &man.ls.1;.
+
+ Esempi:
+
+ Per mostrare i file in una directory
+
+ &prompt.user; ls
+demofiles frank linda
+
+ Per mostrare tutti i file in una directory, inclusi i file nascosti
+ (iniziano con un punto):
+
+ &prompt.user; ls -a
+. .cshrc .history .plan .rhosts frank
+.. .emacs .login .profile demofiles linda
+
+ Per avere un listato lungo:
+
+ &prompt.user; ls -al
+total 24
+drwxr-sr-x 5 workshop acs 512 Jun 7 11:12 .
+drwxr-xr-x 6 root sys 512 May 29 09:59 ..
+-rwxr-xr-x 1 workshop acs 532 May 20 15:31 .cshrc
+-rw------- 1 workshop acs 525 May 20 21:29 .emacs
+-rw------- 1 workshop acs 622 May 24 12:13 .history
+-rwxr-xr-x 1 workshop acs 238 May 14 09:44 .login
+-rw-r--r-- 1 workshop acs 273 May 22 23:53 .plan
+-rwxr-xr-x 1 workshop acs 413 May 14 09:36 .profile
+-rw------- 1 workshop acs 49 May 20 20:23 .rhosts
+drwx------ 3 workshop acs 512 May 24 11:18 demofiles
+drwx------ 2 workshop acs 512 May 21 10:48 frank
+drwx------ 3 workshop acs 512 May 24 10:59 linda
+
+
+
+
+ Comandi di gestione dei file
+
+ Per creare, copiare, rimuovere file e per modificarne i permessi
+ si possono usare i seguenti comandi.
+
+
+ Comandi di gestione dei file
+
+
+
+
+
+
+ Comando/Sintassi
+
+ Cosa fa
+
+
+
+
+
+ chgrp [opzioni]
+ gruppo file
+
+ cambia il gruppo assegnato ad un file
+
+
+
+ chmod [opzioni]
+ file
+
+ cambia i permessi di accesso a file o directory
+
+
+
+ chown [opzioni]
+ proprietario file
+
+ cambia il proprietario di un file; può essere usato
+ solamente dal super-user
+
+
+
+ cp [opzioni]
+ file1 file2
+
+ copia file1
+ in file2;
+ file2 non dovrebbe
+ già esistere. Questo comando crea o sovrascrive
+ file2
+
+
+
+ mv [opzioni]
+ file1 file2
+
+ muove (rinomina)
+ file1 in
+ file2
+
+
+
+ rm [opzioni]
+ file
+
+ elimina un file o una directory ( rimuove
+ ricorsivamente le directory e il loro contenuto)
+ ( chiede conferma prima di rimuove i
+ file)
+
+
+
+
+
+ Se si ha una certa familiarità con DOS la tabella che segue
+ paragona i suoi simili comandi a quelli Unix in modo tale da fornire un
+ appropriato quadro di riferimento.
+
+
+ Comandi di gestione dei file Unix vs DOS
+
+
+
+
+
+
+
+
+ Comando
+
+ Unix
+
+ Dos
+
+
+
+
+
+ copia un file
+
+ cp
+
+ copy
+
+
+
+ muove un file
+
+ mv
+
+ move (non supportato in tutte le
+ versioni di Dos)
+
+
+
+ rinomina un file
+
+ mv
+
+ rename &
+ ren
+
+
+
+ elimina un file
+
+ rm
+
+ erase &
+ del
+
+
+
+ mostra un file a schermo
+
+ cat
+
+ type
+
+
+
+ mostra un file a schermo, una pagina alla volta
+
+ more, less,
+ pg
+
+ type /p (non supportato in tutte
+ le versioni di Dos)
+
+
+
+
+
+
+ cp - copia un file
+
+ Il comando &man.cp.1; copia il contenuto di un file in un altro
+ file.
+
+ Sintassi
+
+ cp [opzioni]
+ filename1 filename2
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ interattivo (chiede conferma prima di procedere)
+
+
+
+
+
+ copia ricorsivamente una directory
+
+
+
+
+
+ Esempi:
+
+ &prompt.user; cp filename1 filename2
+
+ Si hanno due copie del file, ognuna con un identico contenuto.
+ Questi file sono completamente indipendenti tra loro e possono essere
+ editati e modificati entrambi quando necessario. Ciascuno di essi ha il
+ proprio inode, i propri blocchi di dati e il proprio elemento nella
+ tabella di directory.
+
+
+
+ mv - sposta un file
+
+ Il comando &man.mv.1; rinomina (sposta) un file.
+
+ Sintassi
+
+ mv [opzioni]
+ vecchio_file nuovo_file
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ interattivo (chiede conferma prima di procedere)
+
+
+
+
+
+ non chiede la conferma quando si sovrascrive un file
+ esistente (ignora )
+
+
+
+
+
+ Esempi:
+
+ &prompt.user; mv vecchio_file nuovo_file
+
+ Il file nuovo_file
+ sostituisce
+ vecchio_file.
+ In realtà tutto quello che è stato fatto è aver
+ aggiornato l'elemento della tabella di directory per attribuire al file
+ il nuovo nome. Il contenuto del file rimane come era prima della
+ rinominazione.
+
+
+
+ rm - elimina un file
+
+ Il comando &man.rm.1; elimina un file.
+
+ Sintassi
+
+ rm [opzioni]
+ filename
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ interattivo (chiede conferma prima di procedere)
+
+
+
+
+
+ rimuove una directory ricorsivamente, rimuovendo prima i file
+ e le directory sottostanti
+
+
+
+
+
+ non chiede conferma prima di procedere
+ (ignora )
+
+
+
+
+
+ Esempi:
+
+ &prompt.user; rm filename
+
+ Visualizzando il contento della directory si vedrà che quel
+ file non esiste più. In realtà tutto quello che è
+ stato fatto è aver rimosso l'elemento dalla tabella di directory
+ e marcato l'inode come non usato. Il contenuto del file
+ è ancora sul disco, ma ora il sistema non ha più modo di
+ identificare quei blocchi di dati con il nome del file eliminato. Non
+ c'è un certo comando per
+ riprendere un file che è
+ stato eliminato in questo modo. Per questa ragione molti utenti alle
+ prime armi effettuano un alias del comando di eliminazione in
+ rm -i dove l'opzione chiede di
+ confermare prima di rimuovere il file. Simili alias sono generalmente
+ messi nel file .cshrc per la shell C (vedere il
+ Capitolo 5).
+
+
+
+ Permessi dei file
+
+ Ciascun file e directory ha permessi che stabiliscono chi può
+ leggerlo, scriverlo e/o
+ eseguirlo. Per scoprire i permessi assegnati a un
+ file, può essere usato il comando &man.ls.1; con l'opzione
+ . Quando si ha la necessità di conoscere il
+ gruppo per il quale i permessi sono stati assegnati si può usare
+ l'opzione insieme a ls -l
+ (solamente BSD).
+
+ Quando si usa il comando ls -lg su un file
+ (ls -l su SysV) l'output sarà mostrato come
+ il seguente:
+
+ -rwxr-x--- user Unixgroup size Month nn hh:mm filename
+
+ La zona dedicata ai caratteri e trattini
+ (-rwxr-x---) è la zona che mostra il tipo di
+ file e i permessi del file, come spiegato nella precedente sezione.
+ Quindi la stringa di permessi dell'esempio,
+ -rwxr-x---, permette al proprietario
+ user del file di leggerlo, modificarlo ed
+ eseguirlo; gli utenti del gruppo Unixgroup del
+ file possono leggerlo ed eseguirlo; gli altri
+ utenti del sistema non possono accedere in alcun modo al file.
+
+
+
+ chmod - cambio dei permessi del file
+
+ Il comando per cambiare i permessi ad un elemento (file, directory,
+ ecc.) è &man.chmod.1; (cambio dei modi). La sintassi richiede
+ l'uso del comando con tre cifre (rappresentanti i permessi del
+ proprietario (u), i permessi
+ del gruppo (g) e i permessi
+ degli altri utenti (o))
+ seguite da un argomento (che può essere un nome di un file o una
+ lista di file e directory). Oppure può essere usato con una
+ rappresentazione simbolica dei permessi, indicando a quale utenza questi
+ vanno applicati.
+
+ Ogni tipo di permesso è rappresentato dal proprio numero
+ equivalente:
+
+ lettura=4, scrittura=2, esecuzione=1
+
+ o da singoli caratteri:
+
+ lettura=r, scrittura=w, esecuzione=x
+
+ Il permesso 4 o r
+ specifica il permesso di lettura. Se i permessi
+ desiderati sono lettura e scrittura, il 4 (rappresentante la lettura) e
+ il 2 (rappresentante la scrittura) sono addizionati per ottenere il
+ permesso 6. Quindi, un permesso settato a 6 vorrà concedere un
+ permesso di lettura e di scrittura.
+
+ Alternativamente si può usare una notazione simbolica che
+ usa un carattere rappresentativo per l'utenza a cui ci si riferisce, uno
+ per il permesso e uno per l'operazione, dove l'operazione può
+ essere:
+
+
+
+
+
+
+
+ +
+
+ aggiunge permessi
+
+
+
+ -
+
+ rimuove permessi
+
+
+
+ =
+
+ setta permessi
+
+
+
+
+
+ Quindi per settare i permessi di lettura e di scrittura per il
+ proprietario del file si usa nella notazione simbolica
+ u=rw.
+
+ Sintassi
+
+
+
+
+
+
+
+ chmod nnn
+ [lista argomenti]
+
+ modalità numerica
+
+
+
+ chmod [chi]
+ op
+ [perm]
+ [lista argomenti]
+
+ modalità simbolica
+
+
+
+
+
+ dove nnn sono i tre numeri rappresentanti
+ i permessi del proprietario, del
+ gruppo e degli altri utenti;
+ chi può essere
+ u,g,o oppure a (tutti) e
+ perm può essere
+ r,w,x. Nella notazione simbolica si può
+ separare la specifica dei permessi con una virgola, coma mostrato
+ nell'esempio qui sotto.
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ forza (nessun messaggio di errore viene generato se la
+ modifica non ha avuto successo)
+
+
+
+
+
+ discesa ricorsiva attraverso la struttura delle directory
+ e cambio dei modi
+
+
+
+
+
+ Esempi:
+
+ Se i permessi desiderati per il file1 sono:
+ proprietario: lettura, scrittura ed esecuzione;
+ gruppo: lettura ed esecuzione;
+ altri: lettura ed esecuzione; il comando da usare
+ è:
+
+ chmod 755 file1 oppure
+ chmod u=rwx,go=rx file1
+
+
+ Quando si assegnano i permessi a un file per l'utenza
+ gruppo e per l'utenza altri
+ è necessario che il minimo permesso di esecuzione (inteso come
+ permesso di accesso) per la directory nella quale il file è
+ posizionato sia abilitato. Un semplice modo per far questo è
+ posizionarsi nella directory nella quale i permessi devo essere
+ garantiti e digitare:
+
+ chmod 711 . oppure
+ chmod u=rw,+x . oppure
+ chmod u=rwx,go=x .
+
+ dove il punto (.) indica la
+ directory corrente.
+
+
+
+
+ chown - cambio del proprietario del file
+
+ Il proprietario di un file può essere cambiato con il comando
+ &man.chown.8;. Su molte versioni Unix questo può essere
+ realizzato solo dal super-user, ad esempio, un utente normale non
+ può attribuire i suoi file ad altri proprietari. &man.chown.8;
+ è usato come qui sotto, dove &prompt.root; rappresenta il prompt
+ di shell per il super-user.
+
+ Sintassi
+
+
+
+
+
+
+
+ chown [opzioni]
+ utente[:gruppo]
+ file
+
+ (SVR4)
+
+
+
+ chown [opzioni]
+ utente[.gruppo]
+ file
+
+ (BSD)
+
+
+
+
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ discende ricorsivamente attraverso la struttura della
+ directory
+
+
+
+
+
+ forza, non riporta errori
+
+
+
+
+
+ Esempi:
+
+ &prompt.root; chown nuovo_proprietario file
+
+
+
+ chgrp - cambio del gruppo del file
+
+ Con il comando &man.chgrp.1; tutti possono cambiare il gruppo dei
+ propri file in un altro gruppo di appartenenza.
+
+ Sintassi
+
+ chgrp [opzioni]
+ gruppo file
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ discende ricorsivamente attraverso la struttura della
+ directory
+
+
+
+
+
+ forza, non riporta errori
+
+
+
+
+
+ Esempi:
+
+ &prompt.user; chgrp nuovo_gruppo file
+
+
+
+
+ Comandi di visualizzazione
+
+ Ci sono alcuni comandi che si possono usare per
+ visualizzare o esaminare un
+ file. Alcuni di questi sono editor che verranno trattati più
+ avanti. Qui si illustreranno alcuni comandi normalmente usati per
+ visualizzare un file.
+
+
+ Comandi di visualizzazione
+
+
+
+
+
+
+ Comando/Sintassi
+
+ Cosa fa
+
+
+
+
+
+ cat [opzioni]
+ file
+
+ concatena (lista) un file
+
+
+
+ echo
+ [stringa]
+
+ riporta in standard ouptut una stringa di testo
+
+
+
+ head [-numero]
+ file
+
+ visualizza le prime 10 (o -numero)
+ linee di un file
+
+
+
+ more (o less o
+ pg)
+ [opzioni]
+ file
+
+ visualizzazione paginata di un file di testo
+
+
+
+ tail [opzioni]
+ file
+
+ visualizza le ultime linee (o parte) di un file
+
+
+
+
+
+
+ echo - mostra un'espressione
+
+ Il comando &man.echo.1; viene utilizzato per ripetere l'argomento
+ assegnato al comando nel dispositivo standard di uscita. Normalmente
+ l'argomento termina con un carattere di alimentazione di linea, ma si
+ può specificare un'opzione per impedirlo.
+
+ Sintassi
+
+ echo [stringa]
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ non stampa new-line (BSD, shell built-in)
+
+
+
+
+
+ non stampa new-line (SVR4)
+
+
+
+
+
+ dove n è il codice del
+ carattere ASCII a 8 bit (SVR4)
+
+
+
+
+
+ tab (SVR4)
+
+
+
+
+
+ form-feed (emissione carta) (SVR4)
+
+
+
+
+
+ new-line (SVR4)
+
+
+
+
+
+ tab verticale (SVR4)
+
+
+
+
+
+ Esempi:
+
+ &prompt.user; echo Hello Class
+
+ oppure
+
+ &prompt.user; echo "Hello Class"
+
+ Per impedire il carattere di fine linea:
+
+ &prompt.user; echo -n Hello Class
+
+ oppure
+
+ &prompt.user; echo "Hello Class \c"
+
+ dove il modo utilizzato nell'ultimo esempio dipende dal comando
+ &man.echo.1; usato.
+
+ L'opzione deve essere
+ interna a un paio di caratteri di quoting singoli o doppi, con o senza
+ altri caratteri di stringa.
+
+
+
+ cat - concatena un file
+
+ Il comando di concatenazione &man.cat.1; visualizza il contenuto di
+ un file.
+
+ Sintassi
+
+ cat [opzioni]
+ [file]
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ precede ogni linea con un numero
+
+
+
+
+
+ visualizza i caratteri non stampabili, eccetto tab,
+ new-line e form-feed
+
+
+
+
+
+ visualizza $ alla fine di ogni linea (prima di new-line)
+ (quando usato con l'opzione )
+
+
+
+
+
+ Esempi:
+
+ &prompt.user; cat filename
+
+ Si possono specificare una serie di file su linea di comando e
+ &man.cat.1; li concatenerà ciascuno a turno, seguendo lo stesso
+ ordine di immissione, esempio:
+
+ &prompt.user; cat file1 file2 file3
+
+
+
+ more, less e pg - visualizzazione paginata di un file
+
+ &man.more.1;, &man.less.1; e pg permettono di
+ visualizzare il contenuto di un file una schermata (pagina) alla volta.
+ Inoltre permettono di ritornare sulla precedente pagina, di cercare
+ parole, ecc. Questi comandi potrebbero non essere disponibili sul
+ proprio sistema Unix.
+
+ Sintassi
+
+ more [opzioni]
+ [+/schema]
+ [filename]
+
+ less [opzioni]
+ [+/schema]
+ [filename]
+
+ pg [opzioni]
+ [+/schema]
+ [filename]
+
+ Opzioni
+
+
+
+
+
+
+
+
+
+
+
+ more
+
+ less
+
+ pg
+
+ Azione
+
+
+
+
+
+
+
+
+
+
+
+ pulisce lo schermo prima di visualizzare
+
+
+
+
+
+
+
+
+
+ ignora differenza tra maiuscole e minuscole
+
+
+
+
+
+ default
+
+ default
+
+ non esce alla fine dell'input, ma si mette in attesa di
+ comandi
+
+
+
+
+
+
+
+
+
+ # (numero di) linee di avanzamento
+
+
+
+
+
+
+
+
+
+ ricerca lo schema (pattern)
+
+
+
+
+
+ Controlli interni
+
+
+
+
+
+
+
+ more
+
+ visualizza (una schermata alla volta) il file
+ specificato
+
+
+
+ <spazio>
+
+ per vedere la schermata successiva
+
+
+
+ <return>o<CR>
+
+ per avanzare di una linea
+
+
+
+ q
+
+ per uscire
+
+
+
+ h
+
+ help
+
+
+
+ b
+
+ torna alla schermata precedente
+
+
+
+ /parola
+
+ cerca parola nel resto del
+ file
+
+
+
+
+
+ vedere le pagine man per altre
+ opzioni
+
+
+
+ less
+
+ simile a &man.more.1;, vedere le
+ pagine man per le opzioni
+
+
+
+ pg
+
+ in SVR4 equivale a &man.more.1; (pagina)
+
+
+
+
+
+
+
+ head - mostra l'inizio di un file
+
+ Il comando &man.head.1; visualizza l'inizio di un file.
+
+ Sintassi
+
+ head [opzioni]
+ file
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ numero di linee da visualizzare partendo dall'inizio del
+ file
+
+
+
+
+
+ come sopra
+
+
+
+
+
+ Esempi:
+
+ Di default &man.head.1; mostra le prime 10 linee del file. Si
+ possono visualizzare più (o meno) linee con l'opzione
+ o
+ , ad esempio, per
+ visualizzare le prime 40 linee:
+
+ &prompt.user; head -40 filename
+
+ oppure
+
+ &prompt.user; head -n 40 filename
+
+
+
+ tail - mostra la fine di un file
+
+ Il comando &man.tail.1; visualizza la fine di un file.
+
+ Sintassi
+
+ tail [opzioni]
+ file
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ numero di linee da visualizzare, partendo dalla fine del
+ file
+
+
+
+
+
+ Esempi:
+
+ Di default &man.tail.1; mostra le ultime 10 linee del file, ma si
+ può specificare un numero differente di linee o di byte, o un
+ differente punto di inizio all'interno del file. Per visualizzare le
+ ultime 30 linee di un file, usare l'opzione
+ :
+
+ &prompt.user; tail -30 filename
+
+
+
+
+
\ 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 @@
+
+
+
+ Glossario
+
+
+ A
+
+
+ account
+
+
+ struttura di dati che contiene alcune informazioni (come password,
+ nome reale, username, indirizzo, ecc.) relative a un utente
+
+
+
+
+ alias
+
+
+ meccanismo che permette di invocare un comando (o una combinazione
+ di comandi) attraverso un nome pseudonimo precedentemente
+ assegnato
+
+
+
+
+
+ B
+
+
+ background
+
+
+ riferito alla modalità di gestione dell'esecuzione di un
+ processo in shell corrente: la shell non aspetta la fine di tale
+ processo ma continua la sua normale esecuzione
+
+ Vedere:
+ sezione 5.5
+
+
+
+
+ backquote
+
+
+ caratteri speciali utilizzati per inserire in una stringa l'output
+ del comando specificato tra questi caratteri
+
+ Vedere: sezione 9.2
+
+
+
+
+ built-in
+
+
+ comandi incorporati nel codice della shell
+
+ Vedere: sezione 5.1
+
+
+
+
+
+ C
+
+
+ case sensitive
+
+
+ distinzione tra lettere maiuscole e lettere minuscole
+
+
+
+
+
+ D
+
+
+ directory-home
+
+
+ è la directory dell'utente, nella quale ci si ritrova
+ (in generale) dopo la fase di login
+
+ Vedere: sezione
+ 3.6
+
+
+
+
+ directory-root
+
+
+ è la directory padre di tutte le altre directory (indicata
+ spesso con il segno /)
+
+ Vedere: sezione 2.2
+
+
+
+
+
+ E
+
+
+ editor
+
+
+ strumenti per manipolare testi (programmi, ecc.)
+
+ Vedere: Capitolo
+ 10
+
+
+
+
+ EOF
+
+
+ sta per end of file e indica la fine del
+ file
+
+
+
+
+
+ F
+
+
+ filename
+
+
+ nome del file
+
+
+
+
+ file system
+
+
+ architettura formata da un insieme di strutture dati che permetto
+ di organizzare e gestire i dati su disco
+
+ Vedere: sezione 2.2
+
+
+
+
+ foreground
+
+
+ riferito alla modalità di gestione dell'esecuzione di un
+ processo in shell corrente: la shell aspetta che il processo termini
+ prima di riprendere la sua esecuzione
+
+ Vedere: sezione 5.5
+
+
+
+
+
+ G
+
+
+ groupid
+
+
+ numero che identifica in maniera univoca un gruppo di utenti su un
+ sistema Unix
+
+ Vedere: sezione 3.1.4
+
+
+
+
+ groupname
+
+
+ nome che identifica un gruppo su un sistema Unix
+
+ Vedere: sezione 3.1.4
+
+
+
+
+
+ H
+
+
+ hard link
+
+
+ link fisico tra due file
+
+ Vedere: sezione 8.1.7
+
+
+
+
+ here document
+
+
+ speciale forma di quoting
+
+ Vedere: sezione 9.6
+
+
+
+
+ history
+
+
+ storia dei comandi digitati precedentemente
+
+ Vedere: sezione 5.6
+
+
+
+
+
+ I
+
+
+ inode
+
+
+ struttura di dati contenente informazioni sui file
+
+ Vedere: sezione 2.3
+
+
+
+
+
+ J
+
+
+ job
+
+
+ sinonimo di processo
+
+
+
+
+
+ K
+
+
+ kernel
+
+
+ è il cuore del sistema operativo, il posto in cui sono
+ caricati tutti i driver per i device, gestisce i processi, le
+ operazione di I/O, ecc.
+
+
+
+
+
+ L
+
+
+ login
+
+
+ riferito sia al nome utente di un account Unix (login username)
+ sia alla fase (fase di login) di accesso a un sistema Unix
+ (login+password) (il riferimento risulta chiaro dal contesto)
+
+ Vedere: sezione 3.1
+
+
+
+
+
+ M
+
+
+ man page
+
+
+ pagina del manuale di un sistema Unix
+
+ Vedere: sezione 3.5
+
+
+
+
+ multi-level file system
+
+
+ file system a più livelli organizzati in gerarchia
+
+ Vedere: sezione 2.2
+
+
+
+
+ multi-processor
+
+
+ o multi-tasking; capacità del sistema operativo che
+ permette di eseguire più programmi (processi) senza doverne
+ aspettare la terminazione sequenziale
+
+ Vedere: sezione
+ 2.1
+
+
+
+
+ multi-user
+
+
+ capacità del sistema operativo che permette di gestire
+ più utenti contemporaneamente
+
+ Vedere: sezione
+ 2.1
+
+
+
+
+
+ O
+
+
+ OS
+
+
+ operating system, sistema operativo
+
+
+
+
+
+ P
+
+
+ password
+
+
+ codice segreto di un account Unix utilizzato per autenticare un
+ utente nel sistema
+
+ Vedere: sezione 3.1 e
+ sezione 3.1.2
+
+
+
+
+ path name
+
+
+ percorso dei nomi, che indica i rami del file
+ system (directory separate da un /) che bisogna attraversare per
+ raggiungere un determinato file o directory
+
+ Vedere: sezione 2.2
+
+
+
+
+ pattern
+
+
+ schema
+
+
+
+
+ pipe/piping
+
+
+ meccanismo che porta l'output di un comando nell'input di
+ un altro
+
+ Vedere: sezione 6.2
+
+
+
+
+
+ Q
+
+
+ quoting
+
+
+ tecnica di interpretazione di una stringa da parte della
+ shell
+
+ Vedere: sezione 9.3
+
+
+
+
+
+ S
+
+
+ script
+
+
+ programma scritto nel linguaggio della shell
+
+ Vedere: sezione 9.1
+
+
+
+
+ shell
+
+
+ interprete a linea di comando. È l'interfaccia tra
+ l'utente e il sistema operativo (kernel)
+
+ Vedere: Capitolo
+ 5
+
+
+
+
+ simbolic link
+
+
+ link simbolico (collegamento tramite path name) tra due file o
+ directory
+
+ Vedere: sezione 8.1.7
+
+
+
+
+ system call
+
+
+ sono delle procedure (routine) standard, che i programmi utente
+ utilizzano per accedere ai servizi che il kernel mette
+ a disposizione
+
+ Vedere: sezione
+ 2.1
+
+
+
+
+ standard error
+
+
+ dispositivo standard di errori (terminale di default)
+
+ Vedere: sezione 6.1
+
+
+
+
+ standard input
+
+
+ dispositivo standard di ingresso (tastiera di default)
+
+ Vedere: sezione 6.1
+
+
+
+
+ standard output
+
+
+ dispositivo standard di uscita (terminale di default)
+
+ Vedere: sezione 6.1
+
+
+
+
+ super-user
+
+
+ o root, utente speciale che amministra un sistema Unix
+
+
+
+
+
+ U
+
+
+ userid
+
+
+ numero che identifica univocamente l'utente su un sistema
+ Unix
+
+ Vedere: sezione 3.1.4
+
+
+
+
+ username
+
+
+ o user, nome di un utente Unix (utilizzato nella fase di
+ login)
+
+ Vedere: sezione 3.1.4
+
+
+
+
+
+ V
+
+
+ verbose
+
+
+ modalità di esecuzione di un comando che fornisce molte
+ informazioni addizionali (utile per gli utenti novizi)
+
+
+
+
+
+ W
+
+
+ wild card
+
+
+ anche conosciuti come meta-caratteri, sono caratteri speciali
+ utilizzati in alcune circostanze per il confronto/sostituzione di
+ caratteri
+
+ Vedere: sezione 6.4
+
+
+
+
+ word-wrap
+
+
+ meccanismo che invia alla prossima riga l'intera parola fuori
+ margine
+
+
+
+
+
+
\ 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 @@
+
+
+
+ Storia di Unix
+
+ 1965 Bell Laboratory con la collaborazione del MIT e della General
+ Eletric lavorano per la realizzazione di un nuovo sistema operativo,
+ Multics, il quale vuole fornire, come principali caratteristiche,
+ capacità multi-utente (multi-user), multi-processo (multi-processor)
+ e un file system multi-livello (gerarchico)
+ (multi-level file system).
+
+ 1969 AT&T era infelice del progresso di Multics e abbandona il
+ progetto. Ken Thompson, Dennis Ritchie, Rudd Canaday e Doug McIlroy,
+ alcuni programmatori dei Bell Lab che avevano lavorato nel progetto Multics,
+ progettano e implementano su un PDP-7 la prima versione del file system Unix
+ insieme ad alcune utility. Il nome Unix è stato assegnato da parte
+ di Brian Kernighan come gioco di parole su Multics.
+
+ 1 Gennaio 1970 Inizio di Unix.
+
+ 1971 Il sistema ora gira su un PDP-11 con 16 Kbyte di memoria, di cui
+ 8 Kbyte per i programmi utente, e con un disco di 512 Kbyte.
+
+ Il suo primo reale impiego è come strumento di manipolazione
+ del testo in esclusiva per il dipartimento dei Bell Lab. Quel tipo di
+ utilizzo giustifica ulteriormente la ricerca e lo sviluppo attraverso la
+ programmazione di gruppo. Unix attira i programmatori perchè
+ è stato progettato con queste caratteristiche:
+
+
+
+ ambiente di programmazione;
+
+
+
+ semplice interfaccia utente;
+
+
+
+ semplici utility che possono essere combinate per realizzare potenti
+ funzioni;
+
+
+
+ file system gerarchico (ad albero);
+
+
+
+ semplice interfacciamento con i dispositivi, in armonia con il
+ formato dei file;
+
+
+
+ sistema multi-utente e multi-processo;
+
+
+
+ architettura indipendente e trasparente all'utente.
+
+
+
+ 1973 Unix è riscritto prevalentemente in C, un nuovo linguaggio
+ di programmazione sviluppato da Dennis Ritchie. La codifica in questo
+ linguaggio di alto livello diminuisce fortemente lo sforzo necessario per
+ portare Unix su nuove macchine.
+
+ 1974 Thompson e Ritchie descrivono in una relazione pubblicata in un
+ comunicato dell'ACM il nuovo sistema operativo Unix. Unix genera
+ entusiasmo nella comunità accademica che lo vede come un potente
+ strumento di insegnamento per lo studio della programmazione di sistemi.
+ Poichè il decreto del 1956 impedisce ad AT&T di
+ commercializzare il prodotto, viene concessa una licenza
+ all'Università per scopi educativi e una per esistenza
+ commerciale.
+
+ 1977 Ci sono circa 500 siti Unix nel mondo.
+
+ 1980 BSD 4.1 (software sviluppato da Berkeley).
+
+ 1983 SunOS, BSD 4.2, Sys V.
+
+ 1984 Ci sono circa 100.000 siti Unix che girano su differenti
+ piattaforme hardware, con differenti capacità.
+
+ 1988 AT&T e Sun Microsystem sviluppano System V Release 4 (SVR4).
+ Questo sarà in futuro implementato in UnixWare e Solaris 2.
+
+ 1993 Novell compra Unix da AT&T.
+
+ 1994 Novell porta il nome UNIX a X/OPEN.
+
+ 1995 Santa Cruz Operation compra UnixWare da Novell. Santa Cruz
+ Operation e Hewlett-Packard annunciano lo sviluppo di una versione di Unix a
+ 64 bit.
+
+ 1996 International Data Corporation prevede che nel 1997 ci saranno 3
+ milioni di sistemi Unix nel mondo.
+
+
+
\ 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 @@
+
+
+
+ Prefazione
+
+ Questo documento è rivolto in prevalenza a quelle persone che si
+ avvicinano per la prima volta a Unix, ma non solo.
+
+ Prima di iniziare ad esporre la traduzione di questo documento
+ volevo dire alcune cose. Alcune parole del testo originale in lingua
+ inglese non sono state tradotte in italiano, vuoi perchè la
+ rispettiva traduzione in italiano non è efficiente in termini di
+ comprensibilità, vuoi perchè è di uso comune far
+ riferimento a queste direttamente in lingua inglese (vedi login, quoting,
+ built-in, here document, shell, background, pipe, script, ecc.). Inoltre mi
+ è sembrato opportuno e logico modificare l'ultima sezione di questo
+ documento, bibliografia di Unix (testi in lingua inglese), in una breve
+ bibliografia italiana di Unix. Infine ho aggiunto un glossario dove poter
+ trovare un elenco dei termini inglesi più caldi incontrati in questo
+ documento e il loro significato corrispondente.
+
+ Non mi resta che augurarvi una buona lettura.
+
+ Convenzioni usate in questo
+ libro
+
+ Per fornire un testo consistente e facile da leggere, sono state
+ seguite numerose convenzioni in tutto il libro.
+
+ Convenzioni
+ Tipografiche
+
+
+
+ Italico
+
+
+ Un font italico è per i nomi dei file,
+ per gli URL, per il testo enfatizzato, e per il primo utilizzo dei
+ termini tecnici.
+
+
+
+
+ Monospazio
+
+
+ Un font monospazio è usato per i
+ messaggi di errore, i comandi, le variabili di ambiente, i nomi di
+ host, i nomi degli utenti, i nomi dei gruppi, i nomi dei device, le
+ variabili, e i frammenti di codice.
+
+
+
+
+ Grassetto
+
+
+ Un font in grassetto è per le
+ applicazioni, i comandi, e i tasti.
+
+
+
+
+ Input
+ dell'Utente
+
+ I tasti sono visualizzati in grassetto per
+ differenziarli dal testo normale. Le combinazioni di tasti che devono
+ essere digitate contemporaneamente sono visualizzate con un
+ `+' tra i tasti, come:
+
+
+ Ctrl
+ Alt
+ Del
+
+
+ I tasti che devono essere digitati in sequenza saranno separati da
+ virgole, come per esempio:
+
+
+ Ctrl
+ X
+ ,
+ Ctrl
+ S
+
+
+ Vuol dire che l'utente deve digitare i tasti Ctrl e
+ X contemporaneamente e poi i tasti Ctrl e
+ S.
+
+
+
\ 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 @@
+
+
+
+ Programmazione di shell
+
+
+ Script di shell
+
+ Si possono scrivere programmi di shell creando script contenenti
+ alcuni comandi di shell. La prima linea dello script deve iniziare con
+ #!, che indica al kernel che lo script è direttamente eseguibile.
+ Si fa immediatamente seguire a quel simbolo il nome della shell
+ o del programma da eseguire (gli spazi sono permessi), usando un path name
+ assoluto. Generalmente si possono avere fino a 32 caratteri, forse di
+ più su alcuni sistemi e si può includere qualche opzione.
+ Quindi per inizializzare uno script per la shell Bourne la prima linea
+ dovrà essere:
+
+ #! /bin/sh
+
+ e per la shell C:
+
+ #! /bin/csh -f
+
+ dove l'opzione indica che la shell non deve
+ leggere il file .cshrc. Alcuni spazi bianchi
+ seguenti il magico simbolo, #!, sono opzionali.
+
+ Inoltre si deve specificare che lo script è eseguibile,
+ settando gli opportuni bit sul file con il comando &man.chmod.1;,
+ esempio:
+
+ &prompt.user; chmod +x shell_script
+
+ All'interno degli script il simbolo # indica un commento da quel punto
+ fino alle fine della linea; #! è un caso speciale se trovato come
+ primo carattere del file.
+
+
+
+ Settare i valori dei parametri
+
+ I valori di un parametro, ad esempio param, sono
+ assegnati così:
+
+
+
+
+
+
+
+ Shell Bourne
+
+ Shell C
+
+
+
+
+
+ param=valore
+
+ set param =
+ valore
+
+
+
+
+
+ dove valore è una valida stringa che
+ può essere chiusa tra caratteri di quoting singoli
+ ('valore') o doppi
+ ("valore") per permettere alcuni spazi bianchi
+ all'interno del valore della stringa. Quando viene racchiusa con dei
+ caratteri backquote (`valore`) la stringa viene
+ prima valutata dalla shell e viene sostituita con il risultato ottenuto
+ dalla valutazione. Questo viene spesso usato per eseguire un comando,
+ sostituendo l'output del comando a valore,
+ esempio:
+
+ $ day=`date +%a`
+
+ $ echo $day
+Wed
+
+ Dopo che il valore del parametro è stato assegnato, si accede
+ al valore corrente del parametro usando la notazione
+ $param o ${param}.
+
+
+
+ Quoting
+
+ Le stringhe possono essere quotate per controllare il modo in cui la
+ shell interpreta alcuni parametri o variabili all'interno della stringa.
+ Per delimitare le stringhe si possono usare i caratteri di quoting singoli
+ (') o doppi ("). I caratteri di quoting doppi definiscono la stringa e
+ permettono la sostituzione di variabile. I carattere di quoting singoli
+ definiscono la stringa ma impediscono la sostituzione di variabile.
+ Un backslash (\) prima di un carattere viene posto per effettuare un
+ escape su di esso, specificando che il sistema deve considerare il
+ carattere letteralmente, senza assegnarli alcun significato speciale.
+ Queste tecniche di quoting possono essere usate per separare una variabile
+ da una stringa fissa. Come esempio si consideri la variabile
+ var, a cui è stata assegnata il valore
+ bat, e la stringa costante man. Se
+ si vuole combinare queste stringhe per ottenere come risultato la stringa
+ batman si può sperimentare:
+
+ $varman
+
+ ma questo non funzionerà, poichè la shell tenta di
+ valutare una variabile chiamata varman, che non esiste.
+ Per ottenere il risultato desiderato si ha la necessità di separare
+ le stringhe tramite quoting o di isolare la variabile con delle parentesi
+ graffe ({}), in questo modo:
+
+
+
+
+
+
+
+ "$var"man
+
+ - quoting sulla variabile
+
+
+
+ $var""man
+
+ - separazione di parametri
+
+
+
+ $var"man"
+
+ - quoting sulla costante
+
+
+
+ $var''man
+
+ - separazione di parametri
+
+
+
+ $var'man'
+
+ - quoting sulla costante
+
+
+
+ $var\man
+
+ - separazione di parametri
+
+
+
+ ${var}man
+
+ - si isola la variabile
+
+
+
+
+
+ Queste funzionano tutte poichè ", ', \, { e } non sono validi
+ caratteri per un nome di variabile.
+
+ Non si può usare
+
+ '$var'man
+
+ \$varman
+
+ poichè impediscono che la sostituzione della variabile
+ prenda posto.
+
+ Quando si usano le parentesi graffe, queste devono circondare
+ solamente la variabile, senza includere il $, altrimenti saranno incluse
+ come parte del risultato della stringa, esempio:
+
+ &prompt.user; echo {$var}man
+{bat}man
+
+
+
+ Variabili
+
+ Alcune variabili sono automaticamente inizializzate all'avvio della
+ shell. Queste variabili permettono di riferirsi agli argomenti su linea
+ di comando.
+
+ Queste variabili di shell sono:
+
+
+ Variabili di shell
+
+
+
+
+
+
+
+
+
+
+
+
+ Variabile
+
+ Uso
+
+ sh
+
+ csh
+
+
+
+
+
+ $#
+
+ numero di argomenti su linea di comando
+
+ x
+
+
+
+
+
+ $-
+
+ opzioni fornite alla shell
+
+ x
+
+
+
+
+
+ $?
+
+ valore di uscita dell'ultimo comando eseguito
+
+ x
+
+
+
+
+
+ $$
+
+ numero id del processo corrente
+
+ x
+
+ x
+
+
+
+ $!
+
+ numero di processo dell'ultimo comando messo in
+ background
+
+ x
+
+
+
+
+
+ $n
+
+ argomento su linea di comando, dove
+ n varia tra 1 e 9, leggendo da sinistra
+ a destra
+
+ x
+
+ x
+
+
+
+ $0
+
+ il nome della shell corrente o del programma corrente
+
+ x
+
+ x
+
+
+
+ $*
+
+ tutti gli argomenti su linea di comando ("$1 $2 ...
+ $9")
+
+ x
+
+ x
+
+
+
+ $@
+
+ tutti gli argomenti su linea di comando, ciascuno quotato
+ separatamente ("$1" "$2" ... "$9")
+
+ x
+
+
+
+
+
+ $argv[n]
+
+ seleziona l'n-esima parola dalla
+ lista di input
+
+
+
+ x
+
+
+
+ ${argv[n]}
+
+ come sopra
+
+
+
+ x
+
+
+
+ $#argv
+
+ riporta il numero di parole della lista di input
+
+
+
+ x
+
+
+
+
+
+ L'uso di queste variabili può essere illustrato con alcuni
+ semplici script. Per la shell Bourne lo script potrebbe essere:
+
+ #!/bin/sh
+echo "$#:" $#
+echo '$#:' $#
+echo '$-:' $-
+echo '$?:' $?
+echo '$$:' $$
+echo '$!:' $!
+echo '$3:' $3
+echo '$0:' $0
+echo '$*:' $*
+echo '$@:' $@
+
+ Quando viene eseguito con alcuni argomenti, mostra i valori delle
+ variabili di shell, esempio:
+
+ $ ./variables.sh one two three four five
+5: 5
+$#: 5
+$-:
+$?: 0
+$$: 12417
+$!:
+$3: three
+$0: ./variables.sh
+$*: one two three four five
+$@: one two three four five
+
+ Come si può notare, si ha la necessità di usare un
+ carattere di quoting singolo per impedire alla shell di assegnare
+ significati speciali a $. Il carattere di quoting doppio, come nella
+ prima struttura echo, permette di rimpiazzare il nome
+ della variabile con il suo valore.
+
+ Similmente, per le variabili della shell C si possono illustrare le
+ sostituzioni di variabili tramite il seguente script:
+
+ #!/bin/csh -f
+echo '$$:' $$
+echo '$3:' $3
+echo '$0:' $0
+echo '$*:' $*
+echo '$argv[2]:' $argv[2]
+echo '${argv[4]}:' ${argv[4]}
+echo '$#argv:' $#argv
+
+ che quando eseguito con alcuni argomenti mostra il risultato
+ seguente:
+
+ &prompt.user; ./variables.csh one two three four five
+
+$$: 12419
+$3: three
+$0: ./variables.csh
+$*: one two three four five
+$argv[2]: two
+${argv[4]}: four
+$#argv: 5
+
+
+
+ Sostituzione di parametri
+
+ Si può riferirsi ai parametri in modo astratto e sostituire i
+ loro valori in base a delle condizioni, usando gli operatori definiti qui
+ sotto. Ancora una volta si possono usare le parentesi graffe ({}) per
+ isolare la variabile e il suo operatore.
+
+
+
+
+
+
+
+ $parametro
+
+ sostituisce questa stringa con il valore di
+ parametro
+
+
+
+ ${parametro}
+
+ come sopra. Le parentesi sono d'aiuto se non c'è
+ separazione tra questo parametro e una stringa adiacente.
+
+
+
+ $parametro=
+
+ setta parametro a
+ null.
+
+
+
+ ${parametro-default}
+
+ se parametro non è settato
+ allora si usa default come valore.
+ parametro non viene resettato.
+
+
+
+ ${parametro=default}
+
+ se parametro non è settato
+ allora lo si setta a default e si usa
+ il nuovo valore
+
+
+
+ ${parametro+nuovo_valore}
+
+ se parametro è settato
+ allora si usa nuovo_valore altrimenti
+ non si usa nulla. parametro non viene
+ resettato.
+
+
+
+ ${parametro?messaggio}
+
+ se parametro non è settato
+ allora si visualizza il messaggio. Se
+ parametro è settato allora si
+ usa il valore corrente.
+
+
+
+
+
+ Non ci sono spazi nei precedenti operatori. Se un due punti (:) viene
+ inserito prima di -, =, + o ? allora si effettua prima un test per vedere
+ se il parametro ha un settaggio non-nullo.
+
+ La shell C ha alcuni modi aggiuntivi per la sostituzione di
+ parametri:
+
+
+
+
+
+
+
+ $lista[n]
+
+ seleziona l'n-esima parola dalla
+ lista
+
+
+
+ ${lista[n]}
+
+ come sopra
+
+
+
+ $#lista
+
+ riporta il numero di parole in lista
+
+
+
+ $?parametro
+
+ ritorna 1 se il parametro è settato, 0
+ altrimenti
+
+
+
+ ${?parametro}
+
+ come sopra
+
+
+
+ $<
+
+ legge una linea da &man.stdin.4;
+
+
+
+
+
+ Inoltre la shell C definisce l'array
+ $argv[n] per
+ contenere gli n argomenti della linea di
+ comando e $#argv per il numero di argomenti, come
+ specificato in Tabella
+ 9.1.
+
+ Per illustrare alcune di queste caratteristiche si userà il
+ seguente script di prova:
+
+ #!/bin/sh
+param0=$0
+test -n "$1" && param1=$1
+test -n "$2" && param2=$2
+test -n "$3" && param3=$3
+echo 0: $param0
+echo "1: ${param1-1}: \c" ;echo $param1
+echo "2: ${param2=2}: \c" ;echo $param2
+echo "3: ${param3+3}: \c" ;echo $param3
+
+ Inizialmente nello script si verifica con &man.test.1; se la
+ variabile esiste; in tal caso si setta il parametro al suo valore.
+ Dopo si riportano i valori, effettuando le sostituzioni.
+
+ Nella prima esecuzione dello script non vengono forniti
+ argomenti:
+
+ $ ./parameter.sh
+0: ./parameter.sh # trova sempre $0
+1: 1: # sostituisce 1, ma non assegna questo valore
+2: 2: 2 # sostituisce 2 e assegna questo valore
+3: : # non sostituisce
+
+ In questa seconda esecuzione dello script si forniscono alcuni
+ argomenti:
+
+ $ ./parameter one two three
+0: ./parameter.sh # trova sempre $0
+1: one: one # non sostituisce, ha già un valore
+2: two: two # non sostituisce, ha già un valore
+3: 3: three # sostituisce 3 ma non assegna questo valore
+
+
+
+ Here document
+
+ Un here document è una forma di quoting
+ che permette alle variabili di shell di essere sostituite. È una
+ forma speciale di redirezione che inizia con una linea contenente
+ solamente <<PAROLA
+ e finisce con una linea contenete solamente
+ PAROLA. Nella shell
+ Bourne si può impedire la sostituzione di shell effettuando un
+ escape su PAROLA, mettendo
+ un \ davanti a PAROLA
+ sulla linea di redirezione, esempio
+ <<\PAROLA, ma non
+ sulla linea finale. Per avere lo stesso effetto con la shell C si mette
+ il \ davanti a PAROLA in
+ entrambi i posti.
+
+ Gli script che seguono illustrano questo meccanismo:
+
+
+
+
+
+
+
+ per la shell Bourne:
+
+ e per la shell C:
+
+
+
+
+
+ #!/bin/sh #!/bin/csh -f
+fa=fa set fa = fa
+non="" set non = ""
+cat << EOF cat << EOF
+Questo here document Questo here document
+$non $fa $non $fa
+sostituzione di variabile sostituzione di variabile
+EOF EOF
+cat << \EOF cat << \EOF
+Questo here document Questo here document
+$non $fa $non $fa
+sostituzione di variabile sostituzione di variabile
+EOF \EOF
+
+ Entrambi gli output producono:
+
+ Questo here document
+fa
+sostituzione di variabile
+Questo here document
+$non $fa
+sostituzione di variabile
+
+ Nella parte superiore dell'esempio le variabili di shell
+ $non e $fa sono sostituite.
+ Nella parte inferiore queste variabili vengono trattate come delle
+ semplici stringhe di testo senza effettuare la sostituzione.
+
+
+
+ Input interattivo
+
+ Gli script di shell possono accettare input interattivo per
+ inizializzare parametri all'interno dello script stesso.
+
+
+ Sh
+
+ &man.sh.1; utilizza il comando built-in read per
+ leggere una linea di input, esempio:
+
+ read param
+
+ Questo può essere illustrato con un semplice script:
+
+ #!/bin/sh
+echo "Inserisci una frase \c" # /bin/echo che richiede "\c" per
+ # impedire un newline
+read param
+echo param=$param
+
+ Quando questo script viene eseguito, viene richiesto l'input, che
+ viene poi mostrato nel risultato:
+
+ $ ./read.sh
+Inserisci una frasehello frank # E' stato digitato hello frank <return>
+param=hello frank
+
+
+
+ Csh
+
+ &man.csh.1; usa il simbolo $< per leggere una
+ linea da &man.stdin.4;, esempio:
+
+ set param = $<
+
+ Gli spazi bianchi intorno al segno di uguale sono importanti.
+ Il seguente script illustra come usarlo:
+
+ #!/bin/csh -f
+ echo -n "Inserisci una frase" # Questo echo built-in richiede -n
+ # per impedire un newline
+ set param = $<
+ echo param=$param
+
+ Quindi chiede l'input e lo mostra nel risultato:
+
+ &prompt.user; ./read.csh
+Inserisci una frasehello frank # E' stato digitato hello frank <return>
+param=hello frank
+
+
+
+
+ Funzioni
+
+ La shell Bourne permette di definire funzioni. Queste sono molto
+ simili agli alias della shell C, ma permettono più
+ flessibilità. Una funzione ha la forma:
+
+ funzione () {
+ comando; }
+
+ dove lo spazio dopo { e il punto e virgola (;) sono obbligatori;
+ il punto e virgola può essere omesso facendo precedere a } un
+ newline. Spazi e newline aggiuntivi sono permessi.
+ Alcuni esempi di funzioni possono essere visti nel semplice file
+ .profile discusso nei primi capitoli, dove si avevano
+ delle funzioni per ls e ll:
+
+ ls() { /bin/ls -sbF "$@";}
+
+ ll() { ls -al "$@";}
+
+ La prima funzione ridefinisce &man.ls.1; affinchè le opzioni
+ siano sempre fornite dal comando standard
+ /bin/ls e in modo da agire in base all'input fornito,
+ $@. La seconda di queste funzioni prende il valore
+ corrente di ls (la funzione precedente) e aggiunge le
+ opzioni .
+
+ Le funzioni sono molto utili negli script di shell. Il seguente
+ script è una versione semplificata di uno script utilizzato per
+ effettuare automaticamente il backup su nastro delle partizioni di
+ sistema.
+
+ #!/bin/sh
+# Script cron per un completo backup del sistema
+HOST=`/bin/uname -n`
+admin=frank
+Mt=/bin/mt
+Dump=/usr/sbin/ufsdump
+Mail=/bin/mailx
+device=/dev/rmt/0n
+Rewind="$Mt -f $device rewind"
+Offline="$Mt -f $device rewoffl"
+# Failure - exit
+failure () {
+ $Mail -s "Backup fallito - $HOST" $admin << EOF_failure
+ $HOST
+ Script cron backup fallito. A quanto pare non c'è il nastro nel dispositivo.
+ EOF_failure
+ exit 1
+ }
+# Dump failure - exit
+dumpfail () {
+ $Mail -s "Backup fallito - $HOST" $admin << EOF_dumpfail
+ $HOST
+ Script cron backup fallito. A quanto pare non c'è il nastro nel dispositivo.
+ EOF_dumpfail
+ exit 1
+ }
+# Success
+success () {
+ $Mail -s "Backup completato con successo - $HOST" $admin << EOF_success
+ $HOST
+ Script cron backup apparentemente riuscito. Il file /etc/dumpdates è:
+ `/bin/cat /etc/dumpdates`
+ EOF_success
+ }
+# Conferma nastro nel device
+$Rewind || failure
+$Dump 0uf $device / || dumpfail
+$Dump 0uf $device /usr || dumpfail
+$Dump 0uf $device /home || dumpfail
+$Dump 0uf $device /var || dumpfail
+($Dump 0uf $device /var/spool/mail || dumpfail) && success
+$Offline
+
+ Questo script illustra alcuni argomenti che sono stati trattati in
+ questo documento. Lo script inizia settando i valori di alcuni parametri.
+ HOST viene inizializzato dall'output di un comando,
+ admin è l'amministratore di sistema,
+ Mt, Dump e Mail
+ sono nomi di programmi, device è il dispositivo
+ speciale usato per accedere al nastro, Rewind e
+ Offline contengono i comandi rispettivamente per
+ riavvolgere e scaricare il nastro usando il riferimento
+ Mt e le necessarie opzioni. Vengono definite
+ tre funzioni: failure, dumpfail e
+ success. Tutte le funzioni in questo script utilizzano
+ la forma here document per realizzare il contenuto
+ della funzione stessa. Si introducono ora gli operatori logici
+ OR (||) e
+ AND (&&); ciascuno è
+ posizionato tra una coppia di comandi. Per l'operatore
+ OR, il secondo comando viene eseguito solamente se
+ il primo comando non è stato completato con successo. Per
+ l'operatore AND, il secondo comando viene
+ eseguito solamente se il primo comando è stato completato con
+ successo.
+
+ Lo scopo principale dello script è realizzare i comandi
+ Dump, ad esempio copiando i file system specificati.
+ Prima si tenta di eseguire il riavvolgimento del nastro. Se questo
+ fallisce, || failure, si esegue la funzione
+ failure e si esce dal programma. Se invece questo ha
+ successo si procede con il backup a turno di ogni partizione, ogni volta
+ verificando che questa operazione sia completamente riuscita
+ (|| dumpfail). Se questa operazione non viene eseguita
+ completamente con successo si esegue la procedura
+ dumpfail e si esce. Se l'ultimo backup ha successo si
+ procede con la funzione success ((...) &&
+ success). In fine si riavvolge il nastro e lo si manda fuori
+ linea affinchè altri utenti non possano accidentalmente scriverci
+ sopra.
+
+
+
+ Comandi di controllo
+
+
+ Condizionale if
+
+ L'espressione condizionale if è
+ disponibile in entrambe le shell, ma con una diversa sintassi.
+
+
+ Sh
+
+ ifcondizione1
+then
+ lista di comandi se condizione1 è vera (true)
+[elifcondizione2
+ then lista di comandi se condizione2 è vera (true)]
+[else
+ lista di comandi se condizione1 è falsa (false)]
+fi
+
+ Le condizioni sono sottoposte usualmente al comando &man.test.1; o
+ [] (Vedere la sezione 9.9.6).
+ L'if e then devono essere
+ separati con un newline o un punto e virgola (;).
+
+ #!/bin/sh
+if [ $# -ge 2 ]
+then
+ echo $2
+elif [ $# -eq 1 ]; then
+ echo $1
+else
+ echo Nessun input
+fi
+
+ Sono richiesti degli spazi nel formato della condizione di
+ &man.test.1;, uno dopo [ e uno prima di
+ ]. Questo script potrebbe comportarsi in modo
+ differente a seconda che ci siano zero, uno o più argomenti su
+ linea di comando. Iniziando con nessun argomento:
+
+ $ ./if.sh
+Nessun input
+
+ Ora con un argomento:
+
+ $ ./if.sh one
+one
+
+ E ora con due argomenti:
+
+ $ ./if.sh one two
+two
+
+
+
+ Csh
+
+ if (condizione) comando
+ -oppure-
+if (condizione1) then
+ lista di comandi se condizione1 è vera (true)
+[elseif (condizione2) then
+ lista di comandi se condizione2 è vera (true)]
+[else
+ lista di comandi se condizione1 è falsa (false)]
+endif
+
+ L'if e then devono stare
+ sulla stessa linea.
+
+ #!/bin/csh -f
+if ( $#argv >= 2 ) then
+ echo $2
+else if ( $#argv == 1 ) then
+ echo $1
+else
+ echo Nessun input
+endif
+
+ Di nuovo, questo script potrebbe comportarsi in modo differente a
+ seconda che ci siano zero, uno o più argomenti su linea di
+ comando. Iniziando con nessun argomento:
+
+ &prompt.user; ./if.csh
+Nessun input
+
+ Ora con un argomento:
+
+ &prompt.user; ./if.csh one
+one
+
+ E ora con due argomenti:
+
+ &prompt.user; ./if.csh one two
+two
+
+
+
+
+ Condizionale switch e case
+
+ Per scegliere tra una serie di valori di tipo stringa relativi a un
+ parametro si usa case nella shell Bourne e
+ switch nella shell C.
+
+
+ Sh
+
+ caseparametroin
+ schema1[|schema1a]) lista1 di comandi;;
+ schema2) lista2 di comandi
+ lista2a di comandi;;
+ schema3) lista3 di comandi;;
+ *) ;;
+esac
+
+ Si possono usare validi nomi di file meta-caratteri all'interno
+ dello schema per il confronto. I ;; concludono ogni scelta e
+ possono essere sulla stessa linea della scelta o a seguito di un
+ newline, dopo l'ultimo comando per la scelta. Schemi alternativi
+ per la scelta di un particolare caso sono separati da una barra
+ verticale |, come nel primo schema dell'esempio precedente. I simboli
+ wild card ,? per indicare un generico carattere e * per far
+ corrispondere alcuni caratteri, possono essere usati singolarmente o
+ in modo adiacente per completare stringhe.
+
+ Questo semplice esempio illustra come usare l'espressione
+ condizionale case.
+
+ #!/bin/sh
+case $1 in
+ aa|ab) echo A
+ ;;
+ b?) echo "B \c"
+ echo $1;;
+ c*) echo C;;
+ *) echo D;;
+esac
+
+ Quindi quando si esegue lo script con l'argomento posto sulla
+ colonna di sinistra, lo script risponde come sulla colonna di
+ destra:
+
+
+
+
+
+
+
+ aa
+
+ A
+
+
+
+ ab
+
+ A
+
+
+
+ ac
+
+ D
+
+
+
+ bb
+
+ B bb
+
+
+
+ bbb
+
+ D
+
+
+
+ c
+
+ C
+
+
+
+ cc
+
+ C
+
+
+
+ fff
+
+ D
+
+
+
+
+
+
+
+ Csh
+
+ switch (parametro)
+caseschema1:
+ lista1 di comandi
+ [breaksw]
+caseschema2:
+ lista2 di comandi
+ [breaksw]
+default:
+ lista di comandi per il comportamento di default
+ [breaksw]
+endsw
+
+ breaksw è opzionale e può essere
+ usato per interrompere lo switch dopo che si è verificata una
+ corrispondenza del valore di tipo stringa del parametro confrontato.
+ Switch non accetta | nella lista degli schemi, ma
+ permette di unire insieme diverse strutture case
+ per fornire un simile risultato. Il seguente script di shell C ha lo
+ stesso comportamento dell'esempio precedente, riferito al
+ case della shell Bourne.
+
+ #!/bin/csh -f
+switch ($1)
+ case aa:
+ case ab:
+ echo A
+ breaksw
+ case b?:
+ echo -n "B "
+ echo $1
+ breaksw
+ case c*:
+ echo C
+ breaksw
+ default:
+ echo D
+endsw
+
+
+
+
+ for e foreach
+
+ Per effettuare un ciclo tra una lista di valori di tipo
+ stringa si possono usare i comandi for e
+ foreach.
+
+
+ Sh
+
+ forvariabile [inlista_di_valori]
+do
+ lista di comandi
+done
+
+ La lista_di_valori è opzionale,
+ presupponendo $@ se nulla viene specificato. Ogni
+ valore in questa lista viene sostituito sequenzialmente in
+ variabile fino a quando la lista risulta
+ vuota. Possono essere usati wild card, che vengono applicati ai
+ nomi dei file nella directory corrente. Di seguito si illustra il
+ ciclo for che copia tutti i file che finiscono con
+ .old negli stessi nomi che finiscono però
+ con .new. In questi esempi l'utility
+ &man.basename.1; estrae la parte base del nome affinchè
+ si possa modificarne l'estensione.
+
+ #!/bin/sh
+for file in *.old
+do
+ newf=`basename $file .old`
+ cp $file $newf.new
+done
+
+
+
+ Csh
+
+ foreachvariabile (lista_di_valori)
+ lista di comandi
+end
+
+ L'equivalente script in shell C per copiare tutti i file con
+ estensione .old negli stessi file con estensione
+ .new è:
+
+ #!/bin/csh -f
+foreach file (*.old)
+ set newf = `basename $file .old`
+ cp $file $newf.new
+end
+
+
+
+
+ while
+
+ Il comando while permette di effettuare il ciclo
+ sempre che la condizione sia vera.
+
+
+ Sh
+
+ whilecondizione
+do
+ lista di comandi
+ [break]
+ [continue]
+done
+
+ Un semplice script per illustrare il ciclo
+ while è:
+
+ #!/bin/sh
+while [ $# -gt 0 ]
+do
+ echo $1
+ shift
+done
+
+ Questo script prende la lista degli argomenti, ne visualizza il
+ primo, quindi effettua uno shift nella lista verso sinistra, perdendo
+ il primo elemento originale. Il ciclo viene ripetuto fino a quando
+ tutti gli argomenti sono stati spostati fuori dalla lista.
+
+ $ ./while.sh one two three
+one
+two
+three
+
+
+
+ Csh
+
+ while (condizione)
+ lista di comandi
+ [break]
+ [continue]
+end
+
+ Se si vuole che la condizione sia sempre vera si specifica 1
+ all'interno del test condizionale.
+
+ Lo script di shell C equivalente a quello precedente
+ è:
+
+ #!/bin/csh -f
+while ($#argv != 0 )
+ echo $argv[1]
+ shift
+end
+
+
+
+
+ until
+
+ Questo costrutto di ciclo è solamente disponibile per la
+ shell Bourne.
+
+ untilcondizione
+do
+ lista di comandi se la condizione è falsa
+done
+
+ La condizione viene verificata all'inizio di ogni ciclo e il ciclo
+ termina quando la condizione è vera.
+
+ Uno script equivalente all'esempio del while
+ precedente è:
+
+ #!/bin/sh
+until [ $# -le 0 ]
+do
+ echo $1
+ shift
+done
+
+ Si noti che qui si verifica per minore o
+ uguale, piuttosto che per maggiore,
+ poichè il ciclo until viene abilitato da una
+ condizione falsa.
+
+ Sia il ciclo until che il
+ while sono solamente eseguiti se la condizione
+ è soddisfatta. La condizione viene valutata prima
+ dell'esecuzione dei comandi.
+
+
+
+ test
+
+ Le espressioni condizionali vengono valutate per valori
+ veri o falsi. Questo, di
+ solito, viene realizzato con &man.test.1; o equivalentemente con i suoi
+ operatori []. Se la condizione viene valutata vera,
+ viene settato uno stato di uscita zero (TRUE),
+ altrimenti viene settato uno stato di uscita non-zero
+ (FALSE). Se non ci sono argomenti viene settato
+ uno stato di uscita non-zero. Gli operatori utilizzati nelle
+ espressioni condizionali della shell Bourne sono mostrati qui
+ sotto.
+
+ Per i nomi di file le opzioni per
+ &man.test.1; sono date con la sintassi seguente:
+
+
+ filename
+
+ Le opzioni di &man.test.1; disponibili per i
+ file includono:
+
+
+
+
+
+
+
+
+
+ vero se il file esiste ed è leggibile
+
+
+
+
+
+ vero se il file esiste ed è scrivibile
+
+
+
+
+
+ vero se il file esiste ed è eseguibile
+
+
+
+
+
+ vero se il file esiste ed è un file regolare (o per
+ &man.csh.1; esiste e non è una directory)
+
+
+
+
+
+ vero se il file esiste ed è una directory
+
+
+
+ o
+
+ vero se il file esiste ed è un link
+ simbolico
+
+
+
+
+
+ vero se il file esiste ed è un file speciale a
+ caratteri (ad esempio un dispositivo al quale si accede un
+ carattere alla volta)
+
+
+
+
+
+ vero se il file esiste ed è un file speciale a
+ blocchi (ad esempio un dispositivo al quale si accede in blocchi
+ di dati)
+
+
+
+
+
+ vero se il file esiste ed è un file pipe
+ (fifo)
+
+
+
+
+
+ vero se il file esiste ed è setuid (ad esempio ha il
+ bit set-user-id settato a s o S nel terzo bit)
+
+
+
+
+
+ vero se il file esiste ed è setgid (ad esempio ha il
+ bit set-group-id settato a s o S nel sesto bit)
+
+
+
+
+
+ vero se il file esiste e ha lo sticky bit settato (una t
+ nel nono bit)
+
+
+
+
+
+ vero se il file esiste ed ha una dimensione maggiore di
+ zero
+
+
+
+
+
+ C'è un test per i descrittori di
+ file:
+
+
+
+
+
+
+
+
+
+ vero se l'aperto descrittore del file specificato (1,
+ &man.stdout.4;, di default) è associato ad un
+ terminale
+
+
+
+
+
+ Ci sono test per le stringhe:
+
+
+
+
+
+
+
+
+
+ vero se la lunghezza della stringa è zero
+
+
+
+
+
+ vero se la lunghezza della stringa non è
+ zero
+
+
+
+
+
+ vero se stringa1 è
+ identica a stringa2
+
+
+
+
+
+ vero se stringa1 non è
+ identica a stringa2
+
+
+
+ stringa
+
+ vero se la stringa non è nulla
+
+
+
+
+
+ Ci sono dei confronti per gli interi:
+
+
+
+
+
+
+
+
+
+ vero se gli interi n1 e
+ n2 sono uguali
+
+
+
+
+
+ vero se gli interi n1 e
+ n2 non sono uguali
+
+
+
+
+
+ vero se l'intero n1 è
+ maggiore dell'intero n2
+
+
+
+
+
+ vero se l'intero n1 è
+ maggiore o uguale dell'intero
+ n2
+
+
+
+
+
+ vero se l'intero n1 è
+ minore dell'intero n2
+
+
+
+
+
+ vero se l'intero n1 è
+ minore o uguale dell'intero
+ n2
+
+
+
+
+
+ Sono disponibili i seguenti operatori
+ logici:
+
+
+
+
+
+
+
+
+
+ negazione (unaria)
+
+
+
+
+
+ and (binario)
+
+
+
+
+
+ or (binario)
+
+
+
+
+
+ le espressioni all'interno di ( ) vengono raggruppate
+ insieme. Può essere necessario quotare le parentesi ( )
+ per impedire alla shell di interpretarle.
+
+
+
+
+
+
+
+ Operatori relazionali e logici della shell C
+
+ La shell C possiede un suo set di operatori logici e relazionali
+ built-in. In ordine decrescente di priorità questi sono:
+
+
+
+
+
+
+
+ (...)
+
+ raggruppa espressioni con ( )
+
+
+
+ ~
+
+ inverso (il suo complemento)
+
+
+
+ !
+
+ negazione logica
+
+
+
+ *, /, %
+
+ moltiplicazione, divisione, modulo
+
+
+
+ +, -
+
+ addizione, sottrazione
+
+
+
+ <<, >>
+
+ shift a sinistra di bit, shift a destra di bit
+
+
+
+ <=
+
+ minore o uguale
+
+
+
+ >=
+
+ maggiore o uguale
+
+
+
+ <
+
+ minore
+
+
+
+ >
+
+ maggiore
+
+
+
+ = =
+
+ uguale
+
+
+
+ !=
+
+ non uguale
+
+
+
+ =~
+
+ uguale a stringa
+
+
+
+ !~
+
+ non uguale a stringa
+
+
+
+ &
+
+ AND bit
+
+
+
+ ^
+
+ XOR bit (or esclusivo)
+
+
+
+ |
+
+ OR bit
+
+
+
+ &&
+
+ AND logico
+
+
+
+ ||
+
+ OR logico
+
+
+
+ {comando}
+
+ vero (1) se il comando termina con uno stato di uscita 0,
+ falso (0) altrimenti.
+
+
+
+
+
+ Inoltre la shell C permette richieste sul tipo e sui permessi dei
+ file con gli operatori seguenti:
+
+
+
+
+
+
+
+
+
+ ritorna vero (1) se il file esiste ed è leggibile,
+ altrimenti ritorna falso (0)
+
+
+
+
+
+ vero se il file esiste ed è scrivibile
+
+
+
+
+
+ vero se il file esiste ed è eseguibile
+
+
+
+
+
+ vero se il file esiste e non è una directory
+
+
+
+
+
+ vero se il file esiste ed è una directory
+
+
+
+
+
+ vero se il file esiste
+
+
+
+
+
+ vero se l'utente corrente è il proprietario del
+ file
+
+
+
+
+
+ vero se il file ha una lunghezza zero (file vuoto)
+
+
+
+
+
+
+
+
+
\ 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 @@
+
+
+
+ Shell
+
+ La shell, che sta tra l'utente e il sistema operativo, opera come un
+ interprete di comandi. Legge l'input dal terminale e traduce i comandi in
+ azioni, azioni che vengono intraprese dal sistema. La shell è simile
+ al command.com in DOS. Una volta effettuato il login
+ nel sistema, viene assegnata la shell di default. La shell, al suo avvio,
+ legge i suoi file di inizializzazione e può settare alcune
+ variabili di ambiente, i path di ricerca dei comandi, gli alias dei comandi
+ ed eseguire qualche comando specificato in questi file.
+
+ La prima shell è stata la shell Bourne, &man.sh.1;. Ogni
+ piattaforma Unix dispone della shell Bourne o di una shell Bourne
+ compatibile. Questa shell ha molte buone caratteristiche per controllare
+ l'input e l'output, ma non è molto adatta all'utente interattivo.
+ Per andare incontro a quest'ultimo è stata scritta la shell C,
+ &man.csh.1;, presente ora in molti, ma non tutti, i sistemi Unix.
+ Questa shell usa una sorta di sintassi C, il linguaggio con cui Unix
+ è stato scritto, ma ha molte scomode implementazioni
+ dell'input/output. La shell C ha il controllo dei job, quindi può
+ mandare un job eseguito in background (sotto shell) in
+ foreground (in shell corrente). Inoltre ha la funzione di
+ history (storia dei comandi) che permette di modificare e ripetere comandi
+ eseguiti precedentemente.
+
+ Il prompt di default per la shell Bourne è $
+ (o &prompt.root; per l'utente root). Il prompt di default per la shell C
+ è &prompt.user;.
+
+ Sono disponibili in rete molte altre shell. Quasi tutte sono basate
+ sulla shell &man.sh.1; o &man.csh.1; con estensioni per fornire il controllo
+ dei job alla shell &man.sh.1;, permettere di manipolare il modo di
+ esecuzione dei comandi su linea di comando, cercare attraverso i comandi
+ eseguiti precedentemente, fornire il completamento dei nomi dei comandi,
+ prompt personalizzati, ecc. Alcune delle seguenti shell maggiormente
+ conosciute potrebbero essere sul proprio amato sistema Unix: la shell korn,
+ ksh, di David Korn e la shell Bourne Again, &man.bash.1;,
+ dal progetto GNU Free Software Foundations, entrambe basate su &man.sh.1;,
+ la shell T-C, &man.tcsh.1; e l'estensione della shell C,
+ cshe, entrambe bastate su &man.csh.1;. In seguito si
+ descriveranno alcune delle caratteristiche di &man.sh.1; e &man.csh.1;,
+ così per iniziare.
+
+
+ Comandi built-in
+
+ La shell ha alcuni comandi built-in, chiamati
+ anche comandi nativi. Questi comandi sono eseguiti direttamente dalla
+ shell e non chiamano nessun altro programma per essere eseguiti. Questi
+ comandi built-in possono essere diversi tra le varie shell.
+
+
+ Sh
+
+ Per la shell Bourne alcuni dei comandi built-in più
+ comunemente usati sono:
+
+
+
+
+
+
+
+ :
+
+ comando null
+
+
+
+ .
+
+ prende (legge ed esegue) i comandi da un file
+
+
+
+ case
+
+ condizionale case
+
+
+
+ cd
+
+ cambia la directory di lavoro ($HOME di
+ default)
+
+
+
+ echo
+
+ scrive una stringa su standard output
+
+
+
+ eval
+
+ valuta l'argomento specificato e ritorna il risultato alla
+ shell
+
+
+
+ exec
+
+ esegue il comando specificato rimpiazzando la shell
+ corrente
+
+
+
+ exit
+
+ esce dalla shell corrente
+
+
+
+ export
+
+ condivide le variabili di ambiente specificate con le
+ successive shell
+
+
+
+ for
+
+ condizionale di ciclo for
+
+
+
+ if
+
+ condizionale if
+
+
+
+ pwd
+
+ mostra la directory di lavoro corrente
+
+
+
+ read
+
+ legge una linea di input da standard input
+
+
+
+ set
+
+ setta le variabili di shell
+
+
+
+ test
+
+ valuta un'espressione come vera o falsa
+
+
+
+ trap
+
+ intrappola un tipo di segnale ed esegue comandi
+
+
+
+ umask
+
+ setta la maschera di default relativa ai permessi da
+ impostare per i nuovi file
+
+
+
+ unset
+
+ resetta le variabili di shell
+
+
+
+ wait
+
+ attente che un specifico processo termini
+
+
+
+ while
+
+ condizionale di ciclo while
+
+
+
+
+
+
+
+ Csh
+
+ Per la shell C i comandi built-in maggiormente usati sono:
+
+
+
+
+
+
+
+ alias
+
+ assegna un nome a una funzione
+
+
+
+ bg
+
+ mette un job in background
+
+
+
+ cd
+
+ cambia la directory di lavoro corrente
+
+
+
+ echo
+
+ scrive una stringa su standard output
+
+
+
+ eval
+
+ valuta gli argomenti specificati e ritorna il risultato
+ alla shell
+
+
+
+ exec
+
+ esegue il comando specificato rimpiazzando la shell
+ corrente
+
+
+
+ exit
+
+ esce dalla shell corrente
+
+
+
+ fg
+
+ porta un job in foreground
+
+
+
+ foreach
+
+ condizionale di ciclo for
+
+
+
+ glob
+
+ crea un'espansione dei nomi di file su una lista senza
+ tenere conto del carattere di escape \
+
+
+
+ history
+
+ stampa la storia dei comandi della shell
+
+
+
+ if
+
+ condizionale if
+
+
+
+ jobs
+
+ mostra o controlla i job attivi
+
+
+
+ kill
+
+ termina un processo specifico
+
+
+
+ limit
+
+ setta dei limiti sulle risorse di sistema
+
+
+
+ logout
+
+ termina la shell di login
+
+
+
+ nice
+ comando
+
+ abbassa la priorità di schedulazione del
+ comando specificato
+
+
+
+ nohup
+ comando
+
+ non termina il comando specificato quando la shell
+ esce
+
+
+
+ popd
+
+ estrae un record dallo stack delle directory e ritorna
+ nella directory estratta
+
+
+
+ pushd
+
+ cambia nella nuova directory specificata e aggiunge quella
+ corrente nello stack delle directory
+
+
+
+ rehash
+
+ ricrea la tabella hash dei percorsi (path) per i file
+ eseguibili
+
+
+
+ repeat
+
+ ripete un comando il numero di volte specificato
+
+
+
+ set
+
+ setta una variabile di shell
+
+
+
+ setenv
+
+ setta una variabile di ambiente per la shell corrente e per
+ quelle successive
+
+
+
+ source
+
+ prende (legge ed esegue) comandi da un file
+
+
+
+ stop
+
+ ferma uno specifico job in background
+
+
+
+ switch
+
+ condizionale switch
+
+
+
+ umask
+
+ setta la maschera di default relativa ai permessi da
+ impostare per i nuovi file
+
+
+
+ unalias
+
+ rimuove il nome alias specificato
+
+
+
+ unset
+
+ resetta le variabile di shell
+
+
+
+ unsetenv
+
+ resetta le variabili di ambiente
+
+
+
+ wait
+
+ attente la terminazione di tutti i processi in
+ background
+
+
+
+ while
+
+ condizionale di ciclo while
+
+
+
+
+
+
+
+
+ Variabili di ambiente
+
+ Le variabili di ambiente sono usate per fornire informazioni ai
+ programmi che si utilizzano. Si possono avere sia variabili
+ globali di ambiente sia variabili locali di
+ shell. Le variabili globali di ambiente sono inizializzate
+ attraverso la propria shell di login e i nuovi programmi e le nuove shell
+ ereditano l'ambiente della shell genitore. Le variabili locali di shell
+ sono usate solamente dalla shell corrente e non sono passate ad altri
+ processi. Un processo figlio non può passare una variabile al suo
+ processo padre.
+
+ Le variabili di ambiente correnti sono visualizzabili con i comandi
+ &man.env.1; o &man.printenv.1;. Alcune comuni variabili sono:
+
+
+
+
+
+
+
+ DISPLAY
+
+ Il display grafico da usare, esempio
+ nyssa:0.0
+
+
+
+ EDITOR
+
+ Il path (percorso) del proprio editor di default, esempio
+ /usr/bin/vi
+
+
+
+ GROUP
+
+ Il proprio gruppo di login, esempio
+ staff
+
+
+
+ HOME
+
+ Il path della propria home directory, esempio
+ /home/frank
+
+
+
+ HOST
+
+ Il nome host del proprio sistema, esempio
+ nyssa
+
+
+
+ IFS
+
+ I separatori di campo interni, generalmente alcuni spazi
+ bianchi (tab, spazio e new-line di default)
+
+
+
+ LOGNAME
+
+ Il nome del proprio login, esempio
+ frank
+
+
+
+ PATH
+
+ I path per ricercare i comandi, esempio
+ /usr/bin:/usr/ucb:/usr/local/bin
+
+
+
+ PS1
+
+ La stringa del prompt primario, solamente shell Bourne
+ ($ di default)
+
+
+
+ PS2
+
+ La stringa del prompt secondario, solamente shell Bourne
+ (> di default)
+
+
+
+ SHELL
+
+ La propria shell di login, esempio
+ /usr/bin/csh
+
+
+
+ TERM
+
+ Il proprio tipo di terminale, esempio
+ xterm
+
+
+
+ USER
+
+ Il proprio username, esempio
+ frank
+
+
+
+
+
+ Molte variabili di ambiente sono inizializzate automaticamente quando
+ si effettua il login. Queste possono essere modificate e si possono
+ definire altre variabili nei propri file di inizializzazione o in
+ qualunque momento all'interno della shell. Alcune variabili che è
+ possibile si voglia cambiare sono PATH e
+ DISPLAY. La variabile PATH
+ specifica le directory nelle quali saranno automaticamente cercati i
+ comandi richiesti. Alcuni esempi sono nello script di inizializzazione
+ di shell mostrato più avanti.
+
+ Per la shell C si può settare una variabile globale
+ di ambiente con un comando simile a quello usato per
+ visualizzare le variabili:
+
+ &prompt.user; setenv NOME valore
+
+ e per la shell Bourne:
+
+ $ NOME=valore; export NOME
+
+ Si possono elencare le proprie variabili globali di ambiente con i
+ comandi &man.env.1; o &man.printenv.1;. Si possono resettare queste
+ variabili con i comandi unsetenv (shell C) o
+ unset (shell Bourne).
+
+ Per settare una variabile locale di shell in
+ shell C si usa il comando set con la sintassi seguente.
+ Senza opzioni set mostra tutte le variabili
+ locali.
+
+ &prompt.user; set nome=valore
+
+ Per la shell Bourne si setta una variabile locale di shell
+ con:
+
+ $ nome=valore
+
+ Il valore corrente di una variabile è accessibile attraverso le
+ notazioni $nome o
+ ${nome}.
+
+
+
+ La shell Bourne, sh
+
+ La shell &man.sh.1; usa il file di inizializzazione
+ .profile posto nella home directory dell'utente.
+ Inoltre può esserci un file di inizializzazione globale del
+ sistema, esempio /etc/profile. In tal caso, il file
+ globale del sistema sarà eseguito prima di quello locale.
+
+ Un semplice file .profile potrebbe essere come
+ il seguente:
+
+
+PATH=/usr/bin:/usr/ucb:/usr/local/bin:. # setta il PATH
+export PATH # rende disponibile PATH per le sotto-shell
+# setta il prompt
+PS1="{`hostname` `whoami`} " # setta il prompt, $ di default
+# funzioni
+ls() { /bin/ls -sbF "$@";}
+ll() { ls -al "$@";}
+# setta il tipo di terminale
+stty erase ^H # setta Control-H come tasto di cancellazione
+eval `tset -Q -s -m ':?xterm'` # richiede il tipo di terminale, presupponendo
+ # xterm
+#
+umask 077
+
+ Ogni volta che si incontra il simbolo #, il resto di quella linea
+ viene trattato come un commento. Nella variabile PATH
+ ogni directory è separata da due punti (:) e il punto
+ (.) specifica che la directory corrente è nel
+ proprio path. Se il punto non è nel proprio path, lo stesso
+ diventa un semplice elemento per eseguire un programma nella directory
+ corrente:
+
+ ./programma
+
+ Non è una buona idea avere il punto (.)
+ nel proprio PATH, in modo tale da non eseguire
+ inavvertitamente un programma senza averne l'intenzione quando si usa il
+ comando cd per spostarsi in differenti
+ directory.
+
+ Una variabile settata in .profile rimane valida
+ solo nel contesto della shell di login, a meno che la si esporti con
+ export o si esegua .profile in
+ un'altra shell. Nell'esempio precedente PATH viene
+ esportato per le sotto-shell. Si può eseguire un file con il
+ comando built-int . di &man.sh.1;, esempio:
+
+ . ./.profile
+
+ Si possono creare proprie funzioni. Nell'esempio precedente la
+ funzione ll, risultato di ls -al,
+ lavora su un specifico file o directory.
+
+ Con &man.stty.1; il carattere di cancellazione viene settato a
+
+ Control
+ H
+ , che è usualmente il tasto di
+ Backspace.
+
+ Il comando &man.tset.1; richiede il tipo di terminale e assume questo
+ a xterm se si conferma con invio
+ <CR>. Questo comando è eseguito con un
+ comando built-in di shell, eval, che prende il
+ risultato del comando &man.tset.1; e lo usa come argomento per la shell.
+ In questo caso l'opzione di &man.tset.1; setta
+ le variabili TERM e TERMCAP e le
+ esporta.
+
+ L'ultima linea nell'esempio richiama il comando
+ umask, facendo in modo che i file e le directory create
+ non abbiano i permessi di lettura-scrittura-esecuzione per l'utenza
+ gruppo e altri.
+
+ Per altre informazioni su &man.sh.1;, digitare
+ man sh al prompt di shell.
+
+
+
+ La shell C, csh
+
+ La shell C, &man.csh.1;, usa i file di inizializzazione
+ .cshrc e .login. Alcune
+ versioni usano un file di inizializzazione globale del sistema, ad
+ esempio /etc/csh.login. Il proprio file
+ .login è eseguito solamente quando si effettua
+ il login. Il proprio file .cshrc è eseguito
+ ogni volta in cui si avvia una shell &man.csh.1;, incluso quando si
+ effettua il login. Questo file ha molte caratteristiche simili al file
+ .profile, ma un differente modo di composizione.
+ Qui si usano i comandi set o setenv
+ per inizializzare una variabile, dove set viene usato
+ per definire una variabile solo per la shell corrente, mentre
+ setenv definisce una variabile per la shell corrente e
+ per le altre sotto-shell. Le variabili di ambiente
+ USER, TERM e PATH
+ sono automaticamente importate ed esportate dalle variabili
+ user, term e path
+ della shell &man.csh.1;. Quindi setenv non è
+ necessario per queste variabili. La shell C usa il simbolo ~ per indicare
+ la directory home dell'utente in un path, come in
+ ~/.cshrc o per specificare una directory di login di
+ un altro utente, come in
+ ~username/.cshrc.
+
+ Alcune variabili predefinite usate dalla shell C sono:
+
+
+
+
+
+
+
+ argv
+
+ La lista degli argomenti della shell corrente
+
+
+
+ cwd
+
+ La directory di lavoro corrente
+
+
+
+ history
+
+ Imposta la dimensione della lista di history (storia) da
+ memorizzare
+
+
+
+ home
+
+ La directory home dell'utente, visualizzabile con
+ $HOME
+
+
+
+ ignoreeof
+
+ Quando viene settata, EOF (
+ Ctrl
+ D
+ ) viene ignorato dal terminale
+
+
+
+ noclobber
+
+ Quando viene settata si impedisce di redirigere l'output per
+ sovrascrivere file esistenti
+
+
+
+ noglob
+
+ Quando viene settata si impedisce l'espansione dei nomi di
+ file all'interno di un confronto con uno schema wild card
+
+
+
+ path
+
+ I path di ricerca dei comandi, visualizzabile con
+ $PATH
+
+
+
+ prompt
+
+ Setta il prompt della linea di comando (&prompt.user; di
+ default)
+
+
+
+ savehist
+
+ Numero di volte (di login) che bisogna mantenere memorizzata
+ la lista di history nel file .history
+
+
+
+ shell
+
+ Il path name completo della shell corrente, visualizzabile
+ con $SHELL
+
+
+
+ status
+
+ Il codice di stato di uscita dell'ultimo comando
+ (0=uscita normale, 1=comando fallito)
+
+
+
+ term
+
+ Il proprio tipo di terminale, visualizzabile con
+ $TERM
+
+
+
+ user
+
+ Il proprio nome utente, username, visualizzabile con
+ $USER
+
+
+
+
+
+ Un semplice file .cshrc potrebbe essere come il
+ seguente:
+
+
+set path=(/usr/bin /usr/ucb /usr/local/bin ~/bin . ) # setta il path
+set prompt = "{`hostname` `whoami` !} " # setta il promt primario ;
+ # % di default
+set noclobber # non redirige l'output su file esistenti
+set ignoreeof #ignora EOF (Ctrl+D) in questa shell
+set history=100 savehist=50 # mantiene una lista history di comandi e la
+ # memorizza tra vari (50) login
+# alias
+alias h history # alias h per history
+alias ls "/usr/bin/ls -sbF" # alias ls per ls -sbF
+alias ll ls -al # alias ll per ls -sbFal (combina queste
+ # opzioni con quelle di ls sopra citate)
+alias cd 'cd \!*;pwd' # alias cd per stampare la directory di lavoro
+ # corrente dopo aver cambiato directory
+umask 077
+
+ Alcune nuove caratteristiche che non sono state viste nel
+ file .profile (shell &man.sh.1;) sono
+ noclobber, ignoreeof e
+ history. Noclobber indica che
+ l'output non può essere rediretto su un file esistente, mentre
+ ignoreeof specifica che EOF (
+
+ Ctrl
+ D
+ ) non causa l'uscita dalla shell di login o l'uscita dal
+ sistema.
+
+ Con la caratteristica di history si possono
+ richiamare comandi eseguiti precedentemente e rieseguirli, eventualmente
+ con dei cambiamenti.
+
+ Un alias permette di usare uno specifico nome
+ alias al posto del comando completo. Nell'esempio
+ precedente, il risultato di digitare ls sarà
+ quello di eseguire /usr/bin/ls -sbF. Si può
+ verificare quale comando ls è nel proprio path
+ con il comando &man.which.1;, ad esempio:
+
+ &prompt.user; which ls
+ls: alias di /usr/bin/ls -sbF
+
+ Un semplice file .login potrebbe essere come il
+ seguente:
+
+ # .login
+stty erase ^H # setta Control+H come tasto di eliminazione
+set noglob # impedisce un confronto con uno schema wild card
+eval `tset -Q -s -m ':?xterm'` # chiede il tipo di terminale presupponendo
+ # xterm
+unset noglob # riabilita un confronto con uno schema wild card
+
+ Abilitando e disabilitando noglob intorno a
+ &man.tset.1; si impedisce di confondere il tipo di terminale con
+ qualche espansione dei nomi di file in un confronto con uno schema
+ (pattern) wild card.
+
+ Se si effettuano cambiamenti al proprio file di inizializzazione,
+ questi possono essere attivati eseguendo il file modificato. Per la shell
+ &man.csh.1; questo è possibile attraverso il comando
+ built-in source, esempio:
+
+ source .cshrc
+
+ Per altre informazioni circa la shell &man.csh.1; digitare
+ man csh al prompt di shell.
+
+
+
+ Controllo dei job
+
+ Con la shell C, &man.csh.1; e molte altre nuove shell, incluse alcune
+ nuove shell Bourne, si possono mettere i job in background apporrendo
+ & al comando, così come succede per la
+ shell &man.sh.1;. Questo può anche essere fatto, una volta
+ sottoposto il comando, digitando
+ Control
+ Z
+ per sospendere il job e quindi bg per
+ metterlo in background. Per riportarlo in foreground si digita
+ fg.
+
+ Si possono avere molti job eseguiti in background. Quando questi sono
+ in background, non sono connessi alla tastiera per l'input, ma possono
+ tuttavia mostrare l'output nel terminale, sparpagliandolo con qualsiasi
+ cosa ci sia digitata o mostrata attraverso il job corrente. Si può
+ avere la necessità di redirigere I/O in o da un file per un job in
+ background. La propria tastiera è solamente connessa al corrente
+ job in foreground.
+
+ Il comando built-in jobs permette di elencare i
+ propri job in background. Si può usare il comando &man.kill.1; per
+ terminare un job in background. In questi comandi, con la notazione
+ %n ci si riferisce
+ all'n-esimo job in background, rimpiazzando
+ n con il numero di job proveniente dall'output
+ di jobs. Quindi si termina il secondo job in
+ background con kill %2 e si riprende il terzo job in
+ foreground con fg %3.
+
+
+
+ History
+
+ La shell C, la shell Korn e molte altre shell avanzate, mantengono
+ informazioni sui comandi che sono stati eseguiti in shell. La
+ quantità di storia memorizzabile dipende dalla shell utilizzata.
+ Qui si descriveranno le caratteristiche di history della shell C.
+
+ Si possono usare le variabili history e
+ savehist per settare rispettivamente quanti comandi
+ della shell corrente memorizzare e per quanti login mantenerli.
+ Si può inserire in .cshrc la seguente linea
+ per memorizzare 100 comandi della shell corrente fino a 50 prossimi
+ login.
+
+ set history=100 savehist=50
+
+ La shell mantiene traccia della storia dei comandi tra un login e
+ l'altro memorizzandola nel file ~/.history.
+
+ Si può usare il comando built-in history per
+ richiamare i comandi eseguiti precedentemente, ad esempio per stampare gli
+ ultimi 10:
+
+ &prompt.user; history 10
+52 cd workshop
+53 ls
+54 cd Unix_intro
+55 ls
+56 pwd
+57 date
+58 w
+59 alias
+60 history
+61 history 10
+
+ Si può ripetere l'ultimo comando digitando
+ !!:
+
+ &prompt.user; !!
+53 ls
+54 cd Unix_intro
+55 ls
+56 pwd
+57 date
+58 w
+59 alias
+60 history
+61 history 10
+62 history 10
+
+ Si può ripetere un comando numerato introducendo il numero con
+ un !, esempio:
+
+ &prompt.user; !57
+date
+Tue Apr 9 09:55:31 EDT 1996
+
+ Si può ripetere un comando che inizia con qualche stringa,
+ introducendo la parte iniziale univoca della stringa con un
+ !, esempio:
+
+ &prompt.user; !da
+date
+Tue Apr 9 09:55:31 EDT 1996
+
+ Quando la shell valuta la linea di comando verifica subito la
+ sostituzione di history prima di interpretare qualche altra cosa. Per
+ usare uno di questi caratteri speciali in un comando di shell è
+ necessario usare un escape, o effettuare un quoting, apporrendo un \ prima
+ del carattere, esempio \!. I caratteri di sostituzione di history sono
+ sintetizzati nella tabella seguente:
+
+
+ Comandi di sostituzione di history per la shell C
+
+
+
+
+
+
+ Comando
+
+ Funzione sostitutiva
+
+
+
+
+
+ !!
+
+ ripete l'ultimo comando
+
+
+
+ !n
+
+ ripete il comando numero n
+
+
+
+ !-n
+
+ ripete l'n-esimo comando partendo
+ dall'ultimo
+
+
+
+ !str
+
+ ripete il comando che inizia con la stringa
+ str
+
+
+
+ !?str?
+
+ ripete il comando con all'interno
+ str
+
+
+
+ !?str?%
+
+ seleziona il primo argomento che ha
+ str all'interno
+
+
+
+ !:
+
+ ripete l'ultimo comando, generalmente usato con una
+ modifica
+
+
+
+ !:n
+
+ seleziona l'n-esimo argomento
+ dell'ultimo comando (n=0 è il nome del comando)
+
+
+
+ !:n-m
+
+ seleziona gli argomenti tra
+ l'n-esimo e
+ l'm-esimo argomento dell'ultimo
+ comando
+
+
+
+ !^
+
+ seleziona il primo argomento dell'ultimo comando (come
+ !:1)
+
+
+
+ !$
+
+ seleziona l'ultimo argomento dell'ultimo comando
+
+
+
+ !*
+
+ seleziona tutti gli argomenti del precedente comando
+
+
+
+ !:n*
+
+ seleziona gli argomenti
+ dall'n-esimo all'ultimo, incluso, del
+ precedente comando
+
+
+
+ !:n-
+
+ seleziona gli argomenti
+ dall'n-esimo all'ultimo, escluso, del
+ precedente comando
+
+
+
+ ^str1^str2^
+
+ rimpiazza str1 con
+ str2 nella prima occorrenza nel
+ precedente comando
+
+
+
+ !n:s/str1/str2/
+
+ sostituisce str1 con
+ str2 nella prima occorrenza
+ nell'n-esimo comando, finendo con una
+ sostituzione globale g
+
+
+
+
+
+
+ Altre informazioni sono descritte nelle pagine
+ man.
+
+
+
+ Cambiare la propria shell
+
+ Per cambiare la propria shell si usano generalmente i comandi
+ &man.chsh.1; o passwd -e. Il flag di opzione, qui
+ , può cambiare da sistema a sistema
+ ( su sistemi basati su BSD), quindi verificare le
+ proprie pagine man sul proprio sistema per un
+ uso corretto. Alcune volte questa caratteristica è disabilitata.
+ Se non si riesce a cambiare la propria shell contattare il proprio
+ amministratore di sistema (System Administrator).
+
+ La nuova shell deve essere un path name assoluto di una valida shell
+ sul sistema. Le shell disponibili variano da sistema a sistema. Inoltre
+ il path name assoluto della shell può cambiare. Normalmente, per
+ la shell Bourne e la shell C sono standard e sono:
+
+ /bin/sh
+
+ /bin/csh
+
+ Alcuni sistemi hanno anche la shell Korn standard normalmente
+ in:
+
+ /bin/ksh
+
+ Altre shell, che sono poco popolari e non distribuite normalmente
+ dal venditore di OS, sono &man.bash.1; e &man.tcsh.1;. Queste potrebbero
+ essere situate in /bin o in una directory locale,
+ esempio /usr/local/bin o
+ /opt/local/bin. Se si sceglie una shell non standard
+ del OS, ci si deve assicurare che quella shell e tutte le shell di login
+ disponibili sul sistema siano elencate nel file
+ /etc/shells. Se questo file esiste e la propria
+ shell non è elencata in esso, il demone per il trasferimento di
+ file, &man.ftpd.8;, ti impedirà una connessione ftp su questa
+ macchina. Se tale file non esiste, solamente account con shell
+ standard possono connettersi via &man.ftp.1;.
+
+ Si può sempre provare una shell prima di settarla come la
+ propria shell di default. Per fare questo si deve digitare il nome della
+ shell che si desidera utilizzare, come qualsiasi altro comando.
+
+
+
+
\ 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 @@
+
+
+
+ Caratteristiche speciali di Unix
+
+ Uno dei più importanti contributi che Unix ha dato ai sistemi
+ operativi è stato quello di fornire molti strumenti per creare lavori
+ ordinari e per ottenere le informazioni che si desiderano. Un altro
+ è rappresentato dal modo standard con cui i dati sono memorizzati e
+ trasmessi in un sistema Unix. Questo permette di trasferire dati
+ in un file, nel terminale video o in un programma,
+ oppure da un file, dalla tastiera o da un programma,
+ sempre in maniera uniforme. Il trattamento standardizzato dei dati supporta
+ due importanti caratteristiche di Unix: la redirezione di I/O e il
+ piping.
+
+ Con la redirezione dell'output, l'output di un
+ comando viene rediretto su un file piuttosto che sul terminale video.
+ Con la redirezione dell'input, l'input di un comando
+ viene preso da un file piuttosto che dalla tastiera. Sono possibili
+ altre tecniche di redirezione dell'input e dell'output come
+ si vedrà in seguito. Con il piping, l'output di
+ un comando può essere usato come input di un comando successivo.
+ In questo capitolo si discuterà di alcune delle caratteristiche e
+ degli strumenti disponibili per gli utenti Unix.
+
+
+ Descrittori di file
+
+ Ci sono 3 descrittori di file standard:
+
+
+
+
+
+
+
+
+
+ &man.stdin.4;
+
+ 0
+
+ Standard input per il programma
+
+
+
+ &man.stdout.4;
+
+ 1
+
+ Standard output dal programma
+
+
+
+ &man.stderr.4;
+
+ 2
+
+ Standard error (output) dal programma
+
+
+
+
+
+ Normalmente l'input viene preso dalla tastiera o da un file.
+ Generalmente l'output, sia &man.stdout.4; che &man.stderr.4;, scorre nel
+ terminale, ma può essere rediretto, uno o entrambi, su uno o
+ più file.
+
+ Si possono specificare descrittori di file addizionali, denotandoli
+ con un numero da 3 a 9 e redirigendo l'I/O attraverso questi.
+
+
+
+ Redirezione di file
+
+ La redirezione dell'output prende l'output di un comando e lo
+ posiziona nel file specificato. La redirezione dell'input legge il file
+ specificato come input per un comando. La tabella che segue sintetizza le
+ possibili modalità di redirezione.
+
+
+ Redirezione di file
+
+
+
+
+
+
+ SIMBOLO
+
+ REDIREZIONE
+
+
+
+
+
+ >
+
+ redirezione dell'output
+
+
+
+ >!
+
+ come sopra, ma non tiene conto dell'opzione
+ noclobber per &man.csh.1;
+
+
+
+ >>
+
+ appende l'output
+
+
+
+ >>!
+
+ come sopra, ma non tiene conto dell'opzione
+ noclobber su &man.csh.1; e crea il file se
+ non esiste
+
+
+
+ |
+
+ incalana (pipe) l'output nell'input di un altro
+ comando
+
+
+
+ <
+
+ redirezione dell'input
+
+
+
+ <<Stringa
+
+ legge da standard input fino a quando incontra una linea
+ contenente solo la parola Stringa.
+ Anche conosciuto come here document
+ (vedere il Capitolo 9)
+
+
+
+ <<\Stringa
+
+ come sopra, ma le sostituzioni di shell non sono
+ permesse
+
+
+
+
+
+ Un esempio di redirezione dell'output è:
+
+ cat file1 file2 >
+ file3
+
+ Il precedente comando concatena
+ file1
+ e file2 e redirige (manda)
+ l'output in file3. Se
+ file3 non esiste, viene
+ creato. Se esiste, verrà troncato a lunghezza zero prima che il
+ nuovo contenuto sia inserito, oppure, se l'opzione
+ noclobber della shell &man.csh.1; è abilitata,
+ il comando verrà rifiutato (vedere la shell &man.csh.1; nel
+ Capitolo 5). I file originali
+ file1 e
+ file2 rimarranno
+ come erano prima dell'esecuzione del comando, ossia due entità
+ separate.
+
+ L'output viene appeso a un file con la forma:
+
+ cat file1 >>
+ file2
+
+ Questo comando appende il contenuto di
+ file1 alla fine
+ dell'esistente file2
+ (file2 non viene
+ soprascritto).
+
+ L'input è rediretto (preso) da un file con la forma:
+
+ programma <
+ file
+
+ Questo comando prende l'input per il
+ programma da
+ file.
+
+ Per incanalare (pipe) l'output di un programma nell'input di un altro
+ programma si usa la forma:
+
+ comando|comando
+
+ Questo comando assegna l'output del primo comando all'input del
+ secondo comando.
+
+
+ Csh
+
+
+
+
+
+
+
+ >&
+ file
+
+ redirige &man.stdout.4; e &man.stderr.4; in
+ file
+
+
+
+ >>&
+ file
+
+ appende &man.stdout.4; e &man.stderr.4; in
+ file
+
+
+
+ |&
+ comando
+
+ crea una pipe tra &man.stdout.4;-&man.stderr.4; e il
+ comando
+
+
+
+
+
+ Per redirigere &man.stdout.4; e &man.stderr.4; in due file separati
+ si deve prima redirigere &man.stdout.4; in una sotto-shell,
+ così:
+
+ &prompt.user; (comando > out_file) >& err_file
+
+
+
+ Sh
+
+
+
+
+
+
+
+ 2>
+ file
+
+ redirige &man.stderr.4; in
+ file
+
+
+
+ > file
+ 2>&1
+
+ redirige &man.stdout.4; e &man.stderr.4; in
+ file
+
+
+
+ >> file
+ 2>&1
+
+ appende &man.stdout.4; e &man.stderr.4; in
+ file
+
+
+
+ 2>&1 |
+ comando
+
+ crea una pipe tra &man.stdout.4;-&man.stderr.4; e il
+ comando
+
+
+
+
+
+ Per redirigere &man.stdout.4; e &man.stderr.4; in due file separati
+ si può fare:
+
+ $ comando 1> out_file 2> err_file
+
+ oppure, data la redirezione di default per &man.stdout.4;:
+
+ $ comando > out_file 2> err_file
+
+ Con la shell Bourne si possono specificare altri descrittori di file
+ (da 3 a 9) e redirigere l'output attraverso questi. Questo può
+ essere fatto con la forma:
+
+
+
+
+
+
+
+ n>&m
+
+ redirige il descrittore di file
+ n sul descrittore di file
+ m
+
+
+
+
+
+ Questo meccanismo viene utilizzato per mandare &man.stderr.4; nello
+ stesso posto di &man.stdout.4;, 2>&1, quando
+ si vuole avere i messaggi di errore e i normali messaggi in un file
+ piuttosto che sul terminale. Se si vuole che solamente i messaggi di
+ errore vadano nel file, si può usare un descrittore di file di
+ supporto, 3. Si redirige prima 3 su 2, quindi 2 su 1 e in fine si
+ redirige 1 su 3.
+
+ $ (comando 3>&2 2>&1 1>&3) > file
+
+ Questo manda &man.stderr.4; in 1 e &man.stdout.4; in 3 che è
+ rediretto su 2. In questo modo, in effetti, si ribaltano i normali
+ significati dei descrittori di file 1 e 2. Si può sperimentare
+ tutto questo con l'esempio seguente:
+
+ $ (cat file 3>&2 2>&1 1>&3) > errfile
+
+ Quindi se file
+ è letto, l'informazione è scartata dall'output del
+ comando, ma se file non
+ può essere letto, i messaggi di errore sono messi nel file
+ errfile per usi
+ futuri.
+
+ I descrittori di file che sono stati creati possono essere chiusi
+ con:
+
+
+
+
+
+
+
+ m<&-
+
+ chiude un descrittore di file di input
+
+
+
+ <&-
+
+ chiude &man.stdin.4;
+
+
+
+ m>&-
+
+ chiude un descrittore di file di output
+
+
+
+ >&-
+
+ chiude &man.stdout.4;
+
+
+
+
+
+
+
+
+ Altri speciali simboli di comando
+
+ Oltre ai simboli di redirezione dei file ci sono altri
+ simboli speciali che si possono usare su linea di comando.
+ Alcuni di questi sono:
+
+
+
+
+
+
+
+ ;
+
+ separatore di comandi
+
+
+
+ &
+
+ esegue un comando in background
+
+
+
+ &&
+
+ esegue il comando seguente (a questo simbolo) solamente se il
+ comando precedente (a questo simbolo) è stato completato
+ con successo, esempio:
+ grep stringa file && cat
+ file
+
+
+
+ ||
+
+ esegue il comando seguente (a questo simbolo) solamente se il
+ comando precedente (a questo simbolo) non è stato
+ completato con successo, esempio:
+ grep stringa file ||
+ echo "Stringa non trovata."
+
+
+
+ ( )
+
+ i comandi tra parentesi sono eseguiti in una sotto-shell.
+ L'output della sotto-shell può essere manipolato come
+ specificato nelle precedenti sezioni.
+
+
+
+ ' '
+
+ segni di quoting letterali. All'interno di questi segni di
+ quoting non viene permesso ad alcuni caratteri di assumere
+ significati speciali.
+
+
+
+ \
+
+ considera il prossimo carattere letteralmente
+ (escape)
+
+
+
+ " "
+
+ segni di quoting regolari. All'interno di questi segni di
+ quoting sono permesse sostituzioni di variabili e di comando
+ (non disattivano $ e \ all'interno della stringa).
+
+
+
+ `comando`
+
+ prende l'output del comando e lo sostituisce nell'argomento
+ su linea di comando
+
+
+
+ #
+
+ ogni cosa che lo segue fino a un newline è un
+ commento
+
+
+
+
+
+ Inoltre, il carattere \ può essere usato per effettuare un
+ escape sul carattere di newline, in modo tale da continuare un
+ lungo comando su più di una linea fisica di testo.
+
+
+
+ Meta caratteri
+
+ La shell e alcuni programmi di manipolazione testo permettono i
+ meta-caratteri, chiamati anche
+ wild card, i quali vengono rimpiazzati dai
+ corrispondenti schemi (pattern). Per i nomi di file questi
+ meta-caratteri e i loro significati sono:
+
+
+
+
+
+
+
+ ?
+
+ indica un singolo carattere alla posizione
+ indicata
+
+
+
+ *
+
+ indica una stringa di zero o più
+ caratteri
+
+
+
+ [abc...]
+
+ indica un carattere tra quelli racchiusi
+
+
+
+ [a-e]
+
+ indica un carattere tra quelli nel range a, b, c, d,
+ e
+
+
+
+ [!def]
+
+ indica un carattere tra quelli non inclusi in parentesi,
+ solamente &man.sh.1;
+
+
+
+ {abc,bcd,cde}
+
+ indica un set di caratteri tra quelli inclusi in parentesi,
+ separati da una virgola (,) (niente spazi), solamente
+ &man.csh.1;
+
+
+
+ ~
+
+ indica la directory home dell'utente corrente, solamente
+ &man.csh.1;
+
+
+
+ ~user
+
+ indica la directory home dell'utente specificato, solamente
+ &man.csh.1;
+
+
+
+
+
+
+
+
\ 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 @@
+
+
+
+ Struttura di Unix
+
+
+ Il sistema operativo
+
+ Unix è un sistema operativo a strati. Lo strato più
+ interno è l'hardware il quale fornisce servizi al OS. Il sistema
+ operativo (OS), riferito in Unix come al kernel,
+ interagisce direttamente con l'hardware e fornisce i servizi ai programmi
+ utente. I programmi utente non necessitano di conoscere informazioni
+ sull'hardware. Devono solo sapere come interagire con il kernel ed
+ è quest'ultimo a fornire i servizi richiesti. Uno dei più
+ grandi fattori che ha contribuito alla richiesta di Unix da parte dei
+ programmatori è stato che molti programmi utente corretti
+ sono indipendenti dall'hardware sottostante, e ciò li rende
+ facilmente trasportabili su nuovi sistemi.
+
+ I programmi utente interagiscono con il kernel attraverso un set di
+ system call (chiamate di sistema) standard. Queste
+ system call chiedono dei servizi, servizi che saranno forniti dal kernel.
+ Così i servizi possono includere un accesso a un file: aprire,
+ chiudere, leggere, scrivere un file, creare un link o eseguire un file;
+ creare o aggiornare degli account (informazioni relative ad un utente come
+ nome, password, ecc.); cambiare il proprietario di un file o di una
+ directory; spostarsi in una nuova directory; creare, sospendere o
+ terminare un processo; abilitare l'accesso a un dispositivo hardware e
+ impostare dei limiti sulle risorse di sistema.
+
+ Unix è un sistema operativo multi-user
+ (multi-utente) e multi-tasking (multi-processo). Si
+ possono avere molti utenti loggati simultaneamente nel
+ sistema (multi-user), ognuno dei quali esegue alcuni programmi
+ (multi-tasking). È compito del kernel mantenere ogni processo e
+ ogni utente separato e regolare l'accesso all'hardware di sistema, inclusa
+ la cpu, la memoria, il disco e altri dispositivi di I/O.
+
+
+FIGURA 2.1 Struttura di un sistema Unix
+
+ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+| |
+| Programmi |
+| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
+| | | |
+| | Kernel | |
+| | _ _ _ _ _ _ _ _ _ _ _ _ _ _ | |
+| | | Hardware | | |
+| | |_ _ _ _ _ _ _ _ _ _ _ _ _ _| | |
+| | | |
+| | System Call | |
+| |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _| |
+| |
+|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|
+
+
+
+ Il file system
+
+ L'aspetto del file system di Unix è paragonabile alla struttura
+ rovesciata di un albero. Si parte dall'alto con la directory
+ root, denotata con /, per poi
+ scendere attraverso sotto-directory sottostanti la root.
+
+
+FIGURA 2.2 Struttura del file system di Unix
+
+
+ /(root) 1 livello
+ | | | | |
+ bin dev etc tmp usr 2 livello
+ | | | | | | | | |
+ sh date csh ttya cua0 passwd group bin lib 3 livello
+ |
+ gcc 4 livello
+
+ .... n livello
+
+ Ogni nodo è o un file o una
+ directory di file, dove quest'ultima può
+ contenere altri file e directory. Un file o una directory vengono
+ specificati attraverso il loro path name (percorso
+ del nome del file o della directory), il quale può essere un path
+ name assoluto oppure un path name relativo ad un'altra locazione. Un path
+ name assoluto inizia con la directory root, /,
+ seguono poi i rami del file system, ognuno separato da /,
+ fino a raggiungere il file desiderato, come per esempio:
+
+ /home/condron/source/xntp
+
+ Un path name relativo specifica un percorso relativo ad un altro path
+ name, che usualmente è la directory di lavoro corrente in cui ci si
+ trova. Sono ora introdotte due directory speciali:
+
+ . la directory corrente
+
+ .. la directory padre della directory
+ corrente
+
+ Quindi se si è in /home/frank e si
+ desidera specificare un path nel modo relativo si può usare:
+
+ ../condron/source/xntp
+
+ Questo indica che si deve prima salire di un livello di directory,
+ quindi passare attraverso la directory condron,
+ seguire la directory source e quindi
+ xntp.
+
+
+
+ Directory, file e inode Unix
+
+ Ogni directory e ogni file
+ sono inclusi nella loro directory padre. Nel caso della directory root,
+ la directory padre è se stessa. Una directory è un file
+ contenente una tabella che elenca i file contenuti nella directory stessa,
+ dove ai nomi dei file in lista vengono assegnati i corrispondenti numeri
+ di inode. Un inode è un file speciale,
+ progettato per essere letto dal kernel al fine di conoscere alcune
+ informazioni su ciascun file. Un inode specifica i permessi del file, il
+ proprietario del file, la data di creazione, quella dell'ultimo accesso e
+ quella dell'ultima modifica del file e la posizione fisica dei blocchi di
+ dati sul disco che contengono il file.
+
+ Il sistema non richiede qualche struttura particolare per i dati
+ contenuti nel file. Il file può essere ASCII o binario o una
+ combinazione di questi e può rappresentare dati testuali, uno
+ script di shell, un codice oggetto compilato per un programma, una tabella
+ di directory, robaccia o qualunque cosa si voglia.
+
+ Non c'è un'intestazione, una traccia, un'etichetta o il
+ carattere EOF come parte del file.
+
+
+
+ Programmi Unix
+
+ Un programma o un comando
+ interagisce con il kernel per fornire l'ambiente e realizzare le
+ funzioni richieste dall'utente. Un programma può essere: un file
+ di shell eseguibile, conosciuto come uno script di shell, un comando
+ interno (built-in) alla shell o un file sorgente compilato in codice
+ oggetto.
+
+ La shell è un interprete a linea di
+ comando. L'utente interagisce con il kernel attraverso la shell. Si
+ può scrivere uno script ASCII (testo) in modo tale da essere
+ interpretato da una shell.
+
+ I programmi di sistema sono generalmente in forma binaria, compilati
+ partendo da un codice sorgente in C. Questi si trovano in posti come
+ /bin, /usr/bin,
+ /usr/local/bin, /usr/ucb, ecc.
+ Questi comandi forniscono quelle funzionalità che normalmente si
+ pensano essere di Unix. Alcuni di questi sono &man.sh.1;, &man.csh.1;,
+ &man.date.1;, &man.who.1;, &man.more.1;, &man.ls.1; e molti altri.
+
+
+
+
\ 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 @@
+
+
+
+ Risorse di sistema e stampa
+
+
+ Risorse di sistema
+
+ Comandi per gestire le risorse di sistema.
+
+
+ Comandi per le risorse di sistema
+
+
+
+
+
+
+ Comando/Sintassi
+
+ Cosa fa
+
+
+
+
+
+ chsh (passwd -e/-s)
+ username
+ login_shell
+
+ cambia la shell di login dell'utente (spesso solo attraverso
+ il super-user)
+
+
+
+ date
+ [opzioni]
+
+ visualizza data e ora corrente
+
+
+
+ df [opzioni]
+ [risorsa]
+
+ riporta una sintesi dei blocchi del disco e degli inode
+ liberi e usati
+
+
+
+ du [opzioni]
+ [directory o file]
+
+ riporta la quantità di spazio di disco usato
+
+
+
+ hostname/uname
+
+ visualizza o setta (solamente super-user) il nome della
+ macchina in uso
+
+
+
+ kill [opzioni]
+ [-SEGNALE]
+ [pid#]
+ [%job]
+
+ manda un segnale al processo specificato dal numero di
+ processo id (pid#) o dal numero di
+ controllo del job (%n). Il segnale di
+ default termina il processo
+
+
+
+ man [opzioni]
+ comando
+
+ visualizza la pagina (man) del manuale
+ relativa al comando specificato
+
+
+
+ passwd
+ [opzioni]
+
+ setta o modifica la propria password
+
+
+
+ ps
+ [opzioni]
+
+ mostra lo stato dei processi attivi
+
+
+
+ script
+ file
+
+ salva tutto ciò che appare sullo schermo in un file
+ fino a quando viene eseguito il comando
+ exit
+
+
+
+ stty
+ [opzioni]
+
+ setta o visualizza le opzioni del terminale di
+ controllo
+
+
+
+ whereis [opzioni]
+ comando
+
+ riporta le posizioni del file binario, del sorgente e della
+ pagina man relative al comando specificato
+
+
+
+ which
+ comando
+
+ riporta il percorso (path) del comando specificato o l'alias
+ di shell in uso
+
+
+
+ who oppure w
+
+ riporta gli utenti loggati e i loro processi
+ in esecuzione
+
+
+
+
+
+
+ df - riepiloga i blocchi del disco e lo spazio usato
+
+ Il comando &man.df.1; è usato per riportare il numero di
+ blocchi del disco e di inode liberi e usati per ogni file system.
+ Il formato dell'output e le valide opzioni sono molto specifiche dal
+ sistema operativo e dalla versione del programma in uso.
+
+ Sintassi
+
+ df [opzioni]
+ [risorsa]
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ solo il file system locale (SVR4)
+
+
+
+
+
+ riporta in kilobyte (SVR4)
+
+
+
+
+
+ Esempi:
+
+ {Unix prompt 1} df
+Filesystem kbytes used avail capacity Mounted on
+
+/dev/sd0a 20895 19224 0 102% /
+/dev/sd0h 319055 131293 155857 46% /usr
+/dev/sd1g 637726 348809 225145 61% /usr/local
+/dev/sd1a 240111 165489 50611 77% /home/guardian
+peri:/usr/local/backup
+ 1952573 976558 780758 56% /usr/local/backup
+peri:/home/peri 726884 391189 263007 60% /home/peri
+peri:/usr/spool/mail
+ 192383 1081 172064 1% /var/spool/mail
+peri:/acs/peri/2
+ 723934 521604 129937 80% /acs/peri/2
+
+
+
+ du - mostra lo spazio del disco usato
+
+ Il comando &man.du.1; riporta la quantità di spazio di disco
+ usato per i file o per le directory specificate.
+
+ Sintassi
+
+ du [opzioni]
+ [directory o file]
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ mostra l'uso del disco per ogni file, non solo per le
+ sotto-directory
+
+
+
+
+
+ mostra solo la somma totale
+
+
+
+
+
+ riporta in kilobyte (SVR4)
+
+
+
+
+
+ Esempi:
+
+ {Unix prompt 3} du
+ 1 ./.elm
+ 1 ./Mail
+ 1 ./News
+20 ./uc
+86 .
+
+ {Unix prompt 4} du -a uc
+7 uc/Unixgrep.txt
+5 uc/editors.txt
+1 uc/.emacs
+1 uc/.exrc
+4 uc/telnet.ftp
+1 uc/uniq.tee.txt
+20 uc
+
+
+
+ ps - mostra lo stato dei processi attivi
+
+ Il comando &man.ps.1; è usato per mostrare i processi
+ correntemente eseguiti sul sistema. Il formato dell'output e le
+ valide opzioni dipendono molto dal sistema operativo e dalla versione
+ del programma in uso.
+
+ Sintassi
+
+ ps [opzioni]
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ BSD
+
+ SVR4
+
+
+
+
+
+
+
+
+
+ tutti i processi di tutti gli utenti
+
+
+
+
+
+
+
+ ambiente di esecuzione
+
+
+
+
+
+
+
+ processi del gruppo amministrativo come
+ well
+
+
+
+
+
+
+
+ formato lungo
+
+
+
+
+
+
+
+ relazione specifica di un utente
+
+
+
+
+
+
+
+ anche i processi non eseguiti da terminali
+
+
+
+
+
+
+
+ lista completa
+
+
+
+
+
+
+
+ riporta i primi 132 caratteri per linea
+
+
+
+
+
+
+ Poichè il comando &man.ps.1 è molto dipendente dal
+ sistema, si raccomanda di consultare le pagine
+ man del proprio sistema per i dettagli delle opzioni e per
+ l'interpretazione dell'output di &man.ps.1;.
+
+
+ Esempi:
+
+ {Unix prompt 5} ps
+PID TT STAT TIME COMMAND
+15549 p0 IW 0:00 -tcsh (tcsh)
+15588 p0 IW 0:00 man nice
+15594 p0 IW 0:00 sh -c less /tmp/man15588
+15595 p0 IW 0:00 less /tmp/man15588
+15486 p1 S 0:00 -tcsh (tcsh)
+15599 p1 T 0:00 emacs Unixgrep.txt
+15600 p1 R 0:00 ps
+
+
+
+ kill - termina un processo
+
+ Il comando &man.kill.1; manda un segnale a un processo,
+ generalmente per terminarlo.
+
+ Sintassi
+
+ kill [-SEGNALE]
+ id-processo
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ visualizza i segnali disponibili per kill
+
+
+
+
+
+ Esempi:
+
+ {Unix prompt 9} kill -l
+HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM URG STOP
+TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALRM PROF WINCH LOST USR1 USR2
+
+ Il segnale , anche specificato con
+ (a causa della nona posizione assunta nella lista
+ precedente), è il maggior segnale comunemente usato con
+ &man.kill.1;. A differenza di altri segnali, questo, una volta captato,
+ non può essere ignorato dal programma.
+
+ {Unix prompt 10} kill -9 15599
+[1] + Killed emacs Unixgrep.txt
+
+
+
+ who - mostra gli utenti attuali
+
+ Il comando &man.who.1; riporta chi è correntemente
+ loggato nel sistema.
+
+ Sintassi
+
+ who []
+
+ Esempi:
+
+ beauty condron> who
+wmtell ttyp1 Apr 21 20:15 (apple.acs.ohio-s)
+fbwalk ttyp2 Apr 21 23:21 (worf.acs.ohio-st)
+stwang ttyp3 Apr 21 23:22 (127.99.25.8)
+david ttyp4 Apr 21 22:27 (slip1-61.acs.ohi)
+tgardner ttyp5 Apr 21 23:07 (picard.acs.ohio-)
+awallace ttyp6 Apr 21 23:00 (ts31-4.homenet.o)
+gtl27 ttyp7 Apr 21 23:24 (data.acs.ohio-st)
+ccchang ttyp8 Apr 21 23:32 (slip3-10.acs.ohi)
+condron ttypc Apr 21 23:38 (lcondron-mac.acs)
+dgildman ttype Apr 21 22:30 (slip3-36.acs.ohi)
+fcbetz ttyq2 Apr 21 21:12 (ts24-10.homenet.)
+
+ beauty condron> who am i
+beauty!condron ttypc Apr 21 23:38 (lcondron-mac.acs)
+
+
+
+ whereis - riporta le locazioni del programma
+
+ Il comando &man.whereis.1; riporta le locazioni del file
+ sorgente, di quello binario e del file delle pagine man associate al
+ comando.
+
+ Sintassi
+
+ whereis [opzioni]
+ comando
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ riporta solamente i file binari
+
+
+
+
+
+ riporta solamente la sezione manuale
+
+
+
+
+
+ riporta solamente i file sorgenti
+
+
+
+
+
+ Esempi:
+
+ brigadier: condron [69]> whereis Mail
+Mail: /usr/ucb/Mail /usr/lib/Mail.help /usr/lib/Mail.rc /usr/man/man1/Mail.1
+
+ brigadier: condron [70]> whereis -b Mail
+Mail: /usr/ucb/Mail /usr/lib/Mail.help /usr/lib/Mail.rc
+
+ brigadier: condron [71]> whereis -m Mail
+Mail: /usr/man/man1/Mail.1
+
+
+
+ which - riporta il comando trovato
+
+ Il comando &man.which.1; riporta il nome del file che sarà
+ eseguito quando il comando specificato viene invocato. Questo
+ può essere un path name assoluto o il primo alias trovato nel
+ proprio path.
+
+ Sintassi
+
+ which comando
+
+ Esempi:
+
+ brigadier: condron [73]> which Mail
+/usr/ucb/Mail
+
+
+
+ hostname/uname - nome della macchina
+
+ Il comando &man.hostname.1; (uname -u su SysV)
+ riporta il nome host della macchina nella quale l'utente è
+ loggato, esempio:
+
+ brigadier: condron [91]> hostname
+brigadier
+
+ &man.uname.1; ha opzioni aggiuntive per visualizzare informazioni
+ circa l'hardware del sistema e la versione del software.
+
+
+
+ script - memorizza la propria schermata di I/O
+
+ Il comando &man.script.1; crea una documentazione della propria
+ sessione di I/O. Usando il comando &man.script.1; si possono catturare
+ tutti i dati trasmessi da e per il proprio terminale visuale fino
+ all'uscita (con exit) del programma stesso.
+ Può essere utile durante un processo di debugging, per
+ documentare le azioni che si stanno sperimentando o per avere una
+ copia stampabile per una attenta lettura successiva.
+
+ Sintassi
+
+ script []
+ [file] <...> exit
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ appende l'output al file
+
+
+
+
+
+ Di default, typescript è il nome del
+ file usato dal comando &man.script.1;.
+
+ Ci si deve ricordare di digitare exit per
+ terminare la propria sessione script e chiudere così il file
+ typescript.
+
+ Esempi:
+
+ beauty condron> script
+Script started, file is typescript
+
+ beauty condron> ps
+PID TT STAT TIME COMMAND
+23323 p8 S 0:00 -h -i (tcsh)
+23327 p8 R 0:00 ps
+18706 pa S 0:00 -tcsh (tcsh)
+23315 pa T 0:00 emacs
+23321 pa S 0:00 script
+23322 pa S 0:00 script
+3400 pb I 0:00 -tcsh (tcsh)
+
+ beauty condron> kill -9 23315
+
+ beauty condron> date
+Mon Apr 22 22:29:44 EDT 1996
+
+ beauty condron> exit
+exit
+Script done, file is typescript
+[1] + Killed emacs
+
+ beauty condron> cat typescript
+Script started on Mon Apr 22 22:28:36 1996
+
+beauty condron>ps
+PID TT STAT TIME COMMAND
+23323 p8 S 0:00 -h -i (tcsh)
+23327 p8 R 0:00 ps
+18706 pa S 0:00 -tcsh (tcsh)
+23315 pa T 0:00 emacs
+23321 pa S 0:00 script
+23322 pa S 0:00 script
+3400 pb I 0:00 -tcsh (tcsh)
+
+beauty condron>kill -9 23315
+
+beauty condron>date
+Mon Apr 22 22:29:44 EDT 1996
+
+beauty condron>exit
+exit
+
+script done on Mon Apr 22 22:30:02 1996
+
+ beauty condron>
+
+
+
+ date - data e ora corrente
+
+ Il comando &man.date.1; mostra la data e l'ora corrente.
+ Un super-user può modificare la data e l'ora.
+
+ Sintassi
+
+ date [opzioni]
+ [+formato]
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ usa Universal Time (o Greenwich Mean Time)
+
+
+
+
+
+ specifica il formato di output
+
+
+
+
+
+ abbreviazione giorni, da Sabato a Domenica
+
+
+
+
+
+ abbreviazione mesi, da Gennaio a Dicembre
+
+
+
+
+
+ giorno dell'anno, da 001 a 366
+
+
+
+
+
+ new-line
+
+
+
+
+
+ tab
+
+
+
+
+
+ ultime due cifre dell'anno, da 00 a 99
+
+
+
+
+
+ formato data MM/DD/YY
+
+
+
+
+
+ ora, da 00 a 23
+
+
+
+
+
+ minuti, da 00 a 59
+
+
+
+
+
+ secondi, da 00 a 59
+
+
+
+
+
+ formato ora HH:MM:SS
+
+
+
+
+
+ Esempi:
+
+ beauty condron> date
+Mon Jun 10 09:01:05 EDT 1996
+
+ beauty condron> date -u
+Mon Jun 10 13:01:33 GMT 1996
+
+ beauty condron> date +%a%t%D
+Mon 06/10/96
+
+ beauty condron> date '+%y:%j'
+96:162
+
+
+
+
+ Comandi di stampa
+
+
+ Comandi di stampa
+
+
+
+
+
+
+ Comando/Sintassi
+
+ Cosa fa
+
+
+
+
+
+ lpq (lpstat)
+ [opzioni]
+
+ mostra lo stato dei job (lavori) di stampa
+
+
+
+ lpr (lp)
+ [opzioni]
+ file
+
+ stampa con una stampante specifica
+
+
+
+ lprm (cancel)
+ [opzioni]
+
+ rimuove un job di stampa dalla coda di stampa
+
+
+
+ pr [opzioni]
+ [file]
+
+ filtra il file e lo stampa sul terminale
+
+
+
+
+
+ I comandi di stampa permettono di stampare file sullo standard output
+ (&man.pr.1;) o attraverso una stampante (&man.lp.1; e &man.lpr.1) fino a
+ filtrare l'output. I comandi di stampa di BSD e
+ SysV usano diversi nomi e diverse opzioni per
+ produrre lo stesso risultato: &man.lpr.1;, &man.lprm.1; e &man.lpq.1;
+ contro &man.lp.1;, cancel e lpstat
+ rispettivamente per BSD e SysV, sottopongono, cancellano e verificano lo
+ stato di un job (lavoro) di stampa.
+
+
+ lp/lpr - sottopone un job di stampa
+
+ Il comando &man.lp.1; o &man.lpr.1; sottopone il file specificato o
+ lo standard input al demone di stampa per essere stampato. Ad ogni job
+ viene assegnato un unico id di richiesta che può essere usato
+ in seguito per verificare o cancellare il job mentre è nella
+ coda di stampa.
+
+ Sintassi
+
+ lp [opzioni]
+ filename
+
+ lpr [opzioni]
+ filename
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ lp
+
+ lpr
+
+ funzione
+
+
+
+
+
+
+
+
+
+ numero di copie
+
+
+
+
+
+
+
+ titolo del job
+
+
+
+
+
+
+
+ nome della stampante
+
+
+
+
+
+ (default)
+
+ copia il file in coda prima di stamparlo
+
+
+
+ (default)
+
+
+
+ non copia il file in coda prima di stamparlo
+
+
+
+
+
+
+
+ opzioni addizionali, esempio
+
+
+
+
+
+
+ I file che iniziano con i simboli %! sono
+ considerati file contenenti comandi PostScript.
+
+ Esempi:
+
+ Per stampare il file ssh.ps:
+
+ &prompt.user; lp ssh.ps
+request id is lp-153 (1 file(s))
+
+ Questo sottopone il job nella coda della stampante di default,
+ lp, con l'id di richiesta
+ lp-153.
+
+
+
+ lpstat/lpq - verifica lo stato di un job di stampa
+
+ Si può verificare lo stato del proprio job di stampa con il
+ comando lpstat o &man.lpq.1;.
+
+ Sintassi
+
+ lpstat
+ [opzioni]
+
+ lpq [opzioni]
+ [job#]
+ [username]
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+
+
+ lpstat
+
+ lpq
+
+ funzione
+
+
+
+
+
+
+
+ (lp di default)
+
+ lista dei sistemi destinazione di default
+
+
+
+
+
+
+
+ riassume lo stato di stampa
+
+
+
+
+
+
+
+ stampa tutte le informazioni dello stato di stampa
+
+
+
+
+
+
+
+ lista dell'utente specificato
+
+
+
+
+
+
+
+ elenca le stampanti conosciute dal sistema
+
+
+
+
+
+
+
+ stampa lo stato della stampante specificata
+
+
+
+
+
+ Esempi:
+
+ &prompt.user; lpstat
+lp-153 frank 208068 Apr 29 15:14 on lp
+
+
+
+ cancel/lprm - cancella un job di stampa
+
+ Alcuni utenti possono cancellare solamente i loro job di
+ stampa.
+
+ Sintassi
+
+ cancel [id-richiesta]
+ [stampante]
+
+ lprm [opzioni]
+ [job#]
+ [username]
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+
+
+ cancel
+
+ lprm
+
+ funzione
+
+
+
+
+
+
+
+
+
+ specifica la stampante
+
+
+
+
+
+
+
+ tutti i job dell'utente
+
+
+
+
+
+
+
+ lista dell'utente
+
+
+
+
+
+ Esempi:
+
+ Per cancellare il job sottomesso in precedenza:
+
+ &prompt.user; cancel lp-153
+
+
+
+ pr - prepara file per la stampa
+
+ Il comando &man.pr.1; stampa l'intestazione e le informazioni
+ traccia che circoscrivono il file formattato. Si può specificare
+ il numero di pagine da stampare, le linee per pagina, le colonne, le
+ linee bianche, si può specificare la larghezza di pagina,
+ l'intestazione e le informazioni traccia e in che modo trattare il
+ carattere tab.
+
+ Sintassi
+
+ pr [opzioni]
+ file
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ inizia a stampare al numero di pagina specificato
+
+
+
+
+
+ numero di colonne
+
+
+
+
+
+ modifica l'opzione -colonne per
+ riempire le colonne nell'ordine round-robin
+
+
+
+
+
+ doppio spazio
+
+
+
+
+
+ spazio tab
+
+
+
+
+
+ intestazione per ogni pagina
+
+
+
+
+
+ linee per pagina
+
+
+
+
+
+ non stampa l'intestazione e la traccia per ogni
+ pagina
+
+
+
+
+
+ larghezza di pagina
+
+
+
+
+
+ Esempi:
+
+ Il file contenente la lista di libri di P. G. Wodehouse Lord
+ Emsworth dovrebbe essere stampato con 14 linee per pagina (incluse 5 di
+ intestazione e 5 (vuote) linee traccia), dove l'opzione
+ specifica in che modo convertire i tab:
+
+ &prompt.user; pr -l 14 -e42 wodehouse
+
+
+
+
+
+Apr 29 11:11 1996 wodehouse_emsworth_books Page 1
+
+
+
+
+Something Fresh [1915] Uncle Dynamite [1948]
+Leave it to Psmith [1923] Pigs Have Wings [1952]
+Summer Lightning [1929] Cocktail Time [1958]
+Heavy Weather [1933] Service with a Smile [1961]
+
+
+
+
+
+Apr 29 11:11 1996 wodehouse_emsworth_books Page 2
+
+
+
+
+Blandings Castle and Elsewhere [1935] Galahad at Blandings [1965]
+Uncle Fred in the Springtime [1939] A Pelican at Blandings [1969]
+Full Moon [1947] Sunset at Blandings [1977]
+
+
+
+
+
\ 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 @@
+
+
+
+ Manipolazione del testo
+
+
+ Sintassi delle espressioni regolari
+
+ Alcuni programmi di manipolazione del testo come
+ &man.grep.1;, &man.egrep.1;, &man.sed.1;, &man.awk.1; e &man.vi.1;
+ consentono di ricercare uno schema (pattern) piuttosto che una stringa
+ fissa. Questi schemi testuali sono conosciuti come espressioni
+ regolari. Si può formare un'espressione regolare
+ combinando caratteri normali con caratteri speciali, anche conosciuti
+ come meta-caratteri, secondo le successive regole.
+ Con queste espressioni regolari si può confrontare uno
+ schema su dati testuali. Le espressioni regolari si
+ presentano in tre diverse forme:
+
+
+
+
+
+
+
+ Ancoraggi
+
+ legano lo schema a una posizione sulla linea
+
+
+
+ Serie di caratteri
+
+ indicano un carattere in una singola posizione
+
+
+
+ Modificatori
+
+ specificano quante volte ripetere l'espressione
+ precedente
+
+
+
+
+
+ Segue la sintassi delle espressioni regolari. Alcuni programmi
+ accettano tutte queste sintassi, altri ne accettano solo alcune:
+
+
+
+
+
+
+
+ .
+
+ indica un singolo carattere eccetto
+ quello di newline
+
+
+
+ *
+
+ indica zero o più istanze del
+ singolo carattere (o meta-carattere) che lo precede
+
+
+
+ [abc]
+
+ indica un carattere tra quelli racchiusi
+
+
+
+ [a-d]
+
+ indica un carattere tra quelli compresi nel range
+
+
+
+ [^exp]
+
+ indica un carattere tra quelli non
+ inclusi nell'espressione
+
+
+
+ ^abc
+
+ l'espressione regolare deve iniziare all'inizio
+ della linea (Ancoraggio)
+
+
+
+ abc$
+
+ l'espressione regolare deve finire alla fine della
+ linea (Ancoraggio)
+
+
+
+ \
+
+ tratta il carattere successivo letteralmente. Viene
+ normalmente usato per mantenere inalterato il significato di un
+ carattere speciale come . e *.
+
+
+
+ \{n,m\}
+
+ confronta l'espressione regolare precedente un numero minimo
+ n di volte e un numero massimo
+ m di volte
+ (n e m
+ possono assumere valori tra 0 e 255). I simboli \{ e \}
+ dovrebbero essere intesi come singoli operatori. In questo caso
+ il simbolo \ che precede le parentesi non è il carattere di
+ escape, ma assume un nuovo significato.
+
+
+
+ \<abc\>
+
+ confronta l'espressione regolare racchiusa trattandola come
+ una singola parola. I limiti della parola sono definiti iniziando
+ con un newline o qualche altra cosa, eccetto una lettera, una
+ cifra o un underscore ( _ ), e finendo con la stessa cosa o con un
+ carattere di fine linea. Ancora, i simboli \< e \>
+ dovrebbero essere intesi come singoli operatori.
+
+
+
+ \(abc\)
+
+ salva lo schema racchiuso in un buffer. Possono essere
+ salvati per ogni linea fino a nove schemi. È possibile
+ riferirsi a questi schemi tramite la combinazione di caratteri
+ \n. Ancora una volta i simboli \( e \)
+ dovrebbero essere intesi come singoli operatori.
+
+
+
+ \n
+
+ dove n varia tra 1 e 9. Confronta
+ l'n-sima espressione precedentemente
+ salvata per la linea corrente. Le espressioni sono numerate
+ partendo da sinistra. Il simbolo \n
+ dovrebbe essere inteso come un singolo operatore.
+
+
+
+ &
+
+ mostra lo schema di ricerca precedente (usato al posto della
+ stringa)
+
+
+
+
+
+ Ci sono alcuni meta-caratteri usati solamente da &man.awk.1; e
+ &man.egrep.1;. Questi sono:
+
+
+
+
+
+
+
+ +
+
+ confronta una o più delle espressioni precedenti (a
+ questo simbolo)
+
+
+
+ ?
+
+ confronta zero o alcune delle espressioni precedenti (a
+ questo simbolo)
+
+
+
+ |
+
+ separatore. Confronta sia l'espressione precedente (a questo
+ simbolo) sia quella seguente
+
+
+
+ ( )
+
+ raggruppa le espressioni regolari all'interno delle parentesi
+ e applica una serie di confronti
+
+
+
+
+
+ Alcuni esempi di espressioni regolari comuni
+ sono:
+
+
+
+
+
+
+
+ espressione regolare
+
+ indica
+
+
+
+
+
+ cat
+
+ la stringa cat
+
+
+
+ .at
+
+ alcune occorrenze di un carattere precedente ad
+ at, come cat, rat, mat, bat, fat, hat
+
+
+
+ xy*z
+
+ alcune occorrenze di un x, seguite da
+ zero o più y e seguite da una
+ z.
+
+
+
+ ^cat
+
+ cat all'inizio della linea
+
+
+
+ cat$
+
+ cat alla fine della linea
+
+
+
+ \*
+
+ alcune occorrenze di un asterisco
+
+
+
+ [cC]at
+
+ cat o Cat
+
+
+
+ [^a-zA-Z]
+
+ alcune occorrenze di caratteri non alfabetici
+
+
+
+ [0-9]$
+
+ alcune linee che finiscono con un numero
+
+
+
+ [A-Z][A-Z]*
+
+ una o più lettere maiuscole
+
+
+
+ [A-Z]*
+
+ zero o alcune lettere maiuscole (in altre parole,
+ qualcosa)
+
+
+
+
+
+
+
+ Comandi di manipolazione del testo
+
+
+ Comandi di manipolazione del testo
+
+
+
+
+
+
+ Comando/Sintassi
+
+ Cosa fa
+
+
+
+
+
+ awk/nawk [opzioni]
+ file
+
+ esamina gli schemi (pattern) all'interno di un file ed
+ elabora i risultati
+
+
+
+ grep/egrep/fgrep
+ [opzioni]
+ 'stringa di ricerca'
+ file
+
+ ricerca nell'argomento (in questo caso probabilmente un
+ file) tutte le occorrenze della stringa di ricerca e le
+ elenca
+
+
+
+ sed [opzioni]
+ file
+
+ editor di flusso per manipolare file da uno script o da
+ linea di comando
+
+
+
+
+
+
+ grep
+
+ Questa sezione fornisce un'introduzione all'uso delle
+ espressioni regolari con &man.grep.1;.
+
+ L'utility &man.grep.1; viene usata per ricercare espressioni
+ regolari comuni che si presentano nei file Unix. Le espressioni
+ regolari, come quelle viste in precedenza, sono meglio specificate
+ all'interno di apostrofi (o caratteri di quoting singoli) quando
+ usate con l'utility &man.grep.1;. L'utility &man.egrep.1; fornisce
+ una capacità di ricerca attraverso un set esteso di
+ meta-caratteri. La sintassi dell'utility &man.grep.1;, alcune delle
+ possibili opzioni e alcuni semplici esempi sono mostrati di
+ seguito.
+
+ Sintassi
+
+ grep [opzioni]
+ expreg
+ [file]
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ ignora la differenza tra caratteri maiuscoli e
+ minuscoli
+
+
+
+
+
+ riporta solamente la somma del numero di linee contenenti
+ le corrispondenze, non le corrispondenze stesse
+
+
+
+
+
+ inverte la ricerca, visualizzando solo le linee senza
+ corrispondenza
+
+
+
+
+
+ mostra un numero di linea insieme alla linea su cui
+ è stata trovata una corrispondenza
+
+
+
+
+
+ lavora in silenzio, riportando solo lo stato
+ finale:
+
+
+
+
+
+ 0, per corrispondenze trovate
+
+
+
+
+
+ 1, per nessuna corrispondenza
+
+
+
+
+
+ 2, per errori
+
+
+
+
+
+ elenca i nomi dei file, ma non le linee, nei quali sono
+ state trovate corrispondenze
+
+
+
+
+
+ Esempi:
+
+ Si consideri il seguente file:
+
+ {Unix prompt 5} cat num.list
+ 1 15 fifteen
+ 2 14 fourteen
+ 3 13 thirteen
+ 4 12 twelve
+ 5 11 eleven
+ 6 10 ten
+ 7 9 nine
+ 8 8 eight
+ 9 7 seven
+10 6 six
+11 5 five
+12 4 four
+13 3 three
+14 2 two
+15 1 one
+
+ Ecco alcuni esempi di &man.grep.1; usando tale file.
+ Nel primo si ricerca il numero 15:
+
+ {Unix prompt 6} grep '15' num.list
+ 1 15 fifteen
+15 1 one
+
+ Ora si usa l'opzione per contare il numero di
+ linee che corrispondono al precedente criterio di ricerca:
+
+ {Unix prompt 7} grep -c '15' num.list
+2
+
+ Qui la ricerca è più generale: si selezionano tutte le
+ linee che contengono il carattere 1 seguito da un
+ 1 o un 2 o un
+ 5:
+
+ {Unix prompt 8} grep '1[125]' num.list
+ 1 15 fifteen
+ 4 12 twelve
+ 5 11 eleven
+11 5 five
+12 4 four
+15 1 one
+
+ Ora si ricercano tutte le linee che iniziano
+ con uno spazio:
+
+ {Unix prompt 9} grep '^ ' num.list
+ 1 15 fifteen
+ 2 14 fourteen
+ 3 13 thirteen
+ 4 12 twelve
+ 5 11 eleven
+ 6 10 ten
+ 7 9 nine
+ 8 8 eight
+ 9 7 seven
+
+ Ora tutte le linee che non iniziano con uno
+ spazio:
+
+ {Unix prompt 10} grep '^[^ ]' num.list
+10 6 six
+11 5 five
+12 4 four
+13 3 three
+14 2 two
+15 1 one
+
+ L'ultimo esempio può anche essere realizzato usando l'opzione
+ insieme all stringa di ricerca originale,
+ esempio:
+
+ {Unix prompt 11} grep -v '^ ' num.list
+10 6 six
+11 5 five
+12 4 four
+13 3 three
+14 2 two
+15 1 one
+
+ Ora si ricercano tutte le linee che iniziano
+ con carattere compreso tra 1 e
+ 9:
+
+ {Unix prompt 12} grep '^[1-9]' num.list
+10 6 six
+11 5 five
+12 4 four
+13 3 three
+14 2 two
+15 1 one
+
+ In questo esempio si ricercano alcune istanze di
+ t seguite da zero o alcune
+ occorrenze di e:
+
+ {Unix prompt 13} grep 'te*' num.list
+ 1 15 fifteen
+ 2 14 fourteen
+ 3 13 thirteen
+ 4 12 twelve
+ 6 10 ten
+ 8 8 eight
+13 3 three
+14 2 two
+
+ In questo esempio si ricercano alcune istanze di
+ t seguite da una o alcune
+ occorrenze di e:
+
+ {Unix prompt 14} grep 'tee*' num.list
+1 15 fifteen
+2 14 fourteen
+3 13 thirteen
+6 10 ten
+
+ Si può prendere il proprio input da un programma,
+ anzichè da un file. Qui si riportano alcune linee di output del
+ comando &man.who.1; che iniziano con la lettera
+ l.
+
+ {Unix prompt 15} who | grep '^l'
+lcondron ttyp0 Dec 1 02:41 (lcondron-pc.acs.)
+
+
+
+ sed
+
+ L'editor di flusso non interattivo &man.sed.1; manipola un
+ flusso di input, linea per linea, creando specifici cambiamenti e
+ mandando il risultato su standard output.
+
+ Sintassi
+
+ sed [opzioni]
+ comando_di_editing
+ [file]
+
+ Il formato per i comandi di editing è:
+
+ [indirizzo1[,indirizzo2]]
+ [funzione]
+ [argomenti]
+
+ dove gli indirizzi sono facoltativi e possono essere separati dalla
+ funzione tramite spazi o tab. La funzione è obbligatoria.
+ L'argomento può essere facoltativo o obbligatorio a seconda della
+ funzione usata.
+
+ Gli indirizzi di linea numerati sono numeri
+ decimali di linea che partono dalla prima linea di input e si
+ incrementano di uno per ogni linea. Se vengono stabiliti più
+ file di input il contatore continua cumulativamente attraverso i file.
+ L'ultima linea di input può essere specificata con il carattere
+ $.
+
+ Gli indirizzi di contesto sono schemi di
+ espressioni regolari racchiusi tra caratteri di slashe (/).
+
+ I comandi possono avere 0, 1 o 2 indirizzi separati da virgola con i
+ seguenti effetti:
+
+
+
+
+
+
+
+ # indirizzi
+
+ linee considerate
+
+
+
+
+
+ 0
+
+ tutte le linee di input
+
+
+
+ 1
+
+ solamente le linee che corrispondono agli indirizzi
+ specificati
+
+
+
+ 2
+
+ dalla prima linea che corrisponde al primo indirizzo fino
+ alla linea che corrisponde al secondo indirizzo, inclusa. Il
+ processo viene ripetuto per le linee interne.
+
+
+
+
+
+ Le funzioni di sostituzione permettono di
+ ricercare contesti e sono specificate nella forma:
+
+ s/schema_espressione_regolare/stringa_di_rimpiazzo/flag
+
+ e possono essere quotate con caratteri di quoting singoli (') se
+ sono specificate opzioni o funzioni aggiuntive. Questi schemi sono
+ identici agli indirizzi di contesto, eccetto che, mentre questi sono
+ normalmente chiusi tra slashe (/), nelle funzioni sono permessi alcuni
+ normali caratteri per specificare i delimitatori, oltre a newline e
+ spazio. La stringa di rimpiazzo non è uno schema di
+ espressione regolare; qui i caratteri non hanno significati speciali,
+ fatta eccezione di:
+
+
+
+
+
+
+
+ &
+
+ che sostituisce tale simbolo con la stringa
+ schema_espressione_regolare
+
+
+
+ \n
+
+ sostituisce tale simbolo con
+ l'n-esima stringa corrispondente a
+ schema_espressione_regolare chiusa
+ tra una coppia di '\(','\)'
+
+
+
+
+
+ Questi caratteri speciali possono essere messi in escape con il
+ carattere backslash (\) per rimuovere il loro significato
+ speciale.
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ script di editing
+
+
+
+
+
+ non stampa l'output di default, ma solamente quelle linee
+ specificate dalle funzioni p o
+ s///p
+
+
+
+
+
+ prende lo script di editing dal file specificato
+
+
+
+
+
+ Alcune valide flag per le funzioni sostitutive sono:
+
+
+
+
+
+
+
+
+
+ cancella lo schema
+
+
+
+
+
+ sostituzione globale dello schema
+
+
+
+
+
+ stampa le linee
+
+
+
+
+
+ Esempi:
+
+ Questo esempio modifica tutte le accidentali virgole (,) in una
+ virgola seguita da uno spazio (, ) quindi crea l'output:
+
+ &prompt.user; cat filey | sed s/,/,\ /g
+
+ Il seguente esempio rimuove tutte le accidentali
+ Jr precedute da uno spazio
+ (Jr) all'interno del file
+ filey:
+
+ &prompt.user; cat filey | sed s/\ Jr//g
+
+ Per realizzare operazioni multiple sull'input, si precede ogni
+ operazione con l'opzione (edit) e si quota la
+ stringa. Ad esempio, per filtrare le linee contenenti Date:
+ e From: e rimpiazzarle senza i due punti
+ (:):
+
+ &prompt.user; sed -e 's/Date: /Date /' -e 's/From: /From /'
+
+ Per visualizzare solamente le linee del file che iniziano con
+ Date: e includerne una che inizia con
+ Name::
+
+ &prompt.user; sed -n '/^Date:/,/^Name:/p'
+
+ Per stampare solamente le prime 10 linee dell'input (un rimpiazzo di
+ &man.head.1;):
+
+ &prompt.user; sed -n 1,10p
+
+
+
+ awk, nawk, gawk
+
+ &man.awk.1; è un linguaggio di elaborazione e ricerca di
+ schemi. Il suo nome deriva dalle ultime iniziali dei tre autori:
+ Alfred. V. Aho, Peter. J.Weinberger e Brian. W. Kernighan.
+ nawk è un nuovo
+ &man.awk.1;, una nuova versione del programma e &man.gawk.1; è
+ il gnu &man.awk.1;, da parte della Free Software
+ Foundation. Ogni versione è leggermente differente. Qui ci si
+ limiterà ad illustrare semplici esempi che potrebbero andar bene
+ per tutte le versioni. In alcuni sistemi operativi &man.awk.1; è
+ in realtà nawk.
+
+ &man.awk.1; ricerca schemi nel suo input e realizza le operazioni
+ specificate su ogni linea o sui campi di linea che contengono tali
+ schemi. Le espressioni dello schema di confronto per &man.awk.1;
+ possono essere specificate sia attraverso linea di comando, sia
+ inserendole in un file e usando l'opzione .
+
+ Sintassi
+
+ awk programma
+ [file]
+
+ dove programma è composto da uno o
+ più dei seguenti campi:
+
+ schema
+ { azione }
+
+ Ogni linea di input viene verificata con lo schema di confronto
+ insieme alla specifica azione che bisogna realizzare per ogni
+ corrispondenza trovata. Questo continua attraverso la completa sequenza
+ di schemi, quindi la prossima linea di input viene verificata.
+
+ L'input è diviso tra
+ record e campi. Il separatore
+ di record di default è newline e la
+ variabile NR tiene il conto dei record. Il
+ separatore di campo di default è uno spazio
+ bianco, spazi e tab, e la
+ variabile NF tiene il conto dei campi. I separatori
+ di input del campo, FS e del record,
+ RS, possono essere settati in qualsiasi momento per
+ farli corrispondere a singoli caratteri specifici. I separatori di
+ output del campo, OFS e del record,
+ ORS, possono essere modificati, se si desidera, con
+ singoli caratteri specifici.
+ $n, dove
+ n è un intero, viene usato per
+ rappresentare l'n-esimo campo di un record
+ di input, mentre $0 rappresenta l'intero record
+ di input.
+
+ BEGIN e END sono speciali
+ schemi che vengono verificati rispettivamente all'inizio dell'input,
+ prima che il primo campo sia letto e alla fine dell'input, dopo che
+ l'ultimo campo è stato letto.
+
+ La stampa è permessa attraverso
+ l'istruzione print e l'istruzione per la stampa
+ formattata printf.
+
+ Gli schemi (pattern) possono essere
+ espressioni regolari, espressioni aritmetiche relazionali, espressioni
+ di valutazione di stringhe e combinazioni buleane di alcune di queste.
+ In quest'ultimo caso gli schemi possono essere combinati con i seguenti
+ operatori buleani, usando le parentesi per definire le
+ combinazioni:
+
+
+
+
+
+
+
+ ||
+
+ or
+
+
+
+ &&
+
+ and
+
+
+
+ !
+
+ not
+
+
+
+
+
+ La separazione di schemi con virgole definisce un
+ range in cui lo schema è applicabile,
+ esempio:
+
+ /primo/,/ultimo/
+
+ seleziona tutte le linee partendo con quella che contiene
+ primo e continuando inclusivamente fino alla
+ linea che contiene ultimo.
+
+ Per selezionare le linee da 15 a 20 si usa il seguente
+ schema:
+
+ NR==15 , NR==20
+
+ Le espressioni regolari devono essere chiuse
+ tra slashe (/) e i meta-caratteri possono essere messi in escape con il
+ carattere di backslash (\). Le espressioni regolari possono essere
+ raggruppate con gli operatori seguenti:
+
+
+
+
+
+
+
+ |
+
+ per alternative separate
+
+
+
+ +
+
+ una o più
+
+
+
+ ?
+
+ zero o una
+
+
+
+
+
+ Un confronto di espressione regolare può essere specificato
+ con:
+
+
+
+
+
+
+
+ ~
+
+ contiene l'espressione
+
+
+
+ !~
+
+ non contiene l'espressione
+
+
+
+
+
+ Quindi il programma:
+
+ $1 ~ /[Ff]rank/
+
+ è vero se il primo campo, $1, contiene "Frank" o "frank"
+ dovunque all'interno del campo. Per confrontare un campo identico a
+ "Frank" o "frank" si usa:
+
+ $1 ~ /^[Ff]rank$/
+
+ Le espressioni relazionali sono permesse usando
+ i seguenti operatori relazionali:
+
+
+
+
+
+
+
+ <
+
+ minore di
+
+
+
+ <=
+
+ minore o uguale a
+
+
+
+ = =
+
+ uguale a
+
+
+
+ >=
+
+ maggiore o uguale a
+
+
+
+ !=
+
+ non uguale a
+
+
+
+ >
+
+ maggiore di
+
+
+
+
+
+ Non si può conoscere su due piedi se le variabili sono
+ stringhe o numeri. Se nessun operando è riconosciuto per essere
+ un numero, sono realizzati confronti di stringhe. Altrimenti, viene
+ realizzata una comparazione numerica. In mancanza di informazioni per
+ il contrario, viene realizzata una comparazione di stringa, così
+ questa:
+
+ $1 > $2
+
+ verrà valutata con valori di tipo stringa. Per assicurarsi
+ una valutazione numerica, costruire qualcosa simile a:
+
+ ( $1 + 0 ) > $2
+
+ Le funzioni matematiche exp, log e sqrt sono di
+ tipo built-in.
+
+ Altre funzioni built-in sono:
+
+
+
+
+
+
+
+ index(s,t)
+
+ ritorna la posizione della stringa
+ s dove si presenta il primo
+ t o 0 se non esiste
+
+
+
+ lenght(s)
+
+ ritorna la lunghezza della stringa
+ s
+
+
+
+ substr(s,m,n)
+
+ ritorna l'n-esimo carattere della
+ sottostringa di s, iniziando dalla
+ posizione m
+
+
+
+
+
+ Gli array sono dichiarati automaticamente
+ quando vengono usati, per esempio:
+
+ arr[i]=$1
+
+ assegna il primo campo del corrente record di input all'i-esimo
+ elemento dell'array.
+
+ Le espressioni di controllo di flusso if-else,
+ while e for sono permesse con
+ la sintassi del C:
+
+ for (i=1; i <= NF; i++) {azioni}
+
+ while (i<=NF) {azioni}
+
+ if (i<NF) {azioni}
+
+ Opzioni generali
+
+
+
+
+
+
+
+
+
+ legge i comandi dal file specificato
+
+
+
+
+
+ usa il carattere c come il
+ carattere di separatore di campo
+
+
+
+
+
+ Esempi:
+
+ &prompt.user; cat filex | tr a-z A-Z | awk -F: '{printf("7R %-6s %-9s %-24s \n",$1,$2,$3)}' > upload.file
+
+ effettua cat su filex, che
+ è formattato in questo modo:
+
+ nfb791:99999999:smith
+7ax791:999999999:jones
+8ab792:99999999:chen
+8aa791:999999999:mcnulty
+
+ cambiando tutti i caratteri minuscoli in caratteri maiuscoli con
+ l'utility &man.tr.1; e formattando il file come mostrato di seguito, il
+ quale viene scritto nel file upload.file
+
+ 7R NFB791 99999999 SMITH
+7R 7AX791 999999999 JONES
+7R 8AB792 99999999 CHEN
+7R 8AA791 999999999 MCNULTY
+
+
+
+
+
\ No newline at end of file