Réponse courte - que fait >>
-on?
Avec >>
, vous ajoutez la sortie d'une commande à un fichier.
Votre exemple de commande se compose de plusieurs parties, essentiellement:
commande >> nom de fichier
Ainsi, la sortie de command
serait ajoutée à filename
.
Que se passe-t-il dans le cas spécifique de echo
?
Dans votre cas spécifique, la echo "…"
commande envoie ses arguments d'entrée à «stdout», qui est ce que l'on appelle le «descripteur de sortie standard». Les arguments d'entrée à echo
sont suivis d'un saut de ligne ( \n
), de sorte que vous obtenez un saut de ligne.
Ici, un «descripteur de sortie standard» n'est rien de plus qu'un flux de sortie affiché dans votre shell lorsque vous exécutez une commande. (Autrement dit, lorsque vous tapez echo foo
et appuyez sur Entrée, foo\n
c'est la sortie réelle de la echo
commande, qui est affichée par votre shell, foo
suivie d'une nouvelle ligne.)
Fondamentalement, tout ce qui écrit sur votre ligne de commande utilise stdout. Il existe également un autre descripteur appelé «stderr» qui est généralement utilisé pour les messages d'erreur. Il sera également imprimé comme stdout, donc parfois ils pourraient être intercalés. Et il y a un descripteur stdin qui est utilisé pour l'entrée. Consultez cet article pour plus d'informations.
Comment redirigez-vous la sortie dans le shell?
Vous pouvez toujours rediriger stdout vers un descripteur de fichier, ce que vous pouvez faire avec l'un de ces opérateurs:
>
redirige vers un descripteur de fichier. Il crée le fichier s'il n'existe pas ou, s'il existe déjà, tronque le fichier avant l'écriture. Le fichier sera donc écrasé par stdout.
>>
ajoute à un descripteur de fichier. Il crée le fichier s'il n'existe pas.
Vous pouvez également rediriger stderr en utilisant 2>
ou 2>>
de manière similaire. Ou vous pouvez combiner stderr et stdout en un seul fichier: 2>&1
fait cela. Pour plus d'informations sur la redirection et quelques exemples supplémentaires, vous pouvez lire ce petit tutoriel .
Comment puis-je comprendre ce que signifie un morceau particulier de code shell?
Généralement, vous voudrez peut-être essayer expliquehell.com , qui vous donnera des conseils visuels et des informations sur une commande shell particulière.
man bash
est écrit avec un langage assez formel, il peut être difficile à comprendre. D'un autre côté, l'expressionbash >>
renvoie peu de liens utiles dans Google. Il est vrai que nous voulons agréger les connaissances sans compter sur Google; pour cette raison, même une question avec une réponse facilement consultable peut convenir. Cependant, le fait que vous n'ayez pas fourni la réponse tout de suite (voir Puis-je répondre à ma propre question? ) Ni indiqué les ressources existantes (que vous pourriez avoir besoin d'aide pour comprendre) indique un manque de recherche.