Jestem nowy w świecie komputerów. Podczas instalowania ROS Indigo pierwszy krok każe mi użyć następującego kodu:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
Dlaczego w tym kontekście używamy echo
polecenia sh -c
? Widziałem użycie polecenia echo także w innych procesach instalacyjnych.
Odpowiedzi:
Zwykle funkcją
echo
polecenia jest wyświetlenie ciągu (fragmentu tekstu) na konsoli. Ale tym czasie>
charakter dodaje się poecho
poleceniu przekierowanie jego wyjście do pliku tekstowego/etc/apt/sources.list.d/ros-latest.list
.Zasadniczo całe to polecenie zapisuje fragment tekstu do pliku tekstowego. Teraz nadchodzi trudna część:
Ciąg zapisany do pliku może być inny dla każdego komputera. Część
$(lsb_release -sc)
zostaje rozwiązana (zamieniona na coś innego) po uruchomieniuecho
polecenia.Możesz otworzyć
/etc/apt/sources.list.d/ros-latest.list
w edytorze tekstu przed i po poleceniu, aby zobaczyć zmianę dla siebie. (Plik może nie istnieć przed tym poleceniem.)źródło
>
zastępuje plik tekstowy,>>
dołącza do końca.echo
zapisuje na standardowe wyjście, a nie na konsolę.echo
pisze do konsoli.Zarządzanie pakietami i repozytoria oprogramowania
Dystrybucje Linuksa oparte na Debianie opierają się na repozytoriach (bazach pakietów instalacyjnych aplikacji i pakietów aktualizacji) w celu aktualizacji systemów operacyjnych, a także łatwego pobierania i instalowania nowych pakietów oprogramowania. Lokalizacja tych repozytoriów jest przechowywana w katalogu
/etc/apt/sources.list
, jednak dodatkowe źródła, zwykle unikalne dla określonych aplikacji, mogą być przechowywane w/etc/apt/sources.list.d
katalogu.Po wykonaniu polecenia aktualizacji indeksu pakietów
apt-get update
system operacyjny sprawdza w tych repozytoriach pakietów dostępne pakiety i rejestruje dostępne oprogramowanie jako dostępne dla systemu operacyjnego, które można zainstalować za pomocą tradycyjnegoapt-get install <package>
polecenia.Przykład jednego z tych źródeł oprogramowania:
Ważne jest, aby te źródła odwoływały się do określonych wersji dystrybucji Linuksa. Przykładem jest zaufany, który jest kryptonimem Ubuntu 14.04. Możesz zapytać swój system operacyjny (oparty na Debianie), aby uzyskać szczegółowe informacje za pomocą
lsb_release -a
lublsb_release -sc
co oznacza skrót i kryptonim .W twoim pytaniu część
$(lsb_release -sc)
jest interpretowana, a wynik z twojego systemu operacyjnego jest drukowany w niestandardowym pliku źródłowym ros-latest.list, który polecenie utworzy po wykonaniu.Tłumacz języka poleceń
sh
Polecenia jest Bourne powłoki . Jest to jedna z kilku powłok, ale jest uważana za stary standard i na ogół istnieje taka możliwość. Często występuje takżebash
w wielu skryptach powłoki. Ta deklaracja określa powłokę, która ma być używana, ponieważ różne powłoki używają innej składni.W odniesieniu do
-c
flagi cytujeman bash
:Wszystko w tekście
''
jest odczytywane jako ciąg znaków, nie musisz wymyślać, jak uciec od różnych znaków cudzysłowu, ani martwić się, że powłoka interpretuje coś w niewłaściwy sposób.tl; dr
Polecenie drukuje
deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main
do niestandardowego pliku źródłowego, zastępując$(lsb_release -sc)
go interpretowaną wartością.źródło