Normalmente la función de echo
El comando es mostrar una cadena (trozo de texto) en la consola. Pero esta vez, un >
el carácter se agrega después del echo
comando, redirigiendo su salida a un archivo de texto, /etc/apt/sources.list.d/ros-latest.list
.
Básicamente, todo este comando escribe un fragmento de texto en un archivo de texto. Ahora, aquí viene la parte difícil:
La cadena escrita en el archivo puede ser diferente para cada computadora. La parte $(lsb_release -sc)
se resuelve (cambia a otra cosa) cuando el echo
se ejecuta el comando.
Puedes abrir /etc/apt/sources.list.d/ros-latest.list
en un editor de texto antes y después del comando para ver el cambio por ti mismo. (Es posible que el archivo no exista antes de este comando).
Administración de paquetes y repositorios de software
Las distribuciones de Linux basadas en Debian se basan en repositorios (bases de datos de paquetes de instalación de aplicaciones y paquetes de actualización) para mantener los sistemas operativos actualizados y también para obtener e instalar fácilmente nuevos paquetes de software. La ubicación de estos repositorios se almacenan en /etc/apt/sources.list
, sin embargo, las fuentes adicionales, generalmente exclusivas de aplicaciones específicas, se pueden almacenar en el /etc/apt/sources.list.d
directorio.
Cuando el comando de actualización del índice del paquete apt-get update
se ejecuta, su sistema operativo verifica con estos repositorios de paquetes los paquetes disponibles y registra los softwares disponibles como disponibles para su sistema operativo que puede instalar usando el apt-get install <package>
tradicional dominio.
Un ejemplo de una de estas fuentes de software es:
deb http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ trusty main restricted
Es importante que estas fuentes hagan referencia a versiones específicas de las distribuciones de Linux. Un ejemplo es confiable que es el nombre en clave de Ubuntu 14.04. Puede consultar su sistema operativo (basado en Debian) para obtener detalles completos con lsb_release -a
o lsb_release -sc
que significa corto y nombre en clave .
En su pregunta, la parte $(lsb_release -sc)
se interpreta y el resultado de su sistema operativo se imprime en el archivo fuente personalizado ros-latest.list que el comando creará al ejecutarse.
Intérprete de lenguaje de comandos
El sh
comando es el shell bourne. Este es uno, entre varios proyectiles, pero se considera el estándar anterior y, en general, puede estar seguro de que existe. También es común ver bash
en muchos scripts de shell. Esa declaración especifica el shell que se usará, ya que diferentes shells usan una sintaxis diferente.
En cuanto al -c
bandera, citando man bash
:
Si la opción -c está presente, los comandos se leen desde la cadena. Si hay argumentos después de la cadena, se asignan a los parámetros posicionales, comenzando con $0.
Todo dentro del ''
se lee como una cadena, no necesitaría descubrir cómo escapar varias comillas o preocuparse de que el shell interprete algo de manera incorrecta.
tl;dr
El comando imprime deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main
a un archivo fuente personalizado, reemplazando $(lsb_release -sc)
con el valor interpretado.