Wykorzystaj kod: VIDEOKURS2 i odbierz 30 zł rabatu na wideo kursy programowania. Sprawdź listę na Videopoint.pl »

Kurs Raspberry Pi – #8 – praca w konsoli, podstawy Linuksa

Kurs Raspberry Pi – #8 – praca w konsoli, podstawy Linuksa

Zdecydowana większość czytelników korzysta z Windowsa i przyzwyczajona jest do środowisk graficznych. W przypadku Linuksa ważniejsza jest jednak praca z poziomu konsoli tekstowej.

Pora na przyspieszony kurs podstaw Linuksa. Najważniejsze komendy, funkcje oraz programy, które są konieczne do pracy z Raspberry Pi.

Programy tworzone z myślą o Windowsie w większości bazują głównie na interfejsie graficznym. W przypadku Linuksa narzędzia graficzne są niejako dodatkiem. Mogą być mniej dopracowane oraz bardziej awaryjne niż proste programy dostępne z konsoli tekstowej. Co więcej "okienka" po każdej aktualizacji programu mogą wyglądać inaczej. W trybie tekstowym nie ma miejsca na takie zmiany, więc nauka obsługi programów jest "ponadczasowa".

Czym jest shell oraz bash?

Kurs jest dedykowany dla osób, które zaczynają przygodę z malinką i Linuksem, więc niektóre określenia mogą być nowe. Na początku "dwa słowa" odnośnie używanych pojęć. Większość użytkowników Windowsa spotkała się na pewno z aplikacją Wiersz polecenia. Narzędzie to pozwala na wprowadzanie i wykonywanie poleceń w trybie tekstowym:

Okno "Wiersz polecenia" znane z systemów Windows.

Miejsce, w którym na Linuksie wprowadzamy polecenia i uruchamiamy skrypty to tzw. shell. Jest on również czasami nazywany powłoką. Dostępne są różne wersje shella. Podstawowa wersja to sh, nowsza csh, a prawdopodobnie najbardziej popularna to bash. Oczywiście jest ich więcej, przykładowo system Ubuntu domyślnie używa dash-a.

Logo projektu BASH.

Gdy łączymy się z Raspberry Pi za pomocą PuTTy to wprowadzane polecenia są wykonywane właśnie przez shell.

Jak sprawdzić wersję powłoki?

Dla testu po zalogowaniu możemy wydać polecenie export. Zobaczymy wtedy zmienne, które są ustawione w naszej powłoce. Zmienna SHELL zawiera typ shell-a, jak widać w tym przypadku jest to popularny bash.

Wynik polecenia export na Raspberry Pi.

Czym jest terminal/konsola?

Kiedyś do pracy z systemem używany był terminal, czyli urządzenie wyposażone w monitor i klawiaturę. Komputer był wielkości szafy i stał w oddzielnym (klimatyzowanym) pomieszczeniu.

Historia lubi się powtarzać i w naszej sytuacji mamy powrót do takiej konfiguracji. Komputerem jest mała malinka, a komputer PC (lub laptop) spełnia rolę terminala. Nazwa terminal odnosi się do elektroniki, oznacza końcówkę połączenia, przy której siedzi operator. Inna nazwa to konsola - tutaj jako "mebel" z klawiaturą i monitorem. Nazwy te używane są często zamiennie.

Zestaw elementów do kursu

Gwarancja pomocy na forum Błyskawiczna wysyłka

Elementy niezbędne do wykonania wszystkich ćwiczeń z kursu podstaw Rasberry Pi dostępne są w formie gotowych zestawów!

Kup w Botland.com.pl

Dostęp do terminala w Raspberry Pi

W naszym przypadku jesteśmy połączeni z Raspberry Pi zdalnie przez ssh, więc praktycznie od razu "z automatu" korzystamy z terminala. Aby móc pracować za pomocą konsoli nie musimy do końca rezygnować z trybu graficznego. Jeśli podłączyliśmy naszą malinkę do monitora, możemy uruchomić emulator terminala. Podobnie będzie w przypadku połączenia przez VNC.

Widok konsoli podczas połączenia VNC.

Niezależnie od wybranego typu terminala sposób naszej pracy będzie taki sam. To pokazuje nam pierwszą zaletę takiego podejścia, czyli jego uniwersalność.

Pierwsze kroki - zmiana hasła

