<!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à nel buffer) che lo stderr che verrà 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à sì 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à creato e conterrà ciò 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à sì 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à creato e conterrà ciò 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à sì che l'output di stderr di un programma venga scritto sul medesimo filedescriptor di stdout. <BLOCKQUOTE><CODE> <PRE> grep da * 1>&2 </PRE> </CODE></BLOCKQUOTE> Qui, la porzione di stdout del comando è inviata a stderr, puoi accorgertene in diversi modi. <H2><A NAME="ss3.5">3.5 Esempio: stderr verso stdout </A> </H2> <P> Questo farà sì che l'output di stderr di un programma venga scritto sul medesimo filedescriptor di stdout. <BLOCKQUOTE><CODE> <PRE> grep * 2>&1 </PRE> </CODE></BLOCKQUOTE> Qui, la porzione di stderr del comando è inviata a stdout, se fai una pipe verso less, noterai che righe le quali normalmente 'scomparirebbero' (poiché sono scritte su stderr) ora vengono tenute (perché si trovano su stdout). <H2><A NAME="ss3.6">3.6 Esempio: stderr e stdout verso file </A> </H2> <P> Questo porterà ogni output di un programma su un file. Può risultare a volte utile per cron, se vuoi che un comando passi in assoluto silenzio. <BLOCKQUOTE><CODE> <PRE> rm -f $(find / -name core) &> /dev/null </PRE> </CODE></BLOCKQUOTE> Questo (pensando a cron) eliminerà 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>