Normalement la fonction de echo
La commande consiste à afficher une chaîne (morceau de texte) sur la console. Mais cette fois, un >
caractère est ajouté après le echo
commande, redirigeant sa sortie vers un fichier texte, /etc/apt/sources.list.d/ros-latest.list
.
Donc, fondamentalement, toute cette commande écrit un morceau de texte dans un fichier texte. Maintenant, voici la partie délicate :
La chaîne écrite dans le fichier peut être différente pour chaque ordinateur. La partie $(lsb_release -sc)
est résolu (changé en quelque chose d'autre) lorsque le echo
la commande s'exécute.
Vous pouvez ouvrir /etc/apt/sources.list.d/ros-latest.list
dans un éditeur de texte avant et après la commande pour voir le changement par vous-même. (Le fichier peut ne pas exister avant cette commande.)
Gestion des packages et dépôts de logiciels
Les distributions Linux basées sur Debian s'appuient sur des référentiels (bases de données de packages d'installation d'applications et de packages de mise à niveau) pour maintenir les systèmes d'exploitation à jour et également pour récupérer et installer facilement de nouveaux packages logiciels. L'emplacement de ces référentiels est stocké dans /etc/apt/sources.list
, cependant des sources supplémentaires, généralement propres à des applications spécifiques, peuvent être stockées dans le /etc/apt/sources.list.d
annuaire.
Lorsque la commande de mise à jour de l'index du package apt-get update
est exécuté, votre système d'exploitation vérifie auprès de ces référentiels de packages les packages disponibles et enregistre les logiciels disponibles comme disponibles pour votre système d'exploitation que vous pouvez ensuite installer en utilisant le traditionnel apt-get install <package>
commande.
Voici un exemple de l'une de ces sources logicielles :
deb http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ trusty main restricted
Il est important que ces sources fassent référence à des versions spécifiques des distributions Linux. Un exemple est fidèle qui est le nom de code d'Ubuntu 14.04. Vous pouvez interroger votre système d'exploitation (basé sur Debian) pour obtenir des détails complets avec lsb_release -a
ou lsb_release -sc
qui signifie court et nom de code .
Dans votre question, la partie $(lsb_release -sc)
est interprété et le résultat de votre système d'exploitation est imprimé dans le fichier source personnalisé ros-latest.list que la commande créera lors de son exécution.
Interprète de langage de commande
Le sh
La commande est le bourne shell. Il s'agit d'une coque parmi plusieurs, mais elle est considérée comme l'ancienne norme et généralement celle dont vous pouvez être certain qu'elle existe. Il est également courant de voir bash
dans de nombreux scripts shell. Cette déclaration spécifie le shell à utiliser car différents shells utilisent une syntaxe différente.
En ce qui concerne le -c
drapeau, citant man bash
:
Si l'option -c est présente, les commandes sont lues à partir de la chaîne. S'il y a des arguments après la chaîne, ils sont affectés aux paramètres positionnels, en commençant par $0.
Tout dans le ''
est lu comme une chaîne, vous n'auriez pas besoin de comprendre comment échapper divers guillemets ou de vous inquiéter que le shell interprète quelque chose dans le mauvais sens.
tl;dr
La commande imprime deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main
à un fichier source personnalisé, remplaçant $(lsb_release -sc)
avec la valeur interprétée.