Quelle est la fonction de & combiné avec> bash?

Réponses:

3

Ils sont tous deux connectés à la redirection E / S, comme expliqué ici .

Dans le cas de &>, cela redirige la sortie standard (stdout) et la sortie d'erreur standard (stderr) vers un fichier. Par exemple, redirigeons la sortie de date vers un fichier comme celui-ci:

date &> foo.txt

Cela créerait ou écraserait un fichier portant le nom foo.txtde la sortie date. Et le contenu de ce fichier ressemblerait à ceci:

Sun Oct  4 22:37:58 EDT 2015

Mais dans le cas de &>>cela, la sortie standard (stdout) et la sortie d'erreur standard (stderr) sont redirigées vers un fichier. Mais le >>indique que le fichier désigné doit être ajouté et non écrasé s'il existe déjà.

Donc, si j'ai exécuté cette commande plusieurs fois de suite:

date &> foo.txt

Tout foo.txtaurait jamais été la sortie de la dernière fois que cette commande a été exécutée puisque l'unique >indique que le contenu du fichier serait écrasé à chaque exécution de la commande.

Mais si je lance cette commande >>plusieurs fois de suite:

date &>> foo.txt

La foo.txtsortie de ce fichier serait dateajoutée comme suit:

Sun Oct  4 22:37:58 EDT 2015
Sun Oct  4 22:38:06 EDT 2015
Sun Oct  4 22:38:13 EDT 2015
Sun Oct  4 22:38:15 EDT 2015
Sun Oct  4 22:38:16 EDT 2015

Notez simplement que &>>cela ne semble pas fonctionner dans Bash 3.x, mais fonctionne comme prévu dans Bash 4.x.

JakeGould
la source
0

Considérons une commande appelée cmd:

cmd &>filename

Ce qui précède envoie à la fois la sortie standard de la commande et son erreur standard filename, en écrasant tout ce qui se trouvait auparavant dans ce fichier. Cela équivaut à:

cmd >filename 2>&1

Le &>>formulaire est très similaire:

cmd &>>filename

Ceci ajoute les commandes stdout et stderr de cmd à tout ce qui était déjà dans le fichier filename. Cela équivaut à:

cmd >>filename 2>&1

Vous pouvez en savoir plus à ce sujet dans man bash.

John1024
la source