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?
Il redirige la sortie standard du programme avant >>
et l'ajoute au fichier donné après.
>>
?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
.
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.
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 .
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.
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