J'aimerais avoir une brève explication de la ligne de commande suivante :
grep -i 'abc' content 2>/dev/null
J'aimerais avoir une brève explication de la ligne de commande suivante :
grep -i 'abc' content 2>/dev/null
El >
redirige la sortie généralement vers un fichier mais cela peut être vers un périphérique. Vous pouvez également utiliser >>
à ajouter.
Si vous ne spécifiez pas de numéro, le flux de sortie standard est supposé, mais vous pouvez également rediriger les erreurs :
> file
redirige stdout vers un fichier1> file
redirige stdout vers un fichier
2> file
redirige stderr vers un fichier
&> file
redirige stdout et stderr vers un fichier> file 2>&1
redirige stdout et stderr vers un fichier
/dev/null
est le dispositif null, il prend n'importe quelle entrée que vous voulez et la rejette. Il peut être utilisé pour supprimer toute sortie.
Notez que > file 2>&1
est une ancienne syntaxe qui fonctionne toujours, &> file
est plus soigné, mais n'aurait pas fonctionné sur les anciens systèmes.
En bref, il redirige stderr
( fd
2) au trou noir (rejette la sortie de la commande).
Quelques modèles couramment utilisés pour la redirection :
command > /dev/null 2>&1 &
Exécuter command
en arrière-plan, rejeter stdout
y stderr
command >> /path/to/log 2>&1 &
Exécuter command
, append stdout
y stderr
dans un fichier journal.
Dans Bash 4+, une forme plus courte (mais moins lisible) est fonctionnelle
command &>> /path/to/log
/dev/null
est considéré comme un trou noir sous Linux/Unix, vous pouvez donc y mettre n'importe quoi mais vous ne pourrez pas le récupérer à partir de /dev/null
.
Plus loin, 2>
signifie que vous redirigez (c.-à-d. >
) le stderr (c'est-à-dire 2
) dans le trou noir (c'est-à-dire /dev/null
)
Votre commandement est :
grep -i 'abc' content 2>/dev/null
N'essayez pas de terminer avec un autre slash avant comme ceci - 2>/dev/null/
(ce n'est pas un répertoire).
Grep -i 'abc' content générera une sortie qui sera affichée sur votre console, y compris les erreurs éventuelles.
Spécifier 2>/dev/null
filtrera les erreurs afin qu'elles ne soient pas affichées dans 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, elles sont imprimées sur la console.
\>
redirige la sortie vers l'endroit spécifié, dans ce cas-ci /dev/null
/dev/null
est le périphérique standard de Linux où vous envoyez les sorties que vous voulez ignorer.
Tout d'abord, nous devons parler de >
opérateur. Il redirige la sortie de la gauche du symbole vers la droite du symbole.
Il faut donc penser comme :
commande_source > fichier_cible
Autres choses que nous devons savoir
0 means stdin
1 means stdout(useful output)
2 means stderr(error message output)
Comme par défaut il fonctionne comme command 1 > target_file
Quant à /dev/null
--> c'est un fichier spécial qui rejette la redirection des sorties des canaux vers lui.
Donc, dans votre question, cela signifie
Exécutez la commande et ne me montre pas les messages d'erreur , les rejeter .
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.