Que signifie «>>» dans la commande de terminal?
Je suis tombé sur une commande juste maintenant donnée ci-dessous -
$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile
D'après ce que je peux deviner, il est probablement utilisé pour valider les modifications dans .bash_profile, mais à quoi sert-il exactement?
Réponses
Il redirige le stdout du programme avant >>et l'ajoute au fichier donné après.
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 commandserait 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 le soi-disant «descripteur de sortie standard». Les arguments d'entrée à echosont suivis d'une nouvelle 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 qui est affiché dans votre shell lorsque vous exécutez une commande. (Autrement dit, lorsque vous tapez echo fooet appuyez sur Entrée, foo\ncorrespond à la sortie réelle de la echocommande, qui est affichée par votre shell comme foosuivie 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>>d'une manière similaire. Ou vous pouvez combiner stderr et stdout dans un seul fichier: faites 2>&1cela. Pour plus d'informations sur la redirection et quelques autres exemples, vous pouvez lire ce petit tutoriel .
Comment puis-je comprendre ce que signifie un morceau particulier de code shell?
En général, vous pouvez essayer expliquehell.com , qui vous donnera des conseils visuels et des informations sur une commande shell particulière.
Pour les gens du TLDR qui aiment juste voir un exemple;
La sortie standard (et non les erreurs) de la commande avant >> 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