tl; dr
Chercher http://www.google.comen arrière - plan et jeter le stdoutet stderr.
curl http://www.google.com > /dev/null 2>&1 &
est le même que
curl http://www.google.com > /dev/null 2>/dev/null &
Les bases
0, 1et 2représentent les descripteurs de fichier standard dans les systèmes d’exploitation POSIX . Un descripteur de fichier est une référence système à (fondamentalement) un fichier ou un socket .
La création d'un nouveau descripteur de fichier en C peut ressembler à ceci:
fd = open("data.dat", O_RDONLY)
La plupart des commandes système Unix prennent certaines entrées et transmettent le résultat au terminal. curlva chercher ce qui se trouve à l'URL spécifiée ( google dot com ) et afficher le résultat stdout.

La redirection
Comme vous l' avez dit <et l' >habitude de rediriger la sortie d'une commande à un autre endroit, comme un fichier.
Par exemple, dans ls > myfiles.txt, lsrécupère le contenu du répertoire en cours et >redirige sa sortie myfiles.txt(si le fichier n'existe pas, il est créé, sinon écrasé, mais vous pouvez utiliser >>plutôt que d' >ajouter au fichier). Si vous exécutez la commande ci-dessus, vous remarquerez que rien n’est affiché sur le terminal. Cela signifie généralement le succès sur les systèmes Unix. Cochez cette case cat myfiles.txtpour afficher le contenu du fichier à l'écran.
> / dev / null 2> & 1
La première partie > /dev/nullredirige la stdout, sa curlsortie vers /dev/null(plus à ce sujet à l’avance) et 2>&1redirige le stderrvers le stdout(qui a été redirigé vers /dev/nullafin que tout soit envoyé à /dev/null).
Le côté gauche de 2>&1vous indique ce qui va être redirigé et le côté droit vous indique où aller. Le &est utilisé à droite pour distinguer stdout (1)ou stderr (2)des fichiers nommés 1ou 2. Donc, 2>1créerait un nouveau fichier (s’il n’existait pas déjà) 1et nommait le stderrrésultat.
/dev/nullest un fichier vide, un mécanisme utilisé pour supprimer tout ce qui y est écrit. Donc,
curl http://www.google.com > /dev/nullsupprime efficacement curlla sortie.

Mais pourquoi y a- t -il encore des éléments sur le terminal? Ce ne sont pascurl des sorties régulières, mais des données envoyées à la stderr, utilisées ici pour afficher des informations de progression et de diagnostic et pas seulement des erreurs .
curl http://www.google.com > /dev/null 2>&1ignore les informations curlde sortie et de curlprogression. Le résultat est que rien n'est affiché sur le terminal.
finalement
À &la fin, vous indiquez au shell d'exécuter la commande en tant que tâche en arrière - plan . Cela provoque le retour immédiat de l' invite lorsque la commande est exécutée de manière asynchrone en coulisse. Pour voir les emplois en cours tapez jobsdans votre terminal. Notez que cela diffère des processus en cours d'exécution sur votre système. Pour voir ces types topdans le terminal.
Références