W jednym z poprzednich odcinków zmienialiśmy hasło dostępu w raspi-config. Jest to program, który spotkamy tylko na malince. Podczas standardowej pracy z Linuksem operacją taką możemy przeprowadzić poleceniem:

Po wprowadzeniu komendy i zatwierdzeniu jej klawiszem Enter, system poprosi nas o podanie aktualnego hasła, a następnie będziemy musieli dwa razy wpisać nowe hasło.

Aktualizacja programów

Oprogramowanie na Linuksa jest aktualizowane bardzo często. Warto pobierać nowe wersje systemu operacyjnego oraz programów, chociażby ze względu na bezpieczeństwo. Znalezione luki w zabezpieczeniach są szybko łatane, ale jeśli nie będziemy aktualizować systemu, możemy być narażeni na ataki.

Przed aktualizacją musimy pobrać informacje o najnowszych wersjach. Służy do tego polecenie:

Jak już wiemy z poprzednich artykułów sudo to odpowiednik opcji "Uruchom jako administrator" znanej z systemu Windows. Apt jest menedżerem programów używanym w systemie Debian i pochodnych, czyli również w naszym Raspbianie.

Kolejny krok to instalacja znalezionych aktualizacji:

Po chwili zostaniemy poproszeni o potwierdzenie aktualizacji. Musimy więc wpisać literkę y (od ang. yes) i nacisnąć Enter. Rozpocznie się pobieranie plików i wgrywanie aktualizacji.

Istnieje również opcja aktualizacji systemu z użyciem polecenia sudo apt dist-upgrade, jednak może ona generować pewne konflikty. Z funkcji tej można korzystać, gdy jesteśmy już dobrze obeznani z systemem i wiemy, co dokładnie dzieje się podczas aktualizacji.

Jak sprawdzić listę zainstalowanych programów na Raspberry Pi?

Możemy sprawdzić jakie programy są już zainstalowane wydając poniższe polecenie:

Dokumentacja systemowa - man

Gdybyśmy chcieli dowiedzieć się więcej o możliwościach programu apt, z pomocą przyjdzie nam oczywiście Google oraz dokumentacja systemowa, którą zobaczymy po wywołaniu polecenia:

Warto zapamiętać polecenie man (od ang. manual). Wystarczy, że napiszemy po nim komendę lub funkcję, która nas interesuje, a otrzymamy dostęp do dokumentacji. Widok ten zamkniemy naciskając klawisz q.

Pomoc systemowa dla polecenia apt.

Co ciekawe, można tez oczywiście sprawdzić jaka jest dokumentacja dla polecenia man, w tym celu wpisujemy man man:

Sprawdzanie dokumentacji dla polecenia man.

Taki sposób podglądania dokumentacji jest szczególnie przydatny, gdy chcemy użyć danego polecenia, a zapomnieliśmy z jakimi argumentami należy je wywoływać.

Odpowiednik "Menedżera zadań" na Raspberry Pi

Zacznijmy od sprawdzenia jak działa program top. Wpisujemy jego nazwę w konsoli i Enter. Wyświetla on listę uruchomionych programów (procesów) oraz wykorzystanie przez nie zasobów. Jest to odpowiednik menedżera zadań z Windowsa. Aby wyjść z programu należy wcisnąć q.

Polecenie top, czyli "Menedżera zadań" na Raspberry Pi

Instalacja nowego "Menedżera zadań"

Dostępna jest też bardziej rozbudowana wersja "Menedżera zadań" o nazwie htop. Instalujemy ją wydając poleceniem:

Po krótkiej instalacji htop powinien być już dostępny. Uruchamiamy go wpisując htop i wciskając Enter. Pierwsze, co rzuca się w oczy to kolorowy ekran. Zdecydowanie ciekawsze jest jednak to, co widzimy w lewym górnym rogu. Możemy tam podejrzeć użycie każdego rdzenia Raspberry Pi:

Polecenie htop, czyli lepsza wersja "Menedżera zadań" na Raspberry Pi.

Usuwanie programów

Jeśli uznamy, że jakiś program nie jest już nam potrzebny to możemy go odinstalować jednym z dwóch poleceń. Pierwsze odinstalowuje pakiet oprogramowania, drugie usuwa program oraz wszystkie jego pliki konfiguracyjne.

Podczas usuwania programu zostaniemy poproszeni o potwierdzenie tej operacji:

Potwierdzenie usunięcia programu - wpisujemy "y" i klikamy Enter.

System plików systemów z rodziny Linuks

