Użytkowanie komputerów i podstawy systemów operacyjnych - laboratorium 02
Post

Użytkowanie komputerów i podstawy systemów operacyjnych - laboratorium 02

Systemy Operacyjne: Linux – Laboratorium 2

Wprowadzenie

Podczas pierwszych zajęć zapoznaliśmy się z podstawowymi operacjami w wierszu poleceń systemu Linux, takimi jak przenoszenie plików, zarządzanie ścieżkami oraz kopiowanie danych. Osoby, które potrzebują przypomnienia, odsyłam do skryptu z Laboratorium 1.

Na dzisiejszych zajęciach skupimy się na bardziej zaawansowanych technikach pracy z terminalem. Omówimy nadawanie uprawnień do plików i katalogów, zastosowanie znaków specjalnych (wildcards), wykorzystanie filtrów oraz operacje na tekście.

Znaki specjalne (Wildcards)

Często zachodzi potrzeba wykonania operacji na wielu plikach, które mają wspólny element w nazwie, na przykład logi aplikacji, przepisy kulinarne czy pliki o określonym rozszerzeniu. W takich sytuacjach pomocne są tzw. wildcards – znaki specjalne umożliwiające zastępowanie jednego lub wielu znaków w nazwach plików.

Podstawowe znaki specjalne to:

  • * – zastępuje dowolny ciąg znaków (w tym pusty),
  • ? – zastępuje dokładnie jeden dowolny znak,
  • [] – pozwala określić zestaw lub zakres dopuszczalnych znaków.

Przykłady zastosowania:

  • Wyświetlenie wszystkich plików z rozszerzeniem .txt w bieżącym katalogu:

    1
    
    ls *.txt
    
  • Wyświetlenie wszystkich plików, których nazwa zaczyna się od “Lasagne”:

    1
    
    ls Lasagne*
    

Należy pamiętać, że system Linux rozróżnia wielkość liter (jest case-sensitive). Aby uwzględnić pliki, których nazwa zaczyna się zarówno od “Lasagne”, jak i “lasagne”, możemy użyć znaku zapytania:

1
ls ?asagne*

To polecenie wyszuka pliki, które na pierwszej pozycji nazwy mają dowolny znak, po którym następuje ciąg “asagne”, a następnie dowolny ciąg znaków.

Przykłady użycia nawiasów kwadratowych:

  • Wyświetlenie plików, których nazwa zaczyna się od litery j, k lub m:

    1
    
    ls [jkm]*
    
  • Wyświetlenie plików, które w nazwie zawierają cyfry od 0 do 5:

    1
    
    ls *[0-5]*
    
  • Wyświetlenie plików, których nazwa nie zaczyna się od liter z zakresu h do n:

    1
    
    ls [^h-n]*
    

Znak ^ wewnątrz nawiasów kwadratowych oznacza negację.

Uwaga: Wildcards są interpretowane przez powłokę systemową (shell), a nie przez konkretne polecenia czy programy. Oznacza to, że możemy je stosować w połączeniu z dowolnymi poleceniami w terminalu.

Przykład zastosowania w praktyce:

Przeniesienie wszystkich przepisów na lasagne z katalogu Obiady do katalogu Przepisy:

1
mv Obiady/?asagne* Przepisy/

Ćwiczenie 1

Utwórz dwa katalogi o dowolnych nazwach (w tym przykładzie będą to Katalog1 i Katalog2). W katalogu Katalog1 utwórz następujące pliki:

1
touch list.txt lost last.txt tost.txt ticket.txt post.txt

Twoim zadaniem jest przekopiowanie plików list.txt, lost oraz tost.txt do katalogu Katalog2, używając jednego polecenia i odpowiednich znaków specjalnych.

Uprawnienia plików i katalogów

System Linux umożliwia precyzyjne zarządzanie uprawnieniami do plików i katalogów. Każdy plik i katalog posiada zestaw uprawnień dla trzech kategorii użytkowników:

  1. Właściciel (user) – zazwyczaj twórca pliku,
  2. Grupa (group) – grupa użytkowników, do której należy plik,
  3. Pozostali (others) – wszyscy inni użytkownicy systemu.

Każda z tych kategorii może posiadać następujące uprawnienia:

  • r (read) – prawo do odczytu,
  • w (write) – prawo do zapisu (modyfikacji),
  • x (execute) – prawo do wykonania (dla plików wykonywalnych) lub wejścia do katalogu.

Aby wyświetlić listę plików wraz z ich uprawnieniami, użyjemy polecenia:

1
ls -l

Pierwsza kolumna wyjścia tego polecenia zawiera informacje o typie pliku oraz uprawnieniach, w postaci 10 znaków:

  • Pierwszy znak określa typ pliku (- dla pliku zwykłego, d dla katalogu),
  • Kolejne 9 znaków podzielone są na trzy grupy po trzy znaki, reprezentujące uprawnienia dla właściciela, grupy i pozostałych.

