J'étudie pour ma LPIC-1 et je suis dérouté par l'opérateur de redirection <>. Je sais que la définition officielle de ceci est qu'il "fait en sorte que le fichier spécifié soit utilisé à la fois pour l'entrée standard et la sortie standard" ... mais je suis toujours confus.
Quelqu'un pourrait-il fournir un exemple de comment / quand j'utiliserais l'opérateur de redirection <> sous Linux?
linux
command-line
redirection
Mike B
la source
la source
Réponses:
Un exemple serait lorsque vous devez fournir des données d'entrée de programme et envoyer des données de sortie quelque part (par exemple, un fichier):
Cela exécute les données
data.txt
via la commande de tri et envoie la sortie àresult.txt
. C'est identique à faire ceci:Pensez-y comme ceci:
Le fichier du milieu est envoyé au programme au numéro 2 et le résultat est finalement envoyé à 3.
la source
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
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 -
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.
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.
la source