KWALIFIKACJA INF2 - PAŹDZIERNIK 2016

PYTANIE NR 13.
Które polecenie należy wydać, aby uzyskać wykaz przedstawionych plików?
Ilustracja przedstawia fragment terminala systemu operacyjnego Linux, pokazujący listę plików w katalogu.
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Polecenie ls -l wyświetla listę plików w formacie długim (uprawnienia, właściciel, rozmiar, data). W bash wzorce są rozwijane przed uruchomieniem programu: *a* wybiera pliki z literą "a" w nazwie, a *.jpg wszystkie pliki JPG. Razem dają dokładnie widoczny wykaz.

Pełne wyjaśnienie:

W systemach Unix/Linux do listowania zawartości katalogu służy polecenie ls. Dodanie opcji -l (tzw. long format) powoduje, że każdy plik jest wypisany w postaci szczegółowego wiersza zawierającego m.in. uprawnienia, liczbę dowiązań, właściciela i grupę, rozmiar, datę modyfikacji oraz nazwę.

Kluczowe jest też zrozumienie działania globów (wildcards). W powłoce bash znaki takie jak * i ? są interpretowane przez powłokę jeszcze przed uruchomieniem programu. Oznacza to, że polecenie ls -l *a* *.jpg nie przekazuje do ls "gwiazdek", tylko listę wszystkich nazw plików, które pasują do podanych wzorców.

  • *a* dopasowuje dowolną nazwę zawierającą literę "a" (np. mama.xls, tata.txt).
  • *.jpg dopasowuje wszystkie pliki z rozszerzeniem .jpg (np. test.jpg, test2.jpg).

Podanie dwóch wzorców w jednym wywołaniu powoduje, że bash rozszerza oba i przekazuje do ls sumę dopasowań, więc wynik obejmuje jednocześnie pliki "z a w nazwie" oraz pliki JPG.

Dlaczego pozostałe odpowiedzi są błędne?

  • dir *a*.jpg jest typowe dla środowisk Windows/DOS; w Linux nie jest standardowym odpowiednikiem i dodatkowo wzorzec wymaga jednocześnie "a" oraz końcówki .jpg, co nie odpowiada pokazanemu zestawowi.
  • grep *a* *.jpg służy do przeszukiwania treści plików (a nie listowania nazw), więc nie generuje wykazu plików w formacie jak na ilustracji.
  • find *.jpg | *a* ma niepoprawną składnię: find wymaga ścieżki/startu wyszukiwania i warunków (np. -name), a sam "*a*" po znaku | nie jest poleceniem filtrującym.

Na egzaminie warto pamiętać: jeśli w odpowiedzi ma się pojawić format długi i konkretne nazwy plików, najczęściej właściwe będzie ls -l połączone z poprawnymi globami rozwijanymi przez bash.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
ls służy do listowania zawartości katalogu, czyli wyświetlania nazw plików i katalogów. W zależności od opcji może pokazywać dane szczegółowe (np. uprawnienia i rozmiar) albo tylko nazwy. To podstawowe narzędzie administracyjne do szybkiej kontroli plików.
Opcja -l włącza format długi listowania. Zamiast samych nazw zobaczysz m.in. uprawnienia (np. -rw-r--r--), właściciela i grupę, rozmiar, datę modyfikacji oraz nazwę pliku. To ułatwia diagnostykę uprawnień i atrybutów.
Wzorzec *a* dopasowuje każdą nazwę pliku, która zawiera literę a w dowolnym miejscu. Gwiazdka * oznacza "dowolny ciąg znaków" (także pusty). Powłoka bash zamienia wzorzec na listę dopasowanych nazw, zanim uruchomi program.
*.jpg dopasowuje wszystkie pliki, których nazwa kończy się rozszerzeniem .jpg. Jest to glob, a nie wyrażenie regularne. Jeśli w katalogu są np. test.jpg i test2.jpg, oba zostaną podstawione do polecenia przez bash i mogą zostać wyświetlone przez ls.
To mechanizm powłoki nazywany globbingiem. Dzięki niemu wiele poleceń może działać na grupach plików bez dodatkowych narzędzi. Program (np. ls) dostaje już konkretne nazwy plików jako argumenty. Dlatego składnia globów jest "wspólna" dla wielu poleceń.
Tak. Możesz podać wiele globów, np. ls -l *a* *.jpg. Bash rozwinie każdy wzorzec osobno i przekaże do ls sumę dopasowanych nazw. To szybki sposób, aby jednocześnie wyświetlić pliki spełniające różne kryteria bez potoków i dodatkowych filtrów.
ls jest standardowym poleceniem w Unix/Linux. dir jest kojarzone głównie z DOS/Windows (choć bywa dostępne jako alias lub narzędzie zgodności w niektórych środowiskach). Na egzaminach z administracji Linux bezpiecznie zakłada się użycie ls i jego opcji.
grep wyszukuje wzorce w treści danych (np. w plikach lub strumieniu wejścia), a nie tworzy listy nazw plików w katalogu. Żeby grep pomógł przy nazwach, trzeba najpierw wygenerować listę (np. ls) i dopiero ją filtrować, co jest innym zadaniem niż samo globowanie.
Najczęściej używa się składni z katalogiem startowym i warunkiem nazwy, np. find . -name "*.jpg". Wtedy find przeszukuje drzewo katalogów od bieżącego miejsca. Samo find *.jpg oznacza coś innego (argumenty po globie), a potok do "*a*" nie ma sensu, bo to nie jest polecenie.
Najczęstsze pomyłki to: traktowanie globów jak wyrażeń regularnych, zakładanie że program interpretuje gwiazdki (a nie bash), oraz budowanie potoków tam, gdzie wystarczy kilka wzorców w jednym poleceniu. Warto też uważać na to, czy wzorzec ma dotyczyć końcówki (np. *.jpg) czy dowolnego fragmentu (*a*).
info

Około 43% zdających odpowiada poprawnie na to pytanie. trudne

Specjaliści zwracają uwagę: "Polecenie ls -l wyświetla listę plików w formacie długim (uprawnienia, właściciel, rozmiar, data)."

Źródła:

  • GNU Bash Reference Manual: "Filename Expansion" (globbing) — https://www.gnu.org/software/bash/manual/bash.html#Filename-Expansion — dostęp 2026-02-18
  • GNU Coreutils Manual: "ls invocation" — https://www.gnu.org/software/coreutils/manual/html_node/ls-invocation.html — dostęp 2026-02-18
  • linux man-pages / man7.org: "ls(1)" — https://man7.org/linux/man-pages/man1/ls.1.html — dostęp 2026-02-18

Materiały:

  • Strony podręcznika: man ls oraz info coreutils (sekcja ls)
  • Dokumentacja GNU Bash: rozdział o "Filename Expansion" (globbing)
  • Ćwiczenia w terminalu: tworzenie plików i testowanie wzorców (*, ?, nawiasy klamrowe)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego