Przejdź do głównej treści

Kwalifikacja: INF.02 - Administracja i eksploatacja systemów komputerowych, urządzeń peryferyjnych i lokalnych sieci komputerowych

Zawód: Technik informatyk

Kategorie: Systemy operacyjne Linux/Unix

Aby w systemie Linux wyszukać wszystkie pliki z rozszerzeniem txt, znajdujące się w katalogu /home/user i zawierające w nazwie ciąg znaków abc, należy wydać polecenie

A. ls /home/user/?abc?.txt
B. ls /home/user/*abc*.txt
C. ls /home/user/[a-c].txt
D. ls /home/user/[abc].txt

Pytanie z egzaminu CKE, czerwiec 2021 (arkusz E.12-SG-21.06).

Polecenie ls /home/user/*abc*.txt dobrze spełnia warunki zadania, bo używa mechanizmu rozwijania nazw plików przez powłokę, czyli tzw. globbing. Gwiazdka * oznacza dowolny ciąg znaków, także pusty, więc zapis *abc*.txt pasuje do nazw takich jak abc.txt, plik_abc.txt, abc_kopia.txt czy raport_abc_2024.txt. Końcówka .txt wymusza rozszerzenie txt, a ścieżka /home/user/ ogranicza wyszukiwanie do wskazanego katalogu. W praktyce to bardzo szybki sposób na sprawdzenie plików w terminalu, szczególnie przy codziennej administracji Linuksem. Moim zdaniem warto jednak pamiętać, że ls z takim wzorcem działa głównie na poziomie bieżącego katalogu wskazanego w ścieżce, bez przeszukiwania podkatalogów. Jeśli trzeba szukać rekurencyjnie albo tylko zwykłych plików, lepszą praktyką administracyjną jest użycie find, np. find /home/user -type f -name '*abc*.txt'. W pytaniu chodzi jednak o dopasowanie nazwy w katalogu, więc glob *abc*.txt jest właściwym i klasycznym rozwiązaniem.
W tym zadaniu kluczowe jest rozumienie symboli wieloznacznych używanych przez powłokę Linuksa, a nie samo polecenie ls. Znak ? oznacza dokładnie jeden dowolny znak, więc wzorzec ?abc?.txt dopasuje tylko takie nazwy, w których przed abc jest jeden znak i po abc też jest jeden znak, na przykład xabcy.txt. Nie znajdzie już pliku abc.txt ani dokument_abc_kopia.txt, bo tam liczba znaków przed lub po ciągu abc jest inna. To częsty błąd: ktoś traktuje ? jak elastyczną gwiazdkę, a to zupełnie inny operator. Nawiasy kwadratowe też mają inne znaczenie niż zwykłe wpisanie tekstu. Wzorzec [abc].txt oznacza jeden znak wybrany ze zbioru a, b albo c, czyli pasuje do a.txt, b.txt lub c.txt, ale nie do nazwy zawierającej cały ciąg abc. Podobnie [a-c].txt oznacza jeden znak z zakresu od a do c, więc nadal chodzi tylko o pojedynczą literę, nie o trzyznakowy fragment nazwy. Z mojego doświadczenia najłatwiej zapamiętać to tak: * służy do dowolnie długich fragmentów nazwy, ? do jednego znaku, a [] do wyboru jednego znaku z podanego zestawu lub zakresu. Dlatego przy szukaniu plików, które mają gdziekolwiek w nazwie abc i kończą się na .txt, potrzebny jest wzorzec *abc*.txt. To jest zgodne z typową pracą w terminalu Linux/Unix i z dobrą praktyką czytelnego budowania masek nazw plików.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.