web-dev-qa-db-fra.com

Que signifie ">>" dans la commande du terminal?

Je suis tombé sur une commande tout à l'heure donnée ci-dessous -

$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile

De ce que je peux deviner, il est probablement utilisé pour valider les modifications de .bash_profile mais à quoi sert-il exactement?

11
monster

Il redirige la sortie standard du programme avant >> et l'ajoute au fichier donné après.

31
kai-dj

Réponse courte - que fait >>?

Avec >>, vous ajoutez le résultat d'une commande à un fichier.

Votre exemple de commande comprend plusieurs parties:

commander  >> nom de fichier

Donc, 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 commande echo "…" génère ses arguments d'entrée dans «stdout», appelé «descripteur de sortie standard». Les arguments d'entrée à echo sont suivis d'un retour à la ligne (\n), de sorte que vous obteniez 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 est la sortie réelle de la commande echo, indiquée par votre shell sous la forme foo suivie d'un retour à la ligne.)

Fondamentalement, tout ce qui écrit sur votre ligne de commande utilise stdout. Il existe également un autre descripteur appelé «stderr» généralement utilisé pour les messages d'erreur. Il sera également imprimé comme stdout, de sorte qu'ils peuvent parfois être intercalés. Et il y a un descripteur stdin qui est utilisé pour l'entrée. Voir cet article pour plus d'informations.

Comment redirigez-vous la sortie dans le shell?

Vous pouvez toujours redirect 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à, le tronque avant de l'écrire. Le fichier sera donc écrasé avec 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 dans un seul fichier: 2>&1 le fait. Pour plus d'informations sur la redirection et quelques exemples supplémentaires, vous pouvez lire ce petit tutoriel .

Comment puis-je comprendre la signification d'un code Shell?

En règle générale, vous pouvez essayer expliquehell.com , qui vous donnera des conseils visuels et des informations sur une commande Shell particulière.

48
slhck

Pour les TLDR les gens qui aiment juste voir un exemple;

La sortie standard (pas les erreurs) de la commande avant le >> sera ajoutée à la fin du fichier qui porte son nom.

Donc, si le fichier "flintstones.txt" contient;

Fred
Barney

echo Dino >> flintstones.txt entraînera l'ajout de 'Dino' à la fin du fichier;

Fred
Barney
Dino
7
Mark Boyce