Si la réponse de John T était ce que vous vouliez, vous avez mal posé la question :)
Il a décrit succinctement les opérateurs <et>, mais vous avez posé des questions sur <>. Ceci est un opérateur rarement utilisé que je ne pense pas pouvoir voir dans LPIC-1, mais juste pour mémoire (étant donné que vous en avez probablement déjà terminé avec cet examen):
Lorsque vous exécutez une commande de manière interactive sans rediriger son entrée standard, les sorties et les erreurs seront normalement associées au tty; il va lire stdin et écrire sur stdout / stderr. Bien que vous ne puissiez pas vous y attendre, ces descripteurs de fichier sont généralement ouverts en lecture-écriture. Essayez de lancer un script comme
#!/bin/bash
echo "I'm writing to stdin!" >&0
Exécuter ceci nu fonctionnera, au moins dans les versions actuelles de bash . Cependant, lorsque vous utilisez les redirecteurs <et>, les descripteurs de fichier stdin et stdout ne sont ouverts qu'en lecture et en écriture, donc si vous appelez cela avec une entrée redirigée depuis un fichier -
./write-to-stdin < /tmp/some-input
cela ne fonctionnera pas (assez raisonnablement). Si vous voulez vraiment qu'un programme que vous appelez avec la redirection puisse écrire et écrire dans un seul descripteur de fichier, <> fera le travail.
./read-and-write-stdin <> /tmp/some-input-and-output
./read-and-write-stdout 1<> /tmp/some-input-and-output
Comme la plupart des programmes n'attendent que stdin un descripteur de lecture et que stdout un descripteur d'écriture, vous pouvez probablement comprendre pourquoi cela est rarement utile, mais si vous écrivez des scripts subordonnés (ou utilisez des fonctions), vous pouvez tirer parti du comportement toi même.