Przykład:

1
-rwxr-xr--
  • rwx – uprawnienia właściciela (odczyt, zapis, wykonanie),
  • r-x – uprawnienia grupy (odczyt, brak zapisu, wykonanie),
  • r-- – uprawnienia pozostałych (odczyt, brak zapisu, brak wykonania).

Zmiana uprawnień

Do modyfikacji uprawnień służy polecenie chmod. Składnia polecenia:

1
chmod [kogo][znak][uprawnienia] [plik/katalog]

Gdzie:

  • kogo – określa, do kogo odnoszą się zmiany:
    • u – właściciel (user),
    • g – grupa (group),
    • o – pozostali (others),
    • a – wszyscy (all).
  • znak – określa operację:
    • + – dodanie uprawnień,
    • - – odebranie uprawnień,
    • = – ustawienie dokładnych uprawnień.
  • uprawnienia – zestaw uprawnień do zmiany (r, w, x).

Przykład:

Nadanie pozostałym użytkownikom prawa do zapisu do pliku obiad.txt:

1
chmod o+w obiad.txt

Po wykonaniu polecenia możemy sprawdzić aktualne uprawnienia:

1
ls -l obiad.txt

Filtry

Filtry to programy, które przetwarzają dane wejściowe (zwykle tekstowe) i zwracają wynik przetworzenia. Są one często używane w połączeniu z innymi poleceniami za pomocą potoków (|). Poniżej przedstawiamy kilka podstawowych filtrów:

  • head – wyświetla początkowe linie pliku (domyślnie 10):

    1
    
    head [-n liczba_linii] [plik]
    
  • tail – wyświetla końcowe linie pliku (domyślnie 10):

    1
    
    tail [-n liczba_linii] [plik]
    
  • sort – sortuje linie w pliku lub danych wejściowych:

    1
    
    sort [opcje] [plik]
    

    Przykładowe opcje:

    • -n – sortowanie numeryczne,
    • -r – sortowanie w porządku odwrotnym,
    • -k – sortowanie według określonej kolumny.
  • nl – numeruje linie w pliku:

    1
    
    nl [plik]
    

Dodatkowe filtry o zaawansowanych możliwościach:

  • sed (stream editor) – edytor strumieniowy umożliwiający wykonywanie operacji na tekście, takich jak zamiana, wstawianie czy usuwanie linii:

    1
    
    sed 'polecenia' [plik]
    

    Przykład: Zamiana wszystkich wystąpień słowa “jabłka” na “gruszki” w pliku lista_zakupow.txt:

    1
    
    sed 's/jabłka/gruszki/g' zakupy.txt
    
  • cut – wycina określone pola lub kolumny z danych wejściowych:

    1
    
    cut [opcje] [plik]
    

    Opcje:

    • -d 'separator' – określa separator pól (domyślnie tabulator),
    • -f pola – wskazuje, które pola wyciąć.

    Przykład: Wycięcie pierwszej kolumny (np. nazwy sklepu) z pliku lista_zakupów.txt:

    1
    
    cut -d ' ' -f 1 lista_zakupów.txt
    
  • uniq – eliminuje powtarzające się linie (działa poprawnie na posortowanych danych):

    1
    
    uniq [opcje] [plik]
    

    Opcje:

    • -c – wyświetla liczbę wystąpień każdej unikalnej linii.

    Przykład: Zliczenie liczby wystąpień każdej unikalnej linii w pliku lista_zakupów.txt:

    1
    
    sort lista_zakupów.txt | uniq -c
    
  • tac – wyświetla zawartość pliku w odwrotnej kolejności (od ostatniej linii do pierwszej):

    1
    
    tac [plik]
    

    Przykład: Wyświetlenie pliku notatki.txt od końca:

    1
    
    tac notatki.txt
    

Ćwiczenie 2

  1. Utwórz plik o nazwie lista_zakupów.txt, zawierający co najmniej 15 pozycji w formacie:

    1
    
    [Sklep] [Produkt] [Ilość]
    

    Przykład pliku lista_zakupów.txt :

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    Lidl ogórki 7
    Lidl jajka 10
    Auchan Coca-Cola 12
    E.Leclerc piwo 128
    Biedronka chleb 5
    Carrefour masło 3
    Lidl mleko 6
    Auchan ser 2
    Biedronka cukier 4
    E.Leclerc kawa 1
    Carrefour herbata 2
    Lidl pomidory 8
    Auchan woda 20
    Biedronka mąka 2
    E.Leclerc sól 1
    
  2. Korzystając z odpowiednich filtrów, wyświetl tylko te pozycje, które dotyczą zakupów w sklepie “Lidl”.


@Skrypt przygotowany na bazie pracy mgr inż. Michała Hyli. http://mhyla.com