Sophie

Sophie

distrib > Mandriva > 9.1 > i586 > by-pkgid > f1098342ec4a2b28475e34123ce17201 > files > 74

howto-html-it-9.1-0.5mdk.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
 <TITLE>BASH Programming  - Introduction HOWTO: Tutto sulla redirezione</TITLE>
 <LINK HREF="Bash-Prog-Intro-HOWTO-4.html" REL=next>
 <LINK HREF="Bash-Prog-Intro-HOWTO-2.html" REL=previous>
 <LINK HREF="Bash-Prog-Intro-HOWTO.html#toc3" REL=contents>
</HEAD>
<BODY>
<A HREF="Bash-Prog-Intro-HOWTO-4.html">Avanti</A>
<A HREF="Bash-Prog-Intro-HOWTO-2.html">Indietro</A>
<A HREF="Bash-Prog-Intro-HOWTO.html#toc3">Indice</A>
<HR>
<H2><A NAME="s3">3. Tutto sulla redirezione</A>        </H2>

<H2><A NAME="ss3.1">3.1 Teoria e riferimento veloce</A>
        </H2>

<P> Esistono 3 descrittori di file: stdin, stdout e stderr (std=standard).
<P>
<P>Basilarmente tu puoi:
<OL>
<LI> redirigere stdout verso un file</LI>
<LI> redirigere stderr verso un file</LI>
<LI> redirigere stdout verso stderr </LI>
<LI> redirigere stderr verso stdout </LI>
<LI> redirigere stderr e stdout verso un file </LI>
<LI> redirigere stderr e stdout verso stdout </LI>
<LI> redirigere stderr e stdout verso stderr</LI>
</OL>

1 'rappresenta' stdout e 2 stderr.
<P> Una piccola nota per vedere queste cose: con il comando less puoi 
visualizzare sia stdout (che rester&agrave; nel buffer) che lo stderr che verr&agrave;
stampato sullo schermo, ma eliminato non appena tenterai di 'sfogliare' il 
buffer. 
<H2><A NAME="ss3.2">3.2 Esempio: stdout verso file     </A>
</H2>

<P> Questo far&agrave; s&igrave; che l'output di un programma venga scritto su un file.
<BLOCKQUOTE><CODE>
<PRE>
        ls -l > ls-l.txt
        
</PRE>
</CODE></BLOCKQUOTE>

Qui, un file chiamato 'ls-l.txt' verr&agrave; creato e conterr&agrave; ci&ograve; che vedresti
sullo schermo   digitando il comando 'ls -l' ed eseguendolo.
<H2><A NAME="ss3.3">3.3 Esempio: stderr verso file     </A>
</H2>

<P> Questo far&agrave; s&igrave; che l'output di stderr di un programma venga scritto su un
file.
<BLOCKQUOTE><CODE>
<PRE>
        grep da * 2> grep-errors.txt
        
</PRE>
</CODE></BLOCKQUOTE>

Qui, un file chiamato 'grep-errors.txt' sar&agrave; creato e conterr&agrave; ci&ograve; che
vedresti come porzione di stderr dell'output del comando 'grep da *'.
<H2><A NAME="ss3.4">3.4 Esempio: stdout verso stderr</A>
        </H2>

<P> Questo far&agrave; s&igrave; che l'output di stderr di un programma venga scritto sul
medesimo filedescriptor di stdout.
<BLOCKQUOTE><CODE>
<PRE>
        grep da * 1>&amp;2 
        
</PRE>
</CODE></BLOCKQUOTE>

Qui, la porzione di stdout del comando &egrave; inviata a stderr, puoi accorgertene 
in diversi modi.
<H2><A NAME="ss3.5">3.5 Esempio: stderr verso stdout   </A>
</H2>

<P> Questo far&agrave; s&igrave; che l'output di stderr di un programma venga scritto sul
medesimo filedescriptor di stdout.
<BLOCKQUOTE><CODE>
<PRE>
        grep * 2>&amp;1
        
</PRE>
</CODE></BLOCKQUOTE>

Qui, la porzione di stderr del comando &egrave; inviata a stdout, se fai una pipe 
verso less, noterai che righe le quali normalmente 'scomparirebbero' (poich&eacute;
sono scritte su stderr) ora vengono tenute (perch&eacute; si trovano su stdout). 
<H2><A NAME="ss3.6">3.6 Esempio: stderr e stdout verso file    </A>
</H2>

<P> Questo porter&agrave; ogni output di un programma su un file. Pu&ograve; risultare a
volte utile per cron, se vuoi che un comando passi in assoluto silenzio.  
<BLOCKQUOTE><CODE>
<PRE>
        rm -f $(find / -name core) &amp;> /dev/null 
        
</PRE>
</CODE></BLOCKQUOTE>

Questo (pensando a cron) eliminer&agrave; ogni file chiamato 'core' in qualsiasi
directory. Osserva che dovresti essere piuttosto sicuro di cosa sta facendo un
comando, prima di eliminarne ogni output. 
<HR>
<A HREF="Bash-Prog-Intro-HOWTO-4.html">Avanti</A>
<A HREF="Bash-Prog-Intro-HOWTO-2.html">Indietro</A>
<A HREF="Bash-Prog-Intro-HOWTO.html#toc3">Indice</A>
</BODY>
</HTML>