Zanim na dobre zaczniemy pracę, musimy poznać  bliżej system plików Linuksa. W systemach Unix-owych stosowane jest podejście, że wszystko jest plikiem - więc zaznajomienie z obsługą plików ma ogromne znaczenie.

Linux używa jednego drzewa katalogów. Microsoft skopiował to rozwiązanie wprowadzając opcję "Mój komputer", a dawniej każdy dysk żył własnym życiem (C:, D:, E:, itd). W przypadku Linuksa główny katalog oznaczany jest pojedynczym znakiem / (slash). Jest to korzeń drzewa katalogów, więc nazywa się root.

Wcześniej widzieliśmy drzewo katalogów używając WinSCP:

Widok katalogów z WinSCP.

Sprawdzenie aktualnego katalogu

Po zalogowaniu, domyślnym katalogiem jest katalog domowy /home/pi. Aby się o tym przekonać możemy wykonać polecenie pwd, które wypisze aktualny katalog (pwd - print working directory):

Sprawdzenie zawartości katalogu

Aby sprawdzić zawartość katalogu możemy wykorzystać polecenie ls. Oczywiście wszystkie informacje związane z tym poleceniem możemy otrzymać dzięki man ls. Szkoda czasu, aby zagłębiać się teraz we wszystkie dostępne opcje. Zajmijmy się tymi najpopularniejszymi:

  • ls - wyświetla listę plików w lokalnym katalogu
  • ls -l - wyświetla tzw. długą listę, z uprawnieniami dostępu do każdego pliku i katalogu
  • ls -a - wyświetla pliki ukryte (o nazwie zaczynającej się od kropki)
  • ls -1 - lista plików w jednej kolumnie
  • ls <ścieżka> - np. ls / , pokazuje pliki w podanym folderze

Miejsca które warto "zobaczyć":

  • ls / - katalog główny
  • ls /dev - zawiera sterowniki urządzeń, przykładowo /dev/ttyAMA0 to port szeregowy do którego możemy podłączyć naszą przejściówkę UART-USB
  • ls /home - tutaj znajdują się katalogi użytkowników (każdy ma własny podkatalog)
  • ls /root - katalog administratora, nie mamy do niego dostępu (ale warto spróbować)
  • ls /proc - wirtualny katalog z informacjami o systemie
  • ls /sys - nowszy odpowiednik /proc
  • ls /boot - tutaj znajdziemy pliki niezbędne do startu systemu oraz pliki konfiguracyjne, są one widoczne również dla Windowsa (gdy włożymy kartę SD do PC)

Jest jeszcze dużo innych ciekawych miejsc w systemie - zajmiemy się nimi, gdy będą potrzebne!

Uzupełnienie nazw, zapamiętywanie poleceń

Używając konsoli możemy skorzystać z uzupełniania nazw. To tak jak w podczas programowania np. za pomocą Visual Studio, czy Eclipse. Piszemy początek nazwy, naciskamy tabulator i konsola uzupełni nazwę (o ile będzie to jednoznaczna i poprawna nazwa). Możemy napisać ls /pr i nacisnąć tab  - shell sam uzupełni nazwę do ls /proc/

Uzupełnianie poleceń za pomocą tabulatora.

Historia wydawanych poleceń jest zapamiętywana. Do poprzednich można wracać używając kursorów. Strzałka w górę to poprzednie polecenie (w dół następne jak już się cofniemy). Dodatkowo strzałki w lewo i w prawo pozwalają na przesuwanie kursora i modyfikację poleceń. Naciskając Enter wykonamy polecenie ponownie.

Podpowiadanie poprzednich poleceń (po wciśnięciu strzałki w górę).

Listę wszystkich wydanych wcześniej poleceń zobaczymy wpisując polecenie:

Podgląd plików

Poznaliśmy już ls, które pokazuje zawartość katalogu. Teraz zobaczymy jak odczytać zawartość pliku. Służy do tego polecenie cat <nazwa pliku>. Napiszmy więc:

Jak widzimy ten "plik" zawiera informację o pamięci dostępnej w systemie. Jest to plik wirtualny, nie znajdziemy go na  SD. W Linuksie wszystko jest plikiem, więc możemy z niego odczytać informacje jak z normalnego pliku. To dużo wygodniejsze niż szukanie w menedżerach urządzeń (chociaż to pewnie sprawa gustu).

Podgląd pliku /proc/meminfo.

