# [BASH] redirection avec affichage (resolu)

## croquignol

Lorsque j'execute une commande, je souhaite recuperer l'affichage a l'ecran dans un fichier texte afin de le consulter plus tard. Aussi je redirige la sortie standard (1) dans un fichier ecran.txt et la sortie standard d'erreur (2) vers le fichier erreur.txt. La syntaxe utilisee est la suivante :

```
commande  1>ecran.txt  2>erreur.txt
```

Le probleme est que l'affichage a l'ecran que l'on aurait obtenu avec la commande seule ne se fait plus.

1) Comment modifier cette syntaxe afin de rediriger 1 et 2 vers les fichiers respectifs tout en conservant l'affichage a l'ecran ?Last edited by croquignol on Thu Oct 27, 2005 11:03 am; edited 1 time in total

----------

## Starch

de tête je crois que ce n'est pas possible ou très fin.

----------

## naerex

il y a bien la commande tee

```
command | tee fichier.txt
```

Mais ça ne redirigera que stdout

----------

## xaviermiller

et 

```
command | tee fichier.txt 2| tee erreurs.txt
```

 :Question: 

----------

## netfab

Au cas où, si tu ne trouves pas de meilleure solution :

```

commande 1>ecran.txt 2> erreur.txt | cat ecran.txt

```

Mais, attendons les pros du bash  :Very Happy: 

----------

## bdz

Et ca?

```
commande 2>&1 | tee fichier.txt

```

Ca redirige la sortie d'erreur vers la sortie standard et tee envoi tout ca dans un fichier et a l'écran.

Inconvenient: erreur et standard sont dans le même fichier (mais ca peut être un avantage en fonction de ce qu'on veut faire)

----------

## naerex

Je crois que c'est ça, mais je n'ai pas de prog pour le tester, mon fichier erreur reste vide.

```
cmd | tee ecran.txt 2> erreur.txt
```

----------

## bdz

 *naerex wrote:*   

> Je crois que c'est ça, mais je n'ai pas de prog pour le tester, mon fichier erreur reste vide.
> 
> ```
> cmd | tee ecran.txt 2> erreur.txt
> ```
> ...

 Là c'est la sortie d'erreur de tee que tu redirige vers un fichier.

Tu peux tester avec cette commande:

```
ls Fichier.Qui.N.Existe.Pas
```

qui provoque une erreur

----------

## naerex

exact bdz je redirige stderr de tee, il nous a posé une sacré colle là le croquignol  :Smile: 

----------

## bdz

Si ca ne le dérange pas d'avoir tout dans un seul fichier la commande de mon post un peu plus haut fonctionne, je l'utilise régulièrement.

Après pour avoir sortie standard et sortie d'erreur dans deux fichiers mais les deux a l'écran comme avec la commande normale ca doit être plus subtil.

----------

## boozo

'alute

regarde la commande bash "script"  devrait faire ton bonheur je pense  :Wink: 

----------

## Starch

Je persiste à penser que ce n'est pas possible en bash.

Par contre en perl...

```

man IPC::Open3

```

----------

## boozo

 *Starch wrote:*   

> Je persiste à penser que ce n'est pas possible en bash

 

heu... ai-je bien compris...

```
script -a -c <command> <file.out>

more <file.out>
```

cqvf non ?

----------

## bdz

 *Starch wrote:*   

> Je persiste à penser que ce n'est pas possible en bash.]

 

Rien n'est impossible:

```
b12@quasar ~ $ (ls /home ca.existe.pas | tee std.txt) 3>&1 1>&2 2>&3 3>&- | tee err.txt

ls: ca.existe.pas: No such file or directory

/home:

b12

b12@quasar ~ $ cat std.txt

/home:

b12

b12@quasar ~ $ cat err.txt

ls: ca.existe.pas: No such file or directory
```

 :Wink: 

----------

## boozo

mais 5 process et 3 descripteurs  :Mr. Green: 

----------

## Starch

au temps pour moi alors

----------

## nemo13

Bonsoir,

en tant que Jeune dans le métier, j'utilise un truc tout simple avec Xterm

[CTRL]+ (bouton gauche de la souris  ) et je "clique" sur Log to File

ce qui me donne dans ~ un fichier xterm.date.heure qu'il me reste à éplucher.

voili-voila

----------

## boozo

très juste mais si tu utilises autre chose qu'xterm ? ... script marche partout   :Wink: 

----------

## bdz

 *boozo wrote:*   

> mais 5 process et 3 descripteurs 

 

 :Laughing:   On doit pouvoir faire encore pire   :Laughing: 

----------

## croquignol

Merci pour toutes ces reponses. La reponse de bdz est celle que je cherchais. En surfant, j'ai trouve le site http://www.cpqlinux.com/redirect.html qui donne un exemple.

----------

