J'aimerais une brève explication de la ligne de commande suivante:
grep -i 'abc' content 2>/dev/null
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
redirige stdout vers le fichier1> file
redirige stdout vers le fichier2> file
redirige stderr vers le fichier&> file
redirige stdout et stderr vers le fichier
/dev/null
est le périphérique nul qui prend toutes les entrées souhaitées et les jette. Il peut être utilisé pour supprimer toute sortie.
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écutez command
en arrière-plan, supprimez stdout et stderr
command >> /path/to/log 2>&1 &
Exécutez command
et ajoutez stdout et stderr à un fichier journal.
/dev/null
est traité comme un trou noir dans Linux/Unix, vous pouvez donc y mettre n'importe quoi, mais vous ne pourrez pas le récupérer à partir de /dev/null
.
De plus, 2>
signifie que vous redirigez (i.e. >
) le stderr (i.e. 2
) dans le trou noir (i.e. /dev/null
)
Votre commande est:
grep -i 'abc' content 2>/dev/null
N'essayez pas de terminer avec 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.
Spécifier 2>/dev/null va filtrer 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'emplacement spécifié, dans ce cas/dev/null
/ dev/null est le périphérique linux standard où vous envoyez une sortie que vous souhaitez ignorer.