Sprawdzenie wersji posiadanego systemu, dostępnych procesorów

Wersję zainstalowanego systemu sprawdzimy wpisując polecenie:

Kolejny plik, który warto podejrzeć to cat /proc/cpuinfo. Dzięki niemu dowiemy się ile oraz jakich procesorów posiada Raspberry Pi:

Informacja o dostępnych układach.

Przy okazji odkryliśmy pewną wadę polecenia cat. Jeśli plik zawiera więcej danych wszystkie są wyświetlane na raz. Jeśli chcielibyśmy spokojnie przejrzeć całą zawartość pliku to najlepiej użyć komendę less. Pozwala ona na zatrzymanie wyświetlania po każdej stronie (oraz powrót do poprzedniej).

Łączenie kilku poleceń - less w praktyce

W systemach "uniksopodobnych", do których zalicza się Linux popularne jest łączenie kilku prostych poleceń w całe zadania. Kolejne polecenia jako dane wejściowe przyjmują to co wypisuje poprzedni program. Połączymy więc wyjście cat z wejściem less, tak żeby mieć czas na przeczytanie treści:

Znak pionowej linii | służy właśnie do łączenia poleceń. Jest to bardzo wygodne i potężne narzędzie. Chociaż na początek może na takie nie wyglądać. W przypadku cat i less można też po prostu napisać less /proc/cpuinfo, ale użycie | warto zapamiętać na przyszłość.

Przekierowanie wyjścia

Istnieje również możliwość przekierowania wyjścia, czyli tego co pojawia się na konsoli do pliku. Wypróbujemy polecenie tree, które wyświetla drzewo katalogów. Poniższa komenda sprawi, że wyświetli się drzewo katalogów (zaczynając od korzenia) z ograniczeniem do 1 poziomu.

Działanie polecenia w praktyce.

Skoro jeden poziom działa, czemu nie sprawdzić co będzie dla dwóch: tree / -L 2. Niestety tutaj jest gorzej, ponieważ informacji będzie strasznie dużo. Wiemy jak połączyć poleceni z less, dzięki temu będziemy mogli przejrzeć dane ekran po ekranie. Jednak co gdybyśmy chcieli np. wysłać komuś nasze drzewo katalogów np. z prośbą o pomoc? Oczywiście można zrobić 100 zrzutów ekranu lub nagrać filmik... Jednak najłatwiej będzie przekierować wyjście polecenia do pliku.

Służy do tego operator (znak większości):

To polecenie wykona się dużo szybciej - wyświetlanie danych zajmuje więcej czasu niż zapis do pliku. Teraz możemy użyć ls i zobaczyć, że w bieżącym katalogu jest nowy plik: drzewko.txt. Jest całkiem spory - 27KB to dużo tekstu (dawniej notatnik w Windows przy takich plikach się po prostu zawieszał). 

Ten plik możemy wypisać poleceniem cat, ale nie będzie to zbyt wygodne. Można go również pobrać za pomocą WinSCP i podejrzeć na komputerze w edytorze tekstu. W następnym artykule sprawdzimy jak wykorzystać do tego edytory tekstu dostępne w konsoli.

Jak sprawdzić aktualną temperaturę procesora?

Na koniec jeszcze krótkie polecenie, dzięki któremu sprawdzimy czy nasza płytka nie jest zbyt gorąca. Aktualne wskazania temperatury możemy sprawdzić poleceniem:

Po jego wywołaniu otrzymamy aktualny pomiar:

Aktualna temperatura Raspberry Pi.

Podsumowanie

Omówiliśmy pierwszą część najważniejszych podstaw pracy w konsoli. Opisane tutaj polecenia wykorzystuje się praktycznie cały czas, więc trzeba znać je na pamięć. Warto eksperymentować teraz jak najwięcej, bo ewentualne szkody będą małe - w najgorszym wypadku wystarczy wgrać nowy system na kartę.

W następnym artykule zajmiemy się dalszymi aspektami pracy z Linuksem. Będzie między innymi mowa o konsolowych edytorach tekstu oraz o operacjach na plikach i katalogach. Omówimy też system uprawnień do plików, który na początku może wydawać się mało intuicyjny.

Nawigacja kursu

Autor: Piotr Bugalski
Testy: Piotr Adamczyk
Redakcja: Damian Szymański

konsola, kursRaspberryPi, linux, podstawy, RaspberryPi, terminal

Komentarze

Dodaj komentarz