J'aimerais une brève explication de la ligne de commande suivante:
grep -i 'abc' content 2>/dev/null
command-line
bash
redirect
stdout
Naïve
la source
la source
> /dev/null 2>&1
et&> /dev/null
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:
Exécuter
command
en arrière-plan, jeterstdout
etstderr
Exécutez
command
et ajoutez stdout et stderr à un fichier journal.Dans Bash 4+, une forme plus courte (mais moins lisible) est fonctionnelle
la source
> /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) ettarget
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:
N'essayez pas de terminer par une autre barre oblique comme celle-ci
2>/dev/null/
(ce n'est pas un répertoire).la source
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.la source