In pratica un insieme di questi 2 comandi
Codice: Seleziona tutto
comando &> file
comando 1> /dev/null
Moderatore: Staff
Codice: Seleziona tutto
comando &> file
comando 1> /dev/null
Codice: Seleziona tutto
comando 2>&1 1> file | tee -a file
Codice: Seleziona tutto
$> ls . /root/ 2>&1 1>/tmp/casa | tee -a /tmp/casa
ls: impossibile aprire la directory /root/: Permesso negato
$> cat /tmp/casa
.:
totale 33K
[cut]...
ls: impossibile aprire la directory /root/: Permesso negato
così funzionaspina ha scritto:Magari prova a mettere un '1>>file'. Forse se viene eseguito prima tee, poi il suo output viene eliminato dall'output di '1>'. Potrebbe essere una questione di chi scrive prima nel file tra i due comandi.
Emanuele
E` sbagliato l'ordine, commando > file 2&1spina ha scritto:Premesso che io ci ho sempre capito poco del redirect e della duplicazione dei puntatori a file della bash. Sembra che questo comando funzioni:speriamo che qualcuno ci chiarisca meglio le idee :DCodice: Seleziona tutto
comando 2>&1 1> file | tee -a file
Emanuele
Codice: Seleziona tutto
Note that the order of redirections is significant. For example, the command
ls > dirlist 2>&1
directs both standard output and standard error to the file dirlist, while the command
ls 2>&1 > dirlist
directs only the standard output to file dirlist, because the standard error was duplicated as standard output before the standard output was redirected to dirlist.
In un comando che deve raccogliere allo stesso tempo stdout e stderr,spina ha scritto: Non capisco perché dici che è sbagliato l'ordine.
Note that the order of redirections is significant. For example, the commandspina ha scritto:Il pezzo di man che hai postato casca a pennello, io quel pezzo non l'ho mai capito.
Corrado, non capisco, quale variante scrive 2 volte nel file?conraid ha scritto:mario, come dici tu però non mostra a video niente, e scrive 2 volte nel file
Codice: Seleziona tutto
# /root/requiredbuilder -v -p -n -c aMule-2.2.6-i486-2_SBo.tgz 2>&1 1>> prova.tmp | tee -a prova.tmp
ldd /tmp/tmp.9HNmnG/usr/bin/amule: libbfd-2.20.51.0.11.20100810.so => not found
# cat prova.tmp
ldd /tmp/tmp.9HNmnG/usr/bin/amule: libbfd-2.20.51.0.11.20100810.so => not found
atk >= 1.32.0-i486-1
cairo >= 1.10.2-i486-2
cxxlibs >= 6.0.14-i486-1 | gcc-g++ >= 4.5.2-i486-2
expat >= 2.0.1-i486-2
fontconfig >= 2.8.0-i486-1
freetype >= 2.4.4-i486-1
gcc >= 4.5.2-i486-2
gdk-pixbuf2 >= 2.23.3-i486-1
glib2 >= 2.28.6-i486-1
glibc-solibs >= 2.13-i486-4
gtk+2 >= 2.24.4-i486-1
libICE >= 1.0.7-i486-1
libSM >= 1.2.0-i486-1
libX11 >= 1.4.3-i486-2
libXau >= 1.0.6-i486-1
libXcomposite >= 0.4.3-i486-1
libXcursor >= 1.1.11-i486-1
libXdamage >= 1.1.3-i486-1
libXdmcp >= 1.1.0-i486-1
libXext >= 1.2.0-i486-1
libXfixes >= 5.0-i486-1
libXi >= 1.4.2-i486-1
libXinerama >= 1.1.1-i486-1
libXrandr >= 1.3.1-i486-1
libXrender >= 0.9.6-i486-1
libXxf86vm >= 1.1.1-i486-1
libjpeg >= v8a-i486-1
libpng >= 1.4.5-i486-1
libtiff >= 3.9.4-i486-2
libxcb >= 1.7-i486-1
pango >= 1.28.4-i486-1
perl >= 5.12.3-i486-1
pixman >= 0.20.2-i486-1
util-linux >= 2.19-i486-1
wxgtk >= 2.8.12-i686-1cf
zlib >= 1.2.5-i486-4
# rm prova.tmp
# /root/requiredbuilder -v -p -n -c aMule-2.2.6-i486-2_SBo.tgz 1>> prova.tmp 2>&1 | tee -a prova.tmp
# cat prova.tmp
ldd /tmp/tmp.sxowP9/usr/bin/amule: libbfd-2.20.51.0.11.20100810.so => not found
atk >= 1.32.0-i486-1
cairo >= 1.10.2-i486-2
cxxlibs >= 6.0.14-i486-1 | gcc-g++ >= 4.5.2-i486-2
expat >= 2.0.1-i486-2
fontconfig >= 2.8.0-i486-1
freetype >= 2.4.4-i486-1
gcc >= 4.5.2-i486-2
gdk-pixbuf2 >= 2.23.3-i486-1
glib2 >= 2.28.6-i486-1
glibc-solibs >= 2.13-i486-4
gtk+2 >= 2.24.4-i486-1
libICE >= 1.0.7-i486-1
libSM >= 1.2.0-i486-1
libX11 >= 1.4.3-i486-2
libXau >= 1.0.6-i486-1
libXcomposite >= 0.4.3-i486-1
libXcursor >= 1.1.11-i486-1
libXdamage >= 1.1.3-i486-1
libXdmcp >= 1.1.0-i486-1
libXext >= 1.2.0-i486-1
libXfixes >= 5.0-i486-1
libXi >= 1.4.2-i486-1
libXinerama >= 1.1.1-i486-1
libXrandr >= 1.3.1-i486-1
libXrender >= 0.9.6-i486-1
libXxf86vm >= 1.1.1-i486-1
libjpeg >= v8a-i486-1
libpng >= 1.4.5-i486-1
libtiff >= 3.9.4-i486-2
libxcb >= 1.7-i486-1
pango >= 1.28.4-i486-1
perl >= 5.12.3-i486-1
pixman >= 0.20.2-i486-1
util-linux >= 2.19-i486-1
wxgtk >= 2.8.12-i686-1cf
zlib >= 1.2.5-i486-4
no, l'ordine è giusto: se apri il file con quel fd prima di duplicarlo, anche il fd duplicato sarà associato a quel file, con il risultato che sia stdout che stderr finiranno nel file, mentre il risultato voluto è infilare stdout nel file e mandare stderr sul terminale (e successivamente in pipe a tee)Mario Vanoni ha scritto:E` sbagliato l'ordine, commando > file 2&1spina ha scritto:Premesso che io ci ho sempre capito poco del redirect e della duplicazione dei puntatori a file della bash. Sembra che questo comando funzioni:speriamo che qualcuno ci chiarisca meglio le ideeCodice: Seleziona tutto
comando 2>&1 1> file | tee -a file
Emanuele