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.
Podstawowe polecenia działają niezależnie od wersji shella. Jednak im rozwiązanie jest nowsze, tym więcej ma zaszytych możliwości.
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.
Terminal
Komputer
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.
Gotowe zestawy do kursów Forbota
Komplet elementów Gwarancja pomocy Wysyłka w 24h
Elementy niezbędne do wykonania wszystkich ćwiczeń z kursu podstaw Rasberry Pi dostępne są w formie gotowych zestawów!
Masz już zestaw? Zarejestruj go wykorzystując dołączony do niego kod. Szczegóły »
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.
Informacje o pracy w trybie graficznym zostały opisane w 4. części kursu, a zdalne połączenie z użyciem VNC zostało omówione w 7. części kursu.
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:
passwd
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.
Podczas wprowadzania haseł nie pojawiają się na ekranie żadne znaki (nawet gwiazdki), co jest dodatkowym zabezpieczeniem.
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:
sudo apt update
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:
sudo apt upgrade
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.
Cały proces może zająć nawet ponad 30 minut! Wszystko zależy od liczby aktualizacji oraz dostępnego łącza.
Potwierdzenie aktualizacji.
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:
apt list --installed
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:
man apt
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.
Na ekranie widoczny jest tylko fragment dokumentacji. W celu przewijania zawartości okna możemy korzystać z klawiszy strzałek.
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:
sudo apt install htop
Programy instaluje się właśnie w ten sposób - zamiast htop możemy podać dowolny inny dostępny pakiet.
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.
sudo apt remove htop
sudo apt purge htop
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.
Pliki będą również kluczowe podczas podłączania dodatkowej elektroniki np. diod, przycisków oraz czujników!
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:
history
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:
cat /proc/meminfo
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:
cat /etc/os-release
Kolejny plik, który warto podejrzeć to cat /proc/cpuinfo. Dzięki niemu dowiemy się ile oraz jakich procesorów posiada Raspberry Pi:
cat /proc/cpuinfo
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:
cat /proc/cpuinfo | less
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ść.
Jak dokładnie korzystać z less? Informacje na ten temat znaleźć można oczywiście po wywołaniu polecenia man less.
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.
tree / -L 1
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):
tree / -L 2 > drzewko.txt
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.
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:
vcgencmd measure_temp
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.
Czy wpis był pomocny? Oceń go:
Średnia ocena 4.9 / 5. Głosów łącznie: 329
Nikt jeszcze nie głosował, bądź pierwszy!
Artykuł nie był pomocny? Jak możemy go poprawić? Wpisz swoje sugestie poniżej. Jeśli masz pytanie to zadaj je w komentarzu - ten formularz jest anonimowy, nie będziemy mogli Ci odpowiedzieć!
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.
Dołącz do 20 tysięcy osób, które otrzymują powiadomienia o nowych artykułach! Zapisz się, a otrzymasz PDF-y ze ściągami (m.in. na temat mocy, tranzystorów, diod i schematów) oraz listę inspirujących DIY na bazie Arduino i Raspberry Pi.
Dołącz do 20 tysięcy osób, które otrzymują powiadomienia o nowych artykułach! Zapisz się, a otrzymasz PDF-y ze ściągami (m.in. na temat mocy, tranzystorów, diod i schematów) oraz listę inspirujących DIY z Arduino i RPi.
Trwa ładowanie komentarzy...