Index: head/it_IT.ISO8859-15/articles/explaining-bsd/article.xml
===================================================================
--- head/it_IT.ISO8859-15/articles/explaining-bsd/article.xml (revision 52098)
+++ head/it_IT.ISO8859-15/articles/explaining-bsd/article.xml (nonexistent)
@@ -1,615 +0,0 @@
-
-
-
-
- Panoramica su BSD
-
-
- GregLehey
- grog@FreeBSD.org
-
-
-
- &tm-attrib.freebsd;
- &tm-attrib.amd;
- &tm-attrib.apple;
- &tm-attrib.linux;
- &tm-attrib.opengroup;
- &tm-attrib.sun;
- &tm-attrib.xfree86;
- &tm-attrib.general;
-
-
- $FreeBSD$
-
- $FreeBSD$
-
-
- Nel mondo open source, la parola Linux è quasi
- sinonimo di Sistema Operativo, ma non si tratta del solo
- sistema operativo &unix; open source. Secondo
- l'Internet
- Operating System Counter, ad Aprile del 1999 il 31.3% delle
- macchine connesse in rete ha in esecuzione Linux.
- Il 14.6% fa girare BSD &unix;.
- Alcuni dei più grandi operatori del web, come Yahoo!, usano BSD. Il server
- FTP più affollato del mondo nel 1999 (ora defunto), ftp.cdrom.com, usa BSD per
- trasferire 1.4 TB di dati al giorno. Chiaramente questo non è
- un mercato di nicchia: BSD è un segreto ben mantenuto.
-
- Dunque, qual è il segreto? Perché BSD non è
- conosciuto meglio? Questo documento risponde a questa e ad altre
- domande.
-
- In questo documento, le differenze tra BSD e Linux verranno
- evidenziate così.
-
- &trans.it.surrender;
-
-
-
-
- Cos'è BSD?
-
- BSD sta per Berkeley Software Distribution. È
- il nome delle distribuzioni di codice sorgente dell'Università
- della California, Berkeley, che erano originariamente estensioni al
- sistema operativo &unix; del settore Ricerca della AT&T.
- Molti progetti open source di sistemi operativi sono basati
- su una versione di questo codice sorgente noto come
- 4.4BSD-Lite. Inoltre, essi comprendono un gran numero di
- pacchetti provenienti da altri progetti Open Source, incluso, in
- particolare, il progetto GNU. L'intero sistema operativo
- comprende:
-
-
-
- Il kernel BSD, che gestisce lo scheduling dei processi, l'utilizzo
- della memoria, il supporto multiprocessore (SMP), i driver dei
- vari dispositivi, ecc.
-
- Diversamente dal kernel Linux, ci sono differenti
- kernel BSD con differenti caratteristiche.
-
-
-
- La libreria C, le API di base per il sistema.
-
- La libreria C BSD è basata su codice proveniente
- da Berkeley, non dal progetto GNU.
-
-
-
- Utilità come shell, file manager, compilatori e
- linker.
-
- Alcune delle applicazioni derivano dal
- progetto GNU, altre no.
-
-
-
- L'X Window System, che gestisce la visualizzazione grafica.
-
- L'X Window System usato nella maggior parte delle versioni di
- BSD viene mantenuto da uno dei due progetti separati, il
- progetto &xfree86; e il
- progetto X.Org.
- Questo è lo stesso codice usato da Linux. BSD in genere non
- specifica un desktop grafico come GNOME o KDE,
- anche se questi sono disponibili.
-
-
-
- Molti altri programmi ed utilità.
-
-
-
-
-
- Cosa, un vero &unix;?
-
- I sistemi operativi BSD non sono cloni, ma derivati open source
- del sistema operativo &unix; dell'AT&T Research, che è anche
- l'antenato del moderno &unix; System V. Questo potrebbe sorprendere.
- Come è potuto accadere questo, se la AT&T non ha mai rilasciato
- il suo codice come open source?
-
- È vero che lo &unix; AT&T non è open source, e nel
- senso del copyright BSD in definitiva non è
- &unix;, ma d'altro canto l'AT&T ha importato sorgenti da altri
- progetti, in maniera rilevante dal Computer Sciences Research Group
- dell'Università della California a Berkeley, CA. Iniziato nel
- 1976, il CSRG ha iniziato a rilasciare nastri con il loro software,
- chiamandolo Berkeley Software Distribution o
- BSD.
-
- Le versioni iniziali di BSD consistevano principalmente di programmi
- utente, ma questo cambiò drammaticamente quando il CSRG
- sottoscrisse un contratto con la
- Defense Advanced Projects Research Agency (DARPA) per migliorare
- i protocolli di comunicazione della loro rete, ARPANET. I nuovi
- protocolli furono conosciuti come Internet Protocols,
- e in seguito come TCP/IP, ai nomi dei protocolli
- più importanti. La prima implementazione distribuita in maniera
- estesa fu parte di 4.2BSD, nel 1982.
-
- Nel corso degli '80, sorsero un certo numero di compagnie
- che producevano workstation. Molti preferirono usare &unix; su licenza
- piuttosto che sviluppare da soli un nuovo sistema operativo.
- In particolare, la Sun Microsystems rilicenziò &unix; ed
- implementò una versione commerciale di 4.2BSD, che chiamò
- SunOS. Quando alla AT&T stessa fu permesso di vendere &unix;
- commercialmente, cominciarono con una implementazione ridotta all'osso
- nota come System III, presto seguita da System V.
- Il codice fondamentale di System V non comprendeva la parte di rete,
- dunque tutte le implementazioni includevano software addizionale tratto
- da BSD, incluso il software legato al TCP/IP, ma anche utilità come
- la shell csh e l'editor vi.
- Complessivamente, questi miglioramenti furono conosciuti
- come le Estensioni Berkeley.
-
- Il nastro BSD conteneva codice AT&T e dunque richiedeva
- una licenza per il sorgente &unix;. Dal 1990, il finanziamento del CSRG
- si stava esaurendo, e se ne stava per affrontare la chiusura.
- Alcuni membri del gruppo decisero di rilasciare il codice BSD,
- che era Open Source, senza il codice proprietario della AT&T.
- Ciò accadde infine con il Networking Tape 2,
- in genere noto come Net/2. Net/2 non era un sistema
- operativo completo: mancava circa il 20% del codice del kernel. Uno dei
- membri del CSRG, William F. Jolitz, scrisse il codice rimanente e lo
- rilasciò all'inizio del 1992 come 386BSD.
- Allo stesso tempo, un altro gruppo di ex membri del CSRG formò una
- compagnia chiamata Berkeley Software
- Design Inc. e rilasciò una versione beta di un sistema
- operativo chiamato BSD/386,
- che era basato sugli stessi sorgenti. Il nome del sistema operativo
- è cambiato di recente in BSD/OS.
-
- 386BSD non divenne mai un sistema operativo stabile. Invece, due
- altri progetti se ne distaccarono nel 1993:
- NetBSD e
- FreeBSD.
- I due progetti presero inizialmente direzioni divergenti, a causa della
- differente pazienza nell'attendere miglioramenti a
- 386BSD: la gente di NetBSD cominciò all'inizio dell'anno,
- e la prima versione di FreeBSD non fu pronta fino alla fine
- dell'anno. Nel frattempo, i codici erano diventati abbastanza differenti
- da renderne difficile la fusione. Inoltre, i progetti avevano obiettivi
- differenti, come vedremo in seguito. Nel 1996,
- OpenBSD si ramificò
- da NetBSD, e nel 2003,
- DragonFlyBSD si
- ramificò da FreeBSD.
-
-
-
- Perché BSD non è più conosciuto?
-
- Per un certo numero di ragioni, BSD è relativamente
- sconosciuto:
-
-
-
- Gli sviluppatori BSD sono spesso più interessati
- a ripulire il loro codice che a fagli pubblicità.
-
-
-
- Molta della popolarità di Linux è dovuta a fattori
- esterni al progetto Linux, come la stampa, e le compagnie formate per
- fornire servizi relativi a Linux. Fino a poco tempo fa,
- la varie versioni di BSD open source non avevano tali spinte.
-
-
-
- Gli sviluppatori BSD tendono ad avere più esperienza
- di quelli di Linux, ed hanno meno interesse nel rendere il sistema
- facile da usare.
- I nuovi arrivati tendono a sentirsi più a loro agio con
- Linux.
-
-
-
- Nel 1992, l'AT&T citò in giudizio
- BSDI,
- il produttore di BSD/386, sostenendo che il prodotto conteneva
- codice sotto copyright della AT&T. Il caso fu risolto in
- tribunale nel 1994, ma lo spettro della causa continua a perseguitare
- alcune persone. Nel marzo 2000 un articolo pubblicato sul web
- sosteneva che il caso era stato concluso
- recentemente.
-
- Un dettaglio che venne chiarito dall'azione legale fu il nome:
- negli anni '80, BSD era stato conosciuto come BSD
- &unix;.
- Con l'eliminazione delle ultima vestigia del codice AT&T da BSD,
- si era perso anche il diritto di usare il nome &unix;. Per questo
- noterete riferimenti nei libri al sistema operativo 4.3BSD
- &unix; ed al sistema operativo 4.4BSD.
-
-
-
- C'è una certa percezione che il progetto BSD sia
- frammentato e belligerante. Il Wall
- Street Journal parlò di
- balcanizzazione dei progetti BSD. Come per l'azione
- legale, questa percezione si basa principalmente su vecchie
- storie.
-
-
-
-
-
- Paragone tra BSD e Linux
-
- Dunque qual'è l'effettiva differenza tra, diciamo, Debian
- Linux e FreeBSD? Per l'utente medio, la differenza è
- sorprendentemente piccola: entrambi sono sistemi operativi tipo &unix;.
- Entrambi vengono sviluppati da progetti non commerciali (questo non si
- applica a molte altre distribuzioni di Linux, ovviamente). Nella sezione
- seguente, daremo un'occhiata a BSD e lo paragoneremo a Linux.
- La descrizione si applica molto da vicino a FreeBSD, che conta per un 80%
- delle installazioni BSD, ma le differenza da NetBSD, OpenBSD e DragonFlyBSD
- sono piccole.
-
-
- Chi possiede BSD?
-
- Nessuna persona o società possiede BSD. Esso è creato
- e distribuito da una comunità di persone con grande preparazione
- tecnica e voglia di fare che contribuiscono da tutto il mondo.
- Alcuni dei componenti di BSD sono progetti open source a se stanti gestiti
- da diversi responsabili.
-
-
-
- Come viene sviluppato ed aggiornato BSD?
-
- I kernel BSD vengono sviluppati ed aggiornati
- seguendo il modello di sviluppo open source. Ogni progetto mantiene
- un albero dei sorgenti liberamente accessibile in
- un Concurrent Versions
- System, un sistema di gestione delle versioni concorrenti,
- che contiene tutti i file sorgenti del progetto,
- inclusa la documentazione ed altri file inerenti. Il CVS
- permette agli utenti di estrarre (in sostanza,
- estrarre una copia di) ogni versione desiderata del sistema.
-
- Un grande numero di sviluppatori da tutto il mondo contribuisce al
- miglioramento di BSD. Essi sono divisi in tre grandi gruppi:
-
-
-
- I contributor scrivono codice o
- documentazione. Non gli è permesso di effettuare il commit
- (aggiungere codice) direttamente all'albero dei sorgenti.
- Affinché il loro codice sia incluso nel sistema, esso
- deve essere rivisto e controllato da uno sviluppatore registrato,
- noto come committer.
-
-
-
- I committer sono sviluppatori
- con accesso in scrittura all'albero dei sorgenti.
- Per poter divenire un committer, un individuo deve dimostrare
- abilità nell'area nella quale è attivo.
-
-
- È a discrezione del committer la volontà di
- confrontarsi con qualcuno prima di effettuare cambiamenti. In
- generale, un committer con esperienza può effettuare
- cambiamenti che sono ovviamente corretti senza interrogare nessuno.
- Ad esempio, un committer del progetto di documentazione può
- correggere errori tipografici o grammaticali senza un confronto con
- altri. D'altro canto, dagli sviluppatori che stanno per effettuare
- cambiamenti profondi o complessi ci si aspetta che sottopongano i
- cambiamenti a revisione prima di renderli effettivi. In casi
- estremi, un membro del core team, con una funzione simile a un Capo
- Architetto, può ordinare che i cambiamenti siano rimossi
- dall'albero, un processo noto come marcia
- indietro.
- Tutti i committer ricevono una lettera che descrive ogni
- modifica individuale, dunque non è possibile effettuare un
- commit segretamente.
-
-
-
- Il Core Team. FreeBSD e NetBSD
- hanno ognuno un core team che gestisce il progetto. I
- core team si sono modificati nel corso del progetto, ed i loro
- ruoli non sempre sono ben definiti. Non è necessario essere
- uno sviluppatore per far parte del core team, anche se è
- normale che sia così. Le regole
- per il core team variano da un progetto ad un altro, ma in
- generale chi ne fa parte ha più autorità
- nell'indirizzamento del progetto rispetto agli altri membri.
-
-
-
- Questa organizzazione differisce da Linux in vari modi:
-
-
-
- Nessuna persona controlla il contenuto del sistema. In
- pratica, questa differenza è sopravvalutata, poiché
- il Capo Architetto può richiedere che il codice sia
- rimosso, ed anche nel progetto Linux viene permesso a
- molte persone di effettuare cambiamenti.
-
-
-
- D'altra parte, c'è un deposito
- centrale, un punto singolo dove è possibile trovare i
- sorgenti dell'intero sistema, incluse tutte le vecchie
- versioni.
-
-
-
- I progetti BSD mantengono l'intero Sistema
- Operativo, non solo il kernel. Questa distinzione
- è utile solo marginalmente: né BSD né Linux
- sono utili senza applicazioni. Le applicazioni usate su BSD sono
- spesso le stesse usate su Linux.
-
-
-
- Come risultato di un mantenimento formalizzato
- di un singolo CVS per l'albero dei sorgenti, lo sviluppo di BSD
- è chiaro, ed è possibile accedere ad ogni versione del
- sistema dal numero di release o dalla data.
- Il CVS permette anche aggiornamenti incrementali del sistema: ad
- esempio, il repository di FreeBSD viene aggiornato più o meno
- 100 volte al giorno. La maggior parte dei cambiamenti sono
- piccoli.
-
-
-
-
-
- Release di BSD
-
- FreeBSD, NetBSD and OpenBSD forniscono il sistema in tre
- release differenti. Come per Linux, alle release
- vengono assegnati dei numeri come 1.4.1 o 3.5. Inoltre, il numero di
- versione ha un suffisso che indica il suo scopo:
-
-
-
- la versione di sviluppo del sistema è chiamata
- CURRENT. FreeBSD assegna un numero
- alla CURRENT, ad esempio FreeBSD 5.0-CURRENT. NetBSD usa uno
- schema di denominazione leggermente differente
- ed aggiunge un suffisso di una singola lettera che indica
- i cambiamenti nell'interfaccia interna, ad esempio NetBSD
- 1.4.3G. OpenBSD non assegna un numero
- (OpenBSD-current).
- Tutti gli sviluppi del sistema vanno in questo ramo.
-
-
-
- A intervalli regolari, tra le due e le quattro volte all'anno, i
- progetti fanno uscire una versione RELEASE
- del sistema, disponibile su CD-ROM e come libero download da siti
- FTP, ad esempio OpenBSD 2.6-RELEASE o NetBSD 1.4-RELEASE.
- La versione RELEASE è intesa per gli utenti finali ed
- è la versione normale del sistema. NetBSD fornisce anche
- patch release, versioni con solo piccole
- correzioni, con una terza cifra, ad esempio NetBSD 1.4.2.
-
-
-
- Quando vengono trovati dei bug in una versione RELEASE,
- vengono corretti, e le correzioni vengono aggiunte all'albero del
- CVS. In FreeBSD, la versione risultante viene detta
- STABLE, mentre in NetBSD ed OpenBSD continua
- a chiamarsi RELEASE. Caratteristiche minori possono essere aggiunte
- a questo ramo dopo un periodo di test nel ramo CURRENT.
-
-
-
- In contrasto, Linux mantiene due alberi di codice
- differenti: la versione stabile e la versione di sviluppo.
- Le versioni stabili hanno un numero di versione pari, come 2.0, 2.2 o
- 2.4. Le versioni di sviluppo hanno numero di versione dispari, come
- 2.1, 2.3 o 2.5. In ogni caso, il numero è seguito da un
- ulteriore numero che indica la versione esatta. Inoltre, ogni
- venditore aggiunge i suoi programmi utente o le sue utilità,
- dunque anche il nome della distribuzione è importante. Ogni
- venditore di distribuzione assegna anche un numero di versione alla
- distribuzione, dunque una descrizione completa dovrebbe essere una
- cosa del tipo TurboLinux 6.0 con kernel
- 2.2.14
-
-
-
- Quali versioni di BSD sono disponibili?
-
- In contrasto alle numerose distribuzioni Linux, ci sono solo
- quattro BSD open source. Ogni progetto BSD mantiene il suo albero dei
- sorgenti ed il suo kernel. In pratica, comunque, ci sono meno
- divergenze tra i codici dei programmi utente dei vari progetti di quante
- ce ne siano in Linux.
-
- È difficile catalogare gli obiettivi di ogni progetto:
- le differenze sono molto soggettive. Di base,
-
-
-
- FreeBSD punta alle alte prestazioni e alla facilità d'uso
- per l'utente finale, ed è molto usato dai fornitori di
- contenuti web. Funziona su diverse piattaforme, inclusi i sistemi
- basati su i386 (PC), i sistemi basati sui processori
- AMD a 64-bit, i sistemi basati su &ultrasparc;, i sistemi basati su
- processori Alpha della Compaq e i sistemi basati sulle specifiche
- NEC PC-98. Il progetto FreeBSD ha nettamente più utenti degli
- altri.
-
-
-
- NetBSD punta alla massima portabilità: of course
- it runs NetBSD, ovviamente ci gira NetBSD.
- Funziona su macchine che vanno dai palmtop ai grossi
- server, ed è anche stato usato dalla NASA in alcune missioni
- spaziali. È una scelta particolarmente buona per il vecchio
- hardware non Intel.
-
-
-
- OpenBSD punta alla sicurezza e alla purezza del codice: usa una
- combinazione dei concetti open source e un rigoroso controllo
- del codice per creare un sistema la cui correttezza sia
- dimostrabile, rendendolo la scelta di organizzazioni attente alla
- sicurezza come banche, borse e dipartimenti del governo
- statunitense.
- Come NetBSD, funziona su un gran numero di piattaforme.
-
-
-
- DragonFlyBSD punta ad alte prestazioni e scalabilità sotto
- qualsiasi sistema dal singolo sistema mono-processore al sistema
- massicciamente clasterizzato. DragonFlyBSD ha diversi obbiettivi a
- lungo termine, anche se è concentrato nel fornire un'infrastruttura
- SMP facile da capire, mantenere e sviluppare.
-
-
-
- Ci sono anche altri due sistemi operativi BSD che non sono open
- source, BSD/OS e il &macos; X della Apple:
-
-
-
- BSD/OS fu il pù antico dei derivati di 4.4BSD.
- Non fu open source, anche se le licenze per il codice sorgente
- erano disponibili ad un costo relativamente basso.
- Per molti aspetti assomiglia a FreeBSD. Due anni dopo
- l'acquisizione di BSDi da parte di Wind River Systems,
- BSD/OS non riuscii a sopravvivere come prodotto indipendete.
- Supporto e codice sorgente sono ancora disponibili da Wind River,
- anche se tutto il nuovo sviluppo è concentrato sul
- sistema operativo embedded VxWorks.
-
-
-
- &macos;
- X è l'ultima versione del sistema operativo per
- la linea &macintosh; della Apple
- Computer Inc.. L'anima BSD &unix; di questo sistema
- operativo, Darwin, è
- disponibile come un sistema operativo open source completamente
- funzionante per computer x86 e PPC. Il sistema grafico Aqua/Quartz
- e molti altri aspetti proprietari di &macos; X rimangono comunque
- closed source. Numerosi sviluppatori di Darwin sono anche
- committer di FreeBSD, e viceversa.
-
-
-
-
-
- Come differisce la licenza BSD dalla GNU Public?
-
- Linux è disponibile con licenza GNU General Public
- License (GPL), che è pensata per eliminare il software
- closed source. In particolare, ogni lavoro derivante da un prodotto
- rilasciato sotto GPL deve essere fornito anche con il codice sorgente,
- se richiesto. Al contrario, la licenza
- BSD è meno restrittiva: le distribuzioni dei soli
- binari sono permesse. Ciò è particolarmente attraente per
- le applicazioni embedded.
-
-
-
- Cos'altro dovrei sapere?
-
- Poiché sono disponibili meno applicazioni per BSD che per
- Linux, gli sviluppatori BSD hanno creato un pacchetto di
- compatibilità con Linux, che permette ai programmi per Linux di
- funzionare su BSD. Il pacchetto include sia modifiche al kernel, in
- modo da permettere l'esecuzione corretta di chiamate di sistema
- Linux, che file di compatibilità, come la libreria C. Non
- c'è una differenza notevole nella velocità di esecuzione
- tra una applicazione in esecuzione su una macchina Linux ed una
- applicazione in esecuzione su una macchina BSD con pari
- caratteristiche.
-
- La natura tutto da una sola fonte di BSD fa sì
- che gli aggiornamenti siano molto più semplici da gestire
- rispetto alla maggior parte dei casi in Linux. BSD gestisce gli
- aggiornamenti della versione di libreria fornendo moduli di
- compatibilità per le versioni precedenti, dunque è
- possibile eseguire binari di parecchi anni prima senza problemi.
-
-
-
- Cosa dovrei usare, BSD o Linux?
-
- Cosa significa tutto questo in pratica? Chi dovrebbe usare BSD, chi
- dovrebbe usare Linux?
-
- Questa è una domanda molto difficile a cui rispondere. Qui
- ci sono alcune linee guida:
-
-
-
- Se non è rotto, non aggiustarlo: se usi
- già un sistema operativo open source, e ne sei soddisfatto,
- probabilmente non c'è ragione di cambiare.
-
-
-
- I sistemi BSD, in particolare FreeBSD, possono avere prestazioni
- notevolmente migliori di Linux. Ma questo non avviene in tutti i
- campi. In molti casi, c'è una differenza minima nelle
- prestazioni. In alcuni casi, Linux può comportarsi meglio di
- FreeBSD.
-
-
-
- In generale, i sistemi BSD hanno una reputazione migliore di
- affidabilità, principalmente come risultato di una base di
- codice più maturo.
-
-
-
- I progetti BSD hanno una reputazione migliore per quanto
- concerne qualità e completezza della loro documentazione.
- I diversi progetti di documentazione mirano a fornire attivamente
- documentazione aggiornata, in molte lingue, e coprendo tutti
- gli aspetti del sistema.
-
-
-
- La licenza BSD può essere più attraente della
- GPL.
-
-
-
- BSD può eseguire la maggior parte dei binari Linux,
- mentre Linux non può eseguire i binari BSD. Molte
- implementazioni di BSD possono anche eseguire i binari di altri
- sistemi di tipo &unix;. Come risultato, BSD può
- rappresentare un percorso di migrazione più semplice da
- altri sistemi rispetto a Linux.
-
-
-
-
-
- Chi fornisce supporto, servizi, e training su BSD?
-
- BSDi / FreeBSD
- Mall, Inc. forniscono contratti di supporto per
- FreeBSD da quasi un decennio.
-
- Inoltre, ognuno dei progetti ha una lista di consulenti a pagamento:
- FreeBSD,
- NetBSD,
- e OpenBSD.
-
-
-
Property changes on: head/it_IT.ISO8859-15/articles/explaining-bsd/article.xml
___________________________________________________________________
Deleted: svn:keywords
## -1 +0,0 ##
-FreeBSD=%H
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/sgml
\ No newline at end of property
Index: head/it_IT.ISO8859-15/articles/explaining-bsd/Makefile
===================================================================
--- head/it_IT.ISO8859-15/articles/explaining-bsd/Makefile (revision 52098)
+++ head/it_IT.ISO8859-15/articles/explaining-bsd/Makefile (nonexistent)
@@ -1,19 +0,0 @@
-#
-# $FreeBSD$
-#
-# Articolo: Panoramica su BSD
-
-DOC?= article
-
-FORMATS?= html
-WITH_ARTICLE_TOC?= YES
-
-INSTALL_COMPRESSED?=gz
-INSTALL_ONLY_COMPRESSED?=
-
-SRCS= article.xml
-
-URL_RELPREFIX?= ../../../..
-DOC_PREFIX?= ${.CURDIR}/../../..
-
-.include "${DOC_PREFIX}/share/mk/doc.project.mk"
Property changes on: head/it_IT.ISO8859-15/articles/explaining-bsd/Makefile
___________________________________________________________________
Deleted: svn:keywords
## -1 +0,0 ##
-FreeBSD=%H
\ No newline at end of property
Index: head/it_IT.ISO8859-15/articles/Makefile.inc
===================================================================
--- head/it_IT.ISO8859-15/articles/Makefile.inc (revision 52098)
+++ head/it_IT.ISO8859-15/articles/Makefile.inc (nonexistent)
@@ -1,5 +0,0 @@
-#
-# $FreeBSD$
-#
-
-DESTDIR?= ${DOCDIR}/it_IT.ISO8859-15/articles/${.CURDIR:T}
Property changes on: head/it_IT.ISO8859-15/articles/Makefile.inc
___________________________________________________________________
Deleted: svn:keywords
## -1 +0,0 ##
-FreeBSD=%H
\ No newline at end of property
Index: head/it_IT.ISO8859-15/articles/new-users/article.xml
===================================================================
--- head/it_IT.ISO8859-15/articles/new-users/article.xml (revision 52098)
+++ head/it_IT.ISO8859-15/articles/new-users/article.xml (nonexistent)
@@ -1,1073 +0,0 @@
-
-
-
-
- Per chi è alle Prime Armi sia con FreeBSD che con
- &unix;
-
-
-
- AnneliseAnderson
- andrsn@andrsn.stanford.edu
-
-
-
- 15 Agosto 1997
-
-
- &tm-attrib.freebsd;
- &tm-attrib.ibm;
- &tm-attrib.microsoft;
- &tm-attrib.netscape;
- &tm-attrib.opengroup;
- &tm-attrib.general;
-
-
- $FreeBSD$
-
-
- Congratulazioni per aver installato FreeBSD! Questa introduzione
- é per chi é alle prime armi con FreeBSD
- e &unix;—perciò comincia dalle basi.
- Stai certamente usando la versione 2.0.5 o una più recente di
- &os; distribuita da &os;.org, il tuo sistema ha (per il momento) un
- solo utente (te stesso)—e sei probabilmente abbastanza bravo
- con DOS/&windows; o &os2;.
-
- &trans.it.max;
-
-
-
-
- Entrare ed Uscire dal Sistema
-
- Entra (quando vedi login:) come l'utente che
- hai creato durante l'installazione oppure come
- root. (La tua installazione di FreeBSD dovrebbe
- già avere un account di root; che può
- andare ovunque e fare qualsiasi cosa, anche cancellare file essenziali,
- perciò stai attento!) I simboli &prompt.user; e &prompt.root;
- che incontrerai più avanti simboleggiano il prompt (i tuoi
- potrebbero essere differenti), dove &prompt.user; indica un utente
- ordinario e &prompt.root; indica root.
-
- Per uscire (e ritrovarsi con un nuovo prompt login:)
- scrivi
-
-
- &prompt.root; exit
-
-
- tante volte quanto serve. Sì, premi
- invio dopo ogni comando, e ricordati che &unix; fa
- distinzione tra maiuscole e minuscole—perciò
- exit, non EXIT.
-
- Per spegnere il computer digita
-
-
- &prompt.root; /sbin/shutdown -h now
-
-
- O per riavviarlo digita
-
-
- &prompt.root; /sbin/shutdown -r now
-
-
- oppure
-
-
- &prompt.root; /sbin/reboot
-
-
- Puoi anche riavviarlo premendo
- CtrlAltCanc.
- Lasciagli un po' di tempo per compiere il suo lavoro. Questo equivale a
- /sbin/reboot nelle versioni più recenti di
- FreeBSD ed è molto meglio che premere il bottone di reset.
- Non vorrai mica reinstallare tutto da capo, vero?
-
-
-
- Aggiungere un Utente con Privilegi di Root
-
- Se non hai creato un utente durante l'installazione e quindi
- sei entrato nel sistema come root, dovresti
- probabilmente crearne uno ora tramite
-
-
- &prompt.root; adduser
-
-
- La prima volta che aggiungi un utente, il sistema dovrebbe chiederti
- di inserire delle impostazioni di default da applicare. Potresti volere
- come shell &man.csh.1; invece di &man.sh.1;, se ti viene consigliato
- sh come default. Altrimenti premi solo invio
- per accettare i valori proposti. Questi dati vengono salvati in
- /etc/adduser.conf, un file modificabile
- successivamente a mano.
-
- Supponiamo che tu voglia creare l'utente jack di
- nome reale Jack Benimble. Assegna a
- jack una password per ragioni di sicurezza (anche i
- bambini che gironzolano per casa potrebbero mettere le mani sulla
- tastiera). Quando ti viene chiesto se vuoi invitare
- jack in un altro gruppo, digita
- wheel
-
-
- Login group is ``jack''. Invite jack into other groups: wheel
-
-
- Questo ti permetterà di entrare come l'utente
- jack e usare il comando &man.su.1;
- per diventare root. A quel punto non sarai
- più preso in giro per essere entrato direttamente come
- root.
-
- Puoi uscire da adduser in qualsiasi momento
- premendo CtrlC,
- e alla fine avrai l'opportunità di approvare il nuovo utente oppure
- premere n per non farlo. Potresti voler creare un
- secondo utente cosicché quando andrai a modificare i file
- di jack avrai un'ancora di salvezza in caso qualcosa
- vada male.
-
- Una volta fatto questo, usa exit per tornare al
- prompt di login ed entrare come jack.
- In generale è meglio cercare di lavorare da utente normale
- in modo da non avere il potere—e il rischio—di
- root.
-
- Se hai già creato un utente e vuoi che quell'utente sia in
- grado di usare su per diventare
- root, puoi entrare come root e
- modificare il file /etc/group, aggiungendo
- jack alla prima linea (il gruppo
- wheel). Ma prima devi fare pratica con
- &man.vi.1;, l'editor di testo—oppure usa il più semplice
- &man.ee.1;, installato sulle recenti versioni di FreeBSD.
-
- Per cancellare un utente, usa il comando
- rmuser.
-
-
-
- Diamoci un'occhiata in giro
-
- Una volta avuto accesso come utente normale, guardati in giro e prova
- alcuni dei comandi che ti daranno accesso alle fonti di aiuto e di
- informazioni su FreeBSD.
-
- Ecco qui una lista di comandi e le loro funzioni:
-
-
-
- id
-
-
- Ti dice chi sei!
-
-
-
-
- pwd
-
-
- Ti mostra dove sei—la directory in cui stai
- lavorando.
-
-
-
-
- ls
-
-
- Ti mostra una lista dei file contenuti nella directory.
-
-
-
-
- ls -F
-
-
- Ti mostra un elenco dei file contenuti nella directory ponendo
- * dopo i file eseguibili,
- / dopo le directory, e
- @ dopo i collegamenti simbolici.
-
-
-
-
- ls -l
-
-
- Mostra un elenco di file nel formato lungo—grandezza,
- data, permessi.
-
-
-
-
- ls -a
-
-
- Mostra una lista dei file nascosti, cioè con un
- punto davanti al nome, insieme agli altri.
- Se sei root, i file puntati
- vengono mostrati anche senza l'opzione .
-
-
-
-
- cd
-
-
- Cambia la directory di lavoro. cd
- .. torna alla directory
- superiore; nota lo spazio dopo cd. cd
- /usr/local va nella directory
- specificata. cd ~ va
- nella directory home dell'utente collegato in quel
- momento—per esempio, /usr/home/jack.
- Prova cd /cdrom, e poi
- ls, per scoprire se il tuo CDROM è
- montato e funziona.
-
-
-
-
- view
- nomefile
-
-
- Mostra il contenuto del file (chiamato
- nomefile) senza modificarlo.
- Prova view
- /etc/fstab.
- Digita :q per uscire.
-
-
-
-
- cat nomefile
-
-
- Mostra nomefile sullo schermo.
- Se è troppo lungo e ne puoi vedere solo la fine,
- premi BlocScorr e usa
- freccia-su per muoverti in alto; puoi usare
- BlocScorr anche con le pagine man. Premi ancora
- BlocScorr per uscire dallo scorrimento. Potresti
- provare cat con alcuni dei file
- nascosti presenti nella tua directory home—cat
- .cshrc, cat
- .login, cat
- .profile.
-
-
-
-
- Noterai degli alias in .cshrc per
- alcuni dei comandi ls (sono molto
- convenienti). Puoi creare degli altri alias modificando
- .cshrc. Puoi far sì che questi alias
- diventino disponibili a tutti gli utenti mettendoli nel file
- di configurazione generale di csh,
- /etc/csh.cshrc.
-
-
-
- Ottenere Aiuto e Informazioni
-
- Ecco alcune risorse utili per ottenere aiuto.
- Testo è qualcosa che puoi
- digitare a tuo piacere—normalmente si tratta di un comando
- o del nome di un file.
-
-
-
- apropos
- testo
-
-
- Tutto ciò che contiene la stringa
- testo nel database
- whatis.
-
-
-
-
- man
- testo
-
-
- Mostra la pagina man di testo,
- la maggior risorsa di documentazione per i sistemi Un*x.
- man ls ti dirà
- tutti i modi possibili per usare il comando ls.
- Premi Invio per muoverti nel testo,
- CtrlB
- per andare indietro di una pagina,
- CtrlF
- per andare avanti, q oppure
- CtrlC
- per uscire.
-
-
-
-
- which
- testo
-
-
- Ti dice dove si trova il comando
- testo nel path dell'utente.
-
-
-
-
- locate
- testo
-
-
- Ti dice tutte le directory nei path dell'utente in cui si trova
- il comando testo.
-
-
-
-
- whatis
- testo
-
-
- Ti dice che cosa fa il comando
- testo e la sua pagina man.
- Digitando whatis * ti verranno presentate tutte
- le pagine man associate agli eseguibili presenti nella directory
- corrente.
-
-
-
-
- whereis
- testo
-
-
- Trova il file testo, dandoti il suo
- percorso completo.
-
-
-
-
- Potresti voler provare ad usare whatis con
- alcuni comandi utili come cat,
- more, grep,
- mv, find,
- tar, chmod,
- chown, date, e
- script. more ti permette
- di leggere una pagina alla volta come in DOS, ad esempio, ls -l |
- more oppure more
- nomefile.
- * ha valore assoluto—per esempio, ls
- w* mostra tutti i file che cominciano con
- w.
-
- Per caso alcuni di questi comandi non funzionano correttamente? Sia
- &man.locate.1;, sia &man.whatis.1; dipendono da
- un database che viene ricostruito settimanalmente. Se la tua macchina
- non sarà lasciata accesa per il fine settimana (usando FreeBSD),
- può darsi che tu voglia usare i comandi per la manutenzione
- giornaliera, settimanale, e mensile ogni tanto. Falli partire come
- root e lascia loro il tempo di finire il lavoro
- prima di farne partire un altro.
-
-
- &prompt.root; periodic daily
-output tralasciato
-&prompt.root; periodic weekly
-output tralasciato
-&prompt.root; periodic monthly
-output tralasciato
-
-
- Se ti stufi di aspettare, premi
- AltF2 per
- avere un'altra console virtuale, e poterti loggare
- nuovamente. Dopotutto è un sistema multi-utente, e multi-tasking.
- Probabilmente questi comandi produrranno dei messaggi sullo
- schermo quando lavorano; puoi digitare
- clear per pulire lo schermo.
- Quando hanno finito, dovresti dare un'occhiata a
- /var/mail/root e
- /var/log/messages.
-
- Usare tali comandi fa parte dell'amministrazione di
- sistema—e come utente singolo di un sistema &unix;,
- sei tu l'amministratore del sistema. Praticamente l'unica cosa
- per la quale è necessario che tu sia root
- è l'amministrazione. Queste responsabilità non vengono
- trattate bene nemmeno in quei grossi libri su &unix;, che sembrano
- dedicare troppo spazio all'uso dei menu nei windows manager. Potresti
- voler leggere uno dei più interessanti libri sull'amministrazione
- di sistema, come UNIX System Administration
- Handbook di Evi Nemeth et.al. (Prentice-Hall, 1995,
- ISBN 0-13-15051-7)—la seconda edizione con la copertina rossa;
- oppure Essential System Administration di
- Æleen Frisch (O'Reilly & Associates, 2002, ISBN 0-596-00343-9).
- Io ho usato quello di Nemeth.
-
-
-
- Modificare File di Testo
-
- Per poter configurare il tuo sistema, devi modificare dei file. Molti
- di questi saranno in /etc; e avrai bisogno
- del comando su per diventare root
- e poter così modificarli. Puoi usare il semplice editor
- ee, ma alla lunga risulta più utile imparare
- vi. C'é un eccellente tutorial su
- vi in
- /usr/src/contrib/nvi/docs/tutorial se hai installato
- i sorgenti di sistema.
-
- Prima di modificare un file, dovresti farne una copia.
- Supponiamo tu voglia modificare /etc/rc.conf. Puoi
- semplicemente usare cd /etc per andare in
- /etc e fare:
-
-
- &prompt.root; cp rc.conf rc.conf.orig
-
-
- Questo copierà rc.conf in
- rc.conf.orig, e potrai successivamente copiare
- rc.conf.orig in
- rc.conf per tornare all'originale. Ma ancora meglio
- sarà spostare (rinominare) il file per poi ricopiarlo con il nome
- originale:
-
-
- &prompt.root; mv rc.conf rc.conf.orig
-&prompt.root; cp rc.conf.orig rc.conf
-
-
- perché il comando mv mantiene
- la data e il proprietario originali del file. Puoi ora modificare
- rc.conf. Se vuoi tornare all'originale,
- potresti fare mv rc.conf rc.conf.myedit
- (assumendo che vuoi tenere la versione modificata) e
- quindi fare
-
-
- &prompt.root; mv rc.conf.orig rc.conf
-
-
- per tornare allo stato iniziale.
-
- Per modificare un file, digita
-
-
- &prompt.root; vi nomefile
-
-
- Muoviti nel testo con i tasti freccia.
- Esc mette vi
- in modalità comando. Ecco qui alcuni dei comandi:
-
-
-
- x
-
-
- cancella la lettera su cui si trova il cursore
-
-
-
-
- dd
-
-
- cancella l'intera riga (anche se va a capo sullo schermo)
-
-
-
-
- i
-
-
- inserisci del testo nella posizione del cursore
-
-
-
-
- a
-
-
- inserisci del testo dopo il cursore
-
-
-
-
- Quando digiti i o a,
- puoi inserire del testo. Esc ti riporta in
- modalità comando dove puoi digitare
-
-
-
- :w
-
-
- per salvare le modifiche sul disco e continuare a
- modificare il file
-
-
-
-
- :wq
-
-
- per salvare le modifiche e uscire
-
-
-
-
- :q!
-
-
- per uscire senza salvare le modifiche
-
-
-
-
- /testo
-
-
- per spostare il cursore su testo;
- /Invio
- per trovare la prossima occorrenza di
- testo.
-
-
-
-
- G
-
-
- per andare alla fine del file
-
-
-
-
- nG
-
-
- per andare alla riga n del
- file, dove n è un numero
-
-
-
-
- CtrlL
-
-
- per ridisegnare lo schermo
-
-
-
-
- Ctrlb e
- Ctrlf
-
-
- vai avanti e indietro di una pagina, come succede con
- more e view.
-
-
-
-
- Fai un po' di pratica con vi nella tua directory
- home creando un nuovo file digitando vi
- nomefile e aggiungendo
- e cancellando del testo, salvando il file, e riaprendolo di nuovo.
- vi è pieno di sorprese perché è
- abbastanza complesso, e ti capiterà di digitare un comando che
- farà di sicuro qualcosa che non ti aspetti. (Alcune persone
- preferiscono vi—è più potente
- dell'EDIT del DOS—scopri il comando :r)
- Usa Esc una o più volte per essere sicuro di
- essere in modalità comando e continua da lì quando hai dei
- problemi, salva spesso con :w, e usa
- :q! per uscire e ricominciare (dal tuo ultimo
- :w) quando ne hai bisogno.
-
- Ora puoi usare cd per andare in
- /etc, su per diventare
- root, vi per modificare il file
- /etc/group, e aggiungere un utente al gruppo
- wheel cosicché possa avere privilegi di
- root. Aggiungi solo una virgola e il nome di login
- dell'utente alla fine della prima riga del file, premi
- Esc, e usa :wq per salvare
- il file su disco e uscire. La modifica ha effetto immediato. (Non hai
- lasciato uno spazio dopo la virgola, vero?)
-
-
-
- Stampa di File da DOS
-
- A questo punto la tua stampante non funzionerà ancora sotto
- FreeBSD, ecco quindi un sistema per creare un file da una pagina man,
- metterlo su un floppy, e quindi stamparlo da DOS. Supponiamo che tu
- voglia leggere attentamente come cambiare i permessi sui file (abbastanza
- importante). Puoi usare man chmod per leggere come
- fare. Il comando
-
-
- &prompt.user; man chmod | col -b > chmod.txt
-
-
- toglierà gli elementi di formattazione e manderà il
- tutto sul file chmod.txt al posto di mostrare il
- contenuto sullo schermo. Ora metti un dischetto formattato DOS nel
- lettore, digita su per diventare
- root, e scrivi
-
-
- &prompt.root; /sbin/mount -t msdos /dev/fd0 /mnt
-
-
- per montare il floppy su /mnt.
-
- Ora (non hai più bisogno di essere root,
- e puoi digitare exit per tornare ad essere l'utente
- jack) puoi andare nella directory in cui hai creato
- chmod.txt e copiare il file sul floppy
- digitando:
-
-
- &prompt.user; cp chmod.txt /mnt
-
-
- e usare ls /mnt per vedere il
- contenuto di /mnt, che dovrebbe contenere il file
- chmod.txt.
-
- In particolare potresti voler creare un file con l'output di
- /sbin/dmesg digitando
-
-
- &prompt.user; /sbin/dmesg > dmesg.txt
-
-
- e copiare dmesg.txt sul floppy.
- /sbin/dmesg è il file di log di avvio, ed
- è importante comprenderlo perché ti mostra cosa ha trovato
- FreeBSD all'avvio. Se poni delle domande sulla &a.questions;
- o su un gruppo USENET—del tipo FreeBSD non trova il mio drive
- per i nastri, che cosa faccio?—la gente vorrà
- sapere cosa mostra il tuo dmesg.
-
- Ora devi smontare il floppy (da root) per poter
- togliere il disco
-
-
- &prompt.root; /sbin/umount /mnt
-
-
- e riavviare per tornare in DOS. Copia questo file in una
- directory DOS, richiamali con l'EDIT del DOS, Notepad o Wordpad di
- &windows;, o un editor di testi, fai una piccola modifica in modo che
- il file debba essere salvato, e stampa come faresti da DOS o
- &windows;. Spera che funzioni! Le pagine man vengono meglio se
- stampate con il comando DOS print. (Copiare i file
- da FreeBSD su una partizione DOS montata è ancora in alcuni casi
- rischioso.)
-
- Far funzionare la stampante sotto FreeBSD consiste nel creare
- un opportuno elemento in /etc/printcap e
- creare una directory di spool corrispondente in
- /var/spool/output. Se la tua stampante è su
- lpt0 (ciò che DOS chiama
- LPT1), devi solo andare in
- /var/spool/output e (da root)
- creare la directory lpd digitando: mkdir
- lpd, se non è già presente. A quel punto la
- stampante dovrebbe rispondere quando il sistema parte, e
- lp o lpr dovrebbero mandare un
- file alla stampante. Che il file venga stampato o meno è solo
- questione di configurazione, che è discussa nel Manuale di FreeBSD.
-
-
-
- Altri Comandi Utili
-
-
-
- df
-
-
- mostra lo spazio disponibile e tutte le partizioni
- montate.
-
-
-
-
- ps aux
-
-
- mostra i processi in esecuzione. ps ax
- è una forma contratta.
-
-
-
-
- rm nomefile
-
-
- cancella nomefile.
-
-
-
-
- rm -R dir
-
-
- cancella la directory dir e tutte le
- sottodirectory—attenzione!
-
-
-
-
- ls -R
-
-
- mostra il contenuto della directory e delle sue
- sottodirectory; io usavo una variante, ls -AFR >
- where.txt, per avere una lista dei file in
- / e (separatamente)
- /usr prima che scoprissi dei metodi migliori
- per cercare i file.
-
-
-
-
- passwd
-
-
- per cambiare la password dell'utente (o di
- root)
-
-
-
-
- man hier
-
-
- pagina man sul file system di &unix;
-
-
-
-
- Usa find per trovare nomefile
- in /usr o nelle sue sottodirectory digitando
-
-
- &prompt.user; find /usr -name "nomefile"
-
-
- Puoi usare * come identificatore universale in
- "nomefile"
- (che dovrebbe essere tra virgolette). Se dici a
- find di cercare in /
- anziché /usr cercherà il/i file su
- tutti i file system montati, inclusi i CDROM e le partizioni DOS.
-
- Un libro eccellente che tratta i comandi e le utility di &unix;
- è Unix for the Impatient di Abrahams &
- Larson (2nd ed., Addison-Wesley, 1996).
- Ci sono anche un sacco di informazioni su &unix; su Internet.
-
-
-
- Prossimi Passi
-
- Dovresti ora avere gli strumenti necessari per girare nel sistema e
- modificare i file, così da poter rendere tutto funzionante. Ci
- sono un sacco di informazioni nel Manuale di FreeBSD (che è
- probabilmente sul tuo disco rigido) e sul sito web di FreeBSD. Una
- grande scelta di package e port è presente sul CDROM così
- come sul sito web. Il manuale ti spiega come usarli
- (prendi il package se esiste, con pkg_add
- /cdrom/packages/All/nomepackage,
- dove nomepackage è il nome del file del
- package). Il CDROM ha una lista di package e di port
- con delle brevi descrizioni in cdrom/packages/index,
- cdrom/packages/index.txt, e
- cdrom/ports/index, e con descrizioni più ampie
- in /cdrom/ports/*/*/pkg/DESCR, dove
- * rappresenta rispettivamente sottodirectory di tipi di
- programmi e nomi di programmi.
-
- Se trovi il manuale troppo difficile su come installare i port dal
- CDROM (con il sistema di lndir e altro), ecco come
- funziona normalmente:
-
- Trova il port che vuoi, supponiamo kermit.
- Ci sarà una directory per lui sul CDROM. Copia la
- sottodirectory in /usr/local (un buon posto
- perché il software che aggiungi sia disponibile a tutti gli utenti)
- con:
-
-
- &prompt.root; cp -R /cdrom/ports/comm/kermit /usr/local
-
-
- Questo dovrebbe portarti ad avere la sottodirectory
- /usr/local/kermit che contiene tutti i file
- presenti nella sottodirectory kermit del CDROM.
-
- Ora, crea la directory
- /usr/ports/distfiles se non esiste ancora,
- usando mkdir. Poi controlla
- /cdrom/ports/distfiles cercando un file
- con il nome che indica che si tratta del port esatto. Copia quel file in
- /usr/ports/distfiles; nelle versioni più
- recenti puoi saltare questo passo, perché FreeBSD lo farà
- per te. Nel caso di kermit, non c'è nessun
- distfile.
-
- Quindi entra con cd nella sottodirectory di
- /usr/local/kermit che contiene il file
- Makefile. Digita
-
-
- &prompt.root; make all install
-
-
- Durante questo processo il port userà FTP per scaricare
- i file compressi che non ha trovato sul CDROM o in
- /usr/ports/distfiles. Se la tua connessione
- non funziona ancora e non c'è nessun file per il port in
- /cdrom/ports/distfiles, dovrai
- recuperare il distfile usando un'altra macchina e poi copiarlo in
- /usr/ports/distfiles da un dischetto o dalla
- partizione DOS. Leggi Makefile (usando
- cat o more oppure
- view) per scoprire dove andare (il sito principale
- di distribuzione) per trovare il file e conoscere il suo nome. Il nome
- verrà troncato quando scaricato da DOS, e dopo averlo trasferito
- in /usr/ports/distfiles dovrai
- rinominarlo (usando il comando mv) nel suo
- nome originale cosicché possa essere trovato. (Usa il
- trasferimento di file binario!)
- Quindi torna in /usr/local/kermit, trova la
- directory contenente Makefile, e digita
- make all install.
-
- Un'altra cosa che può succedere quando si installa un port o un
- package è che questi abbiano bisogno di un altro programma. Se
- l'installazione si ferma con un messaggio can't find
- unzip o simile, potresti dover installare il
- package o il port di unzip prima di proseguire.
-
- Una volta installato, digita rehash per far
- sì che FreeBSD rilegga i file contenuti nel path e sappia quali
- sono presenti.
- (Se trovi un sacco di messaggi path not found
- quando usi whereis o which, dovresti
- fare delle aggiunte all'elenco delle directory nel
- file .cshrc nella tua directory home.
- L'elenco dei path in &unix; fa la stessa
- cosa che fa in DOS, tranne che la directory corrente (di
- default) non si trova nel path per ragioni di sicurezza; se il comando
- che vuoi eseguire è nella directory in cui ti trovi, devi digitare
- ./ prima del nome del comando; niente
- spazio dopo la barra.)
-
- Potresti volere la versione più recente di &netscape;
- dal loro sito FTP.
- (&netscape; necessita dell'X Window System.) Ora c'é una versione
- per FreeBSD, quindi dà un'occhiata in giro. Usa solo
- gunzip nomefile e
- tar xvf nomefile sul file,
- sposta il binario in /usr/local/bin o qualche altro
- posto in cui vengono tenuti i binari, esegui rehash, e
- quindi aggiungi le seguenti linee a .cshrc in tutte
- le directory home degli utenti oppure (più semplicemente) in
- /etc/csh.cshrc, il file di configurazione globale di
- csh:
-
-
- setenv XKEYSYMDB /usr/X11R6/lib/X11/XKeysymDB
-setenv XNLSPATH /usr/X11R6/lib/X11/nls
-
-
- Questo assume che il file XKeysymDB
- e la directory nls siano in
- /usr/X11R6/lib/X11; se non lo sono, trovale
- e mettile lì.
-
- Se hai originariamente installato &netscape; dal CDROM (o via
- FTP), non sostituire /usr/local/bin/netscape
- con il nuovo binario di netscape; questo è solo uno script di shell
- che imposta le variabili di ambiente per te. Rinomina invece
- il nuovo binario in netscape.bin e rimpiazza il
- vecchio binario, che dovrebbe essere
- /usr/local/netscape/netscape.
-
-
-
- Il tuo Ambiente di Lavoro
-
- La shell è la parte più importante del tuo ambiente
- di lavoro. In DOS, la shell è solitamente command.com. La shell
- è ciò che interpreta i comandi che digiti sulla linea di
- comando, e quindi comunica con il resto del sistema operativo.
- Puoi anche scrivere script di shell, che sono come i file batch di
- DOS: una serie di comandi che devono essere eseguiti senza il tuo
- intervento.
-
- Due shell vengono normalmente installate con FreeBSD:
- csh e sh.
- csh è buona per lavoro da linea di comando, ma
- gli script dovrebbero essere scritti usando sh (o
- bash). Puoi scoprire che shell hai
- digitando echo $SHELL.
-
- csh è una buona shell, ma
- tcsh fa tutto ciò che csh
- fa e anche altro. Ti permette di richiamare i comandi usando
- le frecce e ti permette di modificarli. Ha l'auto-completamento dei nomi
- di file con tab (csh usa Esc), e
- ti permette di tornare alla directory in cui eri digitando
- cd -. È anche più semplice alterare il
- prompt con tcsh. Ti rende la vita più
- facile.
-
- Ecco tre semplici passi per installare una nuova shell:
-
-
-
- Installa la shell tramite port o package, come faresti
- con un qualsiasi altro port o package. Usa
- rehash e which tcsh
- (assumendo che tu stia installando tcsh) per
- essere sicuro di averla installata.
-
-
-
- Da root, modifica
- /etc/shells, aggiungendo una riga nel file per
- la nuova shell, in questo caso
- /usr/local/bin/tcsh, e salva il file.
- (Alcuni port lo fanno per te.)
-
-
-
- Usa il comando chsh per cambiare
- permanentemente la tua shell in tcsh, o digita
- tcsh al prompt per cambiare la shell senza
- dover uscire dal sistema per poi rientrare.
-
-
-
-
- Può essere pericoloso cambiare la shell di
- root in qualcosa di diverso da
- sh o csh su versioni più
- recenti di FreeBSD e di &unix;; potresti non avere una shell
- funzionante se il sistema entra in modalità singolo utente.
- La soluzione è usare su -m per diventare
- root, che ti dà tcsh come
- shell di root, poiché la shell è
- parte del tuo ambiente. Puoi rendere tutto ciò permanente
- aggiungendo al tuo .tcshrc un alias con:
- alias su su -m
-
-
- Quando tcsh parte, legge i file
- /etc/csh.cshrc e
- /etc/csh.login, come farebbe
- csh. Leggerà anche il file
- .login nella tua directory home ed anche
- .cshrc, a meno che tu non abbia un file
- .tcshrc. Puoi crearlo copiando
- .cshrc in .tcshrc.
-
- Ora che hai installato tcsh, puoi sistemare
- il tuo prompt. Puoi trovare i dettagli nella pagina man di
- tcsh, ma ecco qui una linea da mettere nel tuo
- .tcshrc che ti dirà quanti comandi hai
- digitato, che ore sono, e in che directory
- ti trovi. Produce anche un > se sei un
- utente normale e un # se sei root,
- ma tcsh lo farebbe in ogni caso:
-
- set prompt = "%h %t %~ %# "
-
- Questa dovrebbe andare nella stessa posizione della linea di
- prompt corrente se ce n'è una, o sotto "if($?prompt) then" in caso
- contrario. Commenta la vecchia riga; così potrai tornare a quella
- vecchia se la preferirai. Non dimenticare gli spazi e le virgolette.
- Puoi far rileggere .tcshrc digitando
- source .tcshrc.
-
- Puoi avere una lista delle variabili di sistema che sono state
- impostate digitando env al prompt.
- Il risultato ti mostrerà il tuo editor di default, il pager, e il
- tipo di terminale, tra le altre possibili variabili. Un comando
- utile se ti connetti al sistema da una postazione remota e non riesci ad
- eseguire un programma perché il terminale non ne è capace
- è setenv TERM vt100.
-
-
-
- Altro
-
- Da tcsh puoi smontare il CDROM con
- /sbin/umount /cdrom, toglilo dal lettore,
- inseriscine un altro, e montalo con
- /sbin/mount_cd9660 /dev/cd0a /cdrom assumendo che
- cd0a sia il nome di dispositivo del tuo lettore di
- CDROM. La versione più recente di FreeBSD ti permette di montare
- il CDROM solo con /sbin/mount /cdrom.
-
- Usare il live file system—il secondo cd del set
- di FreeBSD—è
- utile se hai poco spazio a disposizione. Ciò che si trova
- sul live file system cambia da release a release. Potresti
- provare ad eseguire dei giochi dal CDROM. Questo comporta l'uso di
- lndir, che viene installato con l'X Window
- System, per dire ai programmi dove trovare i file necessari, poiché
- questi si trovano nel file system /cdrom
- anziché /usr e le sue
- sottodirectory, che è dove dovrebbero essere. Leggi
- man lndir per avere più informazioni.
-
-
-
- I Commenti sono Benvenuti
-
- Se usi questa guida, sarei interessata a sapere dove non è
- chiara, ciò che è stato tralasciato e che vorresti venisse
- incluso, e sapere se tutto ciò è stato utile. I miei
- ringraziamenti vanno a Eugene W. Stark, professore di informatica a
- SUNY-Stony Brook, e John Fieber per i suoi utili commenti.
-
- Annelise Anderson, andrsn@andrsn.stanford.edu
-
- Per questioni legate alla traduzione, o se avete commenti da poter
- esprimere solo in italiano, non esitate a contattarmi. Come per l'autrice
- originale, ogni genere di commenti è ben accetto.
-
- Massimiliano Stucchi, stucchi@willystudios.com
-
-
Property changes on: head/it_IT.ISO8859-15/articles/new-users/article.xml
___________________________________________________________________
Deleted: svn:keywords
## -1 +0,0 ##
-FreeBSD=%H
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/sgml
\ No newline at end of property
Index: head/it_IT.ISO8859-15/articles/new-users/Makefile
===================================================================
--- head/it_IT.ISO8859-15/articles/new-users/Makefile (revision 52098)
+++ head/it_IT.ISO8859-15/articles/new-users/Makefile (nonexistent)
@@ -1,18 +0,0 @@
-#
-# $FreeBSD$
-#
-# Articolo: Per chi e' alle Prime Armi sia con FreeBSD che con Unix
-
-DOC?= article
-
-FORMATS?= html
-
-INSTALL_COMPRESSED?=gz
-INSTALL_ONLY_COMPRESSED?=
-
-SRCS= article.xml
-
-URL_RELPREFIX?= ../../../..
-DOC_PREFIX?= ${.CURDIR}/../../..
-
-.include "${DOC_PREFIX}/share/mk/doc.project.mk"
Property changes on: head/it_IT.ISO8859-15/articles/new-users/Makefile
___________________________________________________________________
Deleted: svn:keywords
## -1 +0,0 ##
-FreeBSD=%H
\ No newline at end of property
Index: head/it_IT.ISO8859-15/articles/vm-design/article.xml
===================================================================
--- head/it_IT.ISO8859-15/articles/vm-design/article.xml (revision 52098)
+++ head/it_IT.ISO8859-15/articles/vm-design/article.xml (nonexistent)
@@ -1,1036 +0,0 @@
-
-
-
-
- Elementi di progettazione del sistema di VM di FreeBSD
-
-
-
- MatthewDillon
-
- dillon@apollo.backplane.com
-
-
-
-
-
- &tm-attrib.freebsd;
- &tm-attrib.linux;
- &tm-attrib.microsoft;
- &tm-attrib.opengroup;
- &tm-attrib.general;
-
-
- $FreeBSD$
-
- $FreeBSD$
-
-
- Il titolo è in realtà solo un modo complicato per dire
- che cercherò di descrivere l'intera enchilada della memoria
- virtuale (VM), sperando di farlo in una maniera che chiunque possa
- seguire.
- Nell'ultimo anno mi sono concentrato su un certo numero di sottosistemi
- principali del kernel in FreeBSD, trovando quelli della VM (la memoria
- virtuale) e dello Swap i più interessanti, e considerando quello
- di NFS un lavoretto necessario.
- Ho riscritto solo piccole porzioni di quel codice. Nell'arena
- della VM la sola grossa riscrittura che ho affrontato è stata
- quella del sottosistema di swap.
- La maggior parte del mio lavoro è stato di pulizia e
- mantenimento, con solo alcune moderate riscritture di codice e
- nessuna correzione rilevante a livello algoritmico nel sottosistema
- della VM. Il nocciolo della base teorica del sottosistema
- rimane immutato ed un bel po' del merito per gli sforzi di
- modernizzazione negli ultimi anni appartiene a John Dyson e David
- Greenman. Poiché non sono uno storico come Kirk non
- tenterò di marcare tutte le varie caratteristiche con i nomi
- delle relative persone, perché sbaglierei
- invariabilmente.
-
- &trans.it.surrender;
-
-
-
- Questo articolo è stato pubblicato in origine nel numero di
- gennaio 2000 di DaemonNews.
- Questa versione dell'articolo può includere aggiornamenti da
- parte di Matt e di altri autori per riflettere i cambiamenti
- nell'implementazione della VM di FreeBSD.
-
-
-
-
- Introduzione
-
- Prima di andare avanti con la descrizione del progetto effettivo
- della VM spendiamo un po' di tempo sulla necessità di mantenere
- e modernizzare una qualunque base di codice longeva.
- Nel mondo della programmazione, gli algoritmi tendono ad essere più
- importanti del codice ed è dovuto alle radici accademiche
- di BSD che si è prestata grande attenzione alla progettazione
- algoritmica sin dal principio.
- Una maggiore attenzione al design in genere conduce ad una base di codice
- flessibile e pulita che può essere modificata abbastanza
- semplicemente, estesa, o rimpiazzata nel tempo.
- Mentre BSD viene considerato un sistema operativo vecchio
- da alcune persone, quelli di noi che lavorano su di esso tendono
- a considerarlo come una base di codice matura
- che ha vari componenti modificati, estesi, o rimpiazzati con codice
- moderno. Questa si è evoluta, e FreeBSD è all'avanguardia,
- non importa quanto possa essere vecchio qualche pezzo di codice.
- Questa è una distinzione importante da fare ed una di quelle che
- sfortunatamente sfuggono alla maggior parte delle persone. Il più
- grande errore che un programmatore possa fare è non imparare
- dalla storia, e questo è precisamente l'errore che molti sistemi
- operativi moderni hanno commesso. &windowsnt; è il miglior esempio
- di questo, e le conseguenze sono state disastrose. Anche Linux commette
- questo errore a un certo livello—abbastanza perché noi
- appassionati di BSD possiamo scherzarci su ogni tanto, comunque.
- Il problema di Linux è semplicemente la mancanza di esperienza e
- di una storia con la quale confrontare le idee, un problema che sta
- venendo affrontato rapidamente dalla comunità Linux nello stesso
- modo in cui è stato affrontato da quella BSD—con il continuo
- sviluppo di codice. La gente di &windowsnt;, d'altro canto, fa
- ripetutamente gli stessi errori risolti da &unix; decadi fa e poi impiega
- anni nel risolverli. E poi li rifanno, ancora, e ancora.
- Soffrono di un preoccupante caso di non è stato progettato
- qui e di abbiamo sempre ragione perché il nostro
- dipartimento marketing dice così. Io ho pochissima
- tolleranza per chiunque non impari dalla storia.
-
- La maggior parte dell'apparente complessità di progettazione di
- FreeBSD, specialmente nel sottosistema VM/Swap, è una conseguenza
- diretta dell'aver dovuto risolvere importanti problemi di prestazioni
- legati a varie condizioni. Questi problemi non sono dovuti a cattivi
- progetti algoritmici ma sorgono invece da fattori ambientali.
- In ogni paragone diretto tra piattaforme, questi problemi
- diventano più evidenti quando le risorse di sistema cominciano ad
- essere stressate.
- Mentre descrivo il sottosistema VM/Swap di FreeBSD il lettore
- dovrebbe sempre tenere a mente almeno due punti. Primo, l'aspetto
- più importante nel design prestazionale è ciò che
- è noto come Ottimizzazione del Percorso Critico.
- Accade spesso che le ottimizzazioni prestazionali aggiungano
- un po di impurità al codice per far migliorare il percorso critico.
- Secondo, un progetto solido e generalizzato, funziona meglio di
- un progetto pesantemente ottimizzato, alla lunga. Mentre un progetto
- generale può alla fin fine essere più lento di un sistema
- pesantemente ottimizzato quando vengono implementati inizialmente, il
- progetto generalizzato tende ad essere più semplice da adattare
- alle condizioni variabili mentre quello pesantemente ottimizzato finisce
- per dover essere gettato via. Ogni base di codice che dovrà
- sopravvivere ed essere mantenibile per anni deve dunque essere progettata
- con attenzione fin dall'inizio anche se questo può portare a
- piccoli peggioramenti nelle prestazioni.
- Vent'anni fa c'era ancora gente che sosteneva che programmare in assembly
- era meglio che programmare in linguaggi di alto livello, perché
- si poteva produrre codice che era dieci volte più veloce. Oggi,
- la fallacia di tale argomento è ovvia—così come i
- paralleli con il design algoritmico e la generalizzazione del
- codice.
-
-
-
- Oggetti VM
-
- Il modo migliore per iniziare a descrivere il sistema di VM di FreeBSD
- è guardandolo dalla prospettiva di un processo a livello
- utente. Ogni processo utente vede uno spazio di indirizzamento della VM
- singolo, privato e contiguo, contenente molti tipi di oggetti di memoria.
- Questi oggetti hanno varie caratteristiche.
- Il codice del programma e i dati del programma sono effettivamente
- un singolo file mappato in memoria (il file binario che è stato
- eseguito), ma il codice di programma è di sola lettura mentre i
- dati del programma sono copy-on-write
- I dati copy on write sono dati che vengono copiati solo al momento
- della loro effettiva modifica
- . Il BSS del programma è solamente una zona di memoria
- allocata e riempita con degli zero su richiesta, detta in inglese
- demand zero page fill.
- Nello spazio di indirizzamento possono essere mappati anche file
- arbitrari, che è in effetti il meccanismo con il quale funzionano
- le librerie condivise. Tali mappature possono richiedere modifiche per
- rimanere private rispetto al processo che le ha effettuate.
- La chiamata di sistema fork aggiunge una dimensione completamente nuova
- al problema della gestione della VM in cima alla complessità
- già data.
-
- Una pagina di dati di un programma (che è una basilare pagina
- copy-on-write) illustra questa complessità. Un programma binario
- contiene una sezione di dati preinizializzati che viene inizialmente
- mappata direttamente in memoria dal file del programma.
- Quando un programma viene caricato nello spazio di memoria virtuale di un
- processo, questa area viene inizialmente copiata e mappata in memoria dal
- binario del programma stesso, permettendo al sistema della VM di
- liberare/riusare la pagina in seguito e poi ricaricarla dal binario.
- Nel momento in cui un processo modifica questi dati, comunque, il
- sistema della VM deve mantenere una copia privata della pagina per quel
- processo. Poiché la copia privata è stata modificata, il
- sistema della VM non può più liberarlo, poiché non ci
- sarebbe più nessuna possibilità di recuperarlo in
- seguito.
-
- Noterai immediatamente che quella che in origine era soltanto
- una semplice mappatura di un file è diventata qualcosa di
- più complesso.
- I dati possono essere modificati pagina per pagina
- mentre una mappatura di file coinvolge molte pagine alla volta.
- La complessità aumenta ancora quando un processo esegue una fork.
- Quando un processo esegue una fork, il risultato sono due
- processi—ognuno con il proprio spazio di indirizzamento privato,
- inclusa ogni modifica fatta dal processo originale prima della chiamata a
- fork(). Sarebbe stupido per un sistema di VM creare
- una copia completa dei dati al momento della fork()
- perché è abbastanza probabile che almeno uno dei due
- processi avrà bisogno soltanto di leggere da una certa pagina da
- quel momento in poi, permettendo di continuare ad usare la
- pagina originale. Quella che era una pagina privata viene di nuovo
- resa una copy-on-write, poiché ogni processo (padre e figlio) si
- aspetta che i propri cambiamenti rimangano privati per loro e non abbiano
- effetti sugli altri.
-
- FreeBSD gestisce tutto ciò con un modello a strati di oggetti
- VM. Il file binario originale del programma risulta come lo strato di
- Oggetti VM più basso.
- Un livello copy-on-write viene messo sopra questo per mantenere quelle
- pagine che sono state copiate dal file originale.
- Se il programma modifica una pagina di dati appartenente al file originale
- il sistema dell VM prende un page fault
- Un page fault, o mancanza di pagina,
- corrisponde ad una mancanza di una determinata pagina di memoria a un
- certo livello, ed alla necessità di copiarla da un livello
- più lento. Ad esempio se una pagina di memoria è stata
- spostata dalla memoria fisica allo spazio di swap su disco, e viene
- richiamata, si genera un page fault e la pagina viene di nuovo copiata
- in ram.
- e fa una copia della pagina nel livello più alto.
- Quando un processo effettua una fork, vengono aggiunti altri livelli di
- Oggetti VM. Tutto questo potrebbe avere un po' più senso con un
- semplice esempio.
- Una fork() è un'operazione comune per ogni
- sistema *BSD, dunque questo esempio prenderà in considerazione un
- programma che viene avviato ed esegue una fork. Quando il processo viene
- avviato, il sistema della VM crea uno starto di oggetti, chiamiamolo
- A:
-
-
-
-
-
-
-
- +---------------+
-| A |
-+---------------+
-
-
-
- Un'immagine
-
-
-
- A rappresenta il file—le pagine possono essere
- spostate dentro e fuori dal mezzo fisico del file se necessario.
- Copiare il file dal disco è sensato per un programma,
- ma di certo non vogliamo effettuare il page out
- La copia dalla memoria al disco, l'opposto del page in, la
- mappatura in memoria.
- e sovrascrivere l'eseguibile.
- Il sistema della VM crea dunque un secondo livello, B, che verrà
- copiato fisicamente dallo spazio di swap:
-
-
-
-
-
-
-
- +---------------+
-| B |
-+---------------+
-| A |
-+---------------+
-
-
-
- Dopo questo, nella prima scrittura verso una pagina, viene creata una
- nuova pagina in B, ed il suo contenuto viene inizializzato con i dati di
- A. Tutte le pagine in B possono essere spostate da e verso un dispositivo
- di swap. Quando il programma esegue la fork, il sistema della VM crea
- due nuovi livelli di oggetti—C1 per il padre e C2 per il
- figlio—che restano sopra a B:
-
-
-
-
-
-
-
- +-------+-------+
-| C1 | C2 |
-+-------+-------+
-| B |
-+---------------+
-| A |
-+---------------+
-
-
-
- In questo caso, supponiamo che una pagina in B venga modificata dal
- processo genitore. Il processo subirà un fault di copy-on-write e
- duplicherà la pagina in C1, lasciando la pagina originale in B
- intatta.
- Ora, supponiamo che la stessa pagina in B venga modificata dal processo
- figlio. Il processo subirà un fault di copy-on-write e
- duplicherà la pagina in C2.
- La pagina originale in B è ora completamente nascosta poiché
- sia C1 che C2 hanno una copia e B potrebbe teoricamente essere distrutta
- (se non rappresenta un vero file);
- comunque, questo tipo di ottimizzazione non è triviale da
- realizzare perché è di grana molto fine.
- FreeBSD non effettua questa ottimizzazione.
- Ora, supponiamo (come è spesso il caso) che
- il processo figlio effettui una exec(). Il suo
- attuale spazio di indirizzamento è in genere rimpiazzato da un
- nuovo spazio di indirizzamento rappresentante il nuovo file.
- In questo caso il livello C2 viene distrutto:
-
-
-
-
-
-
-
- +-------+
-| C1 |
-+-------+-------+
-| B |
-+---------------+
-| A |
-+---------------+
-
-
-
- In questo caso, il numero di figli di B scende a uno, e tutti gli
- accessi a B avvengono attraverso C1. Ciò significa che B e C1
- possono collassare insieme in un singolo strato.
- Ogni pagina in B che esista anche in C1 viene cancellata da
- B durante il crollo. Dunque, anche se l'ottimizzazione nel passo
- precedente non era stata effettuata, possiamo recuperare le pagine morte
- quando il processo esce o esegue una exec().
-
- Questo modello crea un bel po' di problemi potenziali. Il primo
- è che ci si potrebbe ritrovare con una pila abbastanza profonda di
- Oggetti VM incolonnati che costerebbe memoria e tempo per la ricerca
- quando accadesse un fault. Può verificarsi un ingrandimento della
- pila quando un processo esegue una fork dopo l'altra (che sia il padre o
- il figlio). Il secondo problema è che potremmo ritrovarci con
- pagine morte, inaccessibili nella profondità della pila degli
- Oggetti VM. Nel nostro ultimo esempio se sia il padre che il figlio
- modificano la stessa pagina, entrambi hanno una loro copia della pagina e
- la pagina originale in B non è più accessibile
- da nessuno. Quella pagina in B può essere liberata.
-
- FreeBSD risolve il problema della profondità dei livelli con
- un'ottimizzazione speciale detta All Shadowed Case (caso
- dell'oscuramento totale).
- Questo caso accade se C1 o C2 subiscono sufficienti COW fault (COW
- è l'acronimo che sta per copy on write) da oscurare completamente
- tutte le pagine in B.
- Ponimo che C1 abbia raggiunto questo livello. C1 può ora
- scavalcare B del tutto, dunque invece di avere C1->B->A e C2->B->A adesso
- abbiamo C1->A e C2->B->A.
- ma si noti cos'altro è accaduto—ora B ha solo un riferimento
- (C2), dunque possiamo far collassare B e C2 insieme.
- Il risultato finale è che B viene cancellato
- interamente e abbiamo C1->A e C2->A. Spesso accade che B contenga un
- grosso numero di pagine e ne' C1 ne' C2 riescano a oscurarlo
- completamente. Se eseguiamo una nuova fork e creiamo un insieme di
- livelli D, comunque, è molto più probabile che uno dei
- livelli D sia eventualmente in grado di oscurare completamente l'insieme
- di dati più piccolo rappresentato da C1 o C2. La stessa
- ottimizzazione funzionerà in ogni punto nel grafico ed il
- risultato di ciò è che anche su una macchina con
- moltissime fork le pile degli Oggetti VM tendono a non superare una
- profondità di 4. Ciò è vero sia per il padre che per
- il figlio ed è vero nel caso sia il padre a eseguire la fork ma
- anche se è il figlio a eseguire fork in cascata.
-
- Il problema della pagina morta esiste ancora nel caso C1 o C2 non
- oscurino completamente B. A causa delle altre ottimizzazioni questa
- eventualità
- non rappresenta un grosso problema e quindi permettiamo semplicemente
- alle pagine di essere morte. Se il sistema si trovasse con poca memoria
- le manderebbe in swap, consumando un po' di swap, ma così
- è.
-
- Il vantaggio del modello ad Oggetti VM è che
- fork() è estremamente veloce, poiché
- non deve aver luogo nessuna copia di dati effettiva. Lo svantaggio
- è che è possibile costruire un meccanismo a livelli di
- Oggetti VM relativamente complesso che rallenterebbe la gestione dei page
- fault, e consumerebbe memoria gestendo le strutture degli Oggetti VM.
- Le ottimizazioni realizzate da FreeBSD danno prova di ridurre
- i problemi abbastanza da poter essere ignorati, non lasciando
- nessuno svantaggio reale.
-
-
-
- Livelli di SWAP
-
- Le pagine di dati private sono inizialmente o pagine
- copy-on-write o pagine zero-fill.
- Quando avviene un cambiamento, e dunque una copia, l'oggetto di copia
- originale (in genere un file) non può più essere utilizzato
- per salvare la copia quando il sistema della VM ha bisogno di
- riutilizzarla per altri scopi. A questo punto entra in gioco lo SWAP. Lo
- SWAP viene allocato per creare spazio dove salvare memoria che altrimenti
- non sarebbe disponibile. FreeBSD alloca la struttura di gestione di
- un Oggetto VM solo quando è veramente necessario.
- Ad ogni modo, la struttura di gestione dello swap ha avuto storicamente
- dei problemi.
-
- Su FreeBSD 3.X la gestione della struttura di swap prealloca un
- array che contiene l'intero oggetto che necessita di subire
- swap—anche se solo poche pagine di quell'oggetto sono effettivamente
- swappate questo crea una frammentazione della memoria del kernel quando
- vengono mappati oggetti grandi, o processi con grandi dimensioni
- all'esecuzione (large runsizes, RSS). Inoltre, per poter tenere traccia
- dello spazio di swap, viene mantenuta una lista dei buchi
- nella memoria del kernel, ed anche questa tende ad essere pesantemente
- frammentata. Poiché la lista dei buchi è una
- lista lineare, l'allocazione di swap e la liberazione hanno prestazioni
- non ottimali O(n) per ogni pagina.
- Questo richiede anche che avvengano allocazioni di memoria
- durante il processo di liberazione dello swap, e questo crea
- problemi di deadlock, blocchi senza uscita, dovuti a scarsa memoria.
- Il problema è ancor più esacerbato dai buchi creati a causa
- dell'algoritmo di interleaving.
- Inoltre il blocco di swap può divenire frammentato molto facilmente
- causando un'allocazione non contigua. Anche la memoria del Kernel deve
- essere allocata al volo per le strutture aggiuntive di gestione dello
- swap quando avviene uno swapout. È evidente che c'era molto spazio
- per dei miglioramenti.
-
- Per FreeBSD 4.X, ho completamente riscritto il sottosistema di swap.
- Con questa riscrittura, le strutture di gestione dello swap vengono
- allocate attraverso una tabella di hash invece che con un array lineare
- fornendo una dimensione di allocazione fissata e una granularità
- molto maggiore.
- Invece di usare una lista lineare collegata per tenere traccia delle
- riserve di spazio di swap, essa usa una mappa di bit di blocchi di swap
- organizzata in una struttura ad albero radicato con riferimenti allo
- spazio libero nelle strutture nei nodi dell'albero. Ciò rende in
- effetti l'operazione di allocazione e liberazione delle risorse
- un'operazione O(1).
- L'intera mappa di bit dell'albero radicato viene anche preallocata in modo
- da evitare l'allocazione di memoria kernel durante le operazioni di swap
- critiche nei momenti in cui la memoria disponibile è ridotta.
- Dopo tutto, il sistema tende a fare uso dello swap quando ha poca memoria
- quindi dovremmo evitare di allocare memoria per il kernel in quei momenti
- per poter evitare potenziali deadlock. Infine, per ridurre la
- frammentazione l'albero radicato è in grado di allocare grandi
- spezzoni contigui in una volta, saltando i pezzetti frammentati.
- Non ho ancora compiuto il passo finale di avere un puntatore di
- supportoall'allocazione che scorra su una porzione di swap nel
- momento in cui vengano effettuate delle allocazioni, in modo da garantire
- ancor di più le allocazioni contigue o almeno una località
- nel riferimento, ma ho assicurato che un'aggiunta simile possa essere
- effettuata.
-
-
-
- Quando liberare una pagina
-
- Poiché il sistema della VM usa tutta la memoria disponibile
- per il caching del disco, in genere ci sono pochissime pagine veramente
- libere. Il sistema della VM dipende dalla possibilità di
- scegliere in maniera appropriata le pagine che non sono in uso per
- riusarle in nuove allocazioni. Selezionare le pagine ottimali da liberare
- è forse la funzione singola più importante che possa essere
- eseguita da una VM perché se si effettua una selezione non
- accurata, il sistema della VM può essere forzato a recuperare
- pagine dal disco in modo non necessari, degradando seriamente le
- prestazioni del sistema.
-
- Quanto sovraccarico siamo disposti a sopportare nel percorso critico
- per evitare di liberare la pagina sbagliata? Ogni scelta sbagliata che
- facciamo ci costerà centinaia di migliaia di cicli di CPU ed uno
- stallo percettibile nei processi coinvolti, dunque permettiamo un
- sovraccarico significativo in modo da poter avere la certezza che la
- pagina scelta sia quella giusta.
- Questo è il motivo per cui FreeBSD tende ad avere prestazioni
- migliori di altri sistemi quando le risorse di memoria vengono
- stressate.
-
- L'algoritmo di determinazione della pagina da liberare
- è costruito su una storia di uso delle pagine di memoria.
- Per acquisire tale storia, il sistema si avvantaggia di una
- caratteristica della maggior parte dell'hardware moderno, il bit che
- indica l'attività di una pagina (page-used bit).
-
- In qualsiasi caso, il page-used bit viene azzerato e in un momento
- seguente il sistema della VM passa di nuovo sulla pagina e vede che il
- page-used bit è stato di nuovo attivato. Questo indica che la
- pagina viene ancora usata attivamente.
- Il bit ancora disattivato è un indice che quella pagina non viene
- usata attivamente.
- Controllando questo bit periodicamente, viene sviluppata una storia
- d'uso (in forma di contatore) per la pagina fisica. Quando il sistema
- della VM avrà bisogno di liberare delle pagine, controllare questa
- storia diventa la pietra angolare nella determinazione del candidato
- migliore come pagina da riutilizzare.
-
-
- E se l'hardware non ha un page-used bit?
-
- Per quelle piattaforme che non hanno questa caratteristica, il
- sistema in effetti emula un page-used bit. Esso elimina la mappatura di
- una pagina, o la protegge, forzando un page fault se c'è un
- accesso successivo alla pagina.
- Quando avviene il page fault, il sistema segnala semplicemente
- la pagina come usata e la sprotegge in maniera che possa essere usata.
- Mentre prendere tale page fault solo per determinare se una pagina
- è in uso può apparire una scelta costosa, in realtà
- essa lo è molto meno che riusare la pagina per altri scopi, per
- dover poi scoprire che un processo ne aveva ancora bisogno e dovere
- andare a cercarla di nuovo su disco.
-
-
- FreeBSD fa uso di parecchie code per le pagine per raffinare
- ulteriormente la selezione delle pagine da riutilizzare, come anche per
- determinare quando le pagine sporche devono essere spostate dalla memoria
- e immagazzinate da qualche parte. Poiché le tabelle delle pagine
- sono entità dinamiche in FreeBSD, non costa praticamente nulla
- eliminare la mappatura di una pagina dallo spazio di indirizzamento di un
- qualsiasi processo che la stia usando. Quando una pagina candidata
- è stata scelta sulla base del contatore d'uso, questo è
- esattamente quello che viene fatto.
- Il sistema deve effettuare una distinzione tra pagine pulite che
- possono essere teoricamente liberate in qualsiasi momento, e pagine
- sporche che devono prima essere scritte (salvate) per poter essere
- riutilizzabili.
- Quando una pagina candidata viene trovata viene spostata nella coda
- delle pagine inattive, se è una pagina sporca, o nella coda di
- cache se è pulita.
- Un algoritmo separato basato su un rapporto sporche/pulite
- determina quando le pagine sporche nella coda inattiva devono essere
- scritte su disco. Una volta che è stato fatto questo, le pagine
- ormai salvate vengono spostate dalla coda delle inattive alla coda di
- cache. A questo punto, le pagine nella coda di cache possono ancora
- essere riattivate da un VM fault ad un costo relativamente basso.
- Ad ogni modo, le pagine nella coda di cache vengono considerate
- immediatamente liberabili e verranno riutilizzate con un
- metodo LRU (least-recently used
- Usate meno recentemente. Le pagine che non vengono usate da molto
- tempo probabilmente non saranno necessarie a breve, e possono essere
- liberate.
- ) quando il sistema avrà bisogno di allocare nuova
- memoria.
-
- È importante notare che il sistema della VM di FreeBSD tenta
- di separare pagine pulite e sporche per l'espressa ragione di evitare
- scritture non necessarie di pagine sporche (che divorano banda di I/O), e
- non sposta le pagine tra le varie code gratuitamente quando il
- sottosistema non viene stressato. Questo è il motivo per cui
- dando un systat -vm vedrai sistemi con contatori della
- coda di cache bassi e contatori della coda delle pagine attive molto alti.
- Quando il sistema della VM diviene maggiormente stressato, esso fa un
- grande sforzo per mantenere le varie code delle pagine ai livelli
- determinati come più efficenti.
- Per anni è circolata la leggenda urbana che Linux facesse un lavoro
- migliore di FreeBSD nell'evitare gli swapout, ma in pratica questo non
- è vero. Quello che stava effettivamente accadendo era che FreeBSD
- stava salvando le pagine inutilizzate proattivamente per fare spazio
- mentre Linux stava mantendendo le pagine inutilizzate lasciando meno
- memoria disponibile per la cache e le pagine dei processi.
- Non so se questo sia vero ancora oggi.
-
-
-
- Pre-Faulting e Ottimizzazioni di Azzeramento
-
- Subire un VM fault non è costoso se la pagina sottostante
- è già nella memoria fisica e deve solo essere mappata di
- nuovo nel processo, ma può divenire costoso nel caso se ne
- subiscano un bel po' su base regolare. Un buon esempio di ciò si
- ha eseguendo un programma come &man.ls.1; o &man.ps.1; ripetutamente.
- Se il binario del programma è mappato in memoria ma non nella
- tabella delle pagine, allora tutte le pagine che verranno accedute dal
- programmma dovranno generare un page fault ogni volta che il programma
- viene eseguito.
- Ciò non è necessario quando le pagine in questione sono
- già nella cache della VM, quindi FreeBSD tenterà di
- pre-popolare le tabelle delle pagine di un processo con quelle pagine che
- sono già nella VM Cache. Una cosa che FreeBSD non fa ancora
- è effettuare il pre-copy-on-write di alcune pagine nel caso di una
- chiamata a exec.
- Ad esempio, se esegui il programma &man.ls.1; mentre stai eseguendo
- vmstat 1 noterai che subisce sempre un certo numero
- di page fault, anche eseguendolo ancora e ancora. Questi sono
- zero-fill fault, legati alla necessità di azzerare memoria,
- non program code fault, legati alla copia dell'eseguibile in memoria
- (che erano già stati gestiti come pre-fault).
- Pre-copiare le pagine all'exec o alla fork è un'area che potrebbe
- essere soggetta a maggior studio.
-
- Una larga percentuale dei page fault che accadono è composta di
- zero-fill fault. In genere è possibile notare questo fatto
- osservando l'output di vmstat -s.
- Questi accadono quando un processo accede a pagine nell'area del BSS.
- Ci si aspetta che l'area del BSS sia composta inizialmente da zeri
- ma il sistema della VM non si preoccupa di allocare nessuna memoria
- finché il processo non ne ha effettivamente bisogno.
- Quindi nel momento in cui accade un fault il sistema della VM non
- deve solo allocare una nuova pagina, ma deve anche azzerarla.
- Per ottimizzare l'operazione di azzeramento, il sistema della VM
- ha la capacità di pre-azzerare le pagine e segnalarle come tali,
- e di richiedere pagine pre-azzerate quando avvengono zero-fill fault.
- Il pre-azzeramento avviene quando la CPU è inutilizzata ma il
- numero di pagine che vengono pre-azzerate dal sistema è limitato
- per evitare di spazzare via la cache della memoria. Questo è un
- eccellente esempio di complessità aggiunta al sistema della VM per
- ottimizare il percorso critico.
-
-
-
- Ottimizzazioni della Tabella delle Pagine
-
- Le ottimizzazioni alla tabella delle pagine costituiscono
- La parte più controversa nel design della VM di FreeBSD ed ha
- mostrato un po' di affanno con l'avvento di un uso pesante di
- mmap().
- Penso che questa sia una caratteristiche della maggior parte dei
- BSD anche se non sono sicuro di quando è stata introdotta
- la prima volta. Ci sono due ottimizzazioni maggiori. La prima è
- che le tabelle della pagine hardware non contengono uno stato persistente
- ma possono essere gettate via in qualsiasi momento con un sovraccarico di
- gestione minimo.
- La seconda è che ogni pagina attiva nel sistema ha una struttura di
- controllo pv_entry che è integrata con la
- struttura vm_page. FreeBSD può semplicemente
- operare attraverso quelle mappature di cui è certa l'esistenza,
- mentre Linux deve controllare tutte le tabelle delle pagine che
- potrebbero contenere una mappatura specifica per
- vedere se lo stanno effettivamente facendo, il che può portare ad
- un sovraccarico computazionale O(n^2) in alcune situazioni.
- È per questo che FreeBSD tende a fare scelte migliori su quale
- pagina riutilizzare o mandare in swap quando la memoria è messa
- sotto sforzo, fornendo una miglior performance sotto carico. Comunque,
- FreeBSD richiede una messa a punto del kernel per accomodare situazioni
- che richiedano grandi spazi di indirizzamento condivisi, come quelli che
- possono essere necessari in un sistema di news perché potrebbe
- esaurire il numero di struct pv_entry.
-
- Sia Linux che FreeBSD necessitano di lavoro in quest'area.
- FreeBSD sta cercando di massimizzare il vantaggio di avere un modello di
- mappatura attiva potenzialmente poco denso (non tutti i processi hanno
- bisogno di mappare tutte le pagine di una libreria condivisa, ad esempio),
- mentre linux sta cercando di semplificare i suoi algoritmi. FreeBSD
- generalmente ha dei vantaggi prestazionali al costo di un piccolo spreco
- di memoria in più, ma FreeBSD crolla nel caso in cui un grosso file
- sia condiviso massivamente da centinaia di processi.
- Linux, d'altro canto, crolla nel caso in cui molti processi mappino a
- macchia di leopardo la stessa libreria condivisa e gira in maniera non
- ottimale anche quando cerca di determinare se una pagina deve essere
- riutilizzata o no.
-
-
-
- Colorazione delle Pagine
-
- Concluderemo con le ottimizzazioni di colorazione delle pagine.
- La colorazione delle pagine è un'ottimizzazione prestazionale
- progettata per assicurare che gli accessi a pagine contigue nella memoria
- virtuale facciano il miglior uso della cache del processore. Nei
- tempi antichi (cioè più di 10 anni fa) le cache dei
- processori tendevano a mapparela memoria virtuale invece della memoria
- fisica. Questo conduceva ad un numero enorme di problemi inclusa la
- necessità di ripulire la cache ad ogni cambio di contesto, in
- alcuni casi, e problemi con l'aliasing dei dati nella cache.
- Le cache dei processori moderni mappano la memoria fisica proprio per
- risolvere questi problemi.
- Questo significa che due pagine vicine nello spazio di indirizzamento
- dei processi possono non corrispondere a due pagine vicine nella cache.
- In effetti, se non si è attenti pagine affiancate nella memoria
- virtuale possono finire con l'occupare la stessa pagina nella cache del
- processore—portando all'eliminazione prematura di dati
- immagazzinabili in cache e riducendo le prestazioni della cache.
- Ciò è vero anche con cache set-associative
- set-associative sta per associative all'interno di un insieme, in
- quanto c'è un insieme di blocchi della cache nei quale puo
- essere mappato un elemento della memoria fisica.
- a molte vie (anche se l'effetto viene in qualche maniera
- mitigato).
-
- Il codice di allocazione della memoria di FreeBSD implementa
- le ottimizizzazioni di colorazione delle pagine, ciò significa che
- il codice di allocazione della memoria cercherà di trovare delle
- pagine libere che siano vicine dal punto di vista della cache.
- Ad esempio, se la pagina 16 della memoria fisica è assegnata
- alla pagina 0 della memoria virtuale di un processo e la cache può
- contenere 4 pagine, il codice di colorazione delle pagine non
- assegnerà la pagina 20 di memoria fisica alla pagina 1 di
- quella virtuale.
- Invece, gli assegnerà la pagina 21 della memoria fisica.
- Il codice di colorazione delle pagine cerca di evitare l'assegnazione
- della pagina 20 perché questa verrebbe mappata sopra lo stesso
- blocco di memoria cache della pagina 16 e ciò causerrebbe un uso
- non ottimale della cache.
- Questo codice aggiunge una complessità significativa
- al sottosistema di allocazione memoria della VM, come si può ben
- immaginare, ma il gioco vale ben più della candela. La colorazione
- delle pagine rende la memoria virtuale deterministica quanto la memoria
- fisica per quel che riguarda le prestazioni della cache.
-
-
-
- Conclusione
-
- La memoria virtuale nei sistemi operativi moderni deve affrontare
- molti problemi differenti efficientemente e per molti diversi tipi di uso.
- L'approccio modulare ed algoritmico che BSD ha storicamente seguito ci
- permette di studiare e comprendere l'implementazione attuale cosi come di
- poter rimpiazzare in maniera relativamente pulita grosse sezioni di
- codice. Ci sono stati un gran numero di miglioramenti al sistema della
- VM di FreeBSD negli ultimi anni, ed il lavoro prosegue.
-
-
-
- Sessione Bonus di Domande e Risposte di Allen Briggs
- briggs@ninthwonder.com
-
-
-
-
- Cos'è l'algoritmo di interleaving a cui
- fai riferimento nell'elenco delle debolezze della gestione dello
- swap in FreeBSD 3.X ?
-
-
-
- FreeBSD usa un intervallo tra zone di swap fissato, con un
- valore predefinito di 4. Questo significa che FreeBSD riserva
- spazio per quattro aree di swap anche se ne hai una sola o due o
- tre. Poiché lo swap è intervallato lo spazio di
- indirizzamento lineare che rappresenta le quattro aree di
- swap verrà frammentato se non si possiedono
- veramente quattro aree di swap. Ad esempio, se hai due aree di
- swap A e B la rappresentazione dello spazio di FreeBSD per
- quell'area di swap verrà interrotta in blocchi di 16
- pagine:
-
- A B C D A B C D A B C D A B C D
-
- FreeBSD 3.X usa una lista sequenziale delle
- regioni libere per registrare le aree di swap libere.
- L'idea è che grandi blocchi di spazio libero e lineare
- possano essere rappresentati con un nodo singolo
- (kern/subr_rlist.c).
- Ma a causa della frammentazione la lista sequenziale risulta
- assurdamente frammentata.
- Nell'esempio precedente, uno spazio di swap completamente non
- allocato farà si che A e B siano mostrati come
- liberi e C e D come totalmente
- allocati. Ogni sequenza A-B richiede un nodo per essere
- registrato perché C e D sono buchi, dunquei nodi di lista non
- possono essere combinati con la sequenza A-B seguente.
-
- Perché organizziamo lo spazio in intervalli invece di
- appiccicare semplicemente le area di swap e facciamo qualcosa di
- più carino? Perché è molto più semplice
- allocare strisce lineari di uno spazio di indirizzamento ed ottenere
- il risultato già ripartito tra dischi multipli piuttosto che
- cercare di spostare questa complicazione altrove.
-
- La frammentazione causa altri problemi. Essendoci una lista
- lineare nella serie 3.X, ed avendo una tale quantità di
- frammentazione implicita, l'allocazione e la liberazione dello swap
- finisce per essere un algoritmo O(N) invece di uno O(1).
- Combinalo con altri fattori (attività di swap pesante)
- e comincerai a trovarti con livelli di overhead come O(N^2) e
- O(N^3), e ciò è male. Il sistema dela serie 3.X
- può anche avere necessità di allocare KVM durante
- un'operazione di swap per creare un nuovo nodo lista, il che
- può portare ad un deadlock se il sistema sta cercando di
- liberare pagine nella memoria fisica in un momento di
- scarsità di memoria.
-
- Nella serie 4.X non usiamo una lista sequenziale. Invece usiamo
- un albero radicato e mappe di bit di blocchi di swap piuttosto che
- nodi lista.
- Ci prendiamo il peso di preallocare tutte le mappe di bit richieste
- per l'intera area di swap ma ciò finisce per consumare meno
- memoria grazie all'uso di una mappa di bit (un bit per blocco)
- invece di una lista collegata di nodi. L'uso di un albero radicato
- invece di una lista sequenziale ci fornisce una performance quasi
- O(1) qualunque sia il livello di frammentazione dell'albero.
-
-
-
-
-
- Non ho capito questo:
-
-
- È importante notare che il sistema della VM di FreeBSD
- tenta di separare pagine pulite e sporche per l'espressa ragione di
- evitare scritture non necessarie di pagine sporche (che divorano
- banda di I/O), e non sposta le pagine tra le varie code
- gratuitamente se il sottosistema non viene stressato. Questo
- è il motivo per cui dando un systat -vm
- vedrai sistemi con contatori della coda di cache bassi e contatori
- della coda delle pagine attive molto alti.
-
-
- Come entra in relazione la separazione delle pagine pulite e
- sporche (inattive) con la situazione nella quale vediamo contatori
- bassi per la coda di cache e valori alti per la coda delle pagine
- attive in systat -vm? I dati di systat derivano
- da una fusione delle pagine attive e sporche per la coda delle
- pagine attive?
-
-
-
- Si, questo può confondere. La relazione è
- obiettivo contro realtà. Il
- nostro obiettivo è separare le pagine ma la realtà
- è che se non siamo in crisi di memoria, non abbiamo bisogno
- di farlo.
-
- Questo significa che FreeBSD non cercherà troppo di
- separare le pagine sporche (coda inattiva) da quelle pulite
- (code della cache), ne cercherà di disattivare le pagine
- (coda pagine attive -> coda pagine inattive) quando il sistema non
- è sotto sforzo, anche se non vengono effettivamente
- usate.
-
-
-
-
-
- Nell'esempio di &man.ls.1; / vmstat 1,
- alcuni dei page fault non potrebbero essere data page faults
- (COW da file eseguibili a pagine private)? Cioè, io mi
- aspetterei che i page fault fossero degli zero-fill e dei dati di
- programma. O si implica che FreeBSD effettui il pre-COW per i dati
- di programma?
-
-
-
- Un fault COW può essere o legato a uno zero-fill o a dati
- di programma.
- Il meccanismo è lo stesso in entrambi i casi poiché
- i dati di programma da copiare sono quasi certamente già
- presenti nella cache. E infatti li tratto insieme. FreeBSD non
- effettua preventivamentela copia dei dati di programma o lo
- zero-fill, effettua la mappatura preventiva
- delle pagine che sono presenti nella sua cache.
-
-
-
-
-
- Nella sezione sull'ottimizzazione della tabella delle pagine,
- potresti fornire maggiori dettagli su pv_entry e
- vm_page (forse vm_page dovrebbe essere
- vm_pmap—come in 4.4, cf. pp. 180-181 di
- McKusick, Bostic, Karel, Quarterman)? Specificamente, che tipo di
- operazioni/reazioni richiederebbero la scansione delle
- mappature?
-
- Come funziona Linux nel caso in cui FreeBSD fallisce
- (la condivisione di un grosso file mappato tra molti
- processi)?
-
-
-
- Una vm_page rappresenta una tupla
- (oggetto,indice#).
- Una pv_entry rappresenta una voce nella tabella
- delle pagine hardware (pte). Se hai cinque processi che condividono
- la stessa pagina fisica, e tre delle tabelle delle pagine di questi
- processi mappano effettivamente la pagina, questa pagina
- verrà rappresentata da una struttura
- vm_page singola e da tre strutture
- pv_entry.
-
- Le strutture pv_entry rappresentano solo
- le pagine mappate dalla MMU (una pv_entry
- rappresenta un pte). Ciò significa che è necessario
- rimuovere tutti i riferimenti hardware a vm_page
- (in modo da poter riutilizzare la pagina per qualcos'altro,
- effettuare il page out, ripulirla, sporcarla, e così via)
- possiamo semplicemente scansionare la lista collegata di
- pv_entry associate con quella
- vm_page per rimuovere o modificare i pte
- dalla loro tabella delle pagine.
-
- Sotto Linux non c'è una lista collegata del genere. Per
- poter rimuovere tutte le mappature della tabella delle pagine
- hardware per una vm_page linux deve indicizzare
- ogni oggetto VM che potrebbe aver mappato la
- pagina. Ad esempio, se si hanno 50 processi che mappano la stessa
- libreria condivisa e si vuole liberarsi della pagina X in quella
- libreria, sarà necessario cercare nella tabella delle pagine
- per ognuno dei 50 processi anche se solo 10 di essi ha
- effettivamente mappato la pagina. Così Linux sta barattando
- la semplicità del design con le prestazioni. Molti algoritmi
- per la VM che sono O(1) o (piccolo N) in FreeBSD finiscono per
- diventare O(N), O(N^2), o anche peggio in Linux.
- Poiché i pte che rappresentano una particolare pagina in un
- oggetto tendono ad essere allo stesso offset in tutte le tabelle
- delle pagine nelle quali sono mappati, la riduzione del numero di
- accessi alla tabela delle pagine allo stesso offset eviterà
- che la la linea di cache L1 per quell'offset venga cancellata,
- portando ad una performance migliore.
-
- FreeBSD ha aggiunto complessità (lo schema
- pv_entry) in modo da incrementare le prestazioni
- (per limitare gli accessi alla tabella delle pagine
- solo a quelle pte che necessitino di essere
- modificate).
-
- Ma FreeBSD ha un problema di scalabilità che linux non ha
- nell'avere un numero limitato di strutture
- pv_entry e questo provoca problemi quando si
- hanno condivisioni massicce di dati. In questo caso c'è la
- possibilità che finiscano le strutture
- pv_entry anche se c'è ancora una grande
- quantità di memoria disponibile.
- Questo può essere risolto abbastanza facilmente
- aumentando il numero di struttre pv_entry nella
- configurazione del kernel, ma c'è veramente bisogno di
- trovare un modo migliore di farlo.
-
- Riguardo il sovrapprezzo in memoria di una tabella delle pagine
- rispetto allo schema delle pv_entry: Linux usa
- tabelle delle pagine permanenti che non vengono
- liberate, ma non necessita una pv_entry per ogni
- pte potenzialmente mappato.
- FreeBSD usa tabelle delle pagine throw away,
- eliminabili, ma aggiunge una struttura pv_entry
- per ogni pte effettivamente mappato. Credo che l'utilizzo della
- memoria finisca per essere più o meno lo stesso, fornendo a
- FreeBSD un vantaggio algoritmico con la capacità di
- eliminare completamente le tabelle delle pagine con un
- sovraccarico prestazionale minimo.
-
-
-
-
-
- Infine, nella sezione sulla colorazione delle pagine, potrebbe
- esser d'aiuto avere qualche descrizione in più di quello che
- intendi. Non sono riuscito a seguire molto bene.
-
-
-
- Sai come funziona una memoria cache hardware L1? Spiego:
- Considera una macchina con 16MB di memoria principale ma solo 128K
- di cache L1. In genere il modo in cui funziona la cache è
- che ogni blocco da 128K di memoria principale usa gli
- stessi 128K di cache.
- Se si accede all'offset 0 della memoria principale e poi al 128K si
- può finire per cancellare i dati che si erano messi nella
- cache dall'offset 0!
-
- Ora, sto semplificando di molto. Ciò che ho appena
- descritto è quella che viene detta memoria cache a
- corrispondenza diretta, o direct mapped.
- La maggior parte delle cache moderne sono quelle che
- vengono dette set-associative a 2 o 4 vie.
- L'associatività di questo tipo permette di accedere fino ad N
- regioni di memoria differenti che si sovrappongano sulla stessa
- cache senza distruggere i dati preventivamente immagazzinati.
- Ma solo N.
-
- Dunque se ho una cache set associativa a 4 vie posso accedere
- agli offset 0, 128K, 256K 384K ed essere ancora in grado di
- accedere all'offset 0 ritrovandolo nella cache L1. Se poi accedessi
- all'offset 512K, ad ogni modo, uno degli oggetti dato immagazzinati
- precedentemente verrebbero cancellati dalla cache.
-
- È estremamente importante …
- estremamente importante che la maggior parte
- degli accessi del processore alla memoria vengano dalla cache L1,
- poiché la cache L1 opera alla stessa frequenza del
- processore. Nel momento in cui si ha un miss
- Un miss nella cache è equivalente a un page fault per
- la memoria fisica, ed allo stesso modo implica un accesso a
- dispositivi molto più lenti, da L1 a L2 come da RAM a
- disco.
- nella cache L1 si deveandare a cercare nella cache L2 o
- nella memoria principale, il processore andrà in stallo, e
- potenzialmente potrà sedersi a girarsi i pollici per un tempo
- equivalente a centinaia di istruzioni
- attendendo che la lettura dalla memoria principale venga
- completata. La memoria principale (la RAM che metti nel tuo
- computer) è lenta, se comparata alla
- velocità del nucleo di un moderno processore.
-
- Ok, ora parliamo della colorazione dele pagine:
- tutte le moderne cache sono del tipo noto come cache
- fisiche. Esse memorizzano indirizzi di memoria
- fisica, non indirizzi di memoria virtual. Ciò permette alla
- cache di rimanere anche nel momento in cui ci sia un cambio di
- contesto tra processi, e ciò è molto
- importante.
-
- Ma nel mondo &unix; devi lavorare con spazi di indirizzamento
- virtuali, non con spazi di indirizzamento fisici. Ogni programma
- che scrivi vedrà lo spazio di indirizzamento virtuale
- assegnatogli. Le effettive pagine fisiche
- nascoste sotto quello spazio di indirizzi virtuali
- non saranno necessariamente contigue fisicamente! In effetti,
- potresti avere due pagine affiancate nello spazio di
- indirizzamento del processo cge finiscono per trovarsi agli
- offset 0 e 128K nella memoria fisica.
-
- Un programma normalmente assume che due pagine
- affiancate verranno poste in cache in maniera ottimale.
- Cioè, che possa accedere agli oggetti dato in
- entrambe le pagine senza che esse si cancellino a vicenda le
- rispettiva informazioni in cache.
- Ma ciò è vero solo se le pagine fisiche sottostanti lo
- spazio di indirizzo virtuale sono contigue (per quel che riguarda
- la cache).
-
- Questo è ciò che viene fatto dalla colorazione
- delle pagine.
- Invece di assegnare pagine fisiche casuali agli
- indirizzi virtuali, che potrebbe causare prestazioni non ottimali
- della cache, la colorazione dele pagine assegna pagine fisiche
- ragionevolmente contigue.
- Dunque i programmi possono essere scritti assumendo che
- le caratteristiche per lo spazio di indirizzamento virtuale del
- programma della cache hardware sottostante siano uguali a come
- sarebbero state se avessero usato lo spazio di indirizzamento
- fisico.
-
- Si note ho detto ragionevolmente contigue invece
- che semplicemente contigue. Dal punto di vista di
- una cache di 128K a corrispondenza diretta, l'indirizzo fisico 0
- è lo stesso che l'indirizzo fisico 128K.
- Dunque due agine affiancate nello spzio di indirizzamento virtuale
- potrebbero finire per essere all'offset 128K e al 132K nella memoria
- fisica, ma potrebbero trovarsi tranquillamente anche agli offset
- 128K e 4K della memoria fisica e mantenera comunque le stesse
- caratteristiche prestazionali nei riguardi della cache. Dunque la
- colorazione delle pagine non deveassegnare
- pagine di memoria fisica veramente contigue a pagine di memoria
- virtuale contigue, deve solo assicurarsi che siano assegnate pagine
- contigue dal punto di vista delle prestazioni/operazioni della
- cache.
-
-
-
-
-
Property changes on: head/it_IT.ISO8859-15/articles/vm-design/article.xml
___________________________________________________________________
Deleted: svn:keywords
## -1 +0,0 ##
-FreeBSD=%H
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/sgml
\ No newline at end of property
Index: head/it_IT.ISO8859-15/articles/vm-design/Makefile
===================================================================
--- head/it_IT.ISO8859-15/articles/vm-design/Makefile (revision 52098)
+++ head/it_IT.ISO8859-15/articles/vm-design/Makefile (nonexistent)
@@ -1,22 +0,0 @@
-#
-# $FreeBSD$
-#
-# Articolo: Elementi di progettazione del sistema di VM di FreeBSD
-
-DOC?= article
-
-FORMATS?= html
-WITH_ARTICLE_TOC?= YES
-
-SRCS= article.xml
-IMAGES_EN = fig1.eps
-IMAGES_EN+= fig2.eps
-IMAGES_EN+= fig3.eps
-IMAGES_EN+= fig4.eps
-
-INSTALL_COMPRESSED?=gz
-INSTALL_ONLY_COMPRESSED?=
-
-
-DOC_PREFIX?= ${.CURDIR}/../../..
-.include "${DOC_PREFIX}/share/mk/doc.project.mk"
Property changes on: head/it_IT.ISO8859-15/articles/vm-design/Makefile
___________________________________________________________________
Deleted: svn:keywords
## -1 +0,0 ##
-FreeBSD=%H
\ No newline at end of property
Index: head/it_IT.ISO8859-15/articles/committers-guide/article.xml
===================================================================
--- head/it_IT.ISO8859-15/articles/committers-guide/article.xml (revision 52098)
+++ head/it_IT.ISO8859-15/articles/committers-guide/article.xml (nonexistent)
@@ -1,1818 +0,0 @@
-
-
-
-
- Guida del Committer
-
-
-
- The FreeBSD Italian Documentation Project
-
-
-
- 1999
-
- 2000
-
- 2001
-
- 2002
-
- 2003
-
- 2004
-
- The FreeBSD Italian Documentation Project
-
-
-
- &tm-attrib.freebsd;
- &tm-attrib.cvsup;
- &tm-attrib.ibm;
- &tm-attrib.intel;
- &tm-attrib.sparc;
- &tm-attrib.general;
-
-
- $FreeBSD$
-
- $FreeBSD$
-
-
- Questo documento fornisce informazioni per la comunità dei
- committer di FreeBSD. Tutti i nuovi committer dovrebbero leggere
- questo documento prima di iniziare, e i committer già esistenti
- sono fortemente incoraggiati a riguardarselo di tanto in tanto.
-
- &trans.it.alex;
-
-
-
-
- Dettagli Amministrativi
-
-
-
-
-
- Host con il Repository
- Principale
-
- ncvs.FreeBSD.org
-
-
-
- Metodi di Accesso
-
- &man.ssh.1;, solo protocollo 2
-
-
-
- CVSROOT Principale
-
- ncvs.FreeBSD.org:/home/ncvs
- (guarda anche la ).
-
-
-
- &a.cvsadm; Principali
-
- &a.peter; e &a.markm;, così come &a.joe; e &a.marcus;
- per i ports/
-
-
-
- Mailing List
-
- &a.doc-developers;, &a.doc-committers;;
- &a.ports-developers;, &a.ports-committers;;
- &a.src-developers;, &a.src-committers;. (Ogni repository di
- progetto ha le sue mailing list -developers e -committers. Gli
- archivi per queste liste possono essere trovati nei file
- /home/mail/repository-name-developers-archive
- e
- /home/mail/repository-name-committers-archive
- sul cluster di FreeBSD.org.)
-
-
-
- Report mensili del Core Team
- /home/core/public/monthly-report
- sul cluster di FreeBSD.org.
-
-
-
- Tag CVS Degni di Nota
-
- RELENG_4 (4.X-STABLE),
- RELENG_5 (5.X-STABLE),
- HEAD (-CURRENT)
-
-
-
-
-
- È richiesto l'uso di &man.ssh.1; o &man.telnet.1; con
- Kerberos 5 per connettersi agli host del progetto. Per &man.ssh.1;
- è permesso solo il protocollo 2.
- Questi sono generalmente più sicuri che un semplice &man.telnet.1;
- o &man.rlogin.1; visto che la negoziazione delle credenziali
- avverrà sempre in modo cifrato.
- Tutto il traffico è cifrato di default
- con &man.ssh.1;. Insieme a programmi di utilità come
- &man.ssh-agent.1; e &man.scp.1;, anch'essi disponibili, &man.ssh.1;
- è di gran lunga più conveniente. Se non sai nulla di
- &man.ssh.1;, guarda la .
-
-
-
- Tipi di Bit di Commit
-
- Il repository CVS di FreeBSD ha un numero di componenti che, se
- combinati, supportano i sorgenti di base del sistema operativo, la
- documentazione, l'infrastruttura dei port delle applicazioni di terze
- parti, e vari programmi di utilità. Quando vengono assegnati i bit
- di commit di FreeBSD, vengono specificate le aree dell'albero dove il bit
- può essere usato. Solitamente, le aree associate a un bit
- corrispondono a quelle di chi ha autorizzato l'assegnamento del bit di
- commit. Ulteriori aree di autorità possono essere aggiunte in
- seguito: se occorrerà, il committer dovrà seguire le
- normali procedure di allocazione del bit di commit per quell'area
- dell'albero, chiedendo l'approvazione all'entità appropriata e
- possibilmente prendendo un mentore per quell'area per un po' di
- tempo.
-
-
-
-
-
- Tipo di Committer
-
- Responsabile
-
- Componenti dell'Albero
-
-
-
- src
-
- core@
-
- src/, doc/ soggetta ad appropriata revisione
-
-
-
- doc
-
- doceng@
-
- doc/, www/, documentazione src/
-
-
-
- ports
-
- portmgr@
-
- ports/
-
-
-
-
-
- I bit di commit assegnati prima dello sviluppo della nozione di aree
- di autorità possono essere usati in molte parti dell'albero.
- Tuttavia, il buon senso dice che un committer che non ha mai lavorato
- precedentemente in un'area dell'albero chieda una revisione del proprio
- lavoro prima di effettuare il commit, chieda l'approvazione del
- responsabile appropriato, e/o lavori d'accordo con un mentore. Dato che
- le regole sulla manutenzione del codice differiscono a seconda dell'area
- dell'albero, questo è per il bene del committer che lavora in
- un'area poco familiare tanto quanto per gli altri che lavorano
- sull'albero.
-
- I committer sono incoraggiati a chiedere la revisione del proprio
- lavoro come parte del normale processo di sviluppo, indifferentemente
- dall'area dell'albero in cui stanno lavorando.
-
-
- Regolamento dell'attività del doc/
- committer in src/
-
-
-
- I doc committer possono effettuare commit riguardanti modifiche
- alla documentazione sui file src, come pagine man, README,
- database dei fortune, file dei calendari, e correzioni sui commenti
- senza l'approvazione di un src committer, prestando la solita
- attenzione e cura ai commit.
-
-
-
- I doc committer possono effettuare commit riguardanti piccole
- modifiche e correzioni ai sorgenti, come correzioni per la
- compilazione, piccole funzionalità, ecc., con un
- Approved by di un src committer.
-
-
-
- I doc committer possono cercare di ottenere il commit bit sui
- src acquisendo un mentore, che proporrà il doc committer al
- core. Una volta approvato, verrà aggiunto al file
- access ed inizierà il normale periodo
- sotto la guida del mentore, che implica l'aggiunta di
- Approved by per un certo periodo.
-
-
-
- Approved by può essere usato solamente
- se l'approvazione è di un src committer senza mentore —
- i committer ancora sotto la guida di un mentore possono fornire al
- più un Reviewed by ma non un
- Approved by.
-
-
-
-
-
-
- Operazioni sul CVS
-
- Si assume che tu abbia già familiarità con le operazioni
- di base di CVS.
-
- I &a.cvsadm; sono i proprietari del repository CVS e
- sono responsabili delle sue modifiche dirette allo scopo di ripulire o
- sistemare dei gravi abusi di CVS da parte di un committer.
- Nel caso dovessi causare qualche problema al repository,
- diciamo una errata operazione di cvs import o
- cvs tag, invia un messaggio al membro responsabile
- fra i &a.cvsadm;, come stabilito nella tabella qui sotto, (o chiama uno
- di loro) ed esponi il problema. Per questioni molto importanti che
- interessano l'intero albero CVS—non solo un'area
- specifica—puoi contattare i &a.cvsadm;. Non
- contattare i &a.cvsadm; per copie di repository o altre cose che possono
- gestire i team più specifici.
-
- Gli unici che hanno il
- permesso di manipolare direttamente i bit del repository sono i
- repomeister. Per questo non ci sono shell di login
- disponibili sulle macchine del repository, tranne che per i
- repomeister.
-
-
- A seconda dell'area interessata del repository CVS, dovresti
- mandare la tua richiesta a uno dei seguenti indirizzi email:
-
-
-
- ncvs@ - a proposito di /home/ncvs, il repository dei
- src
-
-
-
- pcvs@ - a proposito di /home/pcvs, il repository dei
- port
-
-
-
- dcvs@ - a proposito di /home/dcvs, il repository dei
- doc
-
-
-
- projcvs@ - a proposito di /home/projcvs, il repository dei
- progetti di terze parti
-
-
-
-
- L'albero CVS è attualmente diviso in quattro repository
- differenti, ovvero doc, ports,
- projects e src. Questi vengono
- ricomposti sotto un unico CVSROOT quando vengono
- distribuiti tramite CVSup per la convenienza
- dei nostri utenti.
-
-
- Nota che il modulo www che contiene i sorgenti
- del sito web di FreeBSD
- è contenuto all'interno del repository
- doc.
-
-
- I repository CVS sono ospitati sulle macchine repository.
- Attualmente, ognuno dei repository elencati qui sopra risiede sulla stessa
- macchina fisica, ncvs.FreeBSD.org, ma
- per permettere la possibilità di averne ognuno su una macchina
- diversa in futuro, ci sono diversi nomi di host che i committer
- dovrebbero utilizzare. Inoltre, ogni repository risiede in una
- directory differente. La seguente tabella racchiude la situazione.
-
-
-
- Le operazioni sul CVS sono fatte da remoto impostando la variabile di
- ambiente CVSROOT a ncvs.FreeBSD.org:/home/ncvs
- e la variabile CVS_RSH a ssh, e
- quindi effettuando le appropriate operazioni di check-out/check-in.
- Molti committer definiscono degli alias che si espandono nella corretta
- invocazione di cvs per il repository
- appropriato. Per esempio, un utente di &man.tcsh.1; può aggiungere
- le seguenti righe al suo .cshrc per questo
- scopo:
-
- alias dcvs env CVS_RSH=ssh cvs -d user@dcvs.FreeBSD.org:/home/dcvs
-alias pcvs env CVS_RSH=ssh cvs -d user@pcvs.FreeBSD.org:/home/pcvs
-alias projcvs env CVS_RSH=ssh cvs -d user@projcvs.FreeBSD.org:/home/projcvs
-alias scvs env CVS_RSH=ssh cvs -d user@ncvs.FreeBSD.org:/home/ncvs
-
- In questo modo è possibile fare tutte le operazioni di
- CVS localmente ed usare Xcvs
- commit per effettuare il commit sull'albero CVS ufficiale.
- Se desideri aggiungere qualcosa di totalmente nuovo (ad esempio dei
- sorgenti in contrib, ecc.), deve essere usato cvs
- import. Guarda come riferimento la pagina man di &man.cvs.1;
- per l'utilizzo.
-
-
- Per favore non usare cvs
- checkout o update con la macchina con il
- repository ufficiale impostata come CVS Root per tenere aggiornato il
- tuo albero dei sorgenti. CVS da remoto non è ottimizzato per la
- distribuzione via rete e richiede un grande sovraccarico di lavoro e di
- amministrazione sul lato server. Utilizza il nostro metodo di
- distribuzione avanzato cvsup per ottenere i bit del
- repository, ed esegui solamente l'operazione di
- commit sull'host con il repository.
- Forniamo un'estesa rete di mirror cvsup per questo scopo, così
- come diamo accesso al cvsup-master se hai veramente
- bisogno di essere aggiornato alle ultime modifiche.
- Il cvsup-master ha la potenza necessaria a gestire
- questa cosa, il repository principale no. &a.kuriyama; è a capo
- del cvsup-master.
-
-
- Se devi usare le operazioni add e
- delete di CVS come se fosse un'operazione &man.mv.1;,
- allora va effettuata una copia nel repository piuttosto che usare
- add e delete di CVS. In una
- copia nel repository, un CVS Meister
- copierà il/i file nei loro nuovi nomi e/o locazioni e ti
- avviserà ad operazione avvenuta. Lo scopo di una copia del
- repository è di preservare la cronologia dei cambiamenti del file,
- o i log. Noi del FreeBSD Project diamo molta importanza alla cronologia
- dei cambiamenti che CVS fornisce al progetto.
-
- Informazioni di riferimento, tutorial, e FAQ su CVS possono
- essere trovate su: http://www.cvshome.org/docs/.
- Anche le informazioni contenute nei capitoli di Karl Fogel
- da Open Source Development with CVS sono molto
- utili.
-
- &a.des; ha fornito inoltre il seguente mini manuale su
- CVS.
-
-
-
- Effettua il check out di un modulo con il comando
- co o checkout.
-
- &prompt.user; cvs checkout shazam
-
- Questo estrae una copia del modulo shazam. Se
- non c'è alcun modulo shazam nel file dei
- moduli, cercherà allora una directory di primo livello chiamata
- shazam.
-
-
- Opzioni utili con cvs checkout
-
-
-
-
-
-
- Non crea le directory vuote
-
-
-
-
-
- Estrae solo un livello, non le sottodirectory
-
-
-
-
-
- Estrai la versione, il ramo, o il tag
- ver
-
-
-
-
-
- Estrai i sorgenti com'erano in data
- data
-
-
-
-
-
- Esempi pratici su FreeBSD:
-
-
-
- Estrai il modulo miscfs, che
- corrisponde a src/sys/miscfs:
-
- &prompt.user; cvs co miscfs
-
- Ora hai una directory chiamata miscfs
- con le sottodirectory CVS,
- deadfs, devfs, e
- così via. Una di queste (linprocfs)
- è vuota.
-
-
-
- Estrai gli stessi file, ma con il percorso completo:
-
- &prompt.user; cvs co src/sys/miscfs
-
- Ora hai una directory chiamata src,
- con le sottodirectory CVS e
- sys. La directory
- src/sys ha le
- sottodirectory CVS e
- miscfs, ecc.
-
-
-
- Estrai gli stessi file, ma elimina le directory vuote:
-
- &prompt.user; cvs co -P miscfs
-
- Ora hai una directory chiamata miscfs
- con le sottodirectory CVS,
- deadfs, devfs... ma nota
- che non c'è nessuna sottodirectory
- linprocfs, perché non contiene alcun
- file.
-
-
-
- Estrai la directory miscfs, ma nessuna
- delle sue sottodirectory:
-
- &prompt.user; cvs co -l miscfs
-
- Ora hai una a directory chiamata miscfs
- con solo una sottodirectory chiamata
- CVS.
-
-
-
- Estrai il modulo miscfs com'è nel
- ramo 4.X:
-
- &prompt.user; cvs co -rRELENG_4 miscfs
-
- Puoi modificare i sorgenti ed effettuare il commit su questo
- ramo.
-
-
-
- Estrai il modulo miscfs com'era nella
- 3.4-RELEASE.
-
- &prompt.user; cvs co -rRELENG_3_4_0_RELEASE miscfs
-
- Non potrai effettuare il commit delle modifiche, visto che
- RELENG_3_4_0_RELEASE corrisponde ad un
- preciso istante di tempo, non a un ramo.
-
-
-
- Estrai il modulo miscfs com'era il 15
- gennaio 2000.
-
- &prompt.user; cvs co -D'01/15/2000' miscfs
-
- Non potrai effettuare modifiche.
-
-
-
- Estrai il modulo miscfs com'era una
- settimana fa.
-
- &prompt.user; cvs co -D'last week' miscfs
-
- Non potrai effettuare modifiche.
-
-
-
- Tieni presente che cvs salva i metadati in sottodirectory chiamate
- CVS.
-
- Gli argomenti di e
- sono fissi, che vuol dire che cvs se li ricorderà in seguito,
- ad esempio quando farai un cvs update.
-
-
-
- Controlla lo stato dei file estratti con il comando
- status.
-
- &prompt.user; cvs status shazam
-
- Questo visualizza lo stato del file shazam o
- di ogni file nella directory shazam. Per ogni
- file, lo stato è uno fra:
-
-
-
-
-
- Up-to-date
-
- Il file à aggiornato e non è stato
- modificato.
-
-
-
- Needs Patch
-
- Il file non è stato modificato, ma c'è una
- nuova versione nel repository.
-
-
-
- Locally Modified
-
- Il file è aggiornato, ma è stato
- modificato.
-
-
-
- Needs Merge
-
- Il file è stato modificato, e c'è una nuova
- versione nel repository.
-
-
-
- File had conflicts on merge
-
- Ci sono stati conflitti l'ultima volta che il file
- è stato aggiornato, e non sono ancora stati
- risolti.
-
-
-
-
-
- Vedrai anche la versione e la data locale, il numero dell'ultima
- versione appropriata (ultima appropriata perché
- se hai una data, un tag o un ramo fissati, può non essere
- l'ultima versione), e i tag, le date o le opzioni applicate.
-
-
-
- Dopo avere estratto qualcosa, puoi aggiornarlo con il comando
- update.
-
- &prompt.user; cvs update shazam
-
- Questo aggiorna il file shazam o il contenuto
- della directory shazam all'ultima versione sul
- ramo che hai estratto. Se hai estratto un preciso instante di
- tempo, non fa nulla a meno che i tag non siano stati
- spostati nel repository o qualche altra strana cosa sia in
- corso.
-
- Opzioni utili, in aggiunta a quelle elencate sopra, con
- checkout:
-
-
-
-
-
-
-
- Estrae ogni directory aggiuntiva mancante.
-
-
-
-
-
- Scarica l'ultima versione del ramo principale.
-
-
-
-
-
- Altre magie (guarda sotto).
-
-
-
-
-
- Se hai estratto un modulo con o
- , l'esecuzione di cvs update
- con un argomento differente di o
- o con selezionerà un
- nuovo ramo, una nuova versione o una nuova data.
- L'opzione elimina tutti i tag, le date o le
- versioni fissate mentre e ne
- impostano di nuove.
-
- Teoricamente, specificando HEAD come argomento
- di avrai lo stesso risultato di
- , ma è solo in teoria.
-
- L'opzione è utile se:
-
-
-
- qualcuno ha aggiunto delle sottodirectory al modulo che hai
- estratto dopo averlo estratto.
-
-
-
- hai estratto con , e dopo cambi idea e
- vuoi estrarre anche le sottodirectory.
-
-
-
- hai cancellato delle sottodirectory e vuoi estrarle
- nuovamente.
-
-
-
- Osserva l'output di cvs update con
- cura. La lettera all'inizio di ogni file indica cosa
- è stato fatto su di esso:
-
-
-
-
-
- U
-
- Il file è stato aggiornato senza problemi.
-
-
-
- P
-
- Il file è stato aggiornato senza problemi (vedrai
- questo solo quando lavorerai su un repository remoto).
-
-
-
- M
-
- Il file è stato modificato, ed è stato
- fuso senza conflitti.
-
-
-
- C
-
- Il file è stato modificato, ed è stato
- fuso con dei conflitti.
-
-
-
-
-
- La fusione è ciò che avviene quando estrai una copia
- di qualche codice sorgente, lo modifichi, quindi qualcun altro
- effettua il commit di un'altra modifica, e tu esegui cvs
- update. CVS nota che tu hai fatto dei cambiamenti locali, e
- cerca di fondere le tue modifiche con quelle fatte tra la versione che
- hai originariamente estratto e quella che stai aggiornando. Se i
- cambiamenti sono a due parti separate del file, solitamente non ci
- saranno problemi (sebbene il risultato possa non essere
- sintatticamente o semanticamente corretto).
-
- CVS stamperà una M davanti ad ogni file
- modificato localmente anche se non c'è una nuova versione nel
- repository, quindi cvs update è adatto
- per avere un resoconto di quello che hai cambiato in locale.
-
- Se appare una C, allora le tue modifiche sono
- in conflitto con i cambiamenti presenti nel repository (le modifiche
- sono sulle stesse righe, o righe vicine, o hai cambiato così
- tanto il file locale che cvs non è in grado
- di applicare le modifiche al repository). Dovrai allora andare a
- modificare il file a mano e risolvere i conflitti; questi saranno
- evidenziati da righe di simboli <,
- = e >. Per ogni conflitto,
- ci sarà una linea di demarcazione formata da sette
- < e il nome del file, seguita da una porzione di
- quello che il tuo file locale conteneva, seguita da una riga di
- separazione con sette =, seguita dalla porzione
- corrispondente presente nella versione del repository, seguita da una
- riga di separazione con sette > e il numero di
- versione che stai aggiornando.
-
- L'opzione è un po' voodoo. Aggiorna
- il file locale alla versione specificata come se avessi usato
- , ma non cambia il numero di versione o il ramo
- registrato del file locale. Non è realmente utile tranne
- quando usata due volte, nel qual caso fonderà le modifiche
- tra le due versioni specificate nella copia su cui stai
- lavorando.
-
- Per esempio, supponiamo che ti abbia effettuato il commit di una
- modifica a shazam/shazam.c in &os.current; e che
- più tardi tu voglia effettuare l'MFC. Le modifiche che vuoi
- fondere sono nella versione 1.15:
-
-
-
- Estrai la versione &os.stable; del modulo
- shazam:
-
- &prompt.user; cvs co -rRELENG_5 shazam
-
-
-
- Applica le modifiche tra la ver 1.14 e la 1.15:
-
- &prompt.user; cvs update -j1.14 -j1.15 shazam/shazam.c
-
-
-
- Quasi certamente avrai un conflitto a causa delle righe
- $Id$ (o nel caso di FreeBSD, $FreeBSD$),
- quindi dovrai modificare a mano il file per risolvere il conflitto
- (rimuovi le righe di separazione e la seconda linea
- $Id$, lasciando la linea $Id$
- originale intatta).
-
-
-
- Guarda le differenze tra la versione locale e quella sul
- repository con il comando diff.
-
- &prompt.user; cvs diff shazam
-
- mostra ogni modifica che hai fatto al file o al modulo
- shazam.
-
-
- Opzioni utili con cvs diff
-
-
-
-
-
-
- Utilizza il formato diff unificato.
-
-
-
-
-
- Utilizza il formato diff contestuale.
-
-
-
-
-
- Visualizza i file mancanti o aggiunti.
-
-
-
-
-
- Vorrai sempre utilizzare , visto che le diff
- unificate sono molto più semplici da leggere rispetto a quasi
- tutti gli altri formati (in alcune circostanze, le diff contestuali
- generate con l'opzione possono essere meglio, ma
- sono molto più voluminose). Una diff unificata consiste di una
- serie di parti. Ogni parte inizia con una riga con due caratteri
- @ e specifica dove si trovano le differenze nel
- file e su quante linee si estendono. Questa è seguita da un
- certo numero di righe; alcune (precedute da uno spazio) fanno parte
- del contesto; altre (precedute da un -) sono quelle
- eliminate e altre ancora (precedute da un +) sono
- quelle aggiunte.
-
- Puoi anche effettuare una diff con una versione differente
- rispetto a quella che hai estratto specificando la versione con
- o come per il
- checkout o l'update,
- o anche visualizzare le differenze tra due versioni arbitrarie
- (indipendentemente da quella che hai localmente) specificando
- due versioni con o
- .
-
-
-
- Guarda le righe di log con il comando
- log.
-
- &prompt.user; cvs log shazam
-
- Se shazam è un file, questo
- stamperà un'intestazione con le
- informazioni sul file, come la locazione nel repository dove il file
- è salvato, a quale versione è l'HEAD
- per questo file, in quali rami si trova il file, e qualsiasi tag
- valido per questo file. Quindi, per ogni versione del file, viene
- stampato un messaggio di log. Questo include la data e l'ora del
- commit, chi ha fatto il commit, quante righe sono state aggiunte e/o
- tolte, e alla fine il messaggio di log che il committer ha scritto
- quando ha inviato la modifica.
-
- Se shazam è una directory, allora le
- informazioni di log descritte sopra vengono stampate a turno per ogni
- file presente nella directory. A meno che tu abbia dato l'opzione
- a log, vengono stampati anche
- i log per tutte le sottodirectory di shazam, in
- maniera ricorsiva.
-
- Usa il comando log per vedere la storia di uno
- o più file, come è salvata nel repository CVS. Puoi
- anche usarlo per vedere il messaggio di log di una versione specifica,
- se aggiungi al
- comando log:
-
- &prompt.user; cvs log -r1.2 shazam
-
- Questo stamperà solamente il messaggio di log per la
- versione 1.2 del file shazam
- se è un file, oppure i messaggi di log per le versioni 1.2 di
- ogni file sotto shazam se è una
- directory.
-
-
-
- Guarda chi ha fatto cosa con il comando
- annotate. Questo comando visualizza ogni riga del
- file o dei file specificati, insieme all'utente che ha modificato
- più recentemente quella riga.
-
- &prompt.user; cvs annotate shazam
-
-
-
- Aggiungi nuovi file con il comando add.
-
- Crea il file, usa cvs add su di esso, quindi
- cvs commit.
-
- In modo analogo, puoi aggiungere nuove directory creandole e poi
- utilizzando cvs add su di esse. Nota che non
- c'è bisogno di usare il commit sulle directory.
-
-
-
- Rimuovi i file obsoleti con il comando
- remove.
-
- Rimuovi il file, quindi usa cvs rm su di esso,
- ed infine cvs commit.
-
-
-
- Effettua il commit con il comando commit o
- checkin.
-
-
- Opzioni utili con cvs commit
-
-
-
-
-
-
- Forza il commit di un file non modificato.
-
-
-
-
-
- Specifica un messaggio di commit sulla riga di comando
- anziché invocare un editor.
-
-
-
-
- Comandi Unix
-
-
-
-
-
-
- Comando/Sintassi
-
- Cosa fa
-
-
-
-
-
- awk/nawk [opzioni]
- file
-
- esamina schemi in un file e processa i risultati
-
-
-
- cat [opzioni]
- file
-
- concatena (lista) un file
-
-
-
- cd
- [directory]
-
- cambia directory
-
-
-
- chgrp [opzioni]
- gruppo file
-
- cambia il gruppo di appartenenza di un file
-
-
-
- chmod [opzioni]
- file
-
- cambia i permessi di accesso a file o directory
-
-
-
- chown [opzioni]
- proprietario file
-
- cambia il proprietario di un file; può essere solo
- fatto dal super-user
-
-
-
- chsh (passwd -e/-s) username
- login_shell
-
- cambia la shell di login dell'utente (spesso solamente
- attraverso il super-user)
-
-
-
- cmp [opzioni]
- file1 file2
-
- confronta due file e mostra dove avvengono le differenze
- (file di testo e file binari)
-
-
-
- compress [opzioni]
- file
-
- comprime il file specificato e lo salva con l'estensione
- .Z
-
-
-
- cp [opzioni]
- file1 file2
-
- copia file1
- in file2;
- file2 non dovrebbe
- già esistere. Questo comando crea o sovrascrive
- file2
-
-
-
- cut (opzioni)
- [file]
-
- taglia specifici campi/caratteri dalle linee del file
- specificato
-
-
-
- date
- [opzioni]
-
- riporta data e ora corrente
-
-
-
- dd [if=infile]
- [of=outfile]
- [operando=valore]
-
- copia un file, converte tra ASCII e EBCDIC o scambia l'ordine
- di byte, come specificato
-
-
-
- diff [opzioni]
- file1 file2
-
- confronta i due file e visualizza le differenze (solamente
- file di testo)
-
-
-
- df [opzioni]
- [risorsa]
-
- riporta il sommario dei blocchi del disco e degli inode
- liberi e usati
-
-
-
- du [opzioni]
- [directory o
- file]
-
- riporta lo spazio di disco usato
-
-
-
- echo
- [stringa di testo]
-
- riporta la stringa di testo specificata in standard
- output
-
-
-
- ed o ex
- [opzioni]
- file
-
- editor a linea di comando
-
-
-
- emacs [opzioni]
- file
-
- editor a schermo-pieno
-
-
-
- expr
- argomenti
-
- valuta gli argomenti. Usato per l'aritmetica, ecc. in
- shell
-
-
-
- file [opzioni]
- file
-
- classifica il tipo di file
-
-
-
- find directory
- [opzioni]
- [azioni]
-
- cerca file basandosi sul tipo o su uno schema
-
-
-
- finger [opzioni]
- user[@nomehost]
-
- riporta informazioni circa gli utenti di macchine locali e
- remote
-
-
-
- ftp [opzioni]
- host
-
- trasferisce file utilizzando il protocollo di trasferimento
- di file (FTP)
-
-
-
- grep [opzioni]
- 'stringa di ricerca'
- argomento
-
- ricerca nell'argomento (in questo caso
- probabilmente un file) tutte le occorrenze della stringa di
- ricerca specificata e le visualizza
-
-
-
- egrep [opzioni]
- 'stringa di ricerca'
- argomento
-
-
-
- fgrep [opzioni]
- 'stringa di ricerca'
- argomento
-
-
-
- gzip [opzioni]
- file
-
- comprime o decomprime un file. I file compressi
- vengo memorizzati con l'estensione
- .gz
-
-
-
- gunzip [opzioni]
- file
-
-
-
- zcat [opzioni]
- file
-
-
-
- head [-numero]
- file
-
- mostra le prime 10 (o numero di) linee di un file
-
-
-
- hostname
-
- mostra o setta (solamente super-user) il nome della macchina
- attuale
-
-
-
- kill [opzioni]
- [-SEGNALE]
- [pid#]
- [%job]
-
- manda un segnale al processo specificato dal numero di
- processo id (pid#) o dal numero di
- controllo del job (%n). Il segnale di
- default termina il processo
-
-
-
- ln [opzioni]
- sorgente
- destinazione
-
- crea un collegamento di nome
- destinazione a
- sorgente
-
-
-
- lpq
- [opzioni]
-
- mostra lo stato dei job di stampa
-
-
-
- lpstat
- [opzioni]
-
-
-
- lpr [opzioni]
- file
-
- stampa sulla stampante specificata
-
-
-
- lp [opzioni]
- file
-
-
-
- lprm
- [opzioni]
-
- rimuove un job di stampa dalla coda di
- stampa
-
-
-
- cancel
- [opzioni]
-
-
-
- ls [opzioni]
- [directory o
- file]
-
- elenca il contenuto della directory specificata o i permessi
- del file specificato
-
-
-
- mail [opzioni]
- [user]
-
- semplice utility per la posta elettronica
- disponibile su un sistema Unix. Si digita un punto come primo
- carattere su una nuova linea per trasmettere il messaggio, un
- punto interrogativo per richiamare l'help
-
-
-
- mailx [opzioni]
- [user]
-
-
-
- Mail [opzioni]
- [user]
-
-
-
- man [opzioni]
- comando
-
- mostra la pagina di manuale (man)
- del comando specificato
-
-
-
- mkdir [opzioni]
- directory
-
- crea una directory
-
-
-
- more [opzioni]
- file
-
- impaginatore di un file testuale
-
-
-
- less [opzioni]
- file
-
-
-
- pg [opzioni]
- file
-
-
-
- mv [opzioni]
- file1 file2
-
- muove file1
- in file2
-
-
-
- od [opzioni]
- file
-
- dump su un file binario, in ottale, in ASCII, in
- esadecimale, in decimale o in modalità carattere.
-
-
-
- passwd
- [opzioni]
-
- setta o modifica la propria password
-
-
-
- paste [opzioni]
- file
-
- incolla campi nelle linee del file specificato
-
-
-
- pr [opzioni]
- file
-
- filtra il file e lo stampa su un terminale
-
-
-
- ps
- [opzioni]
-
- mostra lo stato dei processi attivi
-
-
-
- pwd
-
- stampa la directory di lavoro (corrente)
-
-
-
- rcp [opzioni]
- nomehost
-
- copia file in remoto dalla macchina corrente in un'altra
- macchina
-
-
-
- rlogin [opzioni]
- nomehost
-
- effettua il login in remoto su un'altra macchina
-
-
-
- rm [opzioni]
- file
-
- rimuove (elimina) un file o una directory
- ( elimina ricorsivamente la directory ed il suo
- contenuto) ( chiede conferma prima di eliminare
- i file)
-
-
-
- rmdir [opzioni]
- directory
-
- rimuove una directory
-
-
-
- rsh [opzioni]
- nomehost
-
- shell remota da eseguire su un'altra macchina
-
-
-
- script
- file
-
- memorizza ogni cosa che appare sullo schermo in un file fino
- a quando si esegue exit
-
-
-
- sed [opzioni]
- file
-
- editor di flusso per editare file da uno script o da linea di
- comando
-
-
-
- sort [opzioni]
- file
-
- ordina le linee del file specificato basandosi sulle opzioni
- scelte
-
-
-
- source
- file
-
- legge i comandi dal file specificato
- e li esegue nella shell corrente. source per
- la shell C, . per la shell Bourne
-
-
-
- . file
-
-
-
- strings [opzioni]
- file
-
- riporta sequenze di 4 o più caratteri stampabili
- terminanti in <NL> o <NULL>. Generalmente viene usato
- per ricercare in file binari stringhe ASCII
-
-
-
- stty
- [opzioni]
-
- setta o visualizza le opzioni del terminale di
- controllo
-
-
-
- tail [opzioni]
- file
-
- mostra le ultime linee (o parte) di un file
-
-
-
- tar [opzioni]
- [file]
-
- archivio a nastro--riferirsi alle pagine man per dettagli su
- come creare, elencare ed estrarre file da un archivio. I file tar
- possono essere memorizzati su disco o su nastro.
-
-
-
- tee [opzioni]
- file
-
- copia standard output in uno o più file
-
-
-
- telnet [host
- [porta]]
-
- comunica con un altro host usando il protocollo
- telnet
-
-
-
- touch [opzioni]
- [data/ora]
- file
-
- crea un file vuoto o aggiorna la data/ora di accesso di un
- file esistente
-
-
-
- tr [opzioni]
- stringa1 stringa2
-
- traduce i caratteri di stringa1
- provenienti da standard input in quelli di
- stringa2 per standard output
-
-
-
- uncompress
- file.Z
-
- decomprime il file specificato e lo salva in un file
-
-
-
- uniq [opzioni]
- file
-
- rimuove le linee ripetute in un file
-
-
-
- uudecode
- [file]
-
- decodifica un file codificato con
- uuencode, riportandolo al file
- originale
-
-
-
- uuencode [file]
- nuovo_nome
-
- codifica un file binario in codice ASCII 7-bit; utile quando
- lo si trasmette via email, per essere poi decodificato come
- nuovo_nome alla
- destinazione
-
-
-
- vi [opzioni]
- file
-
- editor visuale, a pieno schermo
-
-
-
- wc [opzioni]
- [file]
-
- mostra il numero di parole (o di caratteri o di linee) del
- file specificato
-
-
-
- whereis [opzioni]
- comando
-
- riporta le locazioni del binario, del sorgente e della pagina
- man per il comando specificato
-
-
-
- which
- comando
-
- riporta il percorso del comando o l'alias di shell in
- uso
-
-
-
- who o w
-
- riporta chi è loggato e quali processi
- ha in esecuzione
-
-
-
- zcat
- file.Z
-
- concatena (lista) il file non compresso a video, lasciando il
- file compresso su disco
-
-
-
-
-
-
Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/command-summary/chapter.xml
___________________________________________________________________
Deleted: svn:keywords
## -1 +0,0 ##
-FreeBSD=%H
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/sgml
\ No newline at end of property
Index: head/it_IT.ISO8859-15/books/unix-introduction/special-features/chapter.xml
===================================================================
--- head/it_IT.ISO8859-15/books/unix-introduction/special-features/chapter.xml (revision 52098)
+++ head/it_IT.ISO8859-15/books/unix-introduction/special-features/chapter.xml (nonexistent)
@@ -1,554 +0,0 @@
-
-
-
- Caratteristiche speciali di Unix
-
- Uno dei più importanti contributi che Unix ha dato ai sistemi
- operativi è stato quello di fornire molti strumenti per creare lavori
- ordinari e per ottenere le informazioni che si desiderano. Un altro
- è rappresentato dal modo standard con cui i dati sono memorizzati e
- trasmessi in un sistema Unix. Questo permette di trasferire dati
- in un file, nel terminale video o in un programma,
- oppure da un file, dalla tastiera o da un programma,
- sempre in maniera uniforme. Il trattamento standardizzato dei dati supporta
- due importanti caratteristiche di Unix: la redirezione di I/O e il
- piping.
-
- Con la redirezione dell'output, l'output di un
- comando viene rediretto su un file piuttosto che sul terminale video.
- Con la redirezione dell'input, l'input di un comando
- viene preso da un file piuttosto che dalla tastiera. Sono possibili
- altre tecniche di redirezione dell'input e dell'output come
- si vedrà in seguito. Con il piping, l'output di
- un comando può essere usato come input di un comando successivo.
- In questo capitolo si discuterà di alcune delle caratteristiche e
- degli strumenti disponibili per gli utenti Unix.
-
-
- Descrittori di file
-
- Ci sono 3 descrittori di file standard:
-
-
-
-
-
-
-
-
-
- &man.stdin.4;
-
- 0
-
- Standard input per il programma
-
-
-
- &man.stdout.4;
-
- 1
-
- Standard output dal programma
-
-
-
- &man.stderr.4;
-
- 2
-
- Standard error (output) dal programma
-
-
-
-
-
- Normalmente l'input viene preso dalla tastiera o da un file.
- Generalmente l'output, sia &man.stdout.4; che &man.stderr.4;, scorre nel
- terminale, ma può essere rediretto, uno o entrambi, su uno o
- più file.
-
- Si possono specificare descrittori di file addizionali, denotandoli
- con un numero da 3 a 9 e redirigendo l'I/O attraverso questi.
-
-
-
- Redirezione di file
-
- La redirezione dell'output prende l'output di un comando e lo
- posiziona nel file specificato. La redirezione dell'input legge il file
- specificato come input per un comando. La tabella che segue sintetizza le
- possibili modalità di redirezione.
-
-
- Redirezione di file
-
-
-
-
-
-
- SIMBOLO
-
- REDIREZIONE
-
-
-
-
-
- >
-
- redirezione dell'output
-
-
-
- >!
-
- come sopra, ma non tiene conto dell'opzione
- noclobber per &man.csh.1;
-
-
-
- >>
-
- appende l'output
-
-
-
- >>!
-
- come sopra, ma non tiene conto dell'opzione
- noclobber su &man.csh.1; e crea il file se
- non esiste
-
-
-
- |
-
- incanala (pipe) l'output nell'input di un altro
- comando
-
-
-
- <
-
- redirezione dell'input
-
-
-
- <<Stringa
-
- legge da standard input fino a quando incontra una linea
- contenente solo la parola Stringa.
- Anche conosciuto come here document
- (vedere il Capitolo 9)
-
-
-
- <<\Stringa
-
- come sopra, ma le sostituzioni di shell non sono
- permesse
-
-
-
-
-
- Un esempio di redirezione dell'output è:
-
- cat file1 file2 >
- file3
-
- Il precedente comando concatena
- file1
- e file2 e redirige (manda)
- l'output in file3. Se
- file3 non esiste, viene
- creato. Se esiste, verrà troncato a lunghezza zero prima che il
- nuovo contenuto sia inserito, oppure, se l'opzione
- noclobber della shell &man.csh.1; è abilitata,
- il comando verrà rifiutato (vedere la shell &man.csh.1; nel
- Capitolo 5). I file originali
- file1 e
- file2 rimarranno
- come erano prima dell'esecuzione del comando, ossia due entità
- separate.
-
- L'output viene appeso a un file con la forma:
-
- cat file1 >>
- file2
-
- Questo comando appende il contenuto di
- file1 alla fine
- dell'esistente file2
- (file2 non viene
- soprascritto).
-
- L'input è rediretto (preso) da un file con la forma:
-
- programma <
- file
-
- Questo comando prende l'input per il
- programma da
- file.
-
- Per incanalare (pipe) l'output di un programma nell'input di un altro
- programma si usa la forma:
-
- comando|comando
-
- Questo comando assegna l'output del primo comando all'input del
- secondo comando.
-
-
- Csh
-
-
-
-
-
-
-
- >&
- file
-
- redirige &man.stdout.4; e &man.stderr.4; in
- file
-
-
-
- >>&
- file
-
- appende &man.stdout.4; e &man.stderr.4; in
- file
-
-
-
- |&
- comando
-
- crea una pipe tra &man.stdout.4;-&man.stderr.4; e il
- comando
-
-
-
-
-
- Per redirigere &man.stdout.4; e &man.stderr.4; in due file separati
- si deve prima redirigere &man.stdout.4; in una sotto-shell,
- così:
-
- &prompt.user; (comando > out_file) >& err_file
-
-
-
- Sh
-
-
-
-
-
-
-
- 2>
- file
-
- redirige &man.stderr.4; in
- file
-
-
-
- > file
- 2>&1
-
- redirige &man.stdout.4; e &man.stderr.4; in
- file
-
-
-
- >> file
- 2>&1
-
- appende &man.stdout.4; e &man.stderr.4; in
- file
-
-
-
- 2>&1 |
- comando
-
- crea una pipe tra &man.stdout.4;-&man.stderr.4; e il
- comando
-
-
-
-
-
- Per redirigere &man.stdout.4; e &man.stderr.4; in due file separati
- si può fare:
-
- $ comando 1> out_file 2> err_file
-
- oppure, data la redirezione di default per &man.stdout.4;:
-
- $ comando > out_file 2> err_file
-
- Con la shell Bourne si possono specificare altri descrittori di file
- (da 3 a 9) e redirigere l'output attraverso questi. Questo può
- essere fatto con la forma:
-
-
-
-
-
-
-
- n>&m
-
- redirige il descrittore di file
- n sul descrittore di file
- m
-
-
-
-
-
- Questo meccanismo viene utilizzato per mandare &man.stderr.4; nello
- stesso posto di &man.stdout.4;, 2>&1, quando
- si vuole avere i messaggi di errore e i normali messaggi in un file
- piuttosto che sul terminale. Se si vuole che solamente i messaggi di
- errore vadano nel file, si può usare un descrittore di file di
- supporto, 3. Si redirige prima 3 su 2, quindi 2 su 1 e in fine si
- redirige 1 su 3.
-
- $ (comando 3>&2 2>&1 1>&3) > file
-
- Questo manda &man.stderr.4; in 1 e &man.stdout.4; in 3 che è
- rediretto su 2. In questo modo, in effetti, si ribaltano i normali
- significati dei descrittori di file 1 e 2. Si può sperimentare
- tutto questo con l'esempio seguente:
-
- $ (cat file 3>&2 2>&1 1>&3) > errfile
-
- Quindi se file
- è letto, l'informazione è scartata dall'output del
- comando, ma se file non
- può essere letto, i messaggi di errore sono messi nel file
- errfile per usi
- futuri.
-
- I descrittori di file che sono stati creati possono essere chiusi
- con:
-
-
-
-
-
-
-
- m<&-
-
- chiude un descrittore di file di input
-
-
-
- <&-
-
- chiude &man.stdin.4;
-
-
-
- m>&-
-
- chiude un descrittore di file di output
-
-
-
- >&-
-
- chiude &man.stdout.4;
-
-
-
-
-
-
-
-
- Altri speciali simboli di comando
-
- Oltre ai simboli di redirezione dei file ci sono altri
- simboli speciali che si possono usare su linea di comando.
- Alcuni di questi sono:
-
-
-
-
-
-
-
- ;
-
- separatore di comandi
-
-
-
- &
-
- esegue un comando in background
-
-
-
- &&
-
- esegue il comando seguente (a questo simbolo) solamente se il
- comando precedente (a questo simbolo) è stato completato
- con successo, esempio:
- grep stringa file && cat
- file
-
-
-
- ||
-
- esegue il comando seguente (a questo simbolo) solamente se il
- comando precedente (a questo simbolo) non è stato
- completato con successo, esempio:
- grep stringa file ||
- echo "Stringa non trovata."
-
-
-
- ( )
-
- i comandi tra parentesi sono eseguiti in una sotto-shell.
- L'output della sotto-shell può essere manipolato come
- specificato nelle precedenti sezioni.
-
-
-
- ' '
-
- segni di quoting letterali. All'interno di questi segni di
- quoting non viene permesso ad alcuni caratteri di assumere
- significati speciali.
-
-
-
- \
-
- considera il prossimo carattere letteralmente
- (escape)
-
-
-
- " "
-
- segni di quoting regolari. All'interno di questi segni di
- quoting sono permesse sostituzioni di variabili e di comando
- (non disattivano $ e \ all'interno della stringa).
-
-
-
- `comando`
-
- prende l'output del comando e lo sostituisce nell'argomento
- su linea di comando
-
-
-
- #
-
- ogni cosa che lo segue fino a un newline è un
- commento
-
-
-
-
-
- Inoltre, il carattere \ può essere usato per effettuare un
- escape sul carattere di newline, in modo tale da continuare un
- lungo comando su più di una linea fisica di testo.
-
-
-
- Meta caratteri
-
- La shell e alcuni programmi di manipolazione testo permettono i
- meta-caratteri, chiamati anche
- wild card, i quali vengono rimpiazzati dai
- corrispondenti schemi (pattern). Per i nomi di file questi
- meta-caratteri e i loro significati sono:
-
-
-
-
-
-
-
- ?
-
- indica un singolo carattere alla posizione
- indicata
-
-
-
- *
-
- indica una stringa di zero o più
- caratteri
-
-
-
- [abc...]
-
- indica un carattere tra quelli racchiusi
-
-
-
- [a-e]
-
- indica un carattere tra quelli nel range a, b, c, d,
- e
-
-
-
- [!def]
-
- indica un carattere tra quelli non inclusi in parentesi,
- solamente &man.sh.1;
-
-
-
- {abc,bcd,cde}
-
- indica un set di caratteri tra quelli inclusi in parentesi,
- separati da una virgola (,) (niente spazi), solamente
- &man.csh.1;
-
-
-
- ~
-
- indica la directory home dell'utente corrente, solamente
- &man.csh.1;
-
-
-
- ~user
-
- indica la directory home dell'utente specificato, solamente
- &man.csh.1;
-
-
-
-
-
-
Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/special-features/chapter.xml
___________________________________________________________________
Deleted: svn:keywords
## -1 +0,0 ##
-FreeBSD=%H
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/sgml
\ No newline at end of property
Index: head/it_IT.ISO8859-15/books/unix-introduction/bibliography/chapter.xml
===================================================================
--- head/it_IT.ISO8859-15/books/unix-introduction/bibliography/chapter.xml (revision 52098)
+++ head/it_IT.ISO8859-15/books/unix-introduction/bibliography/chapter.xml (nonexistent)
@@ -1,179 +0,0 @@
-
-
-
- Una breve bibliografia Unix
-
-
- Una breve bibliografia Unix
-
-
-
-
-
-
-
-
- Titolo
-
- Autori
-
- Editore
-
- Anno pub.
-
-
-
-
-
- UNIX: concetti, strutture,
- utilizzo
-
- James R. Groff, Paul N. Weinberg
-
- Jackson
-
- 1988
-
-
-
- Guida completa Unix System V. Release
- 4
-
- Coffin Steven
-
- Mc Graw Hill
-
- 1991
-
-
-
- Introduzione all'architettura di sistema
- Unix
-
- Prabhat K. Andleigh
-
- Jackson
-
- 1991
-
-
-
- Usare Unix senza fatica
-
- John R. Levine, Margaret Levine Young
-
- Mc Graw Hill
-
- 1993
-
-
-
- La grande guida Unix
-
- John J. Valley
-
- Jackson
-
- 1993
-
-
-
- Shell Unix guida alla
- programmazione
-
- Arthur, Burns
-
- Mc Graw Hill
-
- 1998
-
-
-
- Introduzione alla struttura interna di
- Unix
-
- Le Van Huu
-
- Unicopli
-
- 1998
-
-
-
- Unix guida completa
-
- Rosen, Host, Farber, Rosinski
-
- Mc Graw Hill
-
- 1999
-
-
-
- Gestione del sistema operativo Unix
-
- Bruno Catalano, Ezio Raddi
-
- Città Studi
-
- 2000
-
-
-
- Guida a Unix seconda edizione
-
- Hahn H.
-
- Mc Graw Hill
-
- 2000
-
-
-
- I segreti di Unix Seconda edizione
-
- Armstrong James
-
- Apogeo
-
- 2000
-
-
-
- Guida a Unix con Linux
-
- Jack Dent, Tony Gaddis
-
- Apogeo
-
- 2001
-
-
-
- Introduzione a Unix
-
- David L. Schwartz
-
- Apogeo
-
- 2001
-
-
-
- Unix manuale per l'amministratore di sistema - terza
- edizione
-
- Nemeth Evi, Snyder Garth, Seebass Scott, Hein Trent
-
- Pearson Education Italia
-
- 2002
-
-
-
-
-
Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/bibliography/chapter.xml
___________________________________________________________________
Deleted: svn:keywords
## -1 +0,0 ##
-FreeBSD=%H
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/sgml
\ No newline at end of property
Index: head/it_IT.ISO8859-15/books/unix-introduction/shells/chapter.xml
===================================================================
--- head/it_IT.ISO8859-15/books/unix-introduction/shells/chapter.xml (revision 52098)
+++ head/it_IT.ISO8859-15/books/unix-introduction/shells/chapter.xml (nonexistent)
@@ -1,1157 +0,0 @@
-
-
-
- Shell
-
- La shell, che sta tra l'utente e il sistema operativo, opera come un
- interprete di comandi. Legge l'input dal terminale e traduce i comandi in
- azioni, azioni che vengono intraprese dal sistema. La shell è simile
- al command.com in DOS. Una volta effettuato il login
- nel sistema, viene assegnata la shell di default. La shell, al suo avvio,
- legge i suoi file di inizializzazione e può settare alcune
- variabili di ambiente, i path di ricerca dei comandi, gli alias dei comandi
- ed eseguire qualche comando specificato in questi file.
-
- La prima shell è stata la shell Bourne, &man.sh.1;. Ogni
- piattaforma Unix dispone della shell Bourne o di una shell Bourne
- compatibile. Questa shell ha molte buone caratteristiche per controllare
- l'input e l'output, ma non è molto adatta all'utente interattivo.
- Per andare incontro a quest'ultimo è stata scritta la shell C,
- &man.csh.1;, presente ora in molti, ma non tutti, i sistemi Unix.
- Questa shell usa una sorta di sintassi C, il linguaggio con cui Unix
- è stato scritto, ma ha molte scomode implementazioni
- dell'input/output. La shell C ha il controllo dei job, quindi può
- mandare un job eseguito in background (sotto shell) in
- foreground (in shell corrente). Inoltre ha la funzione di
- history (storia dei comandi) che permette di modificare e ripetere comandi
- eseguiti precedentemente.
-
- Il prompt di default per la shell Bourne è $
- (o &prompt.root; per l'utente root). Il prompt di default per la shell C
- è &prompt.user;.
-
- Sono disponibili in rete molte altre shell. Quasi tutte sono basate
- sulla shell &man.sh.1; o &man.csh.1; con estensioni per fornire il controllo
- dei job alla shell &man.sh.1;, permettere di manipolare il modo di
- esecuzione dei comandi su linea di comando, cercare attraverso i comandi
- eseguiti precedentemente, fornire il completamento dei nomi dei comandi,
- prompt personalizzati, ecc. Alcune delle seguenti shell maggiormente
- conosciute potrebbero essere sul proprio amato sistema Unix: la shell korn,
- ksh, di David Korn e la shell Bourne Again, &man.bash.1;,
- dal progetto GNU Free Software Foundations, entrambe basate su &man.sh.1;,
- la shell T-C, &man.tcsh.1; e l'estensione della shell C,
- cshe, entrambe bastate su &man.csh.1;. In seguito si
- descriveranno alcune delle caratteristiche di &man.sh.1; e &man.csh.1;,
- così per iniziare.
-
-
- Comandi built-in
-
- La shell ha alcuni comandi built-in, chiamati
- anche comandi nativi. Questi comandi sono eseguiti direttamente dalla
- shell e non chiamano nessun altro programma per essere eseguiti. Questi
- comandi built-in possono essere diversi tra le varie shell.
-
-
- Sh
-
- Per la shell Bourne alcuni dei comandi built-in più
- comunemente usati sono:
-
-
-
-
-
-
-
- :
-
- comando null
-
-
-
- .
-
- prende (legge ed esegue) i comandi da un file
-
-
-
- case
-
- condizionale case
-
-
-
- cd
-
- cambia la directory di lavoro ($HOME di
- default)
-
-
-
- echo
-
- scrive una stringa su standard output
-
-
-
- eval
-
- valuta l'argomento specificato e ritorna il risultato alla
- shell
-
-
-
- exec
-
- esegue il comando specificato rimpiazzando la shell
- corrente
-
-
-
- exit
-
- esce dalla shell corrente
-
-
-
- export
-
- condivide le variabili di ambiente specificate con le
- successive shell
-
-
-
- for
-
- condizionale di ciclo for
-
-
-
- if
-
- condizionale if
-
-
-
- pwd
-
- mostra la directory di lavoro corrente
-
-
-
- read
-
- legge una linea di input da standard input
-
-
-
- set
-
- setta le variabili di shell
-
-
-
- test
-
- valuta un'espressione come vera o falsa
-
-
-
- trap
-
- intrappola un tipo di segnale ed esegue comandi
-
-
-
- umask
-
- setta la maschera di default relativa ai permessi da
- impostare per i nuovi file
-
-
-
- unset
-
- resetta le variabili di shell
-
-
-
- wait
-
- attente che un specifico processo termini
-
-
-
- while
-
- condizionale di ciclo while
-
-
-
-
-
-
-
- Csh
-
- Per la shell C i comandi built-in maggiormente usati sono:
-
-
-
-
-
-
-
- alias
-
- assegna un nome a una funzione
-
-
-
- bg
-
- mette un job in background
-
-
-
- cd
-
- cambia la directory di lavoro corrente
-
-
-
- echo
-
- scrive una stringa su standard output
-
-
-
- eval
-
- valuta gli argomenti specificati e ritorna il risultato
- alla shell
-
-
-
- exec
-
- esegue il comando specificato rimpiazzando la shell
- corrente
-
-
-
- exit
-
- esce dalla shell corrente
-
-
-
- fg
-
- porta un job in foreground
-
-
-
- foreach
-
- condizionale di ciclo for
-
-
-
- glob
-
- crea un'espansione dei nomi di file su una lista senza
- tenere conto del carattere di escape \
-
-
-
- history
-
- stampa la storia dei comandi della shell
-
-
-
- if
-
- condizionale if
-
-
-
- jobs
-
- mostra o controlla i job attivi
-
-
-
- kill
-
- termina un processo specifico
-
-
-
- limit
-
- setta dei limiti sulle risorse di sistema
-
-
-
- logout
-
- termina la shell di login
-
-
-
- nice
- comando
-
- abbassa la priorità di schedulazione del
- comando specificato
-
-
-
- nohup
- comando
-
- non termina il comando specificato quando la shell
- esce
-
-
-
- popd
-
- estrae un record dallo stack delle directory e ritorna
- nella directory estratta
-
-
-
- pushd
-
- cambia nella nuova directory specificata e aggiunge quella
- corrente nello stack delle directory
-
-
-
- rehash
-
- ricrea la tabella hash dei percorsi (path) per i file
- eseguibili
-
-
-
- repeat
-
- ripete un comando il numero di volte specificato
-
-
-
- set
-
- setta una variabile di shell
-
-
-
- setenv
-
- setta una variabile di ambiente per la shell corrente e per
- quelle successive
-
-
-
- source
-
- prende (legge ed esegue) comandi da un file
-
-
-
- stop
-
- ferma uno specifico job in background
-
-
-
- switch
-
- condizionale switch
-
-
-
- umask
-
- setta la maschera di default relativa ai permessi da
- impostare per i nuovi file
-
-
-
- unalias
-
- rimuove il nome alias specificato
-
-
-
- unset
-
- resetta le variabile di shell
-
-
-
- unsetenv
-
- resetta le variabili di ambiente
-
-
-
- wait
-
- attente la terminazione di tutti i processi in
- background
-
-
-
- while
-
- condizionale di ciclo while
-
-
-
-
-
-
-
-
- Variabili di ambiente
-
- Le variabili di ambiente sono usate per fornire informazioni ai
- programmi che si utilizzano. Si possono avere sia variabili
- globali di ambiente sia variabili locali di
- shell. Le variabili globali di ambiente sono inizializzate
- attraverso la propria shell di login e i nuovi programmi e le nuove shell
- ereditano l'ambiente della shell genitore. Le variabili locali di shell
- sono usate solamente dalla shell corrente e non sono passate ad altri
- processi. Un processo figlio non può passare una variabile al suo
- processo padre.
-
- Le variabili di ambiente correnti sono visualizzabili con i comandi
- &man.env.1; o &man.printenv.1;. Alcune comuni variabili sono:
-
-
-
-
-
-
-
- DISPLAY
-
- Il display grafico da usare, esempio
- nyssa:0.0
-
-
-
- EDITOR
-
- Il path (percorso) del proprio editor di default, esempio
- /usr/bin/vi
-
-
-
- GROUP
-
- Il proprio gruppo di login, esempio
- staff
-
-
-
- HOME
-
- Il path della propria home directory, esempio
- /home/frank
-
-
-
- HOST
-
- Il nome host del proprio sistema, esempio
- nyssa
-
-
-
- IFS
-
- I separatori di campo interni, generalmente alcuni spazi
- bianchi (tab, spazio e new-line di default)
-
-
-
- LOGNAME
-
- Il nome del proprio login, esempio
- frank
-
-
-
- PATH
-
- I path per ricercare i comandi, esempio
- /usr/bin:/usr/ucb:/usr/local/bin
-
-
-
- PS1
-
- La stringa del prompt primario, solamente shell Bourne
- ($ di default)
-
-
-
- PS2
-
- La stringa del prompt secondario, solamente shell Bourne
- (> di default)
-
-
-
- SHELL
-
- La propria shell di login, esempio
- /usr/bin/csh
-
-
-
- TERM
-
- Il proprio tipo di terminale, esempio
- xterm
-
-
-
- USER
-
- Il proprio username, esempio
- frank
-
-
-
-
-
- Molte variabili di ambiente sono inizializzate automaticamente quando
- si effettua il login. Queste possono essere modificate e si possono
- definire altre variabili nei propri file di inizializzazione o in
- qualunque momento all'interno della shell. Alcune variabili che è
- possibile si voglia cambiare sono PATH e
- DISPLAY. La variabile PATH
- specifica le directory nelle quali saranno automaticamente cercati i
- comandi richiesti. Alcuni esempi sono nello script di inizializzazione
- di shell mostrato più avanti.
-
- Per la shell C si può settare una variabile globale
- di ambiente con un comando simile a quello usato per
- visualizzare le variabili:
-
- &prompt.user; setenv NOME valore
-
- e per la shell Bourne:
-
- $ NOME=valore; export NOME
-
- Si possono elencare le proprie variabili globali di ambiente con i
- comandi &man.env.1; o &man.printenv.1;. Si possono resettare queste
- variabili con i comandi unsetenv (shell C) o
- unset (shell Bourne).
-
- Per settare una variabile locale di shell in
- shell C si usa il comando set con la sintassi seguente.
- Senza opzioni set mostra tutte le variabili
- locali.
-
- &prompt.user; set nome=valore
-
- Per la shell Bourne si setta una variabile locale di shell
- con:
-
- $ nome=valore
-
- Il valore corrente di una variabile è accessibile attraverso le
- notazioni $nome o
- ${nome}.
-
-
-
- La shell Bourne, sh
-
- La shell &man.sh.1; usa il file di inizializzazione
- .profile posto nella home directory dell'utente.
- Inoltre può esserci un file di inizializzazione globale del
- sistema, esempio /etc/profile. In tal caso, il file
- globale del sistema sarà eseguito prima di quello locale.
-
- Un semplice file .profile potrebbe essere come
- il seguente:
-
-
-PATH=/usr/bin:/usr/ucb:/usr/local/bin:. # setta il PATH
-export PATH # rende disponibile PATH per le sotto-shell
-# setta il prompt
-PS1="{`hostname` `whoami`} " # setta il prompt, $ di default
-# funzioni
-ls() { /bin/ls -sbF "$@";}
-ll() { ls -al "$@";}
-# setta il tipo di terminale
-stty erase ^H # setta Control-H come tasto di cancellazione
-eval `tset -Q -s -m ':?xterm'` # richiede il tipo di terminale, presupponendo
- # xterm
-#
-umask 077
-
- Ogni volta che si incontra il simbolo #, il resto di quella linea
- viene trattato come un commento. Nella variabile PATH
- ogni directory è separata da due punti (:) e il punto
- (.) specifica che la directory corrente è nel
- proprio path. Se il punto non è nel proprio path, lo stesso
- diventa un semplice elemento per eseguire un programma nella directory
- corrente:
-
- ./programma
-
- Non è una buona idea avere il punto (.)
- nel proprio PATH, in modo tale da non eseguire
- inavvertitamente un programma senza averne l'intenzione quando si usa il
- comando cd per spostarsi in differenti
- directory.
-
- Una variabile settata in .profile rimane valida
- solo nel contesto della shell di login, a meno che la si esporti con
- export o si esegua .profile in
- un'altra shell. Nell'esempio precedente PATH viene
- esportato per le sotto-shell. Si può eseguire un file con il
- comando built-int . di &man.sh.1;, esempio:
-
- . ./.profile
-
- Si possono creare proprie funzioni. Nell'esempio precedente la
- funzione ll, risultato di ls -al,
- lavora su un specifico file o directory.
-
- Con &man.stty.1; il carattere di cancellazione viene settato a
-
- Control
- H
- , che è usualmente il tasto di
- Backspace.
-
- Il comando &man.tset.1; richiede il tipo di terminale e assume questo
- a xterm se si conferma con invio
- <CR>. Questo comando è eseguito con un
- comando built-in di shell, eval, che prende il
- risultato del comando &man.tset.1; e lo usa come argomento per la shell.
- In questo caso l'opzione di &man.tset.1; setta
- le variabili TERM e TERMCAP e le
- esporta.
-
- L'ultima linea nell'esempio richiama il comando
- umask, facendo in modo che i file e le directory create
- non abbiano i permessi di lettura-scrittura-esecuzione per l'utenza
- gruppo e altri.
-
- Per altre informazioni su &man.sh.1;, digitare
- man sh al prompt di shell.
-
-
-
- La shell C, csh
-
- La shell C, &man.csh.1;, usa i file di inizializzazione
- .cshrc e .login. Alcune
- versioni usano un file di inizializzazione globale del sistema, ad
- esempio /etc/csh.login. Il proprio file
- .login è eseguito solamente quando si effettua
- il login. Il proprio file .cshrc è eseguito
- ogni volta in cui si avvia una shell &man.csh.1;, incluso quando si
- effettua il login. Questo file ha molte caratteristiche simili al file
- .profile, ma un differente modo di composizione.
- Qui si usano i comandi set o setenv
- per inizializzare una variabile, dove set viene usato
- per definire una variabile solo per la shell corrente, mentre
- setenv definisce una variabile per la shell corrente e
- per le altre sotto-shell. Le variabili di ambiente
- USER, TERM e PATH
- sono automaticamente importate ed esportate dalle variabili
- user, term e path
- della shell &man.csh.1;. Quindi setenv non è
- necessario per queste variabili. La shell C usa il simbolo ~ per indicare
- la directory home dell'utente in un path, come in
- ~/.cshrc o per specificare una directory di login di
- un altro utente, come in
- ~username/.cshrc.
-
- Alcune variabili predefinite usate dalla shell C sono:
-
-
-
-
-
-
-
- argv
-
- La lista degli argomenti della shell corrente
-
-
-
- cwd
-
- La directory di lavoro corrente
-
-
-
- history
-
- Imposta la dimensione della lista di history (storia) da
- memorizzare
-
-
-
- home
-
- La directory home dell'utente, visualizzabile con
- $HOME
-
-
-
- ignoreeof
-
- Quando viene settata, EOF (
- Ctrl
- D
- ) viene ignorato dal terminale
-
-
-
- noclobber
-
- Quando viene settata si impedisce di redirigere l'output per
- sovrascrivere file esistenti
-
-
-
- noglob
-
- Quando viene settata si impedisce l'espansione dei nomi di
- file all'interno di un confronto con uno schema wild card
-
-
-
- path
-
- I path di ricerca dei comandi, visualizzabile con
- $PATH
-
-
-
- prompt
-
- Setta il prompt della linea di comando (&prompt.user; di
- default)
-
-
-
- savehist
-
- Numero di volte (di login) che bisogna mantenere memorizzata
- la lista di history nel file .history
-
-
-
- shell
-
- Il path name completo della shell corrente, visualizzabile
- con $SHELL
-
-
-
- status
-
- Il codice di stato di uscita dell'ultimo comando
- (0=uscita normale, 1=comando fallito)
-
-
-
- term
-
- Il proprio tipo di terminale, visualizzabile con
- $TERM
-
-
-
- user
-
- Il proprio nome utente, username, visualizzabile con
- $USER
-
-
-
-
-
- Un semplice file .cshrc potrebbe essere come il
- seguente:
-
-
-set path=(/usr/bin /usr/ucb /usr/local/bin ~/bin . ) # setta il path
-set prompt = "{`hostname` `whoami` !} " # setta il promt primario ;
- # % di default
-set noclobber # non redirige l'output su file esistenti
-set ignoreeof #ignora EOF (Ctrl+D) in questa shell
-set history=100 savehist=50 # mantiene una lista history di comandi e la
- # memorizza tra vari (50) login
-# alias
-alias h history # alias h per history
-alias ls "/usr/bin/ls -sbF" # alias ls per ls -sbF
-alias ll ls -al # alias ll per ls -sbFal (combina queste
- # opzioni con quelle di ls sopra citate)
-alias cd 'cd \!*;pwd' # alias cd per stampare la directory di lavoro
- # corrente dopo aver cambiato directory
-umask 077
-
- Alcune nuove caratteristiche che non sono state viste nel
- file .profile (shell &man.sh.1;) sono
- noclobber, ignoreeof e
- history. Noclobber indica che
- l'output non può essere rediretto su un file esistente, mentre
- ignoreeof specifica che EOF (
-
- Ctrl
- D
- ) non causa l'uscita dalla shell di login o l'uscita dal
- sistema.
-
- Con la caratteristica di history si possono
- richiamare comandi eseguiti precedentemente e rieseguirli, eventualmente
- con dei cambiamenti.
-
- Un alias permette di usare uno specifico nome
- alias al posto del comando completo. Nell'esempio
- precedente, il risultato di digitare ls sarà
- quello di eseguire /usr/bin/ls -sbF. Si può
- verificare quale comando ls è nel proprio path
- con il comando &man.which.1;, ad esempio:
-
- &prompt.user; which ls
-ls: alias di /usr/bin/ls -sbF
-
- Un semplice file .login potrebbe essere come il
- seguente:
-
- # .login
-stty erase ^H # setta Control+H come tasto di eliminazione
-set noglob # impedisce un confronto con uno schema wild card
-eval `tset -Q -s -m ':?xterm'` # chiede il tipo di terminale presupponendo
- # xterm
-unset noglob # riabilita un confronto con uno schema wild card
-
- Abilitando e disabilitando noglob intorno a
- &man.tset.1; si impedisce di confondere il tipo di terminale con
- qualche espansione dei nomi di file in un confronto con uno schema
- (pattern) wild card.
-
- Se si effettuano cambiamenti al proprio file di inizializzazione,
- questi possono essere attivati eseguendo il file modificato. Per la shell
- &man.csh.1; questo è possibile attraverso il comando
- built-in source, esempio:
-
- source .cshrc
-
- Per altre informazioni circa la shell &man.csh.1; digitare
- man csh al prompt di shell.
-
-
-
- Controllo dei job
-
- Con la shell C, &man.csh.1; e molte altre nuove shell, incluse alcune
- nuove shell Bourne, si possono mettere i job in background apporrendo
- & al comando, così come succede per la
- shell &man.sh.1;. Questo può anche essere fatto, una volta
- sottoposto il comando, digitando
- Control
- Z
- per sospendere il job e quindi bg per
- metterlo in background. Per riportarlo in foreground si digita
- fg.
-
- Si possono avere molti job eseguiti in background. Quando questi sono
- in background, non sono connessi alla tastiera per l'input, ma possono
- tuttavia mostrare l'output nel terminale, sparpagliandolo con qualsiasi
- cosa ci sia digitata o mostrata attraverso il job corrente. Si può
- avere la necessità di redirigere I/O in o da un file per un job in
- background. La propria tastiera è solamente connessa al corrente
- job in foreground.
-
- Il comando built-in jobs permette di elencare i
- propri job in background. Si può usare il comando &man.kill.1; per
- terminare un job in background. In questi comandi, con la notazione
- %n ci si riferisce
- all'n-esimo job in background, rimpiazzando
- n con il numero di job proveniente dall'output
- di jobs. Quindi si termina il secondo job in
- background con kill %2 e si riprende il terzo job in
- foreground con fg %3.
-
-
-
- History
-
- La shell C, la shell Korn e molte altre shell avanzate, mantengono
- informazioni sui comandi che sono stati eseguiti in shell. La
- quantità di storia memorizzabile dipende dalla shell utilizzata.
- Qui si descriveranno le caratteristiche di history della shell C.
-
- Si possono usare le variabili history e
- savehist per settare rispettivamente quanti comandi
- della shell corrente memorizzare e per quanti login mantenerli.
- Si può inserire in .cshrc la seguente linea
- per memorizzare 100 comandi della shell corrente fino a 50 prossimi
- login.
-
- set history=100 savehist=50
-
- La shell mantiene traccia della storia dei comandi tra un login e
- l'altro memorizzandola nel file ~/.history.
-
- Si può usare il comando built-in history per
- richiamare i comandi eseguiti precedentemente, ad esempio per stampare gli
- ultimi 10:
-
- &prompt.user; history 10
-52 cd workshop
-53 ls
-54 cd Unix_intro
-55 ls
-56 pwd
-57 date
-58 w
-59 alias
-60 history
-61 history 10
-
- Si può ripetere l'ultimo comando digitando
- !!:
-
- &prompt.user; !!
-53 ls
-54 cd Unix_intro
-55 ls
-56 pwd
-57 date
-58 w
-59 alias
-60 history
-61 history 10
-62 history 10
-
- Si può ripetere un comando numerato introducendo il numero con
- un !, esempio:
-
- &prompt.user; !57
-date
-Tue Apr 9 09:55:31 EDT 1996
-
- Si può ripetere un comando che inizia con qualche stringa,
- introducendo la parte iniziale univoca della stringa con un
- !, esempio:
-
- &prompt.user; !da
-date
-Tue Apr 9 09:55:31 EDT 1996
-
- Quando la shell valuta la linea di comando verifica subito la
- sostituzione di history prima di interpretare qualche altra cosa. Per
- usare uno di questi caratteri speciali in un comando di shell è
- necessario usare un escape, o effettuare un quoting, apporrendo un \ prima
- del carattere, esempio \!. I caratteri di sostituzione di history sono
- sintetizzati nella tabella seguente:
-
-
- Comandi di sostituzione di history per la shell C
-
-
-
-
-
-
- Comando
-
- Funzione sostitutiva
-
-
-
-
-
- !!
-
- ripete l'ultimo comando
-
-
-
- !n
-
- ripete il comando numero n
-
-
-
- !-n
-
- ripete l'n-esimo comando partendo
- dall'ultimo
-
-
-
- !str
-
- ripete il comando che inizia con la stringa
- str
-
-
-
- !?str?
-
- ripete il comando con all'interno
- str
-
-
-
- !?str?%
-
- seleziona il primo argomento che ha
- str all'interno
-
-
-
- !:
-
- ripete l'ultimo comando, generalmente usato con una
- modifica
-
-
-
- !:n
-
- seleziona l'n-esimo argomento
- dell'ultimo comando (n=0 è il nome del comando)
-
-
-
- !:n-m
-
- seleziona gli argomenti tra
- l'n-esimo e
- l'm-esimo argomento dell'ultimo
- comando
-
-
-
- !^
-
- seleziona il primo argomento dell'ultimo comando (come
- !:1)
-
-
-
- !$
-
- seleziona l'ultimo argomento dell'ultimo comando
-
-
-
- !*
-
- seleziona tutti gli argomenti del precedente comando
-
-
-
- !:n*
-
- seleziona gli argomenti
- dall'n-esimo all'ultimo, incluso, del
- precedente comando
-
-
-
- !:n-
-
- seleziona gli argomenti
- dall'n-esimo all'ultimo, escluso, del
- precedente comando
-
-
-
- ^str1^str2^
-
- rimpiazza str1 con
- str2 nella prima occorrenza nel
- precedente comando
-
-
-
- !n:s/str1/str2/
-
- sostituisce str1 con
- str2 nella prima occorrenza
- nell'n-esimo comando, finendo con una
- sostituzione globale g
-
-
-
-
-
-
- Altre informazioni sono descritte nelle pagine
- man.
-
-
-
- Cambiare la propria shell
-
- Per cambiare la propria shell si usano generalmente i comandi
- &man.chsh.1; o passwd -e. Il flag di opzione, qui
- , può cambiare da sistema a sistema
- ( su sistemi basati su BSD), quindi verificare le
- proprie pagine man sul proprio sistema per un
- uso corretto. Alcune volte questa caratteristica è disabilitata.
- Se non si riesce a cambiare la propria shell contattare il proprio
- amministratore di sistema (System Administrator).
-
- La nuova shell deve essere un path name assoluto di una valida shell
- sul sistema. Le shell disponibili variano da sistema a sistema. Inoltre
- il path name assoluto della shell può cambiare. Normalmente, per
- la shell Bourne e la shell C sono standard e sono:
-
- /bin/sh
-
- /bin/csh
-
- Alcuni sistemi hanno anche la shell Korn standard normalmente
- in:
-
- /bin/ksh
-
- Altre shell, che sono poco popolari e non distribuite normalmente
- dal venditore di OS, sono &man.bash.1; e &man.tcsh.1;. Queste potrebbero
- essere situate in /bin o in una directory locale,
- esempio /usr/local/bin o
- /opt/local/bin. Se si sceglie una shell non standard
- del OS, ci si deve assicurare che quella shell e tutte le shell di login
- disponibili sul sistema siano elencate nel file
- /etc/shells. Se questo file esiste e la propria
- shell non è elencata in esso, il demone per il trasferimento di
- file, &man.ftpd.8;, ti impedirà una connessione ftp su questa
- macchina. Se tale file non esiste, solamente account con shell
- standard possono connettersi via &man.ftp.1;.
-
- Si può sempre provare una shell prima di settarla come la
- propria shell di default. Per fare questo si deve digitare il nome della
- shell che si desidera utilizzare, come qualsiasi altro comando.
-
-
Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/shells/chapter.xml
___________________________________________________________________
Deleted: svn:keywords
## -1 +0,0 ##
-FreeBSD=%H
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/sgml
\ No newline at end of property
Index: head/it_IT.ISO8859-15/books/unix-introduction/chapters.ent
===================================================================
--- head/it_IT.ISO8859-15/books/unix-introduction/chapters.ent (revision 52098)
+++ head/it_IT.ISO8859-15/books/unix-introduction/chapters.ent (nonexistent)
@@ -1,28 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/chapters.ent
___________________________________________________________________
Deleted: svn:keywords
## -1 +0,0 ##
-FreeBSD=%H
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/sgml
\ No newline at end of property
Index: head/it_IT.ISO8859-15/books/unix-introduction/glossary/chapter.xml
===================================================================
--- head/it_IT.ISO8859-15/books/unix-introduction/glossary/chapter.xml (revision 52098)
+++ head/it_IT.ISO8859-15/books/unix-introduction/glossary/chapter.xml (nonexistent)
@@ -1,558 +0,0 @@
-
-
-
- Glossario
-
-
- A
-
-
- account
-
-
- struttura di dati che contiene alcune informazioni (come password,
- nome reale, username, indirizzo, ecc.) relative a un utente
-
-
-
-
- alias
-
-
- meccanismo che permette di invocare un comando (o una combinazione
- di comandi) attraverso un nome pseudonimo precedentemente
- assegnato
-
-
-
-
-
- B
-
-
- background
-
-
- riferito alla modalità di gestione dell'esecuzione di un
- processo in shell corrente: la shell non aspetta la fine di tale
- processo ma continua la sua normale esecuzione
-
- Vedere:
- sezione 5.5
-
-
-
-
- backquote
-
-
- caratteri speciali utilizzati per inserire in una stringa l'output
- del comando specificato tra questi caratteri
-
- Vedere: sezione 9.2
-
-
-
-
- built-in
-
-
- comandi incorporati nel codice della shell
-
- Vedere: sezione 5.1
-
-
-
-
-
- C
-
-
- case sensitive
-
-
- distinzione tra lettere maiuscole e lettere minuscole
-
-
-
-
-
- D
-
-
- directory-home
-
-
- è la directory dell'utente, nella quale ci si ritrova
- (in generale) dopo la fase di login
-
- Vedere: sezione
- 3.6
-
-
-
-
- directory-root
-
-
- è la directory padre di tutte le altre directory (indicata
- spesso con il segno /)
-
- Vedere: sezione 2.2
-
-
-
-
-
- E
-
-
- editor
-
-
- strumenti per manipolare testi (programmi, ecc.)
-
- Vedere: Capitolo
- 10
-
-
-
-
- EOF
-
-
- sta per end of file e indica la fine del
- file
-
-
-
-
-
- F
-
-
- filename
-
-
- nome del file
-
-
-
-
- file system
-
-
- architettura formata da un insieme di strutture dati che permetto
- di organizzare e gestire i dati su disco
-
- Vedere: sezione 2.2
-
-
-
-
- foreground
-
-
- riferito alla modalità di gestione dell'esecuzione di un
- processo in shell corrente: la shell aspetta che il processo termini
- prima di riprendere la sua esecuzione
-
- Vedere: sezione 5.5
-
-
-
-
-
- G
-
-
- groupid
-
-
- numero che identifica in maniera univoca un gruppo di utenti su un
- sistema Unix
-
- Vedere: sezione 3.1.4
-
-
-
-
- groupname
-
-
- nome che identifica un gruppo su un sistema Unix
-
- Vedere: sezione 3.1.4
-
-
-
-
-
- H
-
-
- hard link
-
-
- link fisico tra due file
-
- Vedere: sezione 8.1.7
-
-
-
-
- here document
-
-
- speciale forma di quoting
-
- Vedere: sezione 9.6
-
-
-
-
- history
-
-
- storia dei comandi digitati precedentemente
-
- Vedere: sezione 5.6
-
-
-
-
-
- I
-
-
- inode
-
-
- struttura di dati contenente informazioni sui file
-
- Vedere: sezione 2.3
-
-
-
-
-
- J
-
-
- job
-
-
- sinonimo di processo
-
-
-
-
-
- K
-
-
- kernel
-
-
- è il cuore del sistema operativo, il posto in cui sono
- caricati tutti i driver per i device, gestisce i processi, le
- operazione di I/O, ecc.
-
-
-
-
-
- L
-
-
- login
-
-
- riferito sia al nome utente di un account Unix (login username)
- sia alla fase (fase di login) di accesso a un sistema Unix
- (login+password) (il riferimento risulta chiaro dal contesto)
-
- Vedere: sezione 3.1
-
-
-
-
-
- M
-
-
- man page
-
-
- pagina del manuale di un sistema Unix
-
- Vedere: sezione 3.5
-
-
-
-
- multi-level file system
-
-
- file system a più livelli organizzati in gerarchia
-
- Vedere: sezione 2.2
-
-
-
-
- multi-processor
-
-
- o multi-tasking; capacità del sistema operativo che
- permette di eseguire più programmi (processi) senza doverne
- aspettare la terminazione sequenziale
-
- Vedere: sezione
- 2.1
-
-
-
-
- multi-user
-
-
- capacità del sistema operativo che permette di gestire
- più utenti contemporaneamente
-
- Vedere: sezione
- 2.1
-
-
-
-
-
- O
-
-
- OS
-
-
- operating system, sistema operativo
-
-
-
-
-
- P
-
-
- password
-
-
- codice segreto di un account Unix utilizzato per autenticare un
- utente nel sistema
-
- Vedere: sezione 3.1 e
- sezione 3.1.2
-
-
-
-
- path name
-
-
- percorso dei nomi, che indica i rami del file
- system (directory separate da un /) che bisogna attraversare per
- raggiungere un determinato file o directory
-
- Vedere: sezione 2.2
-
-
-
-
- pattern
-
-
- schema
-
-
-
-
- pipe/piping
-
-
- meccanismo che porta l'output di un comando nell'input di
- un altro
-
- Vedere: sezione 6.2
-
-
-
-
-
- Q
-
-
- quoting
-
-
- tecnica di interpretazione di una stringa da parte della
- shell
-
- Vedere: sezione 9.3
-
-
-
-
-
- S
-
-
- script
-
-
- programma scritto nel linguaggio della shell
-
- Vedere: sezione 9.1
-
-
-
-
- shell
-
-
- interprete a linea di comando. È l'interfaccia tra
- l'utente e il sistema operativo (kernel)
-
- Vedere: Capitolo
- 5
-
-
-
-
- simbolic link
-
-
- link simbolico (collegamento tramite path name) tra due file o
- directory
-
- Vedere: sezione 8.1.7
-
-
-
-
- system call
-
-
- sono delle procedure (routine) standard, che i programmi utente
- utilizzano per accedere ai servizi che il kernel mette
- a disposizione
-
- Vedere: sezione
- 2.1
-
-
-
-
- standard error
-
-
- dispositivo standard di errori (terminale di default)
-
- Vedere: sezione 6.1
-
-
-
-
- standard input
-
-
- dispositivo standard di ingresso (tastiera di default)
-
- Vedere: sezione 6.1
-
-
-
-
- standard output
-
-
- dispositivo standard di uscita (terminale di default)
-
- Vedere: sezione 6.1
-
-
-
-
- super-user
-
-
- o root, utente speciale che amministra un sistema Unix
-
-
-
-
-
- U
-
-
- userid
-
-
- numero che identifica univocamente l'utente su un sistema
- Unix
-
- Vedere: sezione 3.1.4
-
-
-
-
- username
-
-
- o user, nome di un utente Unix (utilizzato nella fase di
- login)
-
- Vedere: sezione 3.1.4
-
-
-
-
-
- V
-
-
- verbose
-
-
- modalità di esecuzione di un comando che fornisce molte
- informazioni addizionali (utile per gli utenti novizi)
-
-
-
-
-
- W
-
-
- wild card
-
-
- anche conosciuti come meta-caratteri, sono caratteri speciali
- utilizzati in alcune circostanze per il confronto/sostituzione di
- caratteri
-
- Vedere: sezione 6.4
-
-
-
-
- word-wrap
-
-
- meccanismo che invia alla prossima riga l'intera parola fuori
- margine
-
-
-
-
Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/glossary/chapter.xml
___________________________________________________________________
Deleted: svn:keywords
## -1 +0,0 ##
-FreeBSD=%H
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/sgml
\ No newline at end of property
Index: head/it_IT.ISO8859-15/books/unix-introduction/preface/chapter.xml
===================================================================
--- head/it_IT.ISO8859-15/books/unix-introduction/preface/chapter.xml (revision 52098)
+++ head/it_IT.ISO8859-15/books/unix-introduction/preface/chapter.xml (nonexistent)
@@ -1,97 +0,0 @@
-
-
-
- Prefazione
-
- Questo documento è rivolto in prevalenza a quelle persone che si
- avvicinano per la prima volta a Unix, ma non solo.
-
- Prima di iniziare ad esporre la traduzione di questo documento
- volevo dire alcune cose. Alcune parole del testo originale in lingua
- inglese non sono state tradotte in italiano, vuoi perchè la
- rispettiva traduzione in italiano non è efficiente in termini di
- comprensibilità, vuoi perchè è di uso comune far
- riferimento a queste direttamente in lingua inglese (vedi login, quoting,
- built-in, here document, shell, background, pipe, script, ecc.). Inoltre mi
- è sembrato opportuno e logico modificare l'ultima sezione di questo
- documento, bibliografia di Unix (testi in lingua inglese), in una breve
- bibliografia italiana di Unix. Infine ho aggiunto un glossario dove poter
- trovare un elenco dei termini inglesi più caldi incontrati in questo
- documento e il loro significato corrispondente.
-
- Non mi resta che augurarvi una buona lettura.
-
- Convenzioni usate in questo
- libro
-
- Per fornire un testo consistente e facile da leggere, sono state
- seguite numerose convenzioni in tutto il libro.
-
- Convenzioni
- Tipografiche
-
-
-
- Italico
-
-
- Un font italico è per i nomi dei file,
- per gli URL, per il testo enfatizzato, e per il primo utilizzo dei
- termini tecnici.
-
-
-
-
- Monospazio
-
-
- Un font monospazio è usato per i
- messaggi di errore, i comandi, le variabili di ambiente, i nomi di
- host, i nomi degli utenti, i nomi dei gruppi, i nomi dei device, le
- variabili, e i frammenti di codice.
-
-
-
-
- Grassetto
-
-
- Un font in grassetto è per le
- applicazioni, i comandi, e i tasti.
-
-
-
-
- Input
- dell'Utente
-
- I tasti sono visualizzati in grassetto per
- differenziarli dal testo normale. Le combinazioni di tasti che devono
- essere digitate contemporaneamente sono visualizzate con un
- `+' tra i tasti, come:
-
-
- Ctrl
- Alt
- Del
-
-
- I tasti che devono essere digitati in sequenza saranno separati da
- virgole, come per esempio:
-
-
- Ctrl
- X
- ,
- Ctrl
- S
-
-
- Vuol dire che l'utente deve digitare i tasti Ctrl e
- X contemporaneamente e poi i tasti Ctrl e
- S.
-
Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/preface/chapter.xml
___________________________________________________________________
Deleted: svn:keywords
## -1 +0,0 ##
-FreeBSD=%H
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/sgml
\ No newline at end of property
Index: head/it_IT.ISO8859-15/books/unix-introduction/commands/chapter.xml
===================================================================
--- head/it_IT.ISO8859-15/books/unix-introduction/commands/chapter.xml (revision 52098)
+++ head/it_IT.ISO8859-15/books/unix-introduction/commands/chapter.xml (nonexistent)
@@ -1,3021 +0,0 @@
-
-
-
- Altri comandi utili
-
-
- Lavorare con i file
-
- Questa sezione descrive alcuni comandi che possono risultare utili
- nell'esaminare e manipolare il contenuto dei propri file.
-
-
- Utilità file
-
-
-
-
-
-
- Comando/Sintassi
-
- Cosa fa
-
-
-
-
-
- cmp [opzioni]
- file1 file2
-
- confronta due file e mostra dove avvengono le differenze
- (file di testo e file binari)
-
-
-
- cut [opzioni]
- [file]
-
- taglia specifici campi/caratteri dalle linee di un
- file
-
-
-
- diff [opzioni]
- file1 file2
-
- confronta due file e mostra le differenze
- (solamente file di testo)
-
-
-
- file [opzioni]
- file
-
- classifica il tipo di file
-
-
-
- find directory
- [opzioni]
- [azioni]
-
- cerca file basandosi sul tipo o su uno schema
-
-
-
- ln [opzioni]
- sorgente
- destinazione
-
- crea un link (collegamento) a
- sorgente chiamato
- destinazione
-
-
-
- paste [opzioni]
- file
-
- aggiunge campi all'interno di un file
-
-
-
- sort [opzioni]
- file
-
- riordina le linee di un file in accordo con le opzioni
- specificate
-
-
-
- strings [opzioni]
- file
-
- riporta sequenze di 4 o più caratteri stampabili
- terminati con <NL> o <NULL>. Normalmente utilizzato
- per ricercare stringhe ASCII in file binari.
-
-
-
- tee [opzioni]
- file
-
- copia standard output in uno o più file
-
-
-
- touch [opzioni]
- [data/ora]
- file
-
- crea un file vuoto o aggiorna la data di accesso di un file
- esistente
-
-
-
- tr [opzioni]
- stringa1 stringa2
-
- traduce i caratteri di stringa1
- provenienti da standard input in quelli di
- stringa2 per standard output
-
-
-
- uniq [opzioni]
- file
-
- rimuove le linee ripetute in un file
-
-
-
- wc [opzioni]
- [file]
-
- mostra il numero di parole (o di caratteri o di linee) di
- un file
-
-
-
-
-
-
- cmp - confronta contenuti di file
-
- Il comando &man.cmp.1; confronta due file, e (senza opzioni) riporta
- la posizione della loro prima differenza. Può trattare confronti
- sia tra file ASCII sia tra file binari. Il comando compie una
- comparazione byte-per-byte.
-
- Sintassi
-
- cmp [opzioni]
- file1 file2
- [salto1]
- [salto2]
-
- I numeri di salto sono i numeri di byte da
- saltare in ogni file prima di iniziare il confronto.
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- riporta ogni differenza
-
-
-
-
-
- riporta solamente un valore di uscita, non le differenze
- tra i byte
-
-
-
-
-
- Esempi:
-
- Dati i file mon.logins e
- tues.logins:
-
- ageorge ageorge
-bsmith cbetts
-cbetts jchen
-jchen jdoe
-jmarsch jmarsch
-lkeres lkeres
-mschmidt proy
-sphillip sphillip
-wyepp wyepp
-
- Il confronto dei due file produce:
-
- &prompt.user; cmp mon.logins tues.logins
-mon.logins tues.logins differ: char 9, line 2
-
- Di default il comando riporta solamente la prima differenza
- trovata.
-
- Questo comando è utile nel determinare quale versione di un
- file dovrebbe essere mantenuta quando c'è più di una
- versione dello stesso file.
-
-
-
- diff - differenze tra file
-
- Il comando &man.diff.1; confronta due file, due directory,
- ecc., e riporta tutte le differenze tra i due. Questo comando tratta
- solamente file ASCII. Il suo formato di output è stato
- progettato per fornire i cambiamenti necessari per convertire il primo
- file nel secondo.
-
- Sintassi
-
- diff [opzioni]
- file1 file2
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- ignora spazi contigui
-
-
-
-
-
- ignora la differenza tra lettere minuscole e
- maiuscole
-
-
-
-
-
- ignora i caratteri di spazio e tab
-
-
-
-
-
- produce un formato di output da utilizzare con l'editor
- &man.ed.1;
-
-
-
-
-
- esegue &man.diff.1; ricorsivamente attraverso le
- sotto-directory
-
-
-
-
-
- Esempi:
-
- Per i file sopra citati mon.logins e
- tues.logins, le loro differenze sono:
-
- &prompt.user; diff mon.logins tues.logins
-2d1
-< bsmith
-4a4
-> jdoe
-7c7
-< mschmidt
----
-> proy
-
- Notare che l'output mostra sia l'elenco delle differenze sia in
- quale file queste esistono. Le linee del primo file sono precedute da
- < e quelle del secondo file sono precedute da >.
-
-
-
- cut - seleziona parte di una linea di un file
-
- Il comando &man.cut.1; permette di estrarre una parte di
- un file che verrà utilizzata per un altro scopo.
-
- Sintassi
-
- cut [opzioni]
- file
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- posizioni dei caratteri da selezionare (il primo carattere
- è in posizione 1)
-
-
-
-
-
- delimitatore di campo (tab di default)
-
-
-
-
-
- campi da selezionare (il primo campo è 1)
-
-
-
-
-
- Sia la lista dei caratteri che quella dei campi possono contenere
- numeri (in ordine crescente) separati da virgole o da spazi bianchi e
- possono contenere un trattino (-) per indicare un range. La mancanza di
- un numero prima del trattino (esempio -5) o dopo il trattino
- (esempio 5-), specifica rispettivamente un range completo che inizia con
- il primo carattere o campo, o finisce con l'ultimo carattere o campo.
- I caratteri bianchi di separazione di lista devono essere chiusi tra
- caratteri di quoting. I campi di delimitazione possono essere chiusi
- tra quoting se hanno un significato speciale di shell, ad esempio quando
- specificano un carattere di tab o spazio.
-
- Esempi:
-
- In questi esempi si userà il file
- users:
-
- jdoe John Doe 4/15/96
-lsmith Laura Smith 3/12/96
-pchen Paul Chen 1/5/96
-jhsu Jake Hsu 4/17/96
-sphilip Sue Phillip 4/2/96
-
- Se si desidera solo lo username e il nome reale dell'utente, il
- comando &man.cut.1; può essere usato per ottenere solamente
- queste informazioni:
-
- &prompt.user; cut -f 1,2 users
-jdoe John Doe
-lsmith Laura Smith
-pchen Paul Chen
-jhsu Jake Hsu
-sphilip Sue Phillip
-
- Il comando &man.cut.1; può essere usato con altre opzioni.
- L'opzione permette di selezionare caratteri. Per
- selezionare i primi 4 caratteri:
-
- &prompt.user; cut -c 1-4 users
-
- che produrrà:
-
- jdoe
-lsmi
-pche
-jhsu
-sphi
-
- in questo modo si selezionano solamente i primi 4 caratteri di ogni
- linea.
-
-
-
- paste - fusione di file
-
- Il comando &man.paste.1; permette di combinare insieme due
- file. In una fusione, il delimitatore di default tra le colonne
- è un tab, ma le opzioni permettono di usare altri
- delimitatori.
-
- Sintassi
-
- paste [opzioni]
- file1 file2
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- elenco dei caratteri di delimitazione
-
-
-
-
-
- concatena linee
-
-
-
-
-
- L'elenco dei delimitatori può
- comprendere singoli caratteri come una virgola, una stringa quotata,
- uno spazio o alcune delle seguenti sequenze di escape:
-
-
-
-
-
-
-
- \n
-
- carattere newline
-
-
-
- \t
-
- carattere tab
-
-
-
- \\
-
- carattere backslash
-
-
-
- \0
-
- stringa vuota (carattere non-null)
-
-
-
-
-
- Può essere necessario quotare i delimitatori che hanno
- significati speciali di shell.
-
- Un trattino (-) al posto di un nome di file viene usato per
- indicare che quel campo dovrebbe venire da standard input.
-
- Esempi:
-
- Dato il file users:
-
- jdoe John Doe 4/15/96
-lsmith Laura Smith 3/12/96
-pchen Paul Chen 1/5/96
-jhsu Jake Hsu 4/17/96
-sphilip Sue Phillip 4/2/96
-
- e il file phone:
-
- John Doe 555-6634
-Laura Smith 555-3382
-Paul Chen 555-0987
-Jake Hsu 555-1235
-Sue Phillip 555-7623
-
- il comando &man.paste.1; può essere usato in combinazione
- con il comando &man.cut.1; per creare un nuovo file,
- listing, che include per tutti gli utenti lo
- username, il nome reale, l'ultimo login e il numero di telefono.
- Prima si estraggono i numeri di telefono all'interno del file temporaneo
- temp.file:
-
- &prompt.user; cut -f2 phone > temp.file
-555-6634
-555-3382
-555-0987
-555-1235
-555-7623
-
- Il risultato può essere incollato alla fine di ogni linea di
- users e quindi rediretto nel nuovo file,
- listing:
-
- &prompt.user; paste users temp.file > listing
-jdoe John Doe 4/15/96 237-6634
-lsmith Laura Smith 3/12/96 878-3382
-pchen Paul Chen 1/5/96 888-0987
-jhsu Jake Hsu 4/17/96 545-1235
-sphilip Sue Phillip 4/2/96 656-7623
-
- Tutto questo può anche essere realizzato su una linea senza
- il file temporaneo, con lo stesso risultato:
-
- &prompt.user; cut -f2 phone | paste users - > listing
-
- In questo caso il trattino (-) funge come sostituto per il campo di
- input (indica cioè l'output del comando &man.cut.1;).
-
-
-
- touch - crea un file
-
- Il comando &man.touch.1; può essere usato per creare un nuovo
- (vuoto) file o per aggiornare l'ultima data/ora di accesso di un
- file esistente. Il comando viene usato primariamente quando uno script
- richiede la pre-esistenza di un file (ad esempio per appendere delle
- informazioni) o quando uno script controlla l'ultima data/ora in cui una
- funzione è stata realizzata.
-
- Sintassi
-
- touch [opzioni]
- [data/ora1]
- file
-
- touch [opzioni]
- [-t data/ora2]
- file
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- cambia la data/ora di accesso al file
- (solamente SVR4)
-
-
-
-
-
- non crea il file se non esiste
-
-
-
-
-
- forza l'azione, nonostante i permessi di lettura/scrittura
- del file
-
-
-
-
-
- cambia la data/ora di modifica del file
- (solamente SVR4)
-
-
-
-
-
- usa la data/ora2 specificata, non la data/ora corrente
- (solamente SVR4)
-
-
-
-
-
- Quando si usa l'opzione , deve essere nella
- forma:
-
- [[CC]YY]
- MMDDhhmm[.SS]
-
- dove:
-
-
-
-
-
-
-
- CC
-
- prime due cifre dell'anno
-
-
-
- YY
-
- seconde due cifre dell'anno
-
-
-
- MM
-
- mese, 01-12
-
-
-
- DD
-
- giorno del mese, 01-31
-
-
-
- hh
-
- ora del giorno, 00-23
-
-
-
- mm
-
- minuti, 00-59
-
-
-
- SS
-
- secondi, 00-59
-
-
-
-
-
- Il formato dell'opzione
- è:
-
-
-
- dove questi simboli hanno gli stessi significati dei simboli
- mostrati in precedenza.
-
- La data non può essere settata prima del 1969 o dopo il 18
- Gennaio 2038 (dipende dalle versione del sistema operativo Unix).
-
- Esempi:
-
- Per creare un file:
-
- &prompt.user; touch filename
-
-
-
- wc - conta le parole in un file
-
- &man.wc.1; sta per conta parole; il comando
- può essere usato per contare il numero di linee, di caratteri o
- di parole in un file.
-
- Sintassi
-
- wc [opzioni]
- file
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- conta byte
-
-
-
-
-
- conta caratteri (SVR4)
-
-
-
-
-
- conta linee
-
-
-
-
-
- conta parole
-
-
-
-
-
- Se nessuna opzione viene specificata, l'opzione di default è
- .
-
- Esempi:
-
- Dato il file users:
-
- jdoe John Doe 4/15/96
-lsmith Laura Smith 3/12/96
-pchen Paul Chen 1/5/96
-jhsu Jake Hsu 4/17/96
-sphilip Sue Phillip 4/2/96
-
- il risultato dell'uso del comando &man.wc.1; su tale file è
- il seguente:
-
- &prompt.user; wc users
-5 20 121 users
-
- Il primo numero indica il numero di linee nel file, il secondo
- indica il numero di parole e il terzo numero indica il numero di
- caratteri.
-
- Usando il comando &man.wc.1; con una delle opzioni sopra citate
- ( per linee; per parole o
- per caratteri) si ottiene come risultato solo
- una delle precedenti informazioni. Per esempio,
- wc -l users produce il risultato seguente:
-
- 5 users
-
-
-
- ln - crea un link a un altro file
-
- Il comando &man.ln.1; crea un link (collegamento) o
- un modo aggiuntivo per accedere (o attribuisce un nome addizionale) a un
- altro file.
-
- Sintassi
-
- ln [opzioni]
- sorgente
- [destinazione]
-
- Se non specificata, la
- destinazione di default
- è un file dello stesso nome di
- sorgente posto nella
- directory di lavoro corrente.
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- forza un link nonostante i permessi della
- destinazione; non riporta errori (solamente SVR4 )
-
-
-
-
-
- crea un link simbolico
-
-
-
-
-
- Esempi:
-
- Un link simbolico viene usato per creare un
- nuovo percorso a un altro file o directory. Per esempio, se un gruppo
- di utenti è abituato ad usare un comando chiamato
- chkmag, ma il comando è stato riscritto e il
- nuovo nome è chkit, creando un link simbolico
- gli utenti eseguiranno automaticamente chkit quando
- digitano il comando chkmag, eliminando la transizione
- per il nuovo comando.
-
- Un link simbolico può essere creato nel modo seguente:
-
- &prompt.user; ln -s chkit chkmag
-
- Ora il lungo listato per questi due file è il
- seguente:
-
- 16 -rwxr-x--- 1 lindadb acs 15927 Apr 23 04:10 chkit
-1 lrwxrwxrwx 1 lindadb acs 5 Apr 23 04:11 chkmag -> chkit
-
- Notare che mentre i permessi di chkmag sono
- aperti a tutti, poichè è linkato a
- chkit, le caratteristiche dei permessi, del gruppo e
- del proprietario di chkit saranno rispettate quando
- chkmag viene invocato.
-
- Con un link simbolico, il link può esistere senza che il file
- o la directory a cui è collegato esista.
-
- Un hard link può solamente essere creato
- per un altro file sullo stesso file system, ma non per una directory
- (eccetto per il super-user). Un hard link crea un nuovo elemento di
- directory puntante allo stesso inode del file originale. Il file
- linkato deve esistere prima che l'hard link possa essere creato.
- Il file non sarà cancellato fino a quando tutti gli hard link
- saranno rimossi. Per linkare i due file precedenti tramite un hard
- link:
-
- &prompt.user; ln chkit chkmag
-
- Quindi un lungo listato mostra che il numero di
- inode (742) è lo stesso per entrambi i
- file:
-
- &prompt.user; ls -il chkit chkmag
-742 -rwxr-x--- 2 lindadb acs 15927 Apr 23 04:10 chkit
-742 -rwxr-x--- 2 lindadb acs 15927 Apr 23 04:10 chkmag
-
-
-
- sort - ordina il contenuto di un file
-
- Il comando &man.sort.1; viene usato per ordinare le linee
- di un file. Si possono usare diverse opzioni per stabilire il modo di
- ordinamento e su quali campi ordinare il file. Senza opzioni,
- &man.sort.1; confronta intere linee di un file e produce un ordinamento
- ASCII (prima i numeri, lettere maiuscole e quindi lettere
- minuscole).
-
- Sintassi
-
- sort [opzioni]
- [+pos1 [-pos2]]
- file
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- ignora gli spazi bianchi iniziali (spazi e tab) quando si
- stabiliscono i carattere di inizio e di fine per la chiave di
- ordinamento
-
-
-
-
-
- ordinamento a dizionario, sono rilevanti solamente le
- lettere, le cifre, spazi e tab
-
-
-
-
-
- uguaglia lettere maiuscole e minuscole
-
-
-
-
-
- ordinamento su chiavi specifiche (non disponibile su tutti
- i sistemi)
-
-
-
-
-
- ignora i caratteri non stampabili
-
-
-
-
-
- ordinamento numerico
-
-
-
-
-
- file di output
-
-
-
-
-
- ribalta l'ordine
-
-
-
-
-
- usa car come il carattere di
- separatore di campo
-
-
-
-
-
- unico; trascura multiple copie di linee uguali
- (dopo l'ordinamento)
-
-
-
-
-
- (vecchio stile) fornisce funzionalità simili
- all'opzione .
-
-
-
-
-
- Per gli elementi di posizione
- (), pos1 è il
- numero di parola di inizio, iniziando da 0 e
- pos2 è il numero di parola di fine.
- Quando -pos2 non è specificato, il
- campo di ordinamento continua fino alla fine del file. Sia
- pos1 che pos2
- possono essere specificati nella forma
- w.c, dove
- w è il numero di parola e
- c è il carattere all'interno della
- parola. Per c 0 si specifica il delimitatore che
- precede il primo carattere e 1 è il primo
- carattere della parola. Questi elementi possono essere seguiti da un
- tipo di modificatore, esempio n per numerico,
- b per saltare gli spazi bianchi ,ecc.
-
- Il campo chiave dell'opzione
- ha la seguente sintassi:
-
- campo_inizio
- [tipo]
- [ ,campo_fine
- [tipo] ]
-
- dove:
-
-
-
-
-
-
-
- campo_inizio, campo_fine
-
- definiscono le chiavi per restringere l'ordinamento su una
- porzione di linea
-
-
-
- tipo
-
- modifica l'ordinamento: validi modificatori sono dati dai
- singoli caratteri (bdfiMnr) derivanti dalle simili opzioni di
- ordinamento, ad esempio un tipo b equivale
- a , ma applicato solamente nello specifico
- campo di azione
-
-
-
-
-
- Esempi:
-
- Dato il file users:
-
- jdoe John Doe 4/15/96
-lsmith Laura Smith 3/12/96
-pchen Paul Chen 1/5/96
-jhsu Jake Hsu 4/17/96
-sphilip Sue Phillip 4/2/96
-
- ordinando con &man.sort.1; gli utenti si produce:
-
- jdoe John Doe 4/15/96
-jhsu Jake Hsu 4/17/96
-lsmith Laura Smith 3/12/96
-pchen Paul Chen 1/5/96
-sphilip Sue Phillip 4/2/96
-
- Se, tuttavia, si desidera un elenco in ordine di nome, si usa
- l'opzione per specificare su quale campo ordinare (i campi sono numerati
- partendo da 0):
-
- &prompt.user; sort +2 users
-pchen Paul Chen 1/5/96
-jdoe John Doe 4/15/96
-jhsu Jake Hsu 4/17/96
-sphilip Sue Phillip 4/2/96
-lsmith Laura Smith 3/12/96
-
- Per ribaltare l'ordine:
-
- &prompt.user; sort -r users
-sphilip Sue Phillip 4/2/96
-pchen Paul Chen 1/5/96
-lsmith Laura Smith 3/12/96
-jhsu Jake Hsu 4/17/96
-jdoe John Doe 4/15/96
-
- Un'opzione particolarmente utile di ordinamento è l'opzione
- , che elimina gli elementi duplicati nel file mentre
- si ordina il file. Per esempio, il file
- todays.logins:
-
- sphillip
-jchen
-jdoe
-lkeres
-jmarsch
-ageorge
-lkeres
-proy
-jchen
-
- mostra una lista di ogni username che ha effettuato il login nel
- sistema in giornata. Se si vuole conoscere quanti unici utenti abbiano
- effettuato il login nel sistema in giornata, usando &man.sort.1;
- con l'opzione , la lista conterrà ciascun
- utente una volta sola. (Il comando può essere mandato in pipe a
- wc -l per ottenere direttamente il numero):
-
- &prompt.user; sort -u todays.logins
-ageorge
-jchen
-jdoe
-jmarsch
-lkeres
-proy
-sphillip
-
-
-
- tee - copia l'output di un comando
-
- Il comando &man.tee.1; manda lo standard input nel file
- specificato e anche nello standard output. Viene spesso usato in una
- pipe di comandi.
-
- Sintassi
-
- tee [opzioni]
- [file]
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- appende l'output ai file
-
-
-
-
-
- ignora gli interrupt
-
-
-
-
-
- Esempi:
-
- In questo primo esempio l'output di &man.who.1; è
- visualizzato sullo schermo e memorizzato nel file
- users.file:
-
- brigadier: condron [55]> who | tee users.file
-condron ttyp0 Apr 22 14:10 (lcondron-pc.acs.)
-frank ttyp1 Apr 22 16:19 (nyssa)
-condron ttyp9 Apr 22 15:52 (lcondron-mac.acs)
-
- brigadier: condron [56]> cat users.file
-condron ttyp0 Apr 22 14:10 (lcondron-pc.acs.)
-frank ttyp1 Apr 22 16:19 (nyssa)
-condron ttyp9 Apr 22 15:52 (lcondron-mac.acs)
-
- Nel prossimo esempio l'output di &man.who.1; viene mandato nei file
- users.a e users.b.
- Viene anche mandato in pipe con il comando &man.wc.1;, che riporta il
- numero di linee.
-
- brigadier: condron [57]> who | tee users.a users.b | wc -l
-3
-
- brigadier: condron [58]> cat users.a
-condron ttyp0 Apr 22 14:10 (lcondron-pc.acs.)
-frank ttyp1 Apr 22 16:19 (nyssa)
-condron ttyp9 Apr 22 15:52 (lcondron-mac.acs)
-
- Nell'esempio seguente un listato lungo di directory viene mandato
- nel file files.long. Inoltre viene messo in pipe
- con il comando &man.grep.1; che riporta quali file sono stati modificati
- in Agosto.
-
- brigadier: condron [60]> ls -l | tee files.long |grep Aug
-1 drwxr-sr-x 2 condron 512 Aug 8 1995 News/
-2 -rw-r--r-- 1 condron 1076 Aug 8 1995 magnus.cshrc
-2 -rw-r--r-- 1 condron 1252 Aug 8 1995 magnus.login
-
- brigadier: condron [63]> cat files.long
-total 34
-2 -rw-r--r-- 1 condron 1253 Oct 10 1995 #.login#
-1 drwx------ 2 condron 512 Oct 17 1995 Mail/
-1 drwxr-sr-x 2 condron 512 Aug 8 1995 News/
-5 -rw-r--r-- 1 condron 4299 Apr 21 00:18 editors.txt
-2 -rw-r--r-- 1 condron 1076 Aug 8 1995 magnus.cshrc
-2 -rw-r--r-- 1 condron 1252 Aug 8 1995 magnus.login
-7 -rw-r--r-- 1 condron 6436 Apr 21 23:50 resources.txt
-4 -rw-r--r-- 1 condron 3094 Apr 18 18:24 telnet.ftp
-1 drwxr-sr-x 2 condron 512 Apr 21 23:56 uc/
-1 -rw-r--r-- 1 condron 1002 Apr 22 00:14 uniq.tee.txt
-1 -rw-r--r-- 1 condron 1001 Apr 20 15:05 uniq.tee.txt~
-7 -rw-r--r-- 1 condron 6194 Apr 15 20:18 Unixgrep.txt
-
-
-
- uniq - rimuove linee duplicate
-
- Il comando &man.uniq.1; filtra le linee adiacenti duplicate in un
- file.
-
- Sintassi
-
- uniq [opzioni]
- [+|-n] file
- [nuovo.file]
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- solo una copia delle linee ripetute
-
-
-
-
-
- seleziona solamente le linee non ripetute
-
-
-
-
-
- ignora i primi n
- caratteri
-
-
-
-
-
- come sopra (solamente SVR4)
-
-
-
-
-
- salta i primi n campi, spazi
- inclusi (spazi e tab)
-
-
-
-
-
- come sopra (solamente SVR4)
-
-
-
-
-
- Esempi:
-
- Si consideri il seguente file e l'esempio, dove
- &man.uniq.1; rimuove la quarta linea da file
- e mette il risultato nel file nuovo.file.
-
- {Unix prompt 1} cat file
-1 2 3 6
-4 5 3 6
-7 8 9 0
-7 8 9 0
-
- {Unix prompt 2} uniq file nuovo.file
-
- {Unix prompt 3} cat nuovo.file
-1 2 3 6
-4 5 3 6
-7 8 9 0
-
- Qui sotto, l'opzione
- del comando &man.uniq.1; viene usata per saltare i primi 2 campi
- nel file e per filtrare le linee di uscita che sono duplicate dal terzo
- campo in avanti.
-
- {Unix prompt 4} uniq -2 file
-1 2 3 6
-7 8 9 0
-
-
-
- strings - cerca stringhe ASCII
-
- Per cercare stringhe ASCII, stampabili, in un file binario si usa il
- comando &man.strings.1;. Questo comando ricerca sequenze di quattro o
- più caratteri ASCII terminanti con un carattere newline o
- con un carattere null. &man.strings.1; risulta utile per ricercare nomi
- di file e possibili messaggi di errore all'interno di un programma
- compilato, di cui non si ha il codice sorgente.
-
- Sintassi
-
- strings [opzioni]
- file
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- usa numero come la minima
- lunghezza della stringa, piuttosto di 4 (solamente SVR4)
-
-
-
- numero
-
- come sopra
-
-
-
-
-
- fa precedere alla stringa l'offset di byte dall'inizio del
- file; formato può essere:
- d = decimale, o =
- ottale x = esadecimale (solamente
- SVR4)
-
-
-
-
-
- fa precedere alla stringa l'offset di byte in decimale
- (solamente BSD)
-
-
-
-
-
- Esempi:
-
- &prompt.user; strings /bin/cut
-SUNW_OST_OSCMD
-nessun delimitatore specificato
-delimitatore non valido
-b:c:d:f:ns
-cut: -n può solo essere usato con -b
-cut: -d può solo essere usato con -f
-cut: -s può solo essere usato con -f
-nessuna lista specificata
-cut: %s non si riesce ad aprire
-il range specificato non è valido
-troppi range specificati
-i range devono essere crescenti
-carattere non valido nel range
-Errore interno nel processare l'input
-carattere multibyte non valido
-incapace di allocare memoria sufficiente
-incapace di allocare memoria sufficiente
-cut:
-uso: cut -b lista [-n] [filename ...]
- cut -c lista [filename ...]
- cut -f lista [-d delim] [-s] [filename]
-
-
-
- file - mostra il tipo di file
-
- Il comando &man.file.1; esamina il file specificato e cerca di
- determinare che tipo di file esso sia. Questo viene fatto leggendo i
- primi byte del file e confrontandoli con la tabella
- /etc/magic. Il comando &man.file.1;
- può determinare file di testo ASCII, file formattati tar, file
- compressi, ecc.
-
- Sintassi
-
- file [opzioni]
- [-m file_magico]
- [-f lista_file]
- file
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- verifica il file magico per eventuali errori nel
- formato
-
-
-
-
-
- lista_file
- contiene la lista dei file da esaminare
-
-
-
-
-
- non segue i link simbolici (solamente SVR4)
-
-
-
-
-
- segue i link simbolici (solamente BSD)
-
-
-
-
-
- usa
- file_magico
- come il file magico al posto di
- /etc/magic
-
-
-
-
-
- Esempi:
-
- Vengono elencati qui sotto gli output del comando
- file filename per alcuni
- file significativi.
-
- /etc/magic: File di testo ascii
-/usr/local/bin/gzip: Eseguibile paginato SPARC Sun linkato dinamicamente
-/usr/bin/cut: Eseguibile MSB a 32 bit ELF per SPARC versione 1, linkato dinamicamente, stripped
-source.tar: Archivio tar USTAR
-source.tar.Z: Blocchi di dati compressi 16 bit
-
-
-
- tr - traduce caratteri
-
- Il comando &man.tr.1; traduce caratteri da &man.stdin.4; a
- &man.stdout.4;.
-
- Sintassi
-
- tr [opzioni]
- stringa1
- [stringa2]
-
- Con nessuna opzione i caratteri di
- stringa1 sono tradotti nei caratteri di
- stringa2, carattere per carattere,
- nell'ordine degli array di stringa. Il primo carattere di
- stringa1 viene tradotto nel primo carattere
- di stringa2, ecc.
-
- Un range di caratteri in una stringa viene specificato con un
- trattino tra il carattere superiore e quello inferiore del range, ad
- esempio per specificare tutte le lettere alfabetiche minuscole si usa
- [a-z].
-
- Ripetizioni di caratteri in stringa2
- possono essere rappresentate con la notazione
- [x*n],
- dove il carattere x viene ripetuto
- n volte. Se n
- è 0 o assente, il carattere
- x viene assunto come valida corrispondenza
- richiesta in stringa1.
-
- I caratteri possono includere le notazioni
- \ottale (BSD e SVR4) e
- \carattere (solamente
- SVR4). Qui ottale viene
- sostituito da una, due o tre cifre di interi ottali che codificano un
- carattere ASCII e
- carattere può
- essere uno di questi:
-
-
-
-
-
-
-
- b
-
- back space
-
-
-
- f
-
- form feed
-
-
-
- n
-
- newline
-
-
-
- r
-
- return
-
-
-
- t
-
- tab
-
-
-
- v
-
- tab verticale
-
-
-
-
-
- La versione SVR4 di &man.tr.1; permette l'operando
- :classe: nel campo stringa dove
- classe può assumere uno dei seguenti
- valori di classificazione carattere:
-
-
-
-
-
-
-
- alpha
-
- caratteri alfabetici
-
-
-
- lower
-
- caratteri alfabetici minuscoli
-
-
-
- upper
-
- caratteri alfabetici maiuscoli
-
-
-
-
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- completa il set di caratteri in
- stringa1
-
-
-
-
-
- cancella i caratteri in
- stringa1
-
-
-
-
-
- modifica una stringa di caratteri ripetuti in
- stringa1 in caratteri singoli
-
-
-
-
-
- Esempi:
-
- L'esempio seguente usa come file di input una lista di libri di
- P. G. Wodehouse Jeeves & Wooster.
-
- The Inimitable Jeeves [1923] The Mating Season [1949]
-Carry On, Jeeves [1925] Ring for Jeeves [1953]
-Very Good, Jeeves [1930] Jeeves and the Feudal Spirit [1954]
-Thank You, Jeeves [1934] Jeeves in the Offing [1960]
-Right Ho, Jeeves [1934] Stiff Upper Lip, Jeeves [1963]
-The Code of the Woosters [1938] Much Obliged, Jeeves [1971]
-Joy in the Morning [1946] Aunts Aren't Gentlemen [1974]
-
- Per tradurre tutte le lettere alfabetiche minuscole in maiuscole si
- possono usare:
-
- tr '[a-z]' '[A-Z]'
-
- oppure
-
- tr '[:lower:]' '[:upper:]'
-
- Affinchè &man.tr.1; legga da &man.stdin.4; si usa &man.cat.1;
- in pipe con &man.tr.1;, così:
-
- &prompt.user; cat wodehouse | tr '[a-z]' '[A-Z]'
-THE INIMITABLE JEEVES [1923] THE MATING SEASON [1949]
-CARRY ON, JEEVES [1925] RING FOR JEEVES [1953]
-VERY GOOD, JEEVES [1930] JEEVES AND THE FEUDAL SPIRIT [1954]
-THANK YOU, JEEVES [1934] JEEVES IN THE OFFING [1960]
-RIGHT HO, JEEVES [1934] STIFF UPPER LIP, JEEVES [1963]
-THE CODE OF THE WOOSTERS [1938] MUCH OBLIGED, JEEVES [1971]
-JOY IN THE MORNING [1946] AUNTS AREN'T GENTLEMEN [1974]
-
- Ora si cancellano tutti i numeri con:
-
- &prompt.user; cat wodehouse | tr -d '[0-9]'
-The Inimitable Jeeves [] The Mating Season []
-Carry On, Jeeves [] Ring for Jeeves []
-Very Good, Jeeves [] Jeeves and the Feudal Spirit []
-Thank You, Jeeves [] Jeeves in the Offing []
-Right Ho, Jeeves [] Stiff Upper Lip, Jeeves []
-The Code of the Woosters [] Much Obliged, Jeeves []
-Joy in the Morning [] Aunts Aren't Gentlemen []
-
- Per trattenere tutte le occorrenze multiple dei caratteri e, r
- e f:
-
- &prompt.user; cat wodehouse | tr -s 'erf'
-The Inimitable Jeves [1923] The Mating Season [1949]
-Cary On, Jeves [1925] Ring for Jeves [1953]
-Very Good, Jeves [1930] Jeves and the Feudal Spirit [1954]
-Thank You, Jeves [1934] Jeves in the Ofing [1960]
-Right Ho, Jeves [1934] Stif Upper Lip, Jeves [1963]
-The Code of the Woosters [1938] Much Obliged, Jeves [1971]
-Joy in the Morning [1946] Aunts Aren't Gentlemen [1974]
-
-
-
- find - cerca file
-
- Il comando &man.find.1; può cercare file in modo
- ricorsivo nell'albero di directory indicato, confrontando il tipo di
- file o lo schema specificato. &man.find.1; può quindi elencare i
- file o eseguire arbitrari comandi in base ai risultati.
-
- Sintassi
-
- find directory
- [opzioni di ricerca]
- [azioni]
-
- Opzioni generali
-
- Per l'opzione del tempo di ricerca, la notazione in giorni,
- n è:
-
-
-
-
-
-
-
-
-
- più di n giorni
-
-
-
- n
-
- esattamente n giorni
-
-
-
-
-
- meno di n giorni
-
-
-
-
-
- Alcune caratteristiche dei file che &man.find.1; può
- ricercare sono:
-
- la data dell'ultimo accesso o dell'ultima
- modifica al file:
-
-
-
-
-
-
-
-
-
- data di accesso, vero se l'accesso è di
- n giorni fà
-
-
-
-
-
- data di cambiamento, vero se lo stato del file è
- stato modificato n giorni
- fà
-
-
-
-
-
- data di modifica, vero se i dati del file sono stati
- modificati n giorni fà
-
-
-
-
-
- vero se più recente del file specificato
-
-
-
-
-
- tipo di file,
- dove tipo può essere:
-
-
-
- b
-
- file speciale a blocchi
-
-
-
- c
-
- file speciale a caratteri
-
-
-
- d
-
- directory
-
-
-
- l
-
- link simbolico
-
-
-
- p
-
- file pipe (fifo)
-
-
-
- f
-
- file regolare
-
-
-
-
-
- tipo di file
- system, dove tipo
- può essere un valido tipo di file system, esempio
- ufs (Unix File System) e
- nfs (Network File System)
-
-
-
-
-
- vero se il file appartiene all'utente specificato
-
-
-
-
-
- vero se il file appartiene al gruppo specificato
-
-
-
-
-
- permessi del file, dove modi
- è la modalità ottale usata dal comando
- &man.chmod.1;. Quando modi è
- preceduto da un segno meno, solamente i bit che sono specificati
- vengono confrontati.
-
-
-
-
-
- esegue il comando specificato. La fine del comando viene
- indicata con un escape e punto e virgola (\;). L'argomento del
- comando, {}, sostituisce il path name corrente.
-
-
-
-
-
- vero se il nome del file è quello specificato.
- Confronti con schemi wild card sono permessi se il
- meta-carattere viene messo in escape per la shell con un
- backslash (\)
-
-
-
-
-
- sempre vero. Stampa una lista lunga del path name
- corrente
-
-
-
-
-
- stampa i path name trovati (default per SVR4, non per
- BSD)
-
-
-
-
-
- Sono permesse espressioni complesse. Le espressioni devono essere
- raggruppate tra parentesi (mettendo in escape le parentesi con un
- backslash per impedire alla shell di interpretarle). Il simbolo di
- esclamazione (!) può essere usato per negare
- un'espressione. Gli operatori:
- (and) e
- (or) vengono usati per raggruppare
- espressioni.
-
- Esempi:
-
- &man.find.1; può ricercare in modo ricorsivo attraverso
- sotto-directory, ma per lo scopo di questi esempi saranno usati i
- seguenti file:
-
- 14 -rw-r--r-- 1 frank staff 6682 Feb 5 10:04 library
- 6 -r--r----- 1 frank staff 3034 Mar 16 1995 netfile
-34 -rw-r--r-- 1 frank staff 17351 Feb 5 10:04 standard
- 2 -rwxr-xr-x 1 frank staff 386 Apr 26 09:51 tr25*
-
- Per trovare tutti i file più recenti del file
- library:
-
- &prompt.user; find . -newer library -print
-./tr25
-./standard
-
- Per trovare tutti i file con i permessi di lettura o esecuzione per
- l'utenza altri e quindi modificare gli stessi in modo da
- disabilitarli:
-
- &prompt.user; find . \( -perm -004 -o -perm -001 \) -exec chmod o-rx {} \; -exec ls -al {} \;
--rw-r----- 1 frank staff 6682 Feb 5 10:04 ./library
--rwxr-x--- 1 frank staff 386 Apr 26 09:51 ./tr25
--rw-r----- 1 frank staff 17351 Feb 5 10:04 ./standard
-
- Nell'esempio precedente le parentesi e i punti e virgola sono messi
- in escape con un backslash per impedire alla shell di interpretarli.
- Le parentesi graffe sono automaticamente rimpiazzate dai risultati della
- precedente ricerca e il punto e virgola chiude il comando.
-
- Si possono ricercare alcuni nomi di file contenenti la stringa
- ar con:
-
- &prompt.user; find . -name \*ar\* -ls
-326584 7 -rw-r----- 1 frank staff 6682 Feb 5 10:04 ./library
-326585 17 -rw-r----- 1 frank staff 17351 Feb 5 10:04 ./standard
-
- dove l'opzione mostra un listato lungo, numeri
- di inode inclusi.
-
-
-
-
- Archiviazione, compressione e conversione di file
-
-
- Comandi di archiviazione, compressione e conversione di
- file
-
-
-
-
-
-
- Comando/Sintassi
-
- Cosa fa
-
-
-
-
-
- compress/uncompress/zcat
- [opzioni]
- file[.Z]
-
- comprime o decomprime un file. I file compressi sono
- memorizzati con l'estensione .Z
-
-
-
- dd [if=infile]
- [of=outfile]
- [operando=valore]
-
- copia un file, converte tra ASCII e EBCDIC o scambia
- l'ordine dei byte, come specificato
-
-
-
- gzip/gunzip/zcat
- [opzioni]
- file[.gz]
-
- comprime o decomprime un file. I file compressi sono
- memorizzati con l'estensione .gz
-
-
-
- od [opzioni]
- file
-
- effettua un dump di un file binario in ottale, in ASCII, in
- esadecimale, in decimale o in modo carattere.
-
-
-
- tar [opzioni]
- [file]
-
- archivio a nastro - riferirsi alle pagine man per i dettagli
- su come creare, visualizzare ed estrarre un archivio di file. I
- file tar possono essere memorizzati su nastro o su disco.
-
-
-
- uudecode
- [file]
-
- decodifica un file uuencoded, ricreando il file
- originale
-
-
-
- uuencode [file]
- nuovo_nome
-
- codifica un file binario in ASCII 7-bit; utile quando lo si
- invia tramite email, per poi essere decodificato come
- nuovo_nome alla
- destinazione
-
-
-
-
-
-
- Compressione di file
-
- Il comando &man.compress.1; viene usato per ridurre lo spazio di
- disco utilizzato da un file. Quando un file è stato compresso
- usando il comando &man.compress.1;, il suffisso .Z
- viene appeso al nome del file. I permessi, la data di accesso e di
- modifica del file originale vengono preservati. Il comando
- &man.uncompress.1; restituisce il file originale compresso con
- &man.compress.1;.
-
- Sintassi
-
- compress [opzioni]
- [file]
-
- uncompress [opzioni]
- [file.Z]
-
- zcat [file.Z]
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- scrive su standard output e non crea o modifica alcun
- file
-
-
-
-
-
- forza la compressione del file, anche se questa non riduce
- la dimensione del file o se il file destinazione
- (file.Z) esiste
- già.
-
-
-
-
-
- verbose. Riporta la percentuale di riduzione del
- file.
-
-
-
-
-
- &man.zcat.1; scrive su standard output. Equivale a
- uncompress -c.
-
- Esempi:
-
- Dati i file:
-
- 96 -rw-r--r-- 1 lindadb acs 45452 Apr 24 09:13 logins.beauty
-184 -rw-r--r-- 1 lindadb acs 90957 Apr 24 09:13 logins.bottom
-152 -rw-r--r-- 1 lindadb acs 75218 Apr 24 09:13 logins.photon
-168 -rw-r--r-- 1 lindadb acs 85970 Apr 24 09:13 logins.top
-
- Questi possono essere compressi con:
-
- &prompt.user; compress logins.*
-
- che crea i file:
-
- 24 -rw-r--r-- 1 lindadb acs 8486 Apr 24 09:13 logins.beauty.Z
-40 -rw-r--r-- 1 lindadb acs 16407 Apr 24 09:13 logins.bottom.Z
-24 -rw-r--r-- 1 lindadb acs 10909 Apr 24 09:13 logins.photon.Z
-32 -rw-r--r-- 1 lindadb acs 16049 Apr 24 09:13 logins.top.Z
-
- I file originali sono persi.
-
- Per visualizzare un file compresso, viene usato il comando
- &man.zcat.1;:
-
- &prompt.user; zcat logins.beauty.Z | head
-beauty:01/22/94:#total logins,4338:#different UIDs,2290
-beauty:01/23/94:#total logins,1864:#different UIDs,1074
-beauty:01/24/94:#total logins,2317:#different UIDs,1242
-beauty:01/25/94:#total logins,3673:#different UIDs,2215
-beauty:01/26/94:#total logins,3532:#different UIDs,2216
-beauty:01/27/94:#total logins,3096:#different UIDs,1984
-beauty:01/28/94:#total logins,3724:#different UIDs,2212
-beauty:01/29/94:#total logins,3460:#different UIDs,2161
-beauty:01/30/94:#total logins,1408:#different UIDs,922
-beauty:01/31/94:#total logins,2175:#different UIDs,1194
-
- Una visualizzazione del file utilizzando un altro comando al posto
- di &man.zcat.1; può produrre un difficile risultato
- binario.
-
- Il comando &man.uncompress.1; viene usato per far ritornare il file
- compresso nel suo formato originale:
-
- &prompt.user; uncompress logins.*.Z ; ls -als logins.*
- 96 -rw-r--r-- 1 lindadb acs 45452 Apr 24 09:13 logins.beauty
-184 -rw-r--r-- 1 lindadb acs 90957 Apr 24 09:13 logins.bottom
-152 -rw-r--r-- 1 lindadb acs 75218 Apr 24 09:13 logins.photon
-168 -rw-r--r-- 1 lindadb acs 85970 Apr 24 09:13 logins.top
-
- In aggiunta alle utility standard di Unix &man.compress.1;,
- &man.uncompress.1;, &man.zcat.1; ci sono un set di utility
- GNU liberamente disponibili. Queste creano
- persino un miglior lavoro di compressione utilizzando un algoritmo
- più efficiente. I programmi GNU che forniscono
- funzionalità simili ai precedenti sono spesso installati
- rispettivamente come &man.gzip.1;, &man.gunzip.1; e &man.zcat.1;.
- I nomi dei file compressi con &man.gzip.1; hanno l'estensione
- .z o .gz. Il software GNU
- può essere ottenuto via ftp anonimo: ftp://ftp.gnu.org/pub/gnu.
-
-
-
- tar - archivio di file
-
- Il comando &man.tar.1; raggruppa file in un dispositivo o in un file
- per scopi di archiviazione. Il comando &man.tar.1; non comprime i file,
- rende solamente più maneggevole una grande quantità di
- file.
-
- Sintassi
-
- tar [opzioni]
- [directory file]
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- crea un archivio (inizia scrivendo all'inizio del
- file)
-
-
-
-
-
- visualizza il contenuto
-
-
-
-
-
- estrae da un archivio
-
-
-
-
-
- verbose
-
-
-
-
-
- nome del file di archivio
-
-
-
-
-
- dimensione del blocco di archivio
-
-
-
-
-
- &man.tar.1;, in generale, accetta le sue opzioni sia facendole
- precedere da un trattino (-) sia senza trattino. Il file di archivio
- può essere un file su disco, un dispositivo a nastro o
- standard input/output. L'ultimo modo viene rappresentato tramite un
- trattino.
-
- Esempi:
-
- Dati i file di dimensioni seguenti:
-
- 45 logs.beauty
-89 logs.bottom
-74 logs.photon
-84 logs.top
-
- &man.tar.1; può combinare questi in un solo file,
- logfile.tar:
-
- &prompt.user; tar -cf logfile.tar logs.* ; ls -s logfile.tar
-304 logfile.tar
-
- In Internet, molti siti di archivio FTP anonimi memorizzano i loro
- pacchetti in formati tar compressi, quindi i file finiscono in
- .tar.Z o .tar.gz. Per
- estrarre i file da uno di questi file archivio si può prima
- decomprimerlo, o usare l'appropriato comando &man.zcat.1; e mandare in
- pipe il risultato a &man.tar.1;, esempio:
-
- &prompt.user; zcat archive.tar.Z | tar -xvf -
-
- dove il trattino alla fine del comando &man.tar.1; indica che il
- file è preso da &man.stdin.4;.
-
-
-
- uuencode/uudecode - codifica/decodifica un file
-
- Per codificare un file binario in ASCII 7-bit si usa il comando
- &man.uuencode.1;. Per decodificare il file ASCII 7-bit in binario
- si usa il comando &man.uudecode.1;. Il suffisso
- uu nei nomi deriva dal fatto che
- questi comandi fanno parte del set di comandi Unix-to-Unix CoPy (UUCP).
- I comandi &man.uuencode.1; e &man.uudecode.1; sono generalmente usati
- quando si mandano file binari via e-mail. Con l'e-mail non c'è
- garanzia che file binari 8-bit siano trasferiti correttamente. Quindi
- per garantire una corretta consegna si può codificare il file
- binario, sia direttamente su linea di comando, includendo il file
- codificato, sia indirettamente, lasciando al proprio programma di posta
- MIME questo lavoro. In modo simile, l'utente decodifica il file
- ricevuto.
-
- Sintassi
-
- uuencode [file_sorgente]
- pathname_per_uudecode
- [> nuovo_file]
-
- uudecode [-p]
- file_uuencode
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- manda l'output su standard output piuttosto che nel file di
- default
-
-
-
-
-
- Esempi:
-
- La prima linea di un file codificato con &man.uuencode.1; include i
- permessi e il nome del file
- originale che &man.uudecode.1; utilizzerà quando
- decodificherà il file codificato. Il file inizia e finisce
- rispettivamente con le parole chiavi begin e
- end, esempio:
-
- begin 555 binary_filename
-
-M?T5,1@$" 0 " ( ! %"W #0 5"< T "
-M!0 H !4 % 8 T $ - "@ H 4 P
-M -0 !$ ! ! ! %"
-M%P !0A< % $ $ 4(8 -"& W& W% < 0
-M @ !0B T(@ )@ !P O=7-R+VQI8B]L9"YS
-M;RXQ ?< 'Y VP "O !VP )8 &6 !G0
-M %[ U0 %G !3 ;< #Q %Q !
-MEP :P !_ '@ !PP (P
-M N0 =H _0 $D Y < #F /L
-M01 $' $ & ! P #0A@ 4(8
-M" ! 0 !E !@ , T(@ %"( )@ $
-M 0 ( ;@ $ ' -"N !0K@ /H
-M $ # ', ! P #1J 4:@ #8 !
-M !Y 0 , TH %* !=X 0
-M@ @ # -/X !3^ "E, $ (4 !
-M 4_> )0 0 ". P
-; %0 P )@ $
-
-end
-
-
-
- dd - copia di blocchi e conversione
-
- Il comando &man.dd.1; permette di copiare dati da dispositivi
- grezzi, come dischi o nastri, specificando la dimensione dei blocchi
- di input e di output. &man.dd.1; era originariamente conosciuto
- come il programma di copia disco-a-disco. Inoltre con &man.dd.1;
- si possono convertire file in differenti formati, per esempio da EBCDIC
- a ASCII, cambiare l'ordine dei byte, ecc.
-
- Sintassi
-
- dd [if=dispositivo_input]
- [of=dispositivo_output]
- [operando=valore]
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- il dispositivo o file di input
-
-
-
-
-
- il dispositivo o file di output
-
-
-
-
-
- Se i dispositivi di input o di output non sono specificati, si
- assume come default rispettivamente lo standard input e lo standard
- output.
-
- Gli operandi possono essere:
-
-
-
-
-
-
-
-
-
- dimensione del blocco di input (blocchi da 512 byte di
- default)
-
-
-
-
-
- dimensione del blocco di output (blocchi da 512 byte di
- default)
-
-
-
-
-
- setta entrambe le dimensioni dei blocchi di input e di
- output
-
-
-
-
-
- copia n file di input
-
-
-
-
-
- salta n blocchi di input prima
- di iniziare la copia
-
-
-
-
-
- copia solamente n blocchi di
- input
-
-
-
-
-
- dove valore può
- essere:
-
-
-
-
-
- converte da EBCDIC a ASCII
-
-
-
-
-
- converte da ASCII a EBCDIC
-
-
-
-
-
- converte i caratteri maiuscoli in minuscoli
-
-
-
-
-
- converte i caratteri minuscoli in maiuscoli
-
-
-
-
-
- scambia ogni coppia di byte dei dati di input
-
-
-
-
-
- non ferma il processo su un errore in input
-
-
-
-
-
- riempie ogni blocco di input alla dimensione di
- , apporrendo byte nulli se
- necessario
-
-
-
-
-
- La dimensione dei blocchi viene specificata in byte e può
- finire in k, b o
- w per indicare rispettivamente 1024 (kilo), 512
- (blocco) o 2 (parola) byte.
-
- Esempi:
-
- Per copiare un file da un dispositivo a nastro in un altro:
-
- &prompt.user; dd if=/dev/rmt/0 of=/dev/rmt/1
-20+0 records in
-20+0 records out
-
- Per copiare file posti in un dispositivo a nastro, scritti su una
- macchina big endian con una dimensione di 20 blocchi, in file su
- una machina little endian che ha un nastro inserito nel suo dispositivo,
- si ha la necessità di scambiare le coppie di byte, in questo
- modo:
-
- &prompt.user; dd if=/dev/rmt/0 of=new_file ibs=20b conv=swab
-1072+0 records in
-21440+0 records out
-
- A completamento dell'operazione, &man.dd.1; riporta il numero dei
- blocchi totali e dei blocchi parziali per entrambi i file di
- input e di output.
-
-
-
- od - dump ottale di un file
-
- Il comando &man.od.1; effettua un dump di un file su &man.stdout.4;
- in differenti formati, incluso l'ottale, il decimale, virgola mobile,
- esadecimale e formato carattere.
-
- Sintassi
-
- od [opzioni]
- file
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- dump ottale
-
-
-
- |
-
- dump decimale (-d) o decimale esteso (-D)
-
-
-
- |
-
- dump decimale marcato (-s) o decimale marcato esteso
- (-S)
-
-
-
- |
-
- dump in virgola mobile (-f) o virgola mobile estesa
- (double) (-F)
-
-
-
- |
-
- dump esadecimale (-x) o esadecimale esteso (-X)
-
-
-
- |
-
- dump in formato carattere (byte singolo) o carattere esteso
- (carattere singolo o multi-byte, a seconda dai settaggi
- locali)
-
-
-
-
-
- modalità verbose
-
-
-
-
-
- Esempi:
-
- Per dare un'occhiata all'attuale contenuto del seguente file, un
- elenco di romanzi di Wodehouse Lord Emsworth:
-
- Something Fresh [1915] Uncle Dynamite [1948]
-Leave it to Psmith [1923] Pigs Have Wings [1952]
-Summer Lightning [1929] Cocktail Time [1958]
-Heavy Weather [1933] Service with a Smile [1961]
-Blandings Castle and Elsewhere [1935] Galahad at Blandings [1965]
-Uncle Fred in the Springtime [1939] A Pelican at Blandings [1969]
-Full Moon [1947] Sunset at Blandings [1977]
-
- si può usare:
-
- &prompt.user; od -c wodehouse
-0000000 S o m e t h i n g F r e s h
-0000020 [ 1 9 1 5 ] \t U n c l e D y n
-0000040 a m i t e [ 1 9 4 8 ] \n L e a
-0000060 v e i t t o P s m i t h
-0000100 [ 1 9 2 3 ] \t P i g s H a v e
-0000120 W i n g s [ 1 9 5 2 ] \n S u
-0000140 m m e r L i g h t n i n g [
-0000160 1 9 2 9 ] \t C o c k t a i l T
-0000200 i m e [ 1 9 5 8 ] \n H e a v y
-0000220 W e a t h e r [ 1 9 3 3 ] \t
-0000240 S e r v i c e w i t h a S
-0000260 m i l e [ 1 9 6 1 ] \n B l a n
-0000300 d i n g s C a s t l e a n d
-0000320 E l s e w h e r e [ 1 9 3 5
-0000340 ] \t G a l a h a d a t B l a
-0000360 n d i n g s [ 1 9 6 5 ] \n U n
-0000400 c l e F r e d i n t h e
-0000420 S p r i n g t i m e [ 1 9 3 9
-0000440 ] \t A P e l i c a n a t B
-0000460 l a n d i n g s [ 1 9 6 9 ] \n
-0000500 F u l l M o o n [ 1 9 4 7 ]
-0000520 \t S u n s e t a t B l a n d
-0000540 i n g s [ 1 9 7 7 ] \n
-0000554
-
-
-
-
- Connessioni remote
-
-
- Comandi per connessioni remote
-
-
-
-
-
-
- Comando/Sintassi
-
- Cosa fa
-
-
-
-
-
- finger [opzioni]
- user[@nomehost]
-
- riporta informazioni sugli utenti delle macchine locali
- e remote
-
-
-
- ftp [opzioni]
- host
-
- trasferisce file utilizzando il protocollo di trasferimento
- di file
-
-
-
- rcp [opzioni]
- nomehost
-
- copia file in remoto dalla macchina corrente in un'altra
- macchina
-
-
-
- rlogin [opzioni]
- nomehost
-
- effettua il login in remoto su un'altra macchina
-
-
-
- rsh [opzioni]
- nomehost
-
- shell remota da eseguire su un'altra macchina
-
-
-
- telnet [host
- [porta]]
-
- comunica con un altro host utilizzando il protocollo
- telnet
-
-
-
-
-
-
- TELNET e FTP - protocollo di login remoto e di trasferimento di
- file
-
- TELNET e FTP sono
- protocolli del livello applicazione di Internet. Le specifiche dei
- protocolli FTP e TELNET sono state realizzate da molte organizzazioni,
- incluso il Centro Nazionale per le Applicazioni di Supercomputer (NCSA),
- molti altri domini pubblici e organizzazioni collaborative.
-
- I programmi che implementano il protocollo
- TELNET sono usualmente chiamati
- telnet, ma non sempre. Alcune notevoli
- eccezioni sono tn3270, WinQVT e
- QWS3271, che implementano comunque il protocollo
- TELNET. TELNET viene usato per effettuare il login remoto su un
- altro computer in Internet.
-
- I programmi che implementano il protocollo FTP
- sono usualmente chiamati ftp, ma esistono
- anche delle eccezioni. Il programma chiamato Fetch,
- distribuito dalla Dartmouth College, WS_FTP, scritto
- e distribuito da John Junod e Ftptool, scritto da
- Mike Sullivan, sono implementazioni del protocollo FTP con
- un'interfaccia utente grafica. Esiste una versione migliore di FTP,
- ncftp che ha caratteristiche aggiuntive, scritto da
- Mike Gleason. Comunque, l'implementazione del protocollo FTP viene
- spesso inclusa nei programmi che implementano TELNET, come quello
- distribuito dalla NCSA. FTP viene usato per trasferire file tra
- computer su Internet.
-
- &man.rlogin.1; è un servizio di login remoto che
- è stato in passato un'esclusiva dello Unix BSD 4.3 di Berkeley.
- Essenzialmente, offre le stesse funzionalità di &man.telnet.1;,
- eccetto che &man.rlogin.1; lascia passare al computer remoto le
- informazioni dell'ambiente di login dell'utente. Le macchine possono
- essere configurate per permettere connessioni da fidati host senza
- richiedere la password dell'utente. Una versione più sicura di
- questo protocollo è la Sicura SHell
- SSH, software scritto da Tatu Ylonen e
- disponibile via: ftp://ftp.net.ohio-state.edu/pub/security/ssh.
-
- Da un prompt Unix, questi programmi possono essere invocati
- digitando il comando (nome del comando) e il nome (Internet) della
- macchina remota alla quale ci si vuole connettere. Inoltre si possono
- specificare diverse opzioni per questi comandi, come mostrato di
- seguito.
-
- Sintassi
-
- telnet [opzioni]
- [host_remoto
- [porta]]
-
- tn3270 [opzioni]
- [host_remoto
- [porta]]
-
- ftp [opzioni]
- [host_remoto]
-
- Opzioni generali
-
-
-
-
-
-
-
-
- ftp
-
- telnet
-
- Azione
-
-
-
-
-
-
-
-
-
- abilità la modalità di debugging
-
-
-
-
-
-
-
- come sopra (solamente SVR4)
-
-
-
-
-
-
-
- disabilita il prompt interattivo
-
-
-
-
-
-
-
- non tenta un auto-login su una connessione
-
-
-
-
-
-
-
- modalità verbose
-
-
-
-
-
-
-
- si connette all'host remoto con il nome utente specificato
- (solamente SVR4)
-
-
-
-
-
-
-
- percorso dati 8-bit (solamente SVR4)
-
-
-
-
-
- &man.telnet.1; e tn3270 hanno un'opzione per
- specificare il numero di porta a cui connettersi sull'host remoto. Per
- entrambi i comandi, il numero di porta di default è 23,
- la porta telnet. Altre porte vengono usate per il debugging dei servizi
- di rete e per ragioni speciali.
-
- Esempi:
-
- &prompt.user; telnet oscar.us.ohio-state.edu
-
- &prompt.user; tn3270 ohstmvsa.acs.ohio-state.edu
-
- &prompt.user; ftp magnus.acs.ohio-state.edu
-
- La macchina remota richiederà di identificarsi tramite login
- e password. Spesso, le macchine organizzate come archivi di
- software o di informazioni, permettono connessioni ftp anonime. Ci si
- collega tramite &man.ftp.1; alla macchina remota e si effettua il
- login come anonymous (il login
- ftp è equivalente su molte macchine)
- cioè, quando viene richiesto il login si digita
- anonymous (di solito per la password si inserisce
- il proprio indirizzo email o qualsiasi altra cosa).
-
- Una volta che si è correttamente collegati a un computer
- remoto tramite &man.telnet.1; e &man.rlogin.1; (e assumendo che sia
- stata assegnata l'emulazione del terminale) si potrà utilizzare
- la macchina come al solito.
-
- Una volta che si è correttamente collegati ad un computer
- remoto tramite &man.ftp.1;, si può trasferire un file in quel
- computer con il comando put o prenderlo da quel
- computer con il comando get. La sintassi è la
- seguente:
-
- put nome-file-locale
- nome-file-remoto
-
- get nome-file-locale
- nome-file-remoto
-
- Sono disponibili altri comandi per &man.ftp.1;, a seconda della
- specifica implementazione dell'FTP locale e remoto. Il comando
- help visualizza un elenco di comandi disponibili.
- Il comando help può visualizzare lo scopo di
- un comando specifico. Esempi di validi comandi sono mostrati di
- seguito:
-
-
-
-
-
-
-
- help
-
- mostra un elenco di comandi disponibili
-
-
-
- help mget
-
- mostra lo scopo del comando mget
- (prendere file multipli)
-
-
-
- pwd
-
- mostra la corrente directory di lavoro
-
-
-
- ls o dir
-
- elenca il contenuto delle directory
-
-
-
- cd
-
- cambia directory
-
-
-
- lcd
-
- cambia la directory locale
-
-
-
- open
-
- specifica la macchina alla quale si vuole
- connettersi
-
-
-
- user
-
- specifica il proprio id di login (nel caso che non venga
- richiesto direttamente)
-
-
-
- quit
-
- esce dal programma FTP
-
-
-
-
-
-
-
- finger - restituisce informazioni riguardo gli utenti
-
- Il comando &man.finger.1; mostra il file .plan
- di un utente specifico o riporta chi è attualmente
- loggato su una specifica macchina. L'utente deve
- permettere i permessi di lettura generale sul file
- .plan.
-
- Sintassi
-
- finger [opzioni]
- [user[@nomehost]]
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- forza il formato lungo di output
-
-
-
-
-
- ottiene solo lo username, non il nome e cognome
- reali
-
-
-
-
-
- forza il formato corto di output
-
-
-
-
-
- Esempi:
-
- brigadier:condron [77]> finger workshop@nyssa
-Questo è un esempio di file .plan per l'id workshop di nyssa.
-Questo id è stato usato in questa settimana da Frank Fiamingo, Linda
-DeBula, e Linda Condron, mentre insegnavano ad usare una nuova versione
-di Unix workshop sviluppata per l'UTS.
-
-Sperando di aver insegnato qualcosa.
-Frank, Linda, & Linda
-
- brigadier: condron [77]> finger
-Login Name TTY Idle When Where
-
-condron Linda S Condron p0 Sun 18:13 lcondron-mac.acs
-frank Frank G. Fiamingo p1 Mon 16:19 nyssa
-
-
-
- Comandi remoti
-
- Alcune macchine Unix possono essere collegate tra loro per formare
- una rete locale (LAN). In questo caso succede spesso che un utente di
- una macchina possieda validi accessi di login su molte altre macchine
- della rete locale. Per questo tipo di utente sono disponibili comandi
- Unix che forniscono una certa praticità nel realizzare certe
- operazioni comuni. Poichè questi comandi si focalizzano su
- comunicazioni con host remoti nella rete locale (o in Internet), i nomi
- dei comandi iniziano con la lettera r:
- &man.rlogin.1;, &man.rsh.1; e &man.rcp.1;. La possibilità di
- accesso remoto tramite questi comandi è sostenuta (opzionalmente)
- attraverso il file ~/.rhosts di ogni singolo utente
- e dal file generale di sistema /etc/hosts.equiv.
- Per ragioni di sicurezza questi possono essere limitati ad alcuni
- host.
-
- Il comando &man.rlogin.1; permette un accesso di login remoto
- su un altro host della rete locale. &man.rlogin.1; passa
- informazioni all'host remoto circa l'ambiente locale, incluso il valore
- della variabile d'ambiente TERM.
-
- Il comando &man.rsh.1; fornisce la possibilità di invocare
- una shell Unix su un host remoto della rete locale con lo scopo di
- eseguirci comandi di shell. Questa capacità è simile alla
- funzione shell escape disponibile generalmente all'interno di un
- software di sistema Unix come editor ed email.
-
- Il comando &man.rcp.1; fornisce la possibilità di
- copiare file dall'host locale ad un host remoto della rete
- locale.
-
- Sintassi
-
- rlogin [-l username]
- host_remoto
-
- rsh [-l username]
- host_remoto
- [comando]
-
- rcp
- [[user1]@host1:]file_sorgente
- [[user2]@host2:]file_destinazione
-
- dove le parti tra parentesi ([]) sono opzionali.
- &man.rcp.1; non richiede password, quindi si deve avere il
- permesso per eseguire comandi remoti su una specifica macchina.
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- si connette all' host remoto con il nome utente specificato
- (&man.rlogin.1; & &man.rsh.1;)
-
-
-
-
-
- Il file .rhosts, se esiste nella directory home
- dell'utente sull'host remoto, permette l'accesso tramite &man.rlogin.1;,
- &man.rsh.1; e &man.rcp.1; agli host remoti senza richiedere la password
- per tale account. Il file .rhosts contiene un
- record per ogni coppia host remoto-username con il quale il proprietario
- del file .rhosts desidera connettersi. Ogni record
- nel file .rhosts è della forma:
-
- host_remoto utente_remoto
-
- dove l'elenco
- utente_remoto è
- opzionale. Per esempio, se Heather Jones vuole essere in grado di
- connettersi alla macchina1 (dove il suo
- username è heather) dalla
- macchina2 (dove il suo username
- è jones) o dalla
- macchina3 (dove il suo username
- è heather, lo stesso della
- macchina1), lei potrebbe creare un file
- .rhosts nella sua home directory sulla
- macchina1. Il contenuto di questo file
- potrebbe essere:
-
- macchina2 jones
-macchina3
-
--oppure-
-
-macchina2 jones
-macchina3 heather
-
- Su alcuni sistemi il file /etc/hosts.equiv
- presta lo stesso scopo per tutti gli utenti, al di fuori del super-user.
- Così un file /etc/hosts.equiv
- contenente:
-
- macchina_remota
-
- permette agli utenti provenienti da macchina_remota
- che hanno gli stessi username della macchina corrente, di
- connettersi a quest'ultima senza la necessita' di inserire la
- password.
-
- Un file /etc/hosts.equiv che contiene:
-
- macchina_remota utente_remoto
-
- permette a
- utente_remoto su macchina_remota
- di connettersi alla macchina corrente allo stesso modo dell'utente
- locale, tranne che per il super-user.
-
- I file /etc/hosts.equiv e
- ~/.rhosts vanno usati con cautela.
-
- Le versioni dei programmi &man.rcp.1;, &man.rsh.1; e &man.rlogin.1;
- basati sulla Secure SHell (SSH) sono
- liberamente disponibili e forniscono molta più sicurezza.
-
-
-
Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/commands/chapter.xml
___________________________________________________________________
Deleted: svn:keywords
## -1 +0,0 ##
-FreeBSD=%H
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/sgml
\ No newline at end of property
Index: head/it_IT.ISO8859-15/books/unix-introduction/editors/chapter.xml
===================================================================
--- head/it_IT.ISO8859-15/books/unix-introduction/editors/chapter.xml (revision 52098)
+++ head/it_IT.ISO8859-15/books/unix-introduction/editors/chapter.xml (nonexistent)
@@ -1,1277 +0,0 @@
-
-
-
- Editor
-
- Esistono numerose utility per la manipolazione del testo in Unix, come
- è stato notato attraverso questo documento (esempio
- &man.ed.1;, &man.ex.1;, &man.sed.1;, &man.awk.1;, la famiglia
- grep e la famiglia
- roff). Tra gli editor, l'editor visuale (o a
- schermo pieno) standard su Unix è vi.
- Questa applicazione comprende un super-set, per così dire, di
- caratteristiche di &man.ed.1; e di &man.ex.1; (gli editor a linea di
- Unix).
-
- &man.vi.1; è un editor modale. Questo significa che ha
- modalità specifiche che permettono l'inserimento del testo, la
- cancellazione del testo e l'inserimento dei comandi. Si può lasciare
- la modalità di inserimento premendo il tasto escape.
- In questo modo ci si porta nella modalità comando. L'editor
- di linea &man.ex.1; è incorporato in &man.vi.1;. Si può
- passare dalla modalità a schermo pieno a quella a linea di comando (e
- viceversa) quando si desidera. In modalità vi
- premere Q per andare in modalità
- ex. In modaltà ex, al
- prompt : digitare vi per ritornare in modalità
- vi. Inoltre è disponibile una modalità
- di &man.vi.1; in sola lettura, che può essere invocata con
- &man.view.1;.
-
- Un altro editor comune nei sistemi Unix, specialmente nei college e
- negli ambienti universitari, è emacs (che
- sta per editing macros). Mentre &man.vi.1; è in
- generale compreso nel sistema operativo Unix, &man.emacs.1; usualmente non
- lo è. Emacs viene distribuito dalla Free
- Software Foundation ed è discutibilmente il più potente editor
- disponibile per Unix. Emacs è un software
- di sistema molto grande ed è un grossa risorsa di sistema per un
- utente di computer.
-
- La Free Software Foundation e il progetto GNU (del quale
- emacs fa parte) sono stati fondati da Richard
- Stallman e dai suoi soci, i quali credono (come specificato nel manifesto
- GNU) che condividere il software sia l'atto fondamentale di amicizia
- tra programmatori. La loro General Public License garantisce il
- diritto d'uso, di modifica e di distribuzione di
- emacs (incluso il suo codice sorgente) ed
- è stata progettata specificatamente per impedire a qualcuno di
- prendersi un profitto finanziario da emacs o da
- altri software conseguiti attraverso la Free Software Foundation. Molti dei
- loro software, incluso emacs, sono disponibili
- via ftp://ftp.gnu.org/pub/gnu/ e
- http://www.gnu.org/.
-
- Sia &man.vi.1; che &man.emacs.1; permettono di creare file di
- inizializzazione che possono contenere macro per controllare i settaggi e le
- funzioni degli editor.
-
-
- Configurare la propria sessione vi
-
- Per configurare l'ambiente di &man.vi.1; certe opzioni possono essere
- settate con il comando di linea dell'editor :set
- durante una sessione di editing. In alternativa, le opzioni usate di
- frequente possono essere automaticamente settate quando viene invocato
- &man.vi.1;, attraverso il file .exrc. Inoltre,
- questo file può contenere macro per mappare battute di tasti in
- funzioni usando la funzione map. All'interno di
- &man.vi.1; queste macro possono essere definite con il comando
- :map. I caratteri di controllo possono essere inseriti
- digitando prima
- Ctrl
- V
- , quindi il carattere di controllo desiderato. Alcune opzioni
- disponibili in &man.vi.1; sono mostrate qui sotto. Alcuni sistemi Unix
- non accettano certe di queste opzioni.
-
-
-
-
-
-
-
- :set all
-
- visualizza tutti i settaggi delle opzioni
-
-
-
- :set ignorecase
-
- ignora il maiuscolo e minuscolo di un carattere in una
- ricerca
-
-
-
- :set list
-
- visualizza tab e return
-
-
-
- :set nolist
-
- mette off l'opzione
-
-
-
- :set number
-
- visualizza i numeri di linea
-
-
-
- :set nonumber
-
- disattiva i numeri di linea
-
-
-
- :set showmode
-
- visualizza l'indicazione che la modalità di
- inserimento è on
-
-
-
- :set noshowmode
-
- mette off l'opzione
-
-
-
- :set
- wrapmargin=n
-
- mette on la modalità word-wrap a
- n spazi dal margine destro
-
-
-
- :set wrapmargin=0
-
- mette off l'opzione
-
-
-
- :set warn
-
- visualizza l'avvertimento Ultima modifica non
- registrata
-
-
-
- :set nowarn
-
- mette off l'avvertimento di scrittura
-
-
-
-
-
-
- Segue un esempio di file .exrc:
-
- set wrapmargin=10
-set number
-set list
-set warn
-set ignorecase
-map K {!}fmt -80 # riformatta questo paragrafo, {!}, usando fmt a
- # 80 caratteri per linea
-map ^Z :!spell # invoca spell, :!, per verificare lo splelling di
- # una parola (ritorna a vi con Ctrl+D)
-
-
-
- Configurare la propria sessione emacs
-
- Configurare l'ambiente di &man.emacs.1; equivale a creare chiamate a
- funzioni LISP. &man.emacs.1; è infinitamente personalizzabile
- tramite variabili emacs, funzioni built-in e
- attraverso la programmazione Emacs LISP. I settaggi possono essere
- specificati dal minibuffer (o da linea di comando) durante una sessione
- emacs. Alternativamente, i settaggi usati di
- frequente possono essere attivati automaticamente quando viene invocato
- &man.emacs.1;, usando il file .emacs. Benchè
- una discussione del Emacs LISP vada oltre lo scopo di questo documento,
- seguono alcuni esempi di configurazioni per &man.emacs.1;.
-
- Per settare o verificare variabili emacs o per
- usare le sue funzioni built-in, si usa il tasto escape
- (Meta è come &man.emacs.1; si riferisce a
- questo) seguito dalla lettera x, quindi la variabile o
- la funzione e i suoi argomenti.
-
-
-
-
-
-
-
- M, x
- what-line
-
- quale linea è sul cursore?
-
-
-
- M, x
- auto-fill-mode
-
- mette on word-wrap
-
-
-
- M, x
- auto-fill-mode
-
- mette off word-wrap
-
-
-
- M, x
- set-variable <return>
- fill-column <return> 45
-
- setta la lunghezza di linea a 45 caratteri
-
-
-
- M, x
- set-variable <return>
- auto-save-interval <return>
- 300
-
- salva automaticamente il file ogni 300 battute di
- tasti
-
-
-
- M, x
- goto-line <return>
- 16
-
- muove il cursore alla linea 16
-
-
-
- M, x
- help-for-help
-
- invoca l'help di emacs quando
- Ctrl
- h
- è stato mappato al tasto
- backspace
-
-
-
-
-
- Segue un esempio del file .emacs:
-
- (message "Loading ~/.emacs...")
-; I commenti iniziano con un punto e virgola e continuano fino alla fine della linea.
-(setq text-mode-hook 'turn-on-auto-fill) ;mette on word-wrap
-(setq fill-column 45) ;lunghezza di linea pari a 45 caratteri
-(setq auto-save-interval 300) ;salva il file ogni 300 battute di tasti
-; Costruisce (o mappa) la funzione di rubout (Ctrl+h) nel tasto backspace
-(global-set-key "\C-h" 'backward-delete-char-untabify)
-; Costruisce la funzione help emacs per la sequenza di battitura "Ctrl+x ?"
-(global-set-key "\C-x?" 'help-for-help)
-; Per saltare alla linea 16, digitare M, #<return>16
-(global-set-key "\M-#" 'goto-line)
-; Per sapere su che linea si è, digitare M, n
-(global-set-key "\M-n" 'what-line)
-(message "~/.emacs loaded.")
-(message "")
-
-
-
- Veloce guida per vi
-
- Tutti i comandi in &man.vi.1; sono preceduti dalla pressione del tasto
- escape. Ogni volta che si deve intraprendere un nuovo
- comando si deve utilizzare il tasto di escape.
- Diversamente da dove indicato, &man.vi.1; è case sensitive
- (sensibile alla differenza minuscolo e maiuscolo).
-
- Comandi movimento cursore:
-
- (n) indica un numero ed è
- opzionale
-
-
-
-
-
-
-
- (n)h
-
- (n) spazi a sinistra
-
-
-
- (n)j
-
- (n) spazi giù
-
-
-
- (n)k
-
- (n) spazi su
-
-
-
- (n)l
-
- (n) spazi a destra
-
-
-
-
-
- (Generalmente funzionano anche i tasti freccia)
-
-
-
-
-
-
-
-
- Ctrl
- F
-
-
- avanti di una schermata
-
-
-
-
- Ctrl
- B
-
-
- indietro di una schermata
-
-
-
-
- Ctrl
- D
-
-
- giù di mezza schermata
-
-
-
-
- Ctrl
- U
-
-
- su di mezza schermata
-
-
-
-
-
- (Ctrl indica il tasto control; il
- case sensitive non è importante)
-
-
-
-
-
-
-
- H
-
- all'inizio della linea superiore della schermata
-
-
-
- M
-
- all'inizio della linea mediana della schermata
-
-
-
- L
-
- all'inizio dell'ultima linea della schermata
-
-
-
- G
-
- all'inizio dell'ultima linea del file
-
-
-
- (n)G
-
- all'inizio della linea (n)
-
-
-
- 0
-
- (zero) all'inizio della linea
-
-
-
- $
-
- alla fine della linea
-
-
-
- (n)w
-
- avanti (n) parole
-
-
-
- (n)b
-
- indietro (n) parole
-
-
-
- e
-
- fine della parola
-
-
-
-
-
- Inserimento testo:
-
-
-
-
-
-
-
- i
-
- inserimento testo prima del cursore
-
-
-
- a
-
- aggiunta testo dopo il cursore (non sovrascrive altro
- testo)
-
-
-
- I
-
- inserimento testo all'inizio della linea
-
-
-
- A
-
- aggiunta testo alla fine della linea
-
-
-
- r
-
- sostituisce il carattere posto sotto il cursore con il
- prossimo carattere digitato
-
-
-
- R
-
- sovrascrive i caratteri fino alla fine della linea (o fino a
- quando il tasto escape viene digitato per
- cambiare comando)
-
-
-
- o
-
- (alpha o) inserisce una nuova linea dopo la linea corrente
- per inserire del testo
-
-
-
- O
-
- (alpha O) inserisce una nuova linea prima della linea
- corrente per inserire del testo
-
-
-
-
-
- Cancellazione testo:
-
-
-
-
-
-
-
- dd
-
- cancella la linea corrente
-
-
-
- (n)dd
-
- cancella (n) linee
-
-
-
- (n)dw
-
- cancella (n) parole
-
-
-
- D
-
- cancella dal cursore fino alla fine della linea
-
-
-
- x
-
- cancella il carattere corrente
-
-
-
- (n)x
-
- cancella (n) caratteri
-
-
-
- X
-
- cancella il carattere precedente
-
-
-
-
-
- Comandi di modifica:
-
-
-
-
-
-
-
- (n)cc
-
- modifica (n) caratteri sulla linea
- fino alla fine della linea (o fino a quando viene digitato il
- tasto escape)
-
-
-
- cw
-
- modifica i caratteri di una parola fino alla fine della
- parola (o fino a quando viene digitato il tasto
- escape)
-
-
-
- (n)cw
-
- modifica i caratteri delle prossime
- (n) parole
-
-
-
- c$
-
- modifica il testo alla fine della linea
-
-
-
- ct(x)
-
- modifica il testo alla lettera
- (x)
-
-
-
- C
-
- modifica il testo rimanente sulla linea corrente (fino a
- quando viene digitato il tasto escape)
-
-
-
- ~
-
- modifica il minuscolo/maiuscolo del carattere
- corrente
-
-
-
- J
-
- unisce la linea corrente a quella successiva
-
-
-
- u
-
- annulla l'ultimo comando realizzato sulla linea
- corrente
-
-
-
- .
-
- ripete l'ultima modifica
-
-
-
- s
-
- sostituisce il carattere corrente con il testo
- digitato
-
-
-
- S
-
- sostituisce la linea corrente con il testo digitato
-
-
-
- :s
-
- sostituisce vecchie parole con nuove parole
- :<linee considerate>
- s/vecchio/nuovo/g
-
-
-
- &
-
- ripete l'ultimo comando di sostituzione
- (:s)
-
-
-
- (n)yy
-
- strappa (n) linee
- dal buffer
-
-
-
- y(n)w
-
- strappa (n) parole
- dal buffer
-
-
-
- p
-
- inserisce il testo eliminato o strappato dopo
- il cursore
-
-
-
- P
-
- inserisce il testo eliminato o strappato prima
- del cursore
-
-
-
-
-
- Manipolazione file:
-
-
-
-
-
-
-
- :w
- (file)
-
- scrive i cambiamenti nel file specificato (file corrente di
- default)
-
-
-
- :wq
-
- scrive i cambiamenti nel file corrente e conclude la sessione
- di editing
-
-
-
- :w!
- (file)
-
- sovrascrive il file (file corrente di default)
-
-
-
- :q
-
- esce dalla sessione di editing se non sono stati creati
- cambiamenti
-
-
-
- :q!
-
- esce dalla sessione di editing e scarta eventuali
- cambiamenti non salvati
-
-
-
- :n
-
- edita il prossimo file nella lista dell'argomento
-
-
-
- :f
- (nome)
-
- modifica il nome del file corrente in quello
- specificato
-
-
-
- :r
- (file)
-
- legge il contenuto del file specificato all'interno del
- corrente editing e alla corrente posizione del cursore
- (inserisce un file)
-
-
-
- :!(comando)
-
- escape di shell
-
-
-
- :r!(comando)
-
- inserisce il risultato del comando di shell specificato nella
- posizione corrente
-
-
-
- ZZ
-
- scrive i cambiamenti nel file corrente ed esce
-
-
-
-
-
-
-
- Veloce guida per emacs
-
- I comandi di &man.emacs.1; sono realizzati sia tramite la
- simultanea pressione del tasto control (indicato da
-
- Ctrl
-
- ), sia attraverso il primo colpo del tasto di
- escape (indicato da M,).
-
- Comandi essenziali
-
-
-
-
-
-
-
-
- Ctrl
- h
-
-
- help
-
-
-
-
- Ctrl
- x
- , u
-
- undo (annulla operazione precedente)
-
-
-
-
- Ctrl
- x
- ,
- Ctrl
- g
-
-
- esce dalla operazione o comando corrente
-
-
-
-
- Ctrl
- x
- ,
- Ctrl
- s
-
-
- salva il file
-
-
-
-
- Ctrl
- x
- ,
- Ctrl
- c
-
-
- chiude &man.emacs.1;
-
-
-
-
-
- Movimenti cursore
-
-
-
-
-
-
-
-
- Ctrl
- f
-
-
- avanti di un carattere
-
-
-
-
- Ctrl
- b
-
-
- indietro di un carattere
-
-
-
-
- Ctrl
- p
-
-
- linea precedente
-
-
-
-
- Ctrl
- n
-
-
- linea successiva
-
-
-
-
- Ctrl
- a
-
-
- inizio linea
-
-
-
-
- Ctrl
- e
-
-
- fine linea
-
-
-
-
- Ctrl
- l
-
-
- al centro della corrente linea sullo schermo
-
-
-
-
- Ctrl
- v
-
-
- sfoglia avanti
-
-
-
- M,
- v
-
- sfoglia indietro
-
-
-
- M,
- f
-
- avanti di una parola
-
-
-
- M,
- b
-
- indietro di una parola
-
-
-
- M,
- a
-
- inizio periodo
-
-
-
- M,
- e
-
- fine periodo
-
-
-
- M,
- {
-
- inizio paragrafo
-
-
-
- M,
- }
-
- fine paragrafo
-
-
-
- M,
- <
-
- inizio buffer
-
-
-
- M,
- >
-
- fine buffer
-
-
-
-
-
- Altre funzioni importanti
-
-
-
-
-
-
-
- M,
- (n)
-
- ripete il prossimo comando (n)
- volte
-
-
-
-
- Ctrl
- d
-
-
- cancella un carattere
-
-
-
- M,
- d
-
- cancella una parola
-
-
-
-
- Ctrl
- k
-
-
- elimina linea
-
-
-
- M,
- k
-
- elimina periodo
-
-
-
-
- Ctrl
- s
-
-
- ricerca in avanti
-
-
-
-
- Ctrl
- r
-
-
- ricerca al rovescio
-
-
-
- M,
- %
-
- sostituzione di query
-
-
-
- M,
- c
-
- capitalizza parola
-
-
-
- M,
- u
-
- parola in lettere maiuscole
-
-
-
- M,
- l
-
- parola in lettere minuscole
-
-
-
-
- Ctrl
- t
-
-
- commuta caratteri
-
-
-
- M,
- t
-
- commuta parole
-
-
-
-
- Ctrl
- @
-
-
- marca l'inizio di una regione
-
-
-
-
- Ctrl
- w
-
-
- taglia/cancella tutto dalla marcatura al punto
-
-
-
-
- Ctrl
- y
-
-
- incolla il testo eliminato o strappato
- all'interno della locazione corrente
-
-
-
- M,
- q
-
- riformatta il paragrafo
-
-
-
- M,
- g
-
- riformatta ogni paragrafo nella regione
-
-
-
-
-
-
-
-
-
-
-
- M, x
- auto-fill-mode
-
- mette on word wrap
-
-
-
- M, x set-variable
- <return> fill-column
- <return> 45
-
- setta la lunghezza di linea a 45 caratteri
-
-
-
- M, x goto-line
- <return> 16
-
- muove il cursore alla linea 16
-
-
-
-
-
-
-
-
-
-
-
- M,
- w
-
- copia la regione marcata
-
-
-
-
- Ctrl
- x
- ,
- Ctrl
- f
-
-
- cerca un file e lo legge
-
-
-
-
- Ctrl
- x
- ,
- Ctrl
- v
-
-
- cerca e legge un file alternativo
-
-
-
-
- Ctrl
- x
- , i
-
- inserisce un file alla posizione corrente
-
-
-
-
- Ctrl
- x
- ,
- Ctrl
- s
-
-
- salva il file
-
-
-
-
- Ctrl
- x
- ,
- Ctrl
- w
-
-
- scrive il buffer in un file differente
-
-
-
-
- Ctrl
- x
- ,
- Ctrl
- c
-
-
- esce da &man.emacs.1; e chiede di salvare
-
-
-
-
-
-
Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/editors/chapter.xml
___________________________________________________________________
Deleted: svn:keywords
## -1 +0,0 ##
-FreeBSD=%H
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/sgml
\ No newline at end of property
Index: head/it_IT.ISO8859-15/books/unix-introduction/structure/chapter.xml
===================================================================
--- head/it_IT.ISO8859-15/books/unix-introduction/structure/chapter.xml (revision 52098)
+++ head/it_IT.ISO8859-15/books/unix-introduction/structure/chapter.xml (nonexistent)
@@ -1,165 +0,0 @@
-
-
-
- Struttura di Unix
-
-
- Il sistema operativo
-
- Unix è un sistema operativo a strati. Lo strato più
- interno è l'hardware il quale fornisce servizi al OS. Il sistema
- operativo (OS), riferito in Unix come al kernel,
- interagisce direttamente con l'hardware e fornisce i servizi ai programmi
- utente. I programmi utente non necessitano di conoscere informazioni
- sull'hardware. Devono solo sapere come interagire con il kernel ed
- è quest'ultimo a fornire i servizi richiesti. Uno dei più
- grandi fattori che ha contribuito alla richiesta di Unix da parte dei
- programmatori è stato che molti programmi utente corretti
- sono indipendenti dall'hardware sottostante, e ciò li rende
- facilmente trasportabili su nuovi sistemi.
-
- I programmi utente interagiscono con il kernel attraverso un set di
- system call (chiamate di sistema) standard. Queste
- system call chiedono dei servizi, servizi che saranno forniti dal kernel.
- Così i servizi possono includere un accesso a un file: aprire,
- chiudere, leggere, scrivere un file, creare un link o eseguire un file;
- creare o aggiornare degli account (informazioni relative ad un utente come
- nome, password, ecc.); cambiare il proprietario di un file o di una
- directory; spostarsi in una nuova directory; creare, sospendere o
- terminare un processo; abilitare l'accesso a un dispositivo hardware e
- impostare dei limiti sulle risorse di sistema.
-
- Unix è un sistema operativo multi-user
- (multi-utente) e multi-tasking (multi-processo). Si
- possono avere molti utenti loggati simultaneamente nel
- sistema (multi-user), ognuno dei quali esegue alcuni programmi
- (multi-tasking). È compito del kernel mantenere ogni processo e
- ogni utente separato e regolare l'accesso all'hardware di sistema, inclusa
- la cpu, la memoria, il disco e altri dispositivi di I/O.
-
-
-FIGURA 2.1 Struttura di un sistema Unix
-
- _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
-| |
-| Programmi |
-| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
-| | | |
-| | Kernel | |
-| | _ _ _ _ _ _ _ _ _ _ _ _ _ _ | |
-| | | Hardware | | |
-| | |_ _ _ _ _ _ _ _ _ _ _ _ _ _| | |
-| | | |
-| | System Call | |
-| |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _| |
-| |
-|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|
-
-
-
- Il file system
-
- L'aspetto del file system di Unix è paragonabile alla struttura
- rovesciata di un albero. Si parte dall'alto con la directory
- root, denotata con /, per poi
- scendere attraverso sotto-directory sottostanti la root.
-
-
-FIGURA 2.2 Struttura del file system di Unix
-
-
- /(root) 1 livello
- | | | | |
- bin dev etc tmp usr 2 livello
- | | | | | | | | |
- sh date csh ttya cua0 passwd group bin lib 3 livello
- |
- gcc 4 livello
-
- .... n livello
-
- Ogni nodo è o un file o una
- directory di file, dove quest'ultima può
- contenere altri file e directory. Un file o una directory vengono
- specificati attraverso il loro path name (percorso
- del nome del file o della directory), il quale può essere un path
- name assoluto oppure un path name relativo ad un'altra locazione. Un path
- name assoluto inizia con la directory root, /,
- seguono poi i rami del file system, ognuno separato da /,
- fino a raggiungere il file desiderato, come per esempio:
-
- /home/condron/source/xntp
-
- Un path name relativo specifica un percorso relativo ad un altro path
- name, che usualmente è la directory di lavoro corrente in cui ci si
- trova. Sono ora introdotte due directory speciali:
-
- . la directory corrente
-
- .. la directory padre della directory
- corrente
-
- Quindi se si è in /home/frank e si
- desidera specificare un path nel modo relativo si può usare:
-
- ../condron/source/xntp
-
- Questo indica che si deve prima salire di un livello di directory,
- quindi passare attraverso la directory condron,
- seguire la directory source e quindi
- xntp.
-
-
-
- Directory, file e inode Unix
-
- Ogni directory e ogni file
- sono inclusi nella loro directory padre. Nel caso della directory root,
- la directory padre è se stessa. Una directory è un file
- contenente una tabella che elenca i file contenuti nella directory stessa,
- dove ai nomi dei file in lista vengono assegnati i corrispondenti numeri
- di inode. Un inode è un file speciale,
- progettato per essere letto dal kernel al fine di conoscere alcune
- informazioni su ciascun file. Un inode specifica i permessi del file, il
- proprietario del file, la data di creazione, quella dell'ultimo accesso e
- quella dell'ultima modifica del file e la posizione fisica dei blocchi di
- dati sul disco che contengono il file.
-
- Il sistema non richiede qualche struttura particolare per i dati
- contenuti nel file. Il file può essere ASCII o binario o una
- combinazione di questi e può rappresentare dati testuali, uno
- script di shell, un codice oggetto compilato per un programma, una tabella
- di directory, robaccia o qualunque cosa si voglia.
-
- Non c'è un'intestazione, una traccia, un'etichetta o il
- carattere EOF come parte del file.
-
-
-
- Programmi Unix
-
- Un programma o un comando
- interagisce con il kernel per fornire l'ambiente e realizzare le
- funzioni richieste dall'utente. Un programma può essere: un file
- di shell eseguibile, conosciuto come uno script di shell, un comando
- interno (built-in) alla shell o un file sorgente compilato in codice
- oggetto.
-
- La shell è un interprete a linea di
- comando. L'utente interagisce con il kernel attraverso la shell. Si
- può scrivere uno script ASCII (testo) in modo tale da essere
- interpretato da una shell.
-
- I programmi di sistema sono generalmente in forma binaria, compilati
- partendo da un codice sorgente in C. Questi si trovano in posti come
- /bin, /usr/bin,
- /usr/local/bin, /usr/ucb, ecc.
- Questi comandi forniscono quelle funzionalità che normalmente si
- pensano essere di Unix. Alcuni di questi sono &man.sh.1;, &man.csh.1;,
- &man.date.1;, &man.who.1;, &man.more.1;, &man.ls.1; e molti altri.
-
-
Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/structure/chapter.xml
___________________________________________________________________
Deleted: svn:keywords
## -1 +0,0 ##
-FreeBSD=%H
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/sgml
\ No newline at end of property
Index: head/it_IT.ISO8859-15/books/unix-introduction/text-processing/chapter.xml
===================================================================
--- head/it_IT.ISO8859-15/books/unix-introduction/text-processing/chapter.xml (revision 52098)
+++ head/it_IT.ISO8859-15/books/unix-introduction/text-processing/chapter.xml (nonexistent)
@@ -1,1114 +0,0 @@
-
-
-
- Manipolazione del testo
-
-
- Sintassi delle espressioni regolari
-
- Alcuni programmi di manipolazione del testo come
- &man.grep.1;, &man.egrep.1;, &man.sed.1;, &man.awk.1; e &man.vi.1;
- consentono di ricercare uno schema (pattern) piuttosto che una stringa
- fissa. Questi schemi testuali sono conosciuti come espressioni
- regolari. Si può formare un'espressione regolare
- combinando caratteri normali con caratteri speciali, anche conosciuti
- come meta-caratteri, secondo le successive regole.
- Con queste espressioni regolari si può confrontare uno
- schema su dati testuali. Le espressioni regolari si
- presentano in tre diverse forme:
-
-
-
-
-
-
-
- Ancoraggi
-
- legano lo schema a una posizione sulla linea
-
-
-
- Serie di caratteri
-
- indicano un carattere in una singola posizione
-
-
-
- Modificatori
-
- specificano quante volte ripetere l'espressione
- precedente
-
-
-
-
-
- Segue la sintassi delle espressioni regolari. Alcuni programmi
- accettano tutte queste sintassi, altri ne accettano solo alcune:
-
-
-
-
-
-
-
- .
-
- indica un singolo carattere eccetto
- quello di newline
-
-
-
- *
-
- indica zero o più istanze del
- singolo carattere (o meta-carattere) che lo precede
-
-
-
- [abc]
-
- indica un carattere tra quelli racchiusi
-
-
-
- [a-d]
-
- indica un carattere tra quelli compresi nel range
-
-
-
- [^exp]
-
- indica un carattere tra quelli non
- inclusi nell'espressione
-
-
-
- ^abc
-
- l'espressione regolare deve iniziare all'inizio
- della linea (Ancoraggio)
-
-
-
- abc$
-
- l'espressione regolare deve finire alla fine della
- linea (Ancoraggio)
-
-
-
- \
-
- tratta il carattere successivo letteralmente. Viene
- normalmente usato per mantenere inalterato il significato di un
- carattere speciale come . e *.
-
-
-
- \{n,m\}
-
- confronta l'espressione regolare precedente un numero minimo
- n di volte e un numero massimo
- m di volte
- (n e m
- possono assumere valori tra 0 e 255). I simboli \{ e \}
- dovrebbero essere intesi come singoli operatori. In questo caso
- il simbolo \ che precede le parentesi non è il carattere di
- escape, ma assume un nuovo significato.
-
-
-
- \<abc\>
-
- confronta l'espressione regolare racchiusa trattandola come
- una singola parola. I limiti della parola sono definiti iniziando
- con un newline o qualche altra cosa, eccetto una lettera, una
- cifra o un underscore ( _ ), e finendo con la stessa cosa o con un
- carattere di fine linea. Ancora, i simboli \< e \>
- dovrebbero essere intesi come singoli operatori.
-
-
-
- \(abc\)
-
- salva lo schema racchiuso in un buffer. Possono essere
- salvati per ogni linea fino a nove schemi. È possibile
- riferirsi a questi schemi tramite la combinazione di caratteri
- \n. Ancora una volta i simboli \( e \)
- dovrebbero essere intesi come singoli operatori.
-
-
-
- \n
-
- dove n varia tra 1 e 9. Confronta
- l'n-sima espressione precedentemente
- salvata per la linea corrente. Le espressioni sono numerate
- partendo da sinistra. Il simbolo \n
- dovrebbe essere inteso come un singolo operatore.
-
-
-
- &
-
- mostra lo schema di ricerca precedente (usato al posto della
- stringa)
-
-
-
-
-
- Ci sono alcuni meta-caratteri usati solamente da &man.awk.1; e
- &man.egrep.1;. Questi sono:
-
-
-
-
-
-
-
- +
-
- confronta una o più delle espressioni precedenti (a
- questo simbolo)
-
-
-
- ?
-
- confronta zero o alcune delle espressioni precedenti (a
- questo simbolo)
-
-
-
- |
-
- separatore. Confronta sia l'espressione precedente (a questo
- simbolo) sia quella seguente
-
-
-
- ( )
-
- raggruppa le espressioni regolari all'interno delle parentesi
- e applica una serie di confronti
-
-
-
-
-
- Alcuni esempi di espressioni regolari comuni
- sono:
-
-
-
-
-
-
-
- espressione regolare
-
- indica
-
-
-
-
-
- cat
-
- la stringa cat
-
-
-
- .at
-
- alcune occorrenze di un carattere precedente ad
- at, come cat, rat, mat, bat, fat, hat
-
-
-
- xy*z
-
- alcune occorrenze di un x, seguite da
- zero o più y e seguite da una
- z.
-
-
-
- ^cat
-
- cat all'inizio della linea
-
-
-
- cat$
-
- cat alla fine della linea
-
-
-
- \*
-
- alcune occorrenze di un asterisco
-
-
-
- [cC]at
-
- cat o Cat
-
-
-
- [^a-zA-Z]
-
- alcune occorrenze di caratteri non alfabetici
-
-
-
- [0-9]$
-
- alcune linee che finiscono con un numero
-
-
-
- [A-Z][A-Z]*
-
- una o più lettere maiuscole
-
-
-
- [A-Z]*
-
- zero o alcune lettere maiuscole (in altre parole,
- qualcosa)
-
-
-
-
-
-
-
- Comandi di manipolazione del testo
-
-
- Comandi di manipolazione del testo
-
-
-
-
-
-
- Comando/Sintassi
-
- Cosa fa
-
-
-
-
-
- awk/nawk [opzioni]
- file
-
- esamina gli schemi (pattern) all'interno di un file ed
- elabora i risultati
-
-
-
- grep/egrep/fgrep
- [opzioni]
- 'stringa di ricerca'
- file
-
- ricerca nell'argomento (in questo caso probabilmente un
- file) tutte le occorrenze della stringa di ricerca e le
- elenca
-
-
-
- sed [opzioni]
- file
-
- editor di flusso per manipolare file da uno script o da
- linea di comando
-
-
-
-
-
-
- grep
-
- Questa sezione fornisce un'introduzione all'uso delle
- espressioni regolari con &man.grep.1;.
-
- L'utility &man.grep.1; viene usata per ricercare espressioni
- regolari comuni che si presentano nei file Unix. Le espressioni
- regolari, come quelle viste in precedenza, sono meglio specificate
- all'interno di apostrofi (o caratteri di quoting singoli) quando
- usate con l'utility &man.grep.1;. L'utility &man.egrep.1; fornisce
- una capacità di ricerca attraverso un set esteso di
- meta-caratteri. La sintassi dell'utility &man.grep.1;, alcune delle
- possibili opzioni e alcuni semplici esempi sono mostrati di
- seguito.
-
- Sintassi
-
- grep [opzioni]
- expreg
- [file]
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- ignora la differenza tra caratteri maiuscoli e
- minuscoli
-
-
-
-
-
- riporta solamente la somma del numero di linee contenenti
- le corrispondenze, non le corrispondenze stesse
-
-
-
-
-
- inverte la ricerca, visualizzando solo le linee senza
- corrispondenza
-
-
-
-
-
- mostra un numero di linea insieme alla linea su cui
- è stata trovata una corrispondenza
-
-
-
-
-
- lavora in silenzio, riportando solo lo stato
- finale:
-
-
-
-
-
- 0, per corrispondenze trovate
-
-
-
-
-
- 1, per nessuna corrispondenza
-
-
-
-
-
- 2, per errori
-
-
-
-
-
- elenca i nomi dei file, ma non le linee, nei quali sono
- state trovate corrispondenze
-
-
-
-
-
- Esempi:
-
- Si consideri il seguente file:
-
- {Unix prompt 5} cat num.list
- 1 15 fifteen
- 2 14 fourteen
- 3 13 thirteen
- 4 12 twelve
- 5 11 eleven
- 6 10 ten
- 7 9 nine
- 8 8 eight
- 9 7 seven
-10 6 six
-11 5 five
-12 4 four
-13 3 three
-14 2 two
-15 1 one
-
- Ecco alcuni esempi di &man.grep.1; usando tale file.
- Nel primo si ricerca il numero 15:
-
- {Unix prompt 6} grep '15' num.list
- 1 15 fifteen
-15 1 one
-
- Ora si usa l'opzione per contare il numero di
- linee che corrispondono al precedente criterio di ricerca:
-
- {Unix prompt 7} grep -c '15' num.list
-2
-
- Qui la ricerca è più generale: si selezionano tutte le
- linee che contengono il carattere 1 seguito da un
- 1 o un 2 o un
- 5:
-
- {Unix prompt 8} grep '1[125]' num.list
- 1 15 fifteen
- 4 12 twelve
- 5 11 eleven
-11 5 five
-12 4 four
-15 1 one
-
- Ora si ricercano tutte le linee che iniziano
- con uno spazio:
-
- {Unix prompt 9} grep '^ ' num.list
- 1 15 fifteen
- 2 14 fourteen
- 3 13 thirteen
- 4 12 twelve
- 5 11 eleven
- 6 10 ten
- 7 9 nine
- 8 8 eight
- 9 7 seven
-
- Ora tutte le linee che non iniziano con uno
- spazio:
-
- {Unix prompt 10} grep '^[^ ]' num.list
-10 6 six
-11 5 five
-12 4 four
-13 3 three
-14 2 two
-15 1 one
-
- L'ultimo esempio può anche essere realizzato usando l'opzione
- insieme all stringa di ricerca originale,
- esempio:
-
- {Unix prompt 11} grep -v '^ ' num.list
-10 6 six
-11 5 five
-12 4 four
-13 3 three
-14 2 two
-15 1 one
-
- Ora si ricercano tutte le linee che iniziano
- con carattere compreso tra 1 e
- 9:
-
- {Unix prompt 12} grep '^[1-9]' num.list
-10 6 six
-11 5 five
-12 4 four
-13 3 three
-14 2 two
-15 1 one
-
- In questo esempio si ricercano alcune istanze di
- t seguite da zero o alcune
- occorrenze di e:
-
- {Unix prompt 13} grep 'te*' num.list
- 1 15 fifteen
- 2 14 fourteen
- 3 13 thirteen
- 4 12 twelve
- 6 10 ten
- 8 8 eight
-13 3 three
-14 2 two
-
- In questo esempio si ricercano alcune istanze di
- t seguite da una o alcune
- occorrenze di e:
-
- {Unix prompt 14} grep 'tee*' num.list
-1 15 fifteen
-2 14 fourteen
-3 13 thirteen
-6 10 ten
-
- Si può prendere il proprio input da un programma,
- anzichè da un file. Qui si riportano alcune linee di output del
- comando &man.who.1; che iniziano con la lettera
- l.
-
- {Unix prompt 15} who | grep '^l'
-lcondron ttyp0 Dec 1 02:41 (lcondron-pc.acs.)
-
-
-
- sed
-
- L'editor di flusso non interattivo &man.sed.1; manipola un
- flusso di input, linea per linea, creando specifici cambiamenti e
- mandando il risultato su standard output.
-
- Sintassi
-
- sed [opzioni]
- comando_di_editing
- [file]
-
- Il formato per i comandi di editing è:
-
- [indirizzo1[,indirizzo2]]
- [funzione]
- [argomenti]
-
- dove gli indirizzi sono facoltativi e possono essere separati dalla
- funzione tramite spazi o tab. La funzione è obbligatoria.
- L'argomento può essere facoltativo o obbligatorio a seconda della
- funzione usata.
-
- Gli indirizzi di linea numerati sono numeri
- decimali di linea che partono dalla prima linea di input e si
- incrementano di uno per ogni linea. Se vengono stabiliti più
- file di input il contatore continua cumulativamente attraverso i file.
- L'ultima linea di input può essere specificata con il carattere
- $.
-
- Gli indirizzi di contesto sono schemi di
- espressioni regolari racchiusi tra caratteri di slashe (/).
-
- I comandi possono avere 0, 1 o 2 indirizzi separati da virgola con i
- seguenti effetti:
-
-
-
-
-
-
-
- # indirizzi
-
- linee considerate
-
-
-
-
-
- 0
-
- tutte le linee di input
-
-
-
- 1
-
- solamente le linee che corrispondono agli indirizzi
- specificati
-
-
-
- 2
-
- dalla prima linea che corrisponde al primo indirizzo fino
- alla linea che corrisponde al secondo indirizzo, inclusa. Il
- processo viene ripetuto per le linee interne.
-
-
-
-
-
- Le funzioni di sostituzione permettono di
- ricercare contesti e sono specificate nella forma:
-
- s/schema_espressione_regolare/stringa_di_rimpiazzo/flag
-
- e possono essere quotate con caratteri di quoting singoli (') se
- sono specificate opzioni o funzioni aggiuntive. Questi schemi sono
- identici agli indirizzi di contesto, eccetto che, mentre questi sono
- normalmente chiusi tra slashe (/), nelle funzioni sono permessi alcuni
- normali caratteri per specificare i delimitatori, oltre a newline e
- spazio. La stringa di rimpiazzo non è uno schema di
- espressione regolare; qui i caratteri non hanno significati speciali,
- fatta eccezione di:
-
-
-
-
-
-
-
- &
-
- che sostituisce tale simbolo con la stringa
- schema_espressione_regolare
-
-
-
- \n
-
- sostituisce tale simbolo con
- l'n-esima stringa corrispondente a
- schema_espressione_regolare chiusa
- tra una coppia di '\(','\)'
-
-
-
-
-
- Questi caratteri speciali possono essere messi in escape con il
- carattere backslash (\) per rimuovere il loro significato
- speciale.
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- script di editing
-
-
-
-
-
- non stampa l'output di default, ma solamente quelle linee
- specificate dalle funzioni p o
- s///p
-
-
-
-
-
- prende lo script di editing dal file specificato
-
-
-
-
-
- Alcune valide flag per le funzioni sostitutive sono:
-
-
-
-
-
-
-
-
-
- cancella lo schema
-
-
-
-
-
- sostituzione globale dello schema
-
-
-
-
-
- stampa le linee
-
-
-
-
-
- Esempi:
-
- Questo esempio modifica tutte le accidentali virgole (,) in una
- virgola seguita da uno spazio (, ) quindi crea l'output:
-
- &prompt.user; cat filey | sed s/,/,\ /g
-
- Il seguente esempio rimuove tutte le accidentali
- Jr precedute da uno spazio
- (Jr) all'interno del file
- filey:
-
- &prompt.user; cat filey | sed s/\ Jr//g
-
- Per realizzare operazioni multiple sull'input, si precede ogni
- operazione con l'opzione (edit) e si quota la
- stringa. Ad esempio, per filtrare le linee contenenti Date:
- e From: e rimpiazzarle senza i due punti
- (:):
-
- &prompt.user; sed -e 's/Date: /Date /' -e 's/From: /From /'
-
- Per visualizzare solamente le linee del file che iniziano con
- Date: e includerne una che inizia con
- Name::
-
- &prompt.user; sed -n '/^Date:/,/^Name:/p'
-
- Per stampare solamente le prime 10 linee dell'input (un rimpiazzo di
- &man.head.1;):
-
- &prompt.user; sed -n 1,10p
-
-
-
- awk, nawk, gawk
-
- &man.awk.1; è un linguaggio di elaborazione e ricerca di
- schemi. Il suo nome deriva dalle ultime iniziali dei tre autori:
- Alfred. V. Aho, Peter. J.Weinberger e Brian. W. Kernighan.
- nawk è un nuovo
- &man.awk.1;, una nuova versione del programma e &man.gawk.1; è
- il gnu &man.awk.1;, da parte della Free Software
- Foundation. Ogni versione è leggermente differente. Qui ci si
- limiterà ad illustrare semplici esempi che potrebbero andar bene
- per tutte le versioni. In alcuni sistemi operativi &man.awk.1; è
- in realtà nawk.
-
- &man.awk.1; ricerca schemi nel suo input e realizza le operazioni
- specificate su ogni linea o sui campi di linea che contengono tali
- schemi. Le espressioni dello schema di confronto per &man.awk.1;
- possono essere specificate sia attraverso linea di comando, sia
- inserendole in un file e usando l'opzione .
-
- Sintassi
-
- awk programma
- [file]
-
- dove programma è composto da uno o
- più dei seguenti campi:
-
- schema
- { azione }
-
- Ogni linea di input viene verificata con lo schema di confronto
- insieme alla specifica azione che bisogna realizzare per ogni
- corrispondenza trovata. Questo continua attraverso la completa sequenza
- di schemi, quindi la prossima linea di input viene verificata.
-
- L'input è diviso tra
- record e campi. Il separatore
- di record di default è newline e la
- variabile NR tiene il conto dei record. Il
- separatore di campo di default è uno spazio
- bianco, spazi e tab, e la
- variabile NF tiene il conto dei campi. I separatori
- di input del campo, FS e del record,
- RS, possono essere settati in qualsiasi momento per
- farli corrispondere a singoli caratteri specifici. I separatori di
- output del campo, OFS e del record,
- ORS, possono essere modificati, se si desidera, con
- singoli caratteri specifici.
- $n, dove
- n è un intero, viene usato per
- rappresentare l'n-esimo campo di un record
- di input, mentre $0 rappresenta l'intero record
- di input.
-
- BEGIN e END sono speciali
- schemi che vengono verificati rispettivamente all'inizio dell'input,
- prima che il primo campo sia letto e alla fine dell'input, dopo che
- l'ultimo campo è stato letto.
-
- La stampa è permessa attraverso
- l'istruzione print e l'istruzione per la stampa
- formattata printf.
-
- Gli schemi (pattern) possono essere
- espressioni regolari, espressioni aritmetiche relazionali, espressioni
- di valutazione di stringhe e combinazioni buleane di alcune di queste.
- In quest'ultimo caso gli schemi possono essere combinati con i seguenti
- operatori buleani, usando le parentesi per definire le
- combinazioni:
-
-
-
-
-
-
-
- ||
-
- or
-
-
-
- &&
-
- and
-
-
-
- !
-
- not
-
-
-
-
-
- La separazione di schemi con virgole definisce un
- range in cui lo schema è applicabile,
- esempio:
-
- /primo/,/ultimo/
-
- seleziona tutte le linee partendo con quella che contiene
- primo e continuando inclusivamente fino alla
- linea che contiene ultimo.
-
- Per selezionare le linee da 15 a 20 si usa il seguente
- schema:
-
- NR==15 , NR==20
-
- Le espressioni regolari devono essere chiuse
- tra slashe (/) e i meta-caratteri possono essere messi in escape con il
- carattere di backslash (\). Le espressioni regolari possono essere
- raggruppate con gli operatori seguenti:
-
-
-
-
-
-
-
- |
-
- per alternative separate
-
-
-
- +
-
- una o più
-
-
-
- ?
-
- zero o una
-
-
-
-
-
- Un confronto di espressione regolare può essere specificato
- con:
-
-
-
-
-
-
-
- ~
-
- contiene l'espressione
-
-
-
- !~
-
- non contiene l'espressione
-
-
-
-
-
- Quindi il programma:
-
- $1 ~ /[Ff]rank/
-
- è vero se il primo campo, $1, contiene "Frank" o "frank"
- dovunque all'interno del campo. Per confrontare un campo identico a
- "Frank" o "frank" si usa:
-
- $1 ~ /^[Ff]rank$/
-
- Le espressioni relazionali sono permesse usando
- i seguenti operatori relazionali:
-
-
-
-
-
-
-
- <
-
- minore di
-
-
-
- <=
-
- minore o uguale a
-
-
-
- = =
-
- uguale a
-
-
-
- >=
-
- maggiore o uguale a
-
-
-
- !=
-
- non uguale a
-
-
-
- >
-
- maggiore di
-
-
-
-
-
- Non si può conoscere su due piedi se le variabili sono
- stringhe o numeri. Se nessun operando è riconosciuto per essere
- un numero, sono realizzati confronti di stringhe. Altrimenti, viene
- realizzata una comparazione numerica. In mancanza di informazioni per
- il contrario, viene realizzata una comparazione di stringa, così
- questa:
-
- $1 > $2
-
- verrà valutata con valori di tipo stringa. Per assicurarsi
- una valutazione numerica, costruire qualcosa simile a:
-
- ( $1 + 0 ) > $2
-
- Le funzioni matematiche exp, log e sqrt sono di
- tipo built-in.
-
- Altre funzioni built-in sono:
-
-
-
-
-
-
-
- index(s,t)
-
- ritorna la posizione della stringa
- s dove si presenta il primo
- t o 0 se non esiste
-
-
-
- lenght(s)
-
- ritorna la lunghezza della stringa
- s
-
-
-
- substr(s,m,n)
-
- ritorna l'n-esimo carattere della
- sottostringa di s, iniziando dalla
- posizione m
-
-
-
-
-
- Gli array sono dichiarati automaticamente
- quando vengono usati, per esempio:
-
- arr[i]=$1
-
- assegna il primo campo del corrente record di input all'i-esimo
- elemento dell'array.
-
- Le espressioni di controllo di flusso if-else,
- while e for sono permesse con
- la sintassi del C:
-
- for (i=1; i <= NF; i++) {azioni}
-
- while (i<=NF) {azioni}
-
- if (i<NF) {azioni}
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- legge i comandi dal file specificato
-
-
-
-
-
- usa il carattere c come il
- carattere di separatore di campo
-
-
-
-
-
- Esempi:
-
- &prompt.user; cat filex | tr a-z A-Z | awk -F: '{printf("7R %-6s %-9s %-24s \n",$1,$2,$3)}' > upload.file
-
- effettua cat su filex, che
- è formattato in questo modo:
-
- nfb791:99999999:smith
-7ax791:999999999:jones
-8ab792:99999999:chen
-8aa791:999999999:mcnulty
-
- cambiando tutti i caratteri minuscoli in caratteri maiuscoli con
- l'utility &man.tr.1; e formattando il file come mostrato di seguito, il
- quale viene scritto nel file upload.file
-
- 7R NFB791 99999999 SMITH
-7R 7AX791 999999999 JONES
-7R 8AB792 99999999 CHEN
-7R 8AA791 999999999 MCNULTY
-
-
-
Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/text-processing/chapter.xml
___________________________________________________________________
Deleted: svn:keywords
## -1 +0,0 ##
-FreeBSD=%H
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/sgml
\ No newline at end of property
Index: head/it_IT.ISO8859-15/books/unix-introduction/shell-programming/chapter.xml
===================================================================
--- head/it_IT.ISO8859-15/books/unix-introduction/shell-programming/chapter.xml (revision 52098)
+++ head/it_IT.ISO8859-15/books/unix-introduction/shell-programming/chapter.xml (nonexistent)
@@ -1,1692 +0,0 @@
-
-
-
- Programmazione di shell
-
-
- Script di shell
-
- Si possono scrivere programmi di shell creando script contenenti
- alcuni comandi di shell. La prima linea dello script deve iniziare con
- #!, che indica al kernel che lo script è direttamente eseguibile.
- Si fa immediatamente seguire a quel simbolo il nome della shell
- o del programma da eseguire (gli spazi sono permessi), usando un path name
- assoluto. Generalmente si possono avere fino a 32 caratteri, forse di
- più su alcuni sistemi e si può includere qualche opzione.
- Quindi per inizializzare uno script per la shell Bourne la prima linea
- dovrà essere:
-
- #! /bin/sh
-
- e per la shell C:
-
- #! /bin/csh -f
-
- dove l'opzione indica che la shell non deve
- leggere il file .cshrc. Alcuni spazi bianchi
- seguenti il magico simbolo, #!, sono opzionali.
-
- Inoltre si deve specificare che lo script è eseguibile,
- settando gli opportuni bit sul file con il comando &man.chmod.1;,
- esempio:
-
- &prompt.user; chmod +x shell_script
-
- All'interno degli script il simbolo # indica un commento da quel punto
- fino alle fine della linea; #! è un caso speciale se trovato come
- primo carattere del file.
-
-
-
- Settare i valori dei parametri
-
- I valori di un parametro, ad esempio param, sono
- assegnati così:
-
-
-
-
-
-
-
- Shell Bourne
-
- Shell C
-
-
-
-
-
- param=valore
-
- set param =
- valore
-
-
-
-
-
- dove valore è una valida stringa che
- può essere chiusa tra caratteri di quoting singoli
- ('valore') o doppi
- ("valore") per permettere alcuni spazi bianchi
- all'interno del valore della stringa. Quando viene racchiusa con dei
- caratteri backquote (`valore`) la stringa viene
- prima valutata dalla shell e viene sostituita con il risultato ottenuto
- dalla valutazione. Questo viene spesso usato per eseguire un comando,
- sostituendo l'output del comando a valore,
- esempio:
-
- $ day=`date +%a`
-
- $ echo $day
-Wed
-
- Dopo che il valore del parametro è stato assegnato, si accede
- al valore corrente del parametro usando la notazione
- $param o ${param}.
-
-
-
- Quoting
-
- Le stringhe possono essere quotate per controllare il modo in cui la
- shell interpreta alcuni parametri o variabili all'interno della stringa.
- Per delimitare le stringhe si possono usare i caratteri di quoting singoli
- (') o doppi ("). I caratteri di quoting doppi definiscono la stringa e
- permettono la sostituzione di variabile. I carattere di quoting singoli
- definiscono la stringa ma impediscono la sostituzione di variabile.
- Un backslash (\) prima di un carattere viene posto per effettuare un
- escape su di esso, specificando che il sistema deve considerare il
- carattere letteralmente, senza assegnarli alcun significato speciale.
- Queste tecniche di quoting possono essere usate per separare una variabile
- da una stringa fissa. Come esempio si consideri la variabile
- var, a cui è stata assegnata il valore
- bat, e la stringa costante man. Se
- si vuole combinare queste stringhe per ottenere come risultato la stringa
- batman si può sperimentare:
-
- $varman
-
- ma questo non funzionerà, poichè la shell tenta di
- valutare una variabile chiamata varman, che non esiste.
- Per ottenere il risultato desiderato si ha la necessità di separare
- le stringhe tramite quoting o di isolare la variabile con delle parentesi
- graffe ({}), in questo modo:
-
-
-
-
-
-
-
- "$var"man
-
- - quoting sulla variabile
-
-
-
- $var""man
-
- - separazione di parametri
-
-
-
- $var"man"
-
- - quoting sulla costante
-
-
-
- $var''man
-
- - separazione di parametri
-
-
-
- $var'man'
-
- - quoting sulla costante
-
-
-
- $var\man
-
- - separazione di parametri
-
-
-
- ${var}man
-
- - si isola la variabile
-
-
-
-
-
- Queste funzionano tutte poichè ", ', \, { e } non sono validi
- caratteri per un nome di variabile.
-
- Non si può usare
-
- '$var'man
-
- \$varman
-
- poichè impediscono che la sostituzione della variabile
- prenda posto.
-
- Quando si usano le parentesi graffe, queste devono circondare
- solamente la variabile, senza includere il $, altrimenti saranno incluse
- come parte del risultato della stringa, esempio:
-
- &prompt.user; echo {$var}man
-{bat}man
-
-
-
- Variabili
-
- Alcune variabili sono automaticamente inizializzate all'avvio della
- shell. Queste variabili permettono di riferirsi agli argomenti su linea
- di comando.
-
- Queste variabili di shell sono:
-
-
- Variabili di shell
-
-
-
-
-
-
-
-
-
-
-
-
- Variabile
-
- Uso
-
- sh
-
- csh
-
-
-
-
-
- $#
-
- numero di argomenti su linea di comando
-
- x
-
-
-
-
-
- $-
-
- opzioni fornite alla shell
-
- x
-
-
-
-
-
- $?
-
- valore di uscita dell'ultimo comando eseguito
-
- x
-
-
-
-
-
- $$
-
- numero id del processo corrente
-
- x
-
- x
-
-
-
- $!
-
- numero di processo dell'ultimo comando messo in
- background
-
- x
-
-
-
-
-
- $n
-
- argomento su linea di comando, dove
- n varia tra 1 e 9, leggendo da sinistra
- a destra
-
- x
-
- x
-
-
-
- $0
-
- il nome della shell corrente o del programma corrente
-
- x
-
- x
-
-
-
- $*
-
- tutti gli argomenti su linea di comando ("$1 $2 ...
- $9")
-
- x
-
- x
-
-
-
- $@
-
- tutti gli argomenti su linea di comando, ciascuno quotato
- separatamente ("$1" "$2" ... "$9")
-
- x
-
-
-
-
-
- $argv[n]
-
- seleziona l'n-esima parola dalla
- lista di input
-
-
-
- x
-
-
-
- ${argv[n]}
-
- come sopra
-
-
-
- x
-
-
-
- $#argv
-
- riporta il numero di parole della lista di input
-
-
-
- x
-
-
-
-
- Comandi di navigazione e controllo delle directory
-
-
-
-
-
-
- Comando/Sintassi
-
- Cosa fa
-
-
-
-
-
- cd
- [directory]
-
- cambia directory
-
-
-
- ls
- [opzioni][directory
- o file]
-
- lista il contenuto della directory o i permessi del
- file specificato
-
-
-
- mkdir
- [opzioni]
- directory
-
- crea una directory
-
-
-
- pwd
-
- mostra la directory (corrente) di lavoro
-
-
-
- rmdir [opzioni]
- directory
-
- rimuove una directory
-
-
-
-
-
- Se si ha una certa familiarità con DOS la tabella che segue
- paragona i suoi simili comandi a quelli Unix in modo tale da fornire un
- appropriato quadro di riferimento.
-
-
- Comandi di navigazione e controllo delle directory Unix vs
- DOS
-
-
-
-
-
-
-
-
- Comando
-
- Unix
-
- DOS
-
-
-
-
-
- lista il contenuto di una directory
-
- ls
-
- dir
-
-
-
- crea una directory
-
- mkdir
-
- md &
- mkdir
-
-
-
- cambia directory
-
- cd
-
- cd &
- chdir
-
-
-
- rimuove una directory
-
- rmdir
-
- rm &
- rmdir
-
-
-
- ritorna alla directory home dell'utente
-
- cd
-
- cd\
-
-
-
- mostra la directory corrente di lavoro
-
- pwd
-
- cd
-
-
-
-
-
-
- pwd - mostra la directory di lavoro
-
- In ogni momento si può determinare in che punto si è
- nella gerarchia del file system mostrando la directory di lavoro con il
- comando &man.pwd.1;, esempio:
-
- &prompt.user; pwd
-/home/frank/src
-
-
-
- cd - cambia directory
-
- Ci si può portare in una nuova directory con il comando
- &man.cd.1;, cambio di directory. &man.cd.1; accetta sia path name
- (percorsi) assoluti sia path name relativi.
-
- Sintassi
-
- cd [directory]
-
- Esempi:
-
-
-
-
-
-
-
- cd (oppure chdir in
- alcune shell)
-
- cambia directory
-
-
-
- cd
-
- si posiziona nella directory home dell'utente
-
-
-
- cd /
-
- si posiziona nella directory di sistema roor (/)
-
-
-
- cd ..
-
- sale di un livello di directory
-
-
-
- cd ../..
-
- sale di due livelli di directory
-
-
-
- cd
- /completo/path/name/da/root
-
- cambia directory rispetto a un path name assoluto
- (notare lo slash iniziale)
-
-
-
- cd
- path/da/posizione/corrente
-
- cambia directory rispetto a un path name relativo alla
- posizione corrente (no slash iniziale)
-
-
-
- cd
- ~username/directory
-
- cambia directory rispetto alla directory home dell'utente
- specificato (il carattere ~ non è valido nella shell
- Bourne; vedere il Capitolo 5).
-
-
-
-
-
-
-
- mkdir - crea una directory
-
- La gerarchia della propria directory home si estende creando
- sotto-directory all'interno di essa. Questo è possibile con il
- comando &man.mkdir.1;, crea directory. Di nuovo si può
- specificare un path name assoluto o relativo della directory che si
- vuole creare.
-
- Sintassi
-
- mkdir [opzioni]
- directory
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- crea una directory intermedia (genitore), quando
- necessario
-
-
-
-
-
- permessi di accesso (SVR4). (Si vedranno i
- modi più avanti in questo
- Capitolo)
-
-
-
-
-
- Esempi:
-
- &prompt.user; mkdir /home/frank/data
-
- oppure se la directory di lavoro corrente è
- /home/frank, il seguente comando è
- equivalente:
-
- &prompt.user; mkdir data
-
-
-
- rmdir - rimuove una directory
-
- Per rimuovere una directory è necessario che questa sia
- vuota. Altrimenti bisogna prima rimuovere i file contenuti in essa.
- Inoltre, non si può rimuovere una directory se questa è la
- directory di lavoro corrente, bisogna prima uscire da
- quest'ultima.
-
- Sintassi
-
- rmdir
- directory
-
- Esempi:
-
- Per rimuovere la directory vuota
- /home/frank/data mentre si è in
- /home/frank usare:
-
- &prompt.user; rmdir data
-
- oppure
-
- &prompt.user; rmdir /home/frank/data
-
-
-
- ls - mostra i contenuti delle directory
-
- Il comando per visualizzare le proprie directory e i propri file
- è &man.ls.1;. È possibile ottenere, attraverso le opzioni,
- informazioni circa la dimensione, il tipo, i permessi, la data di
- creazione, di modifica e di accesso del file.
-
- Sintassi
-
- ls [opzioni]
- [argomenti]
-
- Opzioni generali
-
- Quando non viene usato nessun argomento, viene mostrato il contenuto
- della directory corrente. Ci sono molte utili opzioni per il comando
- &man.ls.1;. Segue una lista di alcune di queste. Quando si usa il
- comando, le opzioni sono raggruppate insieme, precedute da un
- trattino (-).
-
-
-
-
-
-
-
-
-
- mostra tutti i file, inclusi quelli che iniziano con
- un punto (.)
-
-
-
-
-
- mostra solo i nomi delle directory, non i file
- nella directory
-
-
-
-
-
- indica il tipo di elemento terminandolo con un
- simbolo:
-
-
-
-
-
- directory /
-
-
-
-
-
- socket =
-
-
-
-
-
- link simbolico @
-
-
-
-
-
- eseguibile *
-
-
-
-
-
- mostra il gruppo Unix assegnato al file, richiede l'opzione
- (BSD solamente) o su una macchina SVR4,
- esempio Solaris, questa opzione ha l'effetto opposto
-
-
-
-
-
- se il file è un link simbolico, mostra le
- informazioni del file o della directory a cui il link si
- riferisce, non le informazioni del link stesso
-
-
-
-
-
- listato lungo: mostra i modi, informazioni di link, il
- proprietario, la dimensione, la data dell'ultima modifica del
- file. Se il file è un link simbolico, una freccia
- (-->) precede il percorso del file collegato.
-
-
-
-
-
- Il campo modi viene fornito dall'opzione
- e consiste di 10 caratteri. Il primo carattere
- è uno dei seguenti:
-
-
-
-
-
-
-
- CARATTERE
-
- SE L'ELEMENTO E'
-
-
-
-
-
- d
-
- directory
-
-
-
- -
-
- file ordinario
-
-
-
- b
-
- file speciale per dispositivi a blocchi
-
-
-
- c
-
- file speciale per dispositivi a caratteri
-
-
-
- l
-
- link simbolico
-
-
-
- s
-
- socket
-
-
-
-
-
- I 9 caratteri successivi sono raggruppati in 3 blocchi di 3
- caratteri ciascuno. Indicano i permessi di accesso al
- file: i primi 3 caratteri si riferiscono ai permessi del
- proprietario del file, i successivi 3 ai permessi
- degli utenti del gruppo Unix assegnato al file e
- gli ultimi 3 caratteri ai permessi degl'altri
- utenti sul sistema. Possono assumere i seguenti simboli:
-
-
-
-
-
-
-
- r
-
- permesso di lettura
-
-
-
- w
-
- permesso di scrittura
-
-
-
- x
-
- permesso di esecuzione
-
-
-
- -
-
- permesso negato
-
-
-
-
-
- Esistono altri permessi, specificamente progettati per essere usati
- in speciali situazioni. Questi sono spiegati nelle pagine man di
- &man.ls.1;.
-
- Esempi:
-
- Per mostrare i file in una directory
-
- &prompt.user; ls
-demofiles frank linda
-
- Per mostrare tutti i file in una directory, inclusi i file nascosti
- (iniziano con un punto):
-
- &prompt.user; ls -a
-. .cshrc .history .plan .rhosts frank
-.. .emacs .login .profile demofiles linda
-
- Per avere un listato lungo:
-
- &prompt.user; ls -al
-total 24
-drwxr-sr-x 5 workshop acs 512 Jun 7 11:12 .
-drwxr-xr-x 6 root sys 512 May 29 09:59 ..
--rwxr-xr-x 1 workshop acs 532 May 20 15:31 .cshrc
--rw------- 1 workshop acs 525 May 20 21:29 .emacs
--rw------- 1 workshop acs 622 May 24 12:13 .history
--rwxr-xr-x 1 workshop acs 238 May 14 09:44 .login
--rw-r--r-- 1 workshop acs 273 May 22 23:53 .plan
--rwxr-xr-x 1 workshop acs 413 May 14 09:36 .profile
--rw------- 1 workshop acs 49 May 20 20:23 .rhosts
-drwx------ 3 workshop acs 512 May 24 11:18 demofiles
-drwx------ 2 workshop acs 512 May 21 10:48 frank
-drwx------ 3 workshop acs 512 May 24 10:59 linda
-
-
-
-
- Comandi di gestione dei file
-
- Per creare, copiare, rimuovere file e per modificarne i permessi
- si possono usare i seguenti comandi.
-
-
- Comandi di gestione dei file
-
-
-
-
-
-
- Comando/Sintassi
-
- Cosa fa
-
-
-
-
-
- chgrp [opzioni]
- gruppo file
-
- cambia il gruppo assegnato ad un file
-
-
-
- chmod [opzioni]
- file
-
- cambia i permessi di accesso a file o directory
-
-
-
- chown [opzioni]
- proprietario file
-
- cambia il proprietario di un file; può essere usato
- solamente dal super-user
-
-
-
- cp [opzioni]
- file1 file2
-
- copia file1
- in file2;
- file2 non dovrebbe
- già esistere. Questo comando crea o sovrascrive
- file2
-
-
-
- mv [opzioni]
- file1 file2
-
- muove (rinomina)
- file1 in
- file2
-
-
-
- rm [opzioni]
- file
-
- elimina un file o una directory ( rimuove
- ricorsivamente le directory e il loro contenuto)
- ( chiede conferma prima di rimuove i
- file)
-
-
-
-
-
- Se si ha una certa familiarità con DOS la tabella che segue
- paragona i suoi simili comandi a quelli Unix in modo tale da fornire un
- appropriato quadro di riferimento.
-
-
- Comandi di gestione dei file Unix vs DOS
-
-
-
-
-
-
-
-
- Comando
-
- Unix
-
- Dos
-
-
-
-
-
- copia un file
-
- cp
-
- copy
-
-
-
- muove un file
-
- mv
-
- move (non supportato in tutte le
- versioni di Dos)
-
-
-
- rinomina un file
-
- mv
-
- rename &
- ren
-
-
-
- elimina un file
-
- rm
-
- erase &
- del
-
-
-
- mostra un file a schermo
-
- cat
-
- type
-
-
-
- mostra un file a schermo, una pagina alla volta
-
- more, less,
- pg
-
- type /p (non supportato in tutte
- le versioni di Dos)
-
-
-
-
-
-
- cp - copia un file
-
- Il comando &man.cp.1; copia il contenuto di un file in un altro
- file.
-
- Sintassi
-
- cp [opzioni]
- filename1 filename2
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- interattivo (chiede conferma prima di procedere)
-
-
-
-
-
- copia ricorsivamente una directory
-
-
-
-
-
- Esempi:
-
- &prompt.user; cp filename1 filename2
-
- Si hanno due copie del file, ognuna con un identico contenuto.
- Questi file sono completamente indipendenti tra loro e possono essere
- editati e modificati entrambi quando necessario. Ciascuno di essi ha il
- proprio inode, i propri blocchi di dati e il proprio elemento nella
- tabella di directory.
-
-
-
- mv - sposta un file
-
- Il comando &man.mv.1; rinomina (sposta) un file.
-
- Sintassi
-
- mv [opzioni]
- vecchio_file nuovo_file
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- interattivo (chiede conferma prima di procedere)
-
-
-
-
-
- non chiede la conferma quando si sovrascrive un file
- esistente (ignora )
-
-
-
-
-
- Esempi:
-
- &prompt.user; mv vecchio_file nuovo_file
-
- Il file nuovo_file
- sostituisce
- vecchio_file.
- In realtà tutto quello che è stato fatto è aver
- aggiornato l'elemento della tabella di directory per attribuire al file
- il nuovo nome. Il contenuto del file rimane come era prima della
- rinominazione.
-
-
-
- rm - elimina un file
-
- Il comando &man.rm.1; elimina un file.
-
- Sintassi
-
- rm [opzioni]
- filename
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- interattivo (chiede conferma prima di procedere)
-
-
-
-
-
- rimuove una directory ricorsivamente, rimuovendo prima i file
- e le directory sottostanti
-
-
-
-
-
- non chiede conferma prima di procedere
- (ignora )
-
-
-
-
-
- Esempi:
-
- &prompt.user; rm filename
-
- Visualizzando il contento della directory si vedrà che quel
- file non esiste più. In realtà tutto quello che è
- stato fatto è aver rimosso l'elemento dalla tabella di directory
- e marcato l'inode come non usato. Il contenuto del file
- è ancora sul disco, ma ora il sistema non ha più modo di
- identificare quei blocchi di dati con il nome del file eliminato. Non
- c'è un certo comando per
- riprendere un file che è
- stato eliminato in questo modo. Per questa ragione molti utenti alle
- prime armi effettuano un alias del comando di eliminazione in
- rm -i dove l'opzione chiede di
- confermare prima di rimuovere il file. Simili alias sono generalmente
- messi nel file .cshrc per la shell C (vedere il
- Capitolo 5).
-
-
-
- Permessi dei file
-
- Ciascun file e directory ha permessi che stabiliscono chi può
- leggerlo, scriverlo e/o
- eseguirlo. Per scoprire i permessi assegnati a un
- file, può essere usato il comando &man.ls.1; con l'opzione
- . Quando si ha la necessità di conoscere il
- gruppo per il quale i permessi sono stati assegnati si può usare
- l'opzione insieme a ls -l
- (solamente BSD).
-
- Quando si usa il comando ls -lg su un file
- (ls -l su SysV) l'output sarà mostrato come
- il seguente:
-
- -rwxr-x--- user Unixgroup size Month nn hh:mm filename
-
- La zona dedicata ai caratteri e trattini
- (-rwxr-x---) è la zona che mostra il tipo di
- file e i permessi del file, come spiegato nella precedente sezione.
- Quindi la stringa di permessi dell'esempio,
- -rwxr-x---, permette al proprietario
- user del file di leggerlo, modificarlo ed
- eseguirlo; gli utenti del gruppo Unixgroup del
- file possono leggerlo ed eseguirlo; gli altri
- utenti del sistema non possono accedere in alcun modo al file.
-
-
-
- chmod - cambio dei permessi del file
-
- Il comando per cambiare i permessi ad un elemento (file, directory,
- ecc.) è &man.chmod.1; (cambio dei modi). La sintassi richiede
- l'uso del comando con tre cifre (rappresentanti i permessi del
- proprietario (u), i permessi
- del gruppo (g) e i permessi
- degli altri utenti (o))
- seguite da un argomento (che può essere un nome di un file o una
- lista di file e directory). Oppure può essere usato con una
- rappresentazione simbolica dei permessi, indicando a quale utenza questi
- vanno applicati.
-
- Ogni tipo di permesso è rappresentato dal proprio numero
- equivalente:
-
- lettura=4, scrittura=2, esecuzione=1
-
- o da singoli caratteri:
-
- lettura=r, scrittura=w, esecuzione=x
-
- Il permesso 4 o r
- specifica il permesso di lettura. Se i permessi
- desiderati sono lettura e scrittura, il 4 (rappresentante la lettura) e
- il 2 (rappresentante la scrittura) sono addizionati per ottenere il
- permesso 6. Quindi, un permesso settato a 6 vorrà concedere un
- permesso di lettura e di scrittura.
-
- Alternativamente si può usare una notazione simbolica che
- usa un carattere rappresentativo per l'utenza a cui ci si riferisce, uno
- per il permesso e uno per l'operazione, dove l'operazione può
- essere:
-
-
-
-
-
-
-
- +
-
- aggiunge permessi
-
-
-
- -
-
- rimuove permessi
-
-
-
- =
-
- setta permessi
-
-
-
-
-
- Quindi per settare i permessi di lettura e di scrittura per il
- proprietario del file si usa nella notazione simbolica
- u=rw.
-
- Sintassi
-
-
-
-
-
-
-
- chmod nnn
- [lista argomenti]
-
- modalità numerica
-
-
-
- chmod [chi]
- op
- [perm]
- [lista argomenti]
-
- modalità simbolica
-
-
-
-
-
- dove nnn sono i tre numeri rappresentanti
- i permessi del proprietario, del
- gruppo e degli altri utenti;
- chi può essere
- u,g,o oppure a (tutti) e
- perm può essere
- r,w,x. Nella notazione simbolica si può
- separare la specifica dei permessi con una virgola, come mostrato
- nell'esempio qui sotto.
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- forza (nessun messaggio di errore viene generato se la
- modifica non ha avuto successo)
-
-
-
-
-
- discesa ricorsiva attraverso la struttura delle directory
- e cambio dei modi
-
-
-
-
-
- Esempi:
-
- Se i permessi desiderati per il file1 sono:
- proprietario: lettura, scrittura ed esecuzione;
- gruppo: lettura ed esecuzione;
- altri: lettura ed esecuzione; il comando da usare
- è:
-
- chmod 755 file1 oppure
- chmod u=rwx,go=rx file1
-
-
- Quando si assegnano i permessi a un file per l'utenza
- gruppo e per l'utenza altri
- è necessario che il minimo permesso di esecuzione (inteso come
- permesso di accesso) per la directory nella quale il file è
- posizionato sia abilitato. Un semplice modo per far questo è
- posizionarsi nella directory nella quale i permessi devo essere
- garantiti e digitare:
-
- chmod 711 . oppure
- chmod u=rw,+x . oppure
- chmod u=rwx,go=x .
-
- dove il punto (.) indica la
- directory corrente.
-
-
-
-
- chown - cambio del proprietario del file
-
- Il proprietario di un file può essere cambiato con il comando
- &man.chown.8;. Su molte versioni Unix questo può essere
- realizzato solo dal super-user, ad esempio, un utente normale non
- può attribuire i suoi file ad altri proprietari. &man.chown.8;
- è usato come qui sotto, dove &prompt.root; rappresenta il prompt
- di shell per il super-user.
-
- Sintassi
-
-
-
-
-
-
-
- chown [opzioni]
- utente[:gruppo]
- file
-
- (SVR4)
-
-
-
- chown [opzioni]
- utente[.gruppo]
- file
-
- (BSD)
-
-
-
-
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- discende ricorsivamente attraverso la struttura della
- directory
-
-
-
-
-
- forza, non riporta errori
-
-
-
-
-
- Esempi:
-
- &prompt.root; chown nuovo_proprietario file
-
-
-
- chgrp - cambio del gruppo del file
-
- Con il comando &man.chgrp.1; tutti possono cambiare il gruppo dei
- propri file in un altro gruppo di appartenenza.
-
- Sintassi
-
- chgrp [opzioni]
- gruppo file
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- discende ricorsivamente attraverso la struttura della
- directory
-
-
-
-
-
- forza, non riporta errori
-
-
-
-
-
- Esempi:
-
- &prompt.user; chgrp nuovo_gruppo file
-
-
-
-
- Comandi di visualizzazione
-
- Ci sono alcuni comandi che si possono usare per
- visualizzare o esaminare un
- file. Alcuni di questi sono editor che verranno trattati più
- avanti. Qui si illustreranno alcuni comandi normalmente usati per
- visualizzare un file.
-
-
- Comandi di visualizzazione
-
-
-
-
-
-
- Comando/Sintassi
-
- Cosa fa
-
-
-
-
-
- echo
- [stringa]
-
- riporta in standard ouptut una stringa di testo
-
-
-
- cat [opzioni]
- file
-
- concatena (lista) un file
-
-
-
- more (o less o
- pg)
- [opzioni]
- file
-
- visualizzazione paginata di un file di testo
-
-
-
- head [-numero]
- file
-
- visualizza le prime 10 (o -numero)
- linee di un file
-
-
-
- tail [opzioni]
- file
-
- visualizza le ultime linee (o parte) di un file
-
-
-
-
-
-
- echo - mostra un'espressione
-
- Il comando &man.echo.1; viene utilizzato per ripetere l'argomento
- assegnato al comando nel dispositivo standard di uscita. Normalmente
- l'argomento termina con un carattere di alimentazione di linea, ma si
- può specificare un'opzione per impedirlo.
-
- Sintassi
-
- echo [stringa]
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- non stampa new-line (BSD, shell built-in)
-
-
-
-
-
- non stampa new-line (SVR4)
-
-
-
-
-
- dove n è il codice del
- carattere ASCII a 8 bit (SVR4)
-
-
-
-
-
- tab (SVR4)
-
-
-
-
-
- form-feed (emissione carta) (SVR4)
-
-
-
-
-
- new-line (SVR4)
-
-
-
-
-
- tab verticale (SVR4)
-
-
-
-
-
- Esempi:
-
- &prompt.user; echo Hello Class
-
- oppure
-
- &prompt.user; echo "Hello Class"
-
- Per impedire il carattere di fine linea:
-
- &prompt.user; echo -n Hello Class
-
- oppure
-
- &prompt.user; echo "Hello Class \c"
-
- dove il modo utilizzato nell'ultimo esempio dipende dal comando
- &man.echo.1; usato.
-
- L'opzione deve essere
- interna a un paio di caratteri di quoting singoli o doppi, con o senza
- altri caratteri di stringa.
-
-
-
- cat - concatena un file
-
- Il comando di concatenazione &man.cat.1; visualizza il contenuto di
- un file.
-
- Sintassi
-
- cat [opzioni]
- [file]
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- precede ogni linea con un numero
-
-
-
-
-
- visualizza i caratteri non stampabili, eccetto tab,
- new-line e form-feed
-
-
-
-
-
- visualizza $ alla fine di ogni linea (prima di new-line)
- (quando usato con l'opzione )
-
-
-
-
-
- Esempi:
-
- &prompt.user; cat filename
-
- Si possono specificare una serie di file su linea di comando e
- &man.cat.1; li concatenerà ciascuno a turno, seguendo lo stesso
- ordine di immissione, esempio:
-
- &prompt.user; cat file1 file2 file3
-
-
-
- more, less e pg - visualizzazione paginata di un file
-
- &man.more.1;, &man.less.1; e pg permettono di
- visualizzare il contenuto di un file una schermata (pagina) alla volta.
- Inoltre permettono di ritornare sulla precedente pagina, di cercare
- parole, ecc. Questi comandi potrebbero non essere disponibili sul
- proprio sistema Unix.
-
- Sintassi
-
- more [opzioni]
- [+/schema]
- [filename]
-
- less [opzioni]
- [+/schema]
- [filename]
-
- pg [opzioni]
- [+/schema]
- [filename]
-
- Opzioni
-
-
-
-
-
-
-
-
-
-
-
- more
-
- less
-
- pg
-
- Azione
-
-
-
-
-
-
-
-
-
-
-
- pulisce lo schermo prima di visualizzare
-
-
-
-
-
-
-
-
-
- ignora differenza tra maiuscole e minuscole
-
-
-
-
-
- default
-
- default
-
- non esce alla fine dell'input, ma si mette in attesa di
- comandi
-
-
-
-
-
-
-
-
-
- # (numero di) linee di avanzamento
-
-
-
-
-
-
-
-
-
- ricerca lo schema (pattern)
-
-
-
-
-
- Controlli interni
-
-
-
-
-
-
-
- more
-
- visualizza (una schermata alla volta) il file
- specificato
-
-
-
- <spazio>
-
- per vedere la schermata successiva
-
-
-
- <return>o<CR>
-
- per avanzare di una linea
-
-
-
- q
-
- per uscire
-
-
-
- h
-
- help
-
-
-
- b
-
- torna alla schermata precedente
-
-
-
- /parola
-
- cerca parola nel resto del
- file
-
-
-
-
-
- vedere le pagine man per altre
- opzioni
-
-
-
- less
-
- simile a &man.more.1;, vedere le
- pagine man per le opzioni
-
-
-
- pg
-
- in SVR4 equivale a &man.more.1; (pagina)
-
-
-
-
-
-
-
- head - mostra l'inizio di un file
-
- Il comando &man.head.1; visualizza l'inizio di un file.
-
- Sintassi
-
- head [opzioni]
- file
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- numero di linee da visualizzare partendo dall'inizio del
- file
-
-
-
-
-
- come sopra
-
-
-
-
-
- Esempi:
-
- Di default &man.head.1; mostra le prime 10 linee del file. Si
- possono visualizzare più (o meno) linee con l'opzione
- o
- , ad esempio, per
- visualizzare le prime 40 linee:
-
- &prompt.user; head -40 filename
-
- oppure
-
- &prompt.user; head -n 40 filename
-
-
-
- tail - mostra la fine di un file
-
- Il comando &man.tail.1; visualizza la fine di un file.
-
- Sintassi
-
- tail [opzioni]
- file
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- numero di linee da visualizzare, partendo dalla fine del
- file
-
-
-
-
-
- Esempi:
-
- Di default &man.tail.1; mostra le ultime 10 linee del file, ma si
- può specificare un numero differente di linee o di byte, o un
- differente punto di inizio all'interno del file. Per visualizzare le
- ultime 30 linee di un file, usare l'opzione
- :
-
- &prompt.user; tail -30 filename
-
-
-
Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/getting-started/chapter.xml
___________________________________________________________________
Deleted: svn:keywords
## -1 +0,0 ##
-FreeBSD=%H
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/sgml
\ No newline at end of property
Index: head/it_IT.ISO8859-15/books/unix-introduction/system-resource/chapter.xml
===================================================================
--- head/it_IT.ISO8859-15/books/unix-introduction/system-resource/chapter.xml (revision 52098)
+++ head/it_IT.ISO8859-15/books/unix-introduction/system-resource/chapter.xml (nonexistent)
@@ -1,1191 +0,0 @@
-
-
-
- Risorse di sistema e stampa
-
-
- Risorse di sistema
-
- Comandi per gestire le risorse di sistema.
-
-
- Comandi per le risorse di sistema
-
-
-
-
-
-
- Comando/Sintassi
-
- Cosa fa
-
-
-
-
-
- chsh (passwd -e/-s)
- username
- login_shell
-
- cambia la shell di login dell'utente (spesso solo attraverso
- il super-user)
-
-
-
- date
- [opzioni]
-
- visualizza data e ora corrente
-
-
-
- df [opzioni]
- [risorsa]
-
- riporta una sintesi dei blocchi del disco e degli inode
- liberi e usati
-
-
-
- du [opzioni]
- [directory o file]
-
- riporta la quantità di spazio di disco usato
-
-
-
- hostname/uname
-
- visualizza o setta (solamente super-user) il nome della
- macchina in uso
-
-
-
- kill [opzioni]
- [-SEGNALE]
- [pid#]
- [%job]
-
- manda un segnale al processo specificato dal numero di
- processo id (pid#) o dal numero di
- controllo del job (%n). Il segnale di
- default termina il processo
-
-
-
- man [opzioni]
- comando
-
- visualizza la pagina (man) del manuale
- relativa al comando specificato
-
-
-
- passwd
- [opzioni]
-
- setta o modifica la propria password
-
-
-
- ps
- [opzioni]
-
- mostra lo stato dei processi attivi
-
-
-
- script
- file
-
- salva tutto ciò che appare sullo schermo in un file
- fino a quando viene eseguito il comando
- exit
-
-
-
- stty
- [opzioni]
-
- setta o visualizza le opzioni del terminale di
- controllo
-
-
-
- whereis [opzioni]
- comando
-
- riporta le posizioni del file binario, del sorgente e della
- pagina man relative al comando specificato
-
-
-
- which
- comando
-
- riporta il percorso (path) del comando specificato o l'alias
- di shell in uso
-
-
-
- who oppure w
-
- riporta gli utenti loggati e i loro processi
- in esecuzione
-
-
-
-
-
-
- df - riepiloga i blocchi del disco e lo spazio usato
-
- Il comando &man.df.1; è usato per riportare il numero di
- blocchi del disco e di inode liberi e usati per ogni file system.
- Il formato dell'output e le valide opzioni sono molto specifiche dal
- sistema operativo e dalla versione del programma in uso.
-
- Sintassi
-
- df [opzioni]
- [risorsa]
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- solo il file system locale (SVR4)
-
-
-
-
-
- riporta in kilobyte (SVR4)
-
-
-
-
-
- Esempi:
-
- {Unix prompt 1} df
-Filesystem kbytes used avail capacity Mounted on
-
-/dev/sd0a 20895 19224 0 102% /
-/dev/sd0h 319055 131293 155857 46% /usr
-/dev/sd1g 637726 348809 225145 61% /usr/local
-/dev/sd1a 240111 165489 50611 77% /home/guardian
-peri:/usr/local/backup
- 1952573 976558 780758 56% /usr/local/backup
-peri:/home/peri 726884 391189 263007 60% /home/peri
-peri:/usr/spool/mail
- 192383 1081 172064 1% /var/spool/mail
-peri:/acs/peri/2
- 723934 521604 129937 80% /acs/peri/2
-
-
-
- du - mostra lo spazio del disco usato
-
- Il comando &man.du.1; riporta la quantità di spazio di disco
- usato per i file o per le directory specificate.
-
- Sintassi
-
- du [opzioni]
- [directory o file]
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- mostra l'uso del disco per ogni file, non solo per le
- sotto-directory
-
-
-
-
-
- mostra solo la somma totale
-
-
-
-
-
- riporta in kilobyte (SVR4)
-
-
-
-
-
- Esempi:
-
- {Unix prompt 3} du
- 1 ./.elm
- 1 ./Mail
- 1 ./News
-20 ./uc
-86 .
-
- {Unix prompt 4} du -a uc
-7 uc/Unixgrep.txt
-5 uc/editors.txt
-1 uc/.emacs
-1 uc/.exrc
-4 uc/telnet.ftp
-1 uc/uniq.tee.txt
-20 uc
-
-
-
- ps - mostra lo stato dei processi attivi
-
- Il comando &man.ps.1; è usato per mostrare i processi
- correntemente eseguiti sul sistema. Il formato dell'output e le
- valide opzioni dipendono molto dal sistema operativo e dalla versione
- del programma in uso.
-
- Sintassi
-
- ps [opzioni]
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- BSD
-
- SVR4
-
-
-
-
-
-
-
-
-
-
-
- tutti i processi di tutti gli utenti
-
-
-
-
-
-
-
- ambiente di esecuzione
-
-
-
-
-
-
-
- processi del gruppo amministrativo come
- well
-
-
-
-
-
-
-
- formato lungo
-
-
-
-
-
-
-
- relazione specifica di un utente
-
-
-
-
-
-
-
- anche i processi non eseguiti da terminali
-
-
-
-
-
-
-
- lista completa
-
-
-
-
-
-
-
- riporta i primi 132 caratteri per linea
-
-
-
-
-
-
- Poichè il comando &man.ps.1; è molto dipendente dal
- sistema, si raccomanda di consultare le pagine
- man del proprio sistema per i dettagli delle opzioni e per
- l'interpretazione dell'output di &man.ps.1;.
-
-
- Esempi:
-
- {Unix prompt 5} ps
-PID TT STAT TIME COMMAND
-15549 p0 IW 0:00 -tcsh (tcsh)
-15588 p0 IW 0:00 man nice
-15594 p0 IW 0:00 sh -c less /tmp/man15588
-15595 p0 IW 0:00 less /tmp/man15588
-15486 p1 S 0:00 -tcsh (tcsh)
-15599 p1 T 0:00 emacs Unixgrep.txt
-15600 p1 R 0:00 ps
-
-
-
- kill - termina un processo
-
- Il comando &man.kill.1; manda un segnale a un processo,
- generalmente per terminarlo.
-
- Sintassi
-
- kill [-SEGNALE]
- id-processo
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- visualizza i segnali disponibili per kill
-
-
-
-
-
- Esempi:
-
- {Unix prompt 9} kill -l
-HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM URG STOP
-TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALRM PROF WINCH LOST USR1 USR2
-
- Il segnale , anche specificato con
- (a causa della nona posizione assunta nella lista
- precedente), è il maggior segnale comunemente usato con
- &man.kill.1;. A differenza di altri segnali, questo, una volta captato,
- non può essere ignorato dal programma.
-
- {Unix prompt 10} kill -9 15599
-[1] + Killed emacs Unixgrep.txt
-
-
-
- who - mostra gli utenti attuali
-
- Il comando &man.who.1; riporta chi è correntemente
- loggato nel sistema.
-
- Sintassi
-
- who [am i]
-
- Esempi:
-
- beauty condron> who
-wmtell ttyp1 Apr 21 20:15 (apple.acs.ohio-s)
-fbwalk ttyp2 Apr 21 23:21 (worf.acs.ohio-st)
-stwang ttyp3 Apr 21 23:22 (127.99.25.8)
-david ttyp4 Apr 21 22:27 (slip1-61.acs.ohi)
-tgardner ttyp5 Apr 21 23:07 (picard.acs.ohio-)
-awallace ttyp6 Apr 21 23:00 (ts31-4.homenet.o)
-gtl27 ttyp7 Apr 21 23:24 (data.acs.ohio-st)
-ccchang ttyp8 Apr 21 23:32 (slip3-10.acs.ohi)
-condron ttypc Apr 21 23:38 (lcondron-mac.acs)
-dgildman ttype Apr 21 22:30 (slip3-36.acs.ohi)
-fcbetz ttyq2 Apr 21 21:12 (ts24-10.homenet.)
-
- beauty condron> who am i
-beauty!condron ttypc Apr 21 23:38 (lcondron-mac.acs)
-
-
-
- whereis - riporta le locazioni del programma
-
- Il comando &man.whereis.1; riporta le locazioni del file
- sorgente, di quello binario e del file delle pagine man associate al
- comando.
-
- Sintassi
-
- whereis [opzioni]
- comando
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- riporta solamente i file binari
-
-
-
-
-
- riporta solamente la sezione manuale
-
-
-
-
-
- riporta solamente i file sorgenti
-
-
-
-
-
- Esempi:
-
- brigadier: condron [69]> whereis Mail
-Mail: /usr/ucb/Mail /usr/lib/Mail.help /usr/lib/Mail.rc /usr/man/man1/Mail.1
-
- brigadier: condron [70]> whereis -b Mail
-Mail: /usr/ucb/Mail /usr/lib/Mail.help /usr/lib/Mail.rc
-
- brigadier: condron [71]> whereis -m Mail
-Mail: /usr/man/man1/Mail.1
-
-
-
- which - riporta il comando trovato
-
- Il comando &man.which.1; riporta il nome del file che sarà
- eseguito quando il comando specificato viene invocato. Questo
- può essere un path name assoluto o il primo alias trovato nel
- proprio path.
-
- Sintassi
-
- which comando
-
- Esempi:
-
- brigadier: condron [73]> which Mail
-/usr/ucb/Mail
-
-
-
- hostname/uname - nome della macchina
-
- Il comando &man.hostname.1; (uname -u su SysV)
- riporta il nome host della macchina nella quale l'utente è
- loggato, esempio:
-
- brigadier: condron [91]> hostname
-brigadier
-
- &man.uname.1; ha opzioni aggiuntive per visualizzare informazioni
- circa l'hardware del sistema e la versione del software.
-
-
-
- script - memorizza la propria schermata di I/O
-
- Il comando &man.script.1; crea una documentazione della propria
- sessione di I/O. Usando il comando &man.script.1; si possono catturare
- tutti i dati trasmessi da e per il proprio terminale visuale fino
- all'uscita (con exit) del programma stesso.
- Può essere utile durante un processo di debugging, per
- documentare le azioni che si stanno sperimentando o per avere una
- copia stampabile per una attenta lettura successiva.
-
- Sintassi
-
- script [-a]
- [file] <...> exit
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- appende l'output al file
-
-
-
-
-
- Di default, typescript è il nome del
- file usato dal comando &man.script.1;.
-
- Ci si deve ricordare di digitare exit per
- terminare la propria sessione script e chiudere così il file
- typescript.
-
- Esempi:
-
- beauty condron> script
-Script started, file is typescript
-
- beauty condron> ps
-PID TT STAT TIME COMMAND
-23323 p8 S 0:00 -h -i (tcsh)
-23327 p8 R 0:00 ps
-18706 pa S 0:00 -tcsh (tcsh)
-23315 pa T 0:00 emacs
-23321 pa S 0:00 script
-23322 pa S 0:00 script
-3400 pb I 0:00 -tcsh (tcsh)
-
- beauty condron> kill -9 23315
-
- beauty condron> date
-Mon Apr 22 22:29:44 EDT 1996
-
- beauty condron> exit
-exit
-Script done, file is typescript
-[1] + Killed emacs
-
- beauty condron> cat typescript
-Script started on Mon Apr 22 22:28:36 1996
-
-beauty condron>ps
-PID TT STAT TIME COMMAND
-23323 p8 S 0:00 -h -i (tcsh)
-23327 p8 R 0:00 ps
-18706 pa S 0:00 -tcsh (tcsh)
-23315 pa T 0:00 emacs
-23321 pa S 0:00 script
-23322 pa S 0:00 script
-3400 pb I 0:00 -tcsh (tcsh)
-
-beauty condron>kill -9 23315
-
-beauty condron>date
-Mon Apr 22 22:29:44 EDT 1996
-
-beauty condron>exit
-exit
-
-script done on Mon Apr 22 22:30:02 1996
-
- beauty condron>
-
-
-
- date - data e ora corrente
-
- Il comando &man.date.1; mostra la data e l'ora corrente.
- Un super-user può modificare la data e l'ora.
-
- Sintassi
-
- date [opzioni]
- [+formato]
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- usa Universal Time (o Greenwich Mean Time)
-
-
-
-
-
- specifica il formato di output
-
-
-
-
-
- abbreviazione giorni, da Sabato a Domenica
-
-
-
-
-
- abbreviazione mesi, da Gennaio a Dicembre
-
-
-
-
-
- giorno dell'anno, da 001 a 366
-
-
-
-
-
- new-line
-
-
-
-
-
- tab
-
-
-
-
-
- ultime due cifre dell'anno, da 00 a 99
-
-
-
-
-
- formato data MM/DD/YY
-
-
-
-
-
- ora, da 00 a 23
-
-
-
-
-
- minuti, da 00 a 59
-
-
-
-
-
- secondi, da 00 a 59
-
-
-
-
-
- formato ora HH:MM:SS
-
-
-
-
-
- Esempi:
-
- beauty condron> date
-Mon Jun 10 09:01:05 EDT 1996
-
- beauty condron> date -u
-Mon Jun 10 13:01:33 GMT 1996
-
- beauty condron> date +%a%t%D
-Mon 06/10/96
-
- beauty condron> date '+%y:%j'
-96:162
-
-
-
-
- Comandi di stampa
-
-
- Comandi di stampa
-
-
-
-
-
-
- Comando/Sintassi
-
- Cosa fa
-
-
-
-
-
- lpq (lpstat)
- [opzioni]
-
- mostra lo stato dei job (lavori) di stampa
-
-
-
- lpr (lp)
- [opzioni]
- file
-
- stampa con una stampante specifica
-
-
-
- lprm (cancel)
- [opzioni]
-
- rimuove un job di stampa dalla coda di stampa
-
-
-
- pr [opzioni]
- [file]
-
- filtra il file e lo stampa sul terminale
-
-
-
-
-
- I comandi di stampa permettono di stampare file sullo standard output
- (&man.pr.1;) o attraverso una stampante (&man.lp.1; e &man.lpr.1;) fino a
- filtrare l'output. I comandi di stampa di BSD e
- SysV usano diversi nomi e diverse opzioni per
- produrre lo stesso risultato: &man.lpr.1;, &man.lprm.1; e &man.lpq.1;
- contro &man.lp.1;, cancel e lpstat
- rispettivamente per BSD e SysV, sottopongono, cancellano e verificano lo
- stato di un job (lavoro) di stampa.
-
-
- lp/lpr - sottopone un job di stampa
-
- Il comando &man.lp.1; o &man.lpr.1; sottopone il file specificato o
- lo standard input al demone di stampa per essere stampato. Ad ogni job
- viene assegnato un unico id di richiesta che può essere usato
- in seguito per verificare o cancellare il job mentre è nella
- coda di stampa.
-
- Sintassi
-
- lp [opzioni]
- filename
-
- lpr [opzioni]
- filename
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- lp
-
- lpr
-
- funzione
-
-
-
-
-
-
-
-
-
- numero di copie
-
-
-
-
-
-
-
- titolo del job
-
-
-
-
-
-
-
- nome della stampante
-
-
-
-
-
- (default)
-
- copia il file in coda prima di stamparlo
-
-
-
- (default)
-
-
-
- non copia il file in coda prima di stamparlo
-
-
-
-
-
-
-
- opzioni addizionali, esempio
-
-
-
-
-
-
- I file che iniziano con i simboli %! sono
- considerati file contenenti comandi PostScript.
-
- Esempi:
-
- Per stampare il file ssh.ps:
-
- &prompt.user; lp ssh.ps
-request id is lp-153 (1 file(s))
-
- Questo sottopone il job nella coda della stampante di default,
- lp, con l'id di richiesta
- lp-153.
-
-
-
- lpstat/lpq - verifica lo stato di un job di stampa
-
- Si può verificare lo stato del proprio job di stampa con il
- comando lpstat o &man.lpq.1;.
-
- Sintassi
-
- lpstat
- [opzioni]
-
- lpq [opzioni]
- [job#]
- [username]
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
-
-
- lpstat
-
- lpq
-
- funzione
-
-
-
-
-
-
-
- (lp di default)
-
- lista dei sistemi destinazione di default
-
-
-
-
-
-
-
- riassume lo stato di stampa
-
-
-
-
-
-
-
- stampa tutte le informazioni dello stato di stampa
-
-
-
-
-
-
-
- lista dell'utente specificato
-
-
-
-
-
-
-
- elenca le stampanti conosciute dal sistema
-
-
-
-
-
-
-
- stampa lo stato della stampante specificata
-
-
-
-
-
- Esempi:
-
- &prompt.user; lpstat
-lp-153 frank 208068 Apr 29 15:14 on lp
-
-
-
- cancel/lprm - cancella un job di stampa
-
- Alcuni utenti possono cancellare solamente i loro job di
- stampa.
-
- Sintassi
-
- cancel [id-richiesta]
- [stampante]
-
- lprm [opzioni]
- [job#]
- [username]
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
-
-
- cancel
-
- lprm
-
- funzione
-
-
-
-
-
-
-
-
-
- specifica la stampante
-
-
-
-
-
-
-
- tutti i job dell'utente
-
-
-
-
-
-
-
- lista dell'utente
-
-
-
-
-
- Esempi:
-
- Per cancellare il job sottomesso in precedenza:
-
- &prompt.user; cancel lp-153
-
-
-
- pr - prepara file per la stampa
-
- Il comando &man.pr.1; stampa l'intestazione e le informazioni
- traccia che circoscrivono il file formattato. Si può specificare
- il numero di pagine da stampare, le linee per pagina, le colonne, le
- linee bianche, si può specificare la larghezza di pagina,
- l'intestazione e le informazioni traccia e in che modo trattare il
- carattere tab.
-
- Sintassi
-
- pr [opzioni]
- file
-
- Opzioni generali
-
-
-
-
-
-
-
-
-
- inizia a stampare al numero di pagina specificato
-
-
-
-
-
- numero di colonne
-
-
-
-
-
- modifica l'opzione -colonne per
- riempire le colonne nell'ordine round-robin
-
-
-
-
-
- doppio spazio
-
-
-
-
-
- spazio tab
-
-
-
-
-
- intestazione per ogni pagina
-
-
-
-
-
- linee per pagina
-
-
-
-
-
- non stampa l'intestazione e la traccia per ogni
- pagina
-
-
-
-
-
- larghezza di pagina
-
-
-
-
-
- Esempi:
-
- Il file contenente la lista di libri di P. G. Wodehouse Lord
- Emsworth dovrebbe essere stampato con 14 linee per pagina (incluse 5 di
- intestazione e 5 (vuote) linee traccia), dove l'opzione
- specifica in che modo convertire i tab:
-
- &prompt.user; pr -l 14 -e42 wodehouse
-
-
-
-
-
-Apr 29 11:11 1996 wodehouse_emsworth_books Page 1
-
-
-
-
-Something Fresh [1915] Uncle Dynamite [1948]
-Leave it to Psmith [1923] Pigs Have Wings [1952]
-Summer Lightning [1929] Cocktail Time [1958]
-Heavy Weather [1933] Service with a Smile [1961]
-
-
-
-
-
-Apr 29 11:11 1996 wodehouse_emsworth_books Page 2
-
-
-
-
-Blandings Castle and Elsewhere [1935] Galahad at Blandings [1965]
-Uncle Fred in the Springtime [1939] A Pelican at Blandings [1969]
-Full Moon [1947] Sunset at Blandings [1977]
-
-
-
Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/system-resource/chapter.xml
___________________________________________________________________
Deleted: svn:keywords
## -1 +0,0 ##
-FreeBSD=%H
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/sgml
\ No newline at end of property
Index: head/it_IT.ISO8859-15/books/unix-introduction/Makefile
===================================================================
--- head/it_IT.ISO8859-15/books/unix-introduction/Makefile (revision 52098)
+++ head/it_IT.ISO8859-15/books/unix-introduction/Makefile (nonexistent)
@@ -1,43 +0,0 @@
-#
-# $FreeBSD$
-#
-# Crea l'Introduzione a Unix.
-#
-
-MAINTAINER= ale@FreeBSD.org
-
-DOC?= book
-
-FORMATS?= html-split
-
-INSTALL_COMPRESSED?= gz
-INSTALL_ONLY_COMPRESSED?=
-
-#
-# SRCS lista i singoli files XML che compongono il documento. Modifiche
-# a qualunque di questi files obbligano la ricreazione
-#
-
-# Contenuto XML
-SRCS = book.xml
-SRCS+= bibliography/chapter.xml
-SRCS+= command-summary/chapter.xml
-SRCS+= commands/chapter.xml
-SRCS+= editors/chapter.xml
-SRCS+= getting-started/chapter.xml
-SRCS+= glossary/chapter.xml
-SRCS+= history/chapter.xml
-SRCS+= preface/chapter.xml
-SRCS+= shell-programming/chapter.xml
-SRCS+= shells/chapter.xml
-SRCS+= special-features/chapter.xml
-SRCS+= structure/chapter.xml
-SRCS+= system-resource/chapter.xml
-SRCS+= text-processing/chapter.xml
-
-# Entities
-SRCS+= chapters.ent
-
-DOC_PREFIX?= ${.CURDIR}/../../..
-
-.include "${DOC_PREFIX}/share/mk/doc.project.mk"
Property changes on: head/it_IT.ISO8859-15/books/unix-introduction/Makefile
___________________________________________________________________
Deleted: svn:keywords
## -1 +0,0 ##
-FreeBSD=%H
\ No newline at end of property
Index: head/it_IT.ISO8859-15/books/Makefile
===================================================================
--- head/it_IT.ISO8859-15/books/Makefile (revision 52098)
+++ head/it_IT.ISO8859-15/books/Makefile (revision 52099)
@@ -1,10 +1,9 @@
# $FreeBSD$
SUBDIR = handbook
-SUBDIR+= unix-introduction
ROOT_SYMLINKS= handbook
DOC_PREFIX?= ${.CURDIR}/../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"