Normalmente la funzione di echo
comando consiste nel visualizzare una stringa (pezzo di testo) sulla console. Ma questa volta, un >
carattere viene aggiunto dopo il echo
comando, reindirizzando il suo output a un file di testo, /etc/apt/sources.list.d/ros-latest.list
.
Quindi, in sostanza, l'intero comando scrive una parte di testo in un file di testo. Ora arriva la parte difficile:
La stringa scritta nel file può essere diversa per ogni computer. La parte $(lsb_release -sc)
viene risolto (cambiato in qualcos'altro) quando echo
viene eseguito il comando.
Puoi aprire /etc/apt/sources.list.d/ros-latest.list
in un editor di testo prima e dopo il comando per vedere tu stesso il cambiamento. (Il file potrebbe non esistere prima di questo comando.)
Gestione dei pacchetti e repository software
Le distribuzioni Linux basate su Debian si basano su repository (database di pacchetti di installazione di applicazioni e pacchetti di aggiornamento) per mantenere aggiornati i sistemi operativi e anche per recuperare e installare facilmente nuovi pacchetti software. La posizione di questi repository è memorizzata in /etc/apt/sources.list
, tuttavia fonti aggiuntive, solitamente univoche per applicazioni specifiche, possono essere memorizzate nel /etc/apt/sources.list.d
directory.
Quando il comando di aggiornamento dell'indice del pacchetto apt-get update
viene eseguito, il tuo sistema operativo verifica con questi repository di pacchetti i pacchetti disponibili e registra i software disponibili come disponibili per il tuo sistema operativo che puoi continuare a installare usando il tradizionale apt-get install <package>
comando.
Un esempio di una di queste fonti software è:
deb http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ trusty main restricted
È importante che queste fonti facciano riferimento a versioni specifiche delle distribuzioni Linux. Un esempio è affidabile che è il nome in codice di Ubuntu 14.04. Puoi interrogare il tuo sistema operativo (basato su debian) per i dettagli completi con lsb_release -a
o lsb_release -sc
che significa breve e nome in codice .
Nella tua domanda, la parte $(lsb_release -sc)
viene interpretato e il risultato del tuo sistema operativo viene stampato nel file sorgente personalizzato ros-latest.list che il comando creerà al momento dell'esecuzione.
Interprete del linguaggio dei comandi
Il sh
comando è la bourne shell. Questo è uno, tra diversi gusci, ma è considerato il vecchio standard e generalmente uno di cui puoi essere certo che esiste. È anche comune vedere bash
in molti script di shell. Quella dichiarazione specifica la shell da usare poiché shell diverse usano una sintassi diversa.
Per quanto riguarda il -c
flag, citando man bash
:
Se è presente l'opzione -c, i comandi vengono letti dalla stringa. Se ci sono argomenti dopo la stringa, vengono assegnati ai parametri posizionali, a partire da $0.
Tutto all'interno del ''
viene letto come una stringa, non avrai bisogno di capire come evitare varie virgolette o preoccuparti che la shell interpreti qualcosa nel modo sbagliato.
tl;dr
Il comando stampa deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main
in un file sorgente personalizzato, sostituendo $(lsb_release -sc)
con il valore interpretato.