Réponses:
L'opérateur> redirige généralement la sortie vers un fichier, mais il peut s'agir d'un périphérique. Vous pouvez également utiliser >> pour ajouter.
Si vous ne spécifiez pas de nombre, le flux de sortie standard est utilisé, mais vous pouvez également rediriger les erreurs.
> file
redirections stdout vers fichier
1> file
redirections stdout vers fichier
2> file
redirections stderr vers fichier
&> file
redirections stdout et stderr vers fichier
/dev/null
est le périphérique nul qui prend toutes les entrées que vous voulez et les jette. Il peut être utilisé pour supprimer toute sortie.
2>&1
une syntaxe plus ancienne, de sorte que &>
je n'aurais pas travaillé il y a des années, mais les deux sont équivalents.
En bref, il redirige stderr
(fd 2) vers le trou noir (supprime la sortie de la commande).
Quelques cas d'utilisation plus courants pour la redirection:
command > /dev/null 2>&1 &
Exécuter command
en arrière-plan, jeter stdout
etstderr
command >> /path/to/log 2>&1 &
Exécutez command
et ajoutez stdout et stderr à un fichier journal.
Dans Bash 4+, une forme plus courte (mais moins lisible) est fonctionnelle
command &>> /path/to/log
> /dev/null 2>&1
au lieu de &> /dev/null
?
&>
est nouveau dans Bash 4, le premier n’est que la méthode traditionnelle, j’y suis tellement habitué (facile à retenir).
&> /dev/null
pourrait ne pas fonctionner dans certains shells mais> / dev / null 2> & 1 fonctionnerait dans tous les shells compatibles POSIX.
fn>target
, où fn
est un numéro de dossier (0-2 en général, certains programmes définissent plusieurs numéros) et target
est généralement un nom de fichier , mais ici , il est un autre filenumber - préfixé avec ce &
qui est le syntaxe pour "Je veux un numéro de fichier au lieu d'un nom de fichier".
/dev/null
est traité comme un trou noir sous Linux / Unix, vous pouvez donc y insérer n'importe quoi, mais vous ne pourrez pas le récupérer /dev/null
.
En outre, 2>
signifie que vous redirigez (c.-à-d >
. Le stderr (c.-à-d. 2
) Dans le trou noir (c.-à-d. /dev/null
)
Votre commande est:
grep -i 'abc' content 2>/dev/null
N'essayez pas de terminer par une autre barre oblique comme celle-ci 2>/dev/null/
(ce n'est pas un répertoire).
grep -i 'abc' content générera une sortie affichée sur votre console, y compris les erreurs éventuelles.
La spécification 2>/dev/null
filtrera les erreurs afin qu'elles ne soient pas sorties sur votre console.
Plus en détail: 2 représente le descripteur d'erreur, c'est-à-dire l'endroit où les erreurs sont écrites. Par défaut, ils sont imprimés sur la console.
\>
redirige la sortie vers l'endroit spécifié, dans ce cas /dev/null
/dev/null
est le périphérique Linux standard où vous envoyez la sortie que vous souhaitez ignorer.
> /dev/null 2>&1
et&> /dev/null