Norbert Langner

Norbert Langner

My homepage @ PUT

Poruszanie się po konsoli Linuksa

Na zajęciach nauczymy się podstaw poruszania się po konsoli systemu GNU/Linux. Dowiemy się jak poruszać się w środowisku tekstowym, poznamy najważniejsze polecenia i uruchamiać programy działające w trybie tekstowym.

Wprowadzenie

Systemy Linuksowe, a ściślej mówiąc, różne dystrybucje systemu GNU/Linux są najpopularniejszymi systemami operacyjnymi w środowisku serwerowym. W przypadku najpopularniejszych stron internetowych, możemy mówić o dominacji, gdyż ponad 95% serwerów, które na co dzień dostarczają nam treści do czytania, czy oglądania działają na Linuksie[1]. O ile na naszych komputerach najczęściej pracujemy na programach wykorzystujących Graficzny Interfejs Użytkownika (ang. GUI), to w systemach serwerowych najlepiej sprawdzają się środowiska tekstowe. Powody są dwa: rysowanie graficznego interfejsu wymaga zasobów obliczeniowych, które lepiej przeznaczyć na szybsze działanie żądanej usługi (np. strony WWW), po drugie, łatwiej jest napisać i utrzymać automatyzację pewnych czynności. Obrazując, skopiowanie pliku opis.txt z jednego folderu do drugiego, to wywołanie polecenia:

cp /sciezka/do/pliku/opis.txt /nowe/miejsce/opis.txt

W trybie graficznym algorytm wyglądałby mniej więcej tak:

  1. Uruchom Menedżer Plików
  2. Przejdź do głównego dysku
  3. Przejdź kolejno do folderów: /sciezka/do/pliku
  4. Kliknij prawym przyciskiem myszy na pliku opis.txt
  5. Wybierz opcję “Skopiuj”
  6. Przejdź do folderu /nowe/miejsce
  7. W wolnej przestrzeni kliknij prawym przyciskiem myszy
  8. Wybierz opcję “Wklej”

Powyższy opis zakłada, że program do automatyzacji wie, co klika w okienku, a nie operuje na poszczególnych pikselach ekranu. Jak widać, gdy wiemy, co chcemy zrobić, nawet samodzielne wpisanie polecenia w Terminalu1) może być szybsze niż sekwencja poleceń. A teraz wyobraźmy sobie, że musimy skopiować więcej plików, np. wszystkie z rozszerzeniem .txt. Między innymi dlatego administratorzy i tzw. power userzy chętnie korzystają z tego magicznego okienka.

Przygotowanie środowiska pracy

“Przed wyruszeniem w drogę, należy zebrać drużynę[2], tj. przygotować sobie środowisko pracy. Z racji różnych form i miejsc prowadzenia zajęć, dokładny instruktaż przedstawi prowadzący zajęcia.

Poza zajęciami jest kilka możliwości, żeby kontynuować przygodę z Linuksem. Jeśli korzystasz z systemu Windows 10 lub 11 najłatwiej jest rozpocząć od WSL-a (Windows Subsystem for Linux). W skrócie, jest to funkcja systemu Windows, która udostępnia nam gotowe do użycia środowisko Linuksowe w ramach systemu Windows, łącząc niejako dwa odmienne światy. [3].

Studenci Wydziału Informatyki i Telekomunikacji mogą także skorzystać z dostępu zdalnego do serwera instytutowego. Logowanie odbywa się przez program ssh lub PuTTY. Dokładnych instrukcji udzieli prowadzący zajęcia.

Trzecia opcja to zainstalowanie Linuksa na maszynie wirtualnej2), np. VirtualBox. W ten sposób można zapoznać się z procesem instalacji systemów z rodziny GNU/Linux oraz bezpiecznie eksperymentować, nie narażając naszych danych na skasowanie. Na początek możesz zainteresować się dystrybucją Ubuntu, która ma najszersze wsparcie społeczności skupionej wokół Linuksa.

Czwarta opcja to instalacja Linuksa obok (lub zamiast :P) obecnego systemu operacyjnego. Tę opcję zostawiam dla odważnych.

Czarne okienko z literkami

Początki bywają trudne, a nasze wyglądają mniej więcej tak:

Cóż, program który mamy uruchomiony to Terminal, jest to nasze okienko na świat Linuksa. Wygląd i treść może się nieco różnić od zaprezentowanej powyżej, ale jedno jest pewne, ostatnia linijka tekstu. To jest prompt, w wolnym tłumaczeniu “znak zachęty”. Zachęty, rzecz jasna, do wpisania polecenia, bo komputer nie może się już doczekać, żeby coś dla nas zrobić.

W tym momencie możemy spróbować wydać pierwsze polecenie. Niech to będzie ls, spróbuj teraz wpisać te dwie literki w to czarne okienko i naciśnij klawisz Enter. Zobaczysz prostą listę plików i folderów w katalogu, w którym się aktualnie znajdujesz. Co to znaczy? To, czemu wydajemy polecenia, nazywa się powłoką systemową (ang. shell), u nas jest to program bash. Na razie wystarczy, że wiesz, że bash analizuje to, co wpisujesz i próbuje wykonać żądane polecenie. Oprócz tego, powłoka przechowuje kilka dodatkowych informacji, a jedną z nich jest aktualny folder. W systemach z rodziny Linuksowej, najczęściej, na początku znajdziemy się w naszym folderze domowym (czyli miejscem na nasze osobiste dane). Na dysku to będzie ścieżka podobna do tej: /home/twoj_uzytkownik. Zauważmy, że nie mamy tutaj dysków C:, D:, E:, itd., ot to nieco inna filozofia pracy - mamy tylko jedno drzewo folderów. Na dokładniejsze omówienie tej sprawy przyjdzie czas, my skupmy się na podstawach. Reasumując, ls wypisał nam zawartość naszego folderu domowego.

Zanim przejdziemy dalej, muszę powiedzieć o najważniejszym poleceniu, tj. man (skrót od manual, czyli podręcznik). Jest to główne narzędzie dokumentacji podstawowych narzędzi w Linuksie. Być może nie jest to najbardziej porywająca lektura na świecie, ale zazwyczaj bardzo rzeczowa. To polecenie wywołuje się według wzoru: man [rozdział] polecenie3), np. man ls wyświetli nam szczegółową pomoc dla programu wypisującego zawartość folderu. Najczęściej dokumentacja jest w języku angielskim. Tylko od czasu do czasu możemy natrafić na przetłumaczony dokument.

Muszę wspomnieć, że sporą część dokumentacji można wygodnie przeglądać w przeglądarce internetowej. Przykładową stroną, której możemy używać jest https://linux.die.net/ - na start mamy wyszukiwarkę, co może nam pomóc. W większości poleceń warto też próbować uruchamiać je z parametrem -h lub --help, np. mkdir --help.

Podstawowe polecenia

Czas zrobić coś więcej. W tej sekcji zostawię Ci zbiór poleceń do uruchomienia i poeksperymentowania (nie bój się manuala!). Wszystkie wykorzystamy w późniejszym zadaniu.

  • cd - zmiana folderu
    • cd .. - przechodzi do folderu nadrzędnego
    • cd - wraca do folderu domowego
    • cd jakis_folder - przechodzi do folderu jakis_folder, o ile taki istnieje
  • mkdir - stworzenie nowego folderu
  • rmdir - usunięcie pustego folderu
  • touch - tworzy nowy plik
  • cat - wypisuje zawartość pliku na ekran
  • cp - kopiuje plik
  • mv - przenosi lub zmienia nazwę pliku
  • rm - usuwa plik (ostrożnie, nie mamy Kosza)
  • echo - wypisuje na ekran to, co podamy jako argumenty

Jako wprawka spróbuj zrobić te zadania:

  1. Utwórz folder nowe.
  2. Przejdź do wcześniej utworzonego folderu.
  3. Stwórz pusty plik o dowolnej nazwie.
  4. Zobacz zawartość tego folderu.
  5. Skopiuj ten plik (do innej nazwy w tym samym folderze).
  6. Usuń oba pliki.
  7. Przejdź katalog wyżej.
  8. Usuń folder nowe.

Potoki (wersja minimalna)

Polecenia w Linuksie możemy sobie wyobrazić jako pudełka, które coś przyjmują i coś zwracają. Na schemacie będzie to wyglądało tak: Typowo standardowym wejściem jest nasza klawiatura, a wyjściem jest nasz terminal. Na diagramie jest jeszcze wskazane standardowe wyjście komunikatów o błędach, domyślnie jest to też nasz terminal. Różnica jest w buforowaniu, czyli tym, jak szybko informacje z danego strumienia trafią do nas. stderr nie jest buforowane, więc cokolwiek tam trafi, od razu pojawi się na naszym ekranie (kosztem mniejszej kontroli nad ostatecznym wyglądem komunikatów).

Powyższe strumienie mają dwa zastosowania. Po pierwsze, możemy je przekierowywać, tj. poprosić system aby stdout zamiast na ekran trafił do pliku. Wykonaj poniższe zadania, zobaczmy na przykładzie.

  1. echo ala ma kota > plik.txt
  2. cat plik.txt

Drugie zastosowanie to tzw. potoki, czyli łączenie poleceń. Na schemacie będzie to wyglądało tak:

Potoki wykonuje się według schematu: polecenie1 | polecenie2 | … | polecenieN

Oznacza to, że polecenie1 przekaże swój wynik na wejście polecenie2, i tak dalej, aż do ostatniego polecenieN, które swój wynik wypisze na ekran. Dodatkowo, polecenie1 może, lecz nie musi, przyjąć dane, które wpiszemy ręcznie na klawiaturze. Warto zauważyć, że nie wszystkie polecenia można lub jest sens łączyć ze sobą. Dane przekazywane są sekwencyjnie.

Jako przykład użyjemy polecenia tr, które “tłumaczy” znaki, czyli je zamienia według podanego przepisu. Wykonaj poniższe polecenie, aby zobaczyć to na własne oczy.

echo ala ma kota | tr a-z d-za-c

Właśnie stworzyliśmy prosty potok szyfrujący wpisany tekst szyfrem Cezara [4]. Możliwości tutaj są dużo większe, ale na ten moment wystarczy, bo czas przejść do zadania.

Zadanie

Nasz administrator zostawił otwartego laptopa na stole w barze i poszedł do kolejki zamówić zapiekankę. Niesforni studenci Zbychu i Krycha zauważyli to i postanowili nieco napsocić. Jako, że kolejka była długa, a nasz kolega był zapatrzony w filmiki ze śmiesznymi kotkami, niczego nie zauważył. Pech chciał, że admin był zalogowany na naszym serwerze i Zbychu z Krychą usunęli nam naszą stronę zastępując czymś takim. Studenci byli jednak na tyle mili, że zostawili nam kopię naszej strony, ale zabezpieczyli ją hasłem! Dodatkowo, porozrzucali niektóre pliki po trzech kontach na serwerze i teraz musimy się w tym odnaleźć. Chyba chcą się z nami zabawić i zostawili nam poszlaki, to miłe, pewnie liczą na ułaskawienie przez Dziekana. No zobaczymy. Aha, byłbym zapomniał, nasz administrator zauważył, że coś jest nie tak, ale tak był głodny, że skupił się na swojej zapiekance i o sprawie zapomniał. Gdy już wszyscy się dowiedzieli, że “ADMIN PUPA”, nasz admin znikł. To pewnie ta niezdrowa zapiekanka mu zaszkodziła. Tyle razy mu mówiłem, żeby nie jadł tego badziewia codziennie i teraz ma za swoje.

Jako, że nie możemy na niego liczyć, to musimy działać niekonwencjonalnie. Udało nam się ustalić hasła do kont stworzonych przez nasz psotliwy duet (zapisali je na kartce, którą zostawili w barze), ale ktoś teraz musi pociągnąć ten temat dalej. Liczę na waszą pomoc, bo sam trochę cykam się tej konsoli. Wiem tylko, że musicie się zalogować na te konta, porozglądać i przywrócić naszą stronę! A jak jeszcze ustalicie nr albumów tych studentów, to w ogóle będzie super. Skoro zostawili nam poszlaki, to pewnie się tam podpisali bardziej niż z imion. Nasz admin to raczej specjalista, ale myślimy, że trzech studentów 1. roku da radę.

Adres serwera, nazwy kont i hasła przekażę wam ustnie, takich rzeczy na papierze podobno nie wolno zostawiać. Tak przynajmniej mówił administrator.

W skrócie, zalogujcie się na serwerze, zobaczcie, co tam jest, podążajcie za poszlakami i rozwiążcie nasz problem! I pamiętajcie, macie cały zasób Internetu do wykorzystania. Kiedyś admin mi się zwierzył, że połowa jego pracy to umiejętne korzystanie z wyszukiwarek internetowych.

Numery albumów podajcie w tym linku: https://docs.google.com/forms/d/e/1FAIpQLScWLXc3eUA1-_QQ3AzPl3lC-yhtu6sAzU4O9Buv1ftCevyObw/viewform?usp=sf_link.

Przydatne komendy:

  • unzip
  • tr

Nasza strona powinna znajdować się w folderze /home/webquest<grupa>u1/strona, w naszej kopii jest tylko jeden plik index.html, po prostu go podmieńcie, jak już znajdziecie jak.


[1] Linux Statistics 2024 By Usage, Share, Trend and Users [online], enterpriseappstoday.com [dostęp 2024-05-08]
[2] Cytat z gry Baldur's Gate 2 [online], youtube.com [dostęp 2024-05-09]
[3] Install WSL [online], learn.microsoft.com [dostęp 2024-05-08]
[4] Szyfr Cezara [online], pl.wikipedia.org [dostęp 2024-05-08]
1)
Program, który udostępnia nam środowisko tekstowe w formie okna
2)
W tym znaczeniu to taki komputer w komputerze, czyli program, który symuluje pracę komputera i udostępnia nam jego monitor w formie kolejnego okna na naszym ekranie.
3)
Tę notację należy rozumieć, że man oraz polecenie musi się znaleźć w wywołaniu, natomiast rozdział jest opcjonalny.