GNU/Linux >> Linux Esercitazione >  >> Linux

Perché usare echo prima di installare un nuovo software?

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.


Linux
  1. Come usare il comando Su in Linux

  2. Perché impostare una variabile prima di un comando è legale in Bash?

  3. Esempi di comandi echo in Linux

  4. Perché il comando sudo:bundle non è stato trovato?

  5. Posso usare un comando (come albero) senza installarlo a livello di sistema?

Come utilizzare il comando echo negli script Bash in Linux

Come usare il comando PS

Come usare il comando TOP

Come usare il comando echo senza Newline

Vale la pena installare il nuovo Ubuntu 18.10?

Come inserire una nuova riga nell'e-mail usando il comando linux mail?