Lab 01 - Rozszerzone wprowadzenie do Linuksa
Rozszerzone wprowadzenie do Linuksa
Przypomnienie podstawowych ułatwień pracy
W ramach pracy z terminalem warto przypomnieć sobie kilka przydatnych "sztuczek":
- Podczas wpisywania poleceń, ścieżek dostępu itp. naciskając klawisz
Tab
terminal uzupełni dalszą część polecenia, jeśli jest tylko jedno możliwe dopełnienie. Jeśli możliwości jest kilka, dwukrotne naciśnięcieTab
wyświetli możliwe dopełnienia. - Naciskając klawisze strzałek góra-dół w trakcie pracy z linią poleceń, możemy w łatwy sposób poruszać się pomiędzy wydawanymi w tej sesji poleceniami.
- Szerszy dostęp do historii komend uzyskamy naciskając
Ctrl+R
i wyszukując odpowiednie polecenie - Polecenie
clear
powoduje wyczyszczenie ekranu terminala. - Wpisanie
!!
automatycznie zastępuje ostatnio wydane polecenie. Przykładowo, jeżeli zapomnimy wykonać skomplikowanej komendy z uprawnieniami użytkownika root, wystarczy, że w kolejnym kroku wpiszemysudo !!
. - Aby wydać kilka poleceń w jednej linii, możemy odseparować kolejne komendy znakami
&&
lub;
. W pierwszym przypadku kolejne polecenia będą wykonywać się tylko wtedy, gdy poprzednie nie zakończą się błędem. Oddzielenie średnikiem powoduje sekwencyjne wykonanie komend bez zwracania uwagi na rezultat operacji.
Pomoc systemowa
W systemie Linux dla każdego polecenia dostępna jest pomoc systemowa opisująca różne aspekty i zastosowania danego narzędzia oraz dostępne przełączniki. Jednym z mechanizmów pozwalających na wyświetlenie plików pomocy jest wywołanie polecenia z przełącznikiem --help
, np:
ls --help
powoduje wyświetlenie opisu działania wszystkich przełączników, odniesień do dokumentcji zewnętrznej i innych przydatnych informacji.
Bardziej rozbudowaną dokumentację poleceń można uzyskać poprzez wywołanie:
man nazwa_polecenia
Powoduje to uruchomenie interaktywnej przeglądarki plików pomocy dla podanego programu lub usługi. Pomoc systemowa wyświetlana jest za pomocą przeglądarki more, którą obsługuje się za pomocą następujących poleceń klawiszowych:
Spacja
- przejście do następnej strony;Ctrl+B
- przejście do poprzedniej strony;q
- zamknięcie i opuszczenie przeglądarki;/
- wyszukiwanie tekstu w przód, po znaku / należy wpisać tekst do wyszukania;?
- wyszukiwanie w tył;n
,N
- przejście do następnego (n) lub poprzedniego (N) wystąpienia poszukiwanego wyrażenia.
Informacje o sieci
Polecenie ip
pozwala uzyskać informacje o aktualnym statusie interfejsów sieciowych (w tym o adresie IP komputera).
🛠🔥 Zadanie 1 🛠🔥
Zapoznaj się z pomocą dla polecenia ip
. Korzystając szczególnie z sekcji "EXAMPLES" wyświetl aktualne adresy interfejsów sieciowych komputera.
Obsługa plików
Podstawowe operacje obsługi plików można realizować z wykorzystaniem następujących poleceń:
cp [przełączniki] nazwa_pliku nowa_nazwa_lub_katalog
- kopiowanie pliku określonego przez pierwszy argument pod nazwę lub do katalogu określonego drugim argumentem, np.:cp abc.txt xyz.txt
- kopiuje plikabc.txt
pod nową nazwęxyz.txt
w katalogu bieżącym;cp /tmp/abc.txt ~
- kopiuje plikabc.txt
z katalogu/tmp
do katalogu domowego użytkownika;cp abc.txt ~/xyz.txt
- kopiuje plikabc.txt
z katalogu bieżącego pod nową nazwęxyz.txt
w katalogu domowym użytkownika.
Przydatnym przełącznikiem polecenia cp
jest przełącznik -r
, który służy do kopiowania całych struktur katalogów.
rm [przełączniki] lista_plików
- usuwanie plików podanych jako argumenty wywołania, np.:rm abc.txt xyz.txt
- usuwa plikiabc.txt
ixyz.txt
w katalogu bieżącymrm /tmp/abc.txt
- usuwa plikabc.txt
z katalogu/tmp
Przydatnym przełącznikiem polecenia rm
jest przełącznik -r, który służy do usuwania całych struktur katalogów.
mv [przełączniki] nazwa_pliku nowa_nazwa
- zmiana nazwy pliku określonego pierwszym argumentem wywołania na nazwę określoną drugim argumentem wywołania. Jeśli drugi argument wywołania jest katalogiem, to wówczas plik zostanie przeniesiony do tego katalogu, np.:mv abc.txt xyz.txt
- zmiana nazwy plikuabc.txt
na nazwęxyz.txt
w katalogu bieżącym;mv /tmp/abc.txt ~
- przeniesienie plikuabc.txt
z katalogu/tmp
do katalogu domowego użytkownika.
touch [przełączniki] nazwa_pliku
- modyfikuje informacje na temat czasów modyfikacji i odczytu pliku, ale pozwala także na utworzenie pliku, np.:touch abc.txt
- utworzenie (pustego) plikuabc.txt
w katalogu bieżącym.
Polecenia dotyczące plików (i katalogów) można także wydawać z wykorzystaniem tzw. wzorców uogólniających, które tworzy się z zastosowaniem następujących operatorów:
*
- zastępuje dowolny ciąg znaków (także pusty),
?
- zastępuje dokładnie jeden dowolny znak,
[<znaki>]
- zastępuje dokładnie jeden znak z podanego zakresu, np.: [xyz]
[^<znaki>]
- znak ^ na początku oznacza dopełnienie zbioru, czyli dla przykładu [^xyz]
, oznacza dowolny znak nie będący literą x, y
i z
.
Oto przykładowe polecenia z wykorzystaniem wzorców uogólniających:
cp ./*.txt ~
- kopiowanie wszystkich plików z rozszerzeniem .txt z katalogu bieżącego do katalogu domowego użytkownika,
rm ~/[0-9]*
- usunięcie wszystkich plików z katalogu domowego, których nazwa rozpoczyna się od cyfry.
Edytory tekstu nano
, vim
W pracy z systemami, które nie posiadają środowiska graficznego lub poprzez zdalny terminal często zachodzi konieczność edycji plików tekstowych z poziomu terminala. Sprawna edycja plików tekstowych możliwa jest dzięki konsolowym edytorom takim jak Emacs, Vim czy Nano.
Osoby posługujące się takimi edytorami na co dzień znają mnóstwo skrótów i trików, które powodują, że praca z takim programem może być sprawniejsza niż z edytorem graficznym.
Nano
Na potrzeby sporadycznej edycji plików, np. konfiguracyjnych, najprostszy w użyciu jest program Nano. Oferuje on quasi-graficzny interfejs z podpowiedziami skrótów klawiszowych.
Przykładowe użycie (jeśli plik nie istnieje, zostanie utworzony):
nano plik.txt
Najważniejsze skróty:
- Ctrl-o - zapisz
- Ctrl-x - wyjdź
- Ctrl-k - wytnij tekst (domyślnie bieżąca linia)
- Ctrl-u - wklej tekst
Vim/Neovim
Bardziej sprawna (aczkolwiek wymagająca pewnej wstępnej wiedzy) edycja plików jest możliwa w edytorze Vim. Istnieje też jego alternatywna wersja: Neovim.
Przykładowe użycie (jeśli plik nie istnieje, zostanie utworzony):
vim plik.txt
lub dla wersji Neovim:
nvim plik.txt
Najważniejsze skróty klawiszowe:
i
- przechodzi w tryb edycji, pozwala na wprowadzenie tekstua
- przechodzi w tryb edycji za kursorem, pozwala na wprowadzanie tekstuEsc
- wychodzi z trybu edycji lub przerywa wpisywanie komendy
Komendy (zatwierdzane enterem):
:w
- zapisz:q
- wyjdź:q!
- wyjdź bez zapisywania:x
- zapisz i wyjdź
🛠🔥 Zadanie 2 🛠🔥
Korzystając z Vim-a wyedytuj dowolny plik tekstowy.
🛠🔥 Zadanie 3 🛠🔥
Zmierz czas edycji dowolnego pliku używając polecenia time
:
time vim plik.txt
Wyłączanie, ponowne uruchamianie i wstrzymywanie pracy komputera
W systemach bez graficznego interfejsu użytkownika (tzw. systemy headless) przyda się znajomość komend służących do bezpiecznego zarządzania pracą urządzenia.
Zdecydowana większość dystrybucji systemu Linux używa demona systemowego systemd. W związku z tym warto poznać komendy:
systemctl poweroff
- wyłącza urządzenie,systemctl reboot
- uruchamia urządzenie ponownie,systemctl suspend
- wstrzymuje (usypia) urządzenie.
Usypianie urządzenia jest wspierane na komputerach osobistych, ale może nie być zaimplementowane na komputerach jednopłytkowych (na przykład RaspberryPi).
Dla wspomnianych głównych poleceń istnieją wersje skrótowe (tak zwane aliasy):
poweroff
reboot
🛠🔥 Zadanie 4 🛠🔥
Przetestuj działanie polecenia systemctl suspend
.
Instalacja pakietów
W dystrybucjach systemu Linux oprogramowanie instaluje się z centralnych repozytoriów. Należy unikać "zaśmiecania" systemu za pomocą zewnętrznych instalatorów pobieranych ze stron internetowych (na przykład w postaci plików .run).
W dystrybucji Ubuntu do instalowania paczek służy narzędzie apt
. Część programów (zazwyczaj okienkowych) jest również dostępna jako pakiety snap
. Ubuntu posiada graficzny "sklep" z aplikacjami o nazwie Software.
🛠🔥 Zadanie 5 🛠🔥
Wykonaj polecenie apt --help
. Zapoznaj się z dostępnymi opcjami. Spróbuj wyszukać dowolny pakiet (na przykład neovim).
Zdalny dostęp do urządzeń
System Linux jest wyposażony w narzędzia umożliwiające zdalny dostęp do konsoli innego urządzenia oraz transfer plików.
Polecenie ssh
Polecenie ssh
służy do uzyskiwania zdalnego dostępu do innego urządzenia. Składnia polecenia wygląda następująco:
ssh <user>@<address>
na przykład:
podłączy nas do naszego własnego komputera.
Jeśli nazwa użytkownika na zdalnym urządzeniu jest identyczna z naszą nazwą użytkownika możemy ją pominąć w komendzie:
ssh 127.0.0.1
🛠🔥 Zadanie 6 🛠🔥
Zapytaj kolegów z sąsiedniego stanowiska o ich adres IP. Podłącz się do ich komputera i wyłącz go.
UWAGA 1: hasło do konta to put.
UWAGA 2: przy zdalnym dostępie może występować konieczność uruchomienia komendy wyłączającej komputer jako administrator - można poprzedzić ją poleceniem sudo.
Transfer plików pomiędzy urządzeniami
Podstawowym poleceniem służącym do transferu plików między urządzeniami jest scp
. Składnia jest połączeniem cp oraz ssh:
scp <local_file> <user>@<address>:<target_directory>
scp -r <local_directory> <user>@<address>:<target_directory>
scp <user>@<address>:<remote_file> <local_directory>
scp -r <user>@<address>:<remote_directory> <local_directory>
🛠🔥 Zadanie 7 🛠🔥
Pobierz z innego komputera dowolny plik oraz katalog. Zmień jego zawartość i prześlij z powrotem.
Narzędzie rsync
Narzędzie rsync
służy do przyrostowego (umożliwia wznawianie) przesyłania plików i/lub katalogów. Bardzo dobrze nadaje się do transferu dużej ilości danych. Istnieje bardzo wiele opcji jego konfiguracji, jednak w większości przypadków do transferu sprawdzi się następująca składnia:
rsync -PHAXphax <local_directory> <user>@<address>:<target_directory>
rsync -PHAXphax <user>@<address>:<remote_file> <local_directory>
🛠🔥 Zadanie 8 🛠🔥
Sprawdź co oznaczają powyższe flagi narzędzia rsync
. Wykorzystaj polecenie do transferu wybranego katalogu.