<- Poprzedni rodział -- Następny rozdział ->

Rozdział 11: Szukanie pomocy, przeszukiwanie zasobów i wyświetlanie informacji o plikach

Niejednokrotnie zdarzy się sytuacja w której poznamy nowe polecenie, ale nie będziemy wiedzieli w jaki sposób z niego skorzystać. Człowiek nie jest w stanie zapamiętać wszystkiego, a jeżeli z czegoś nie korzysta często może nie pamiętać co dokładanie dane polecenie lub opcja robi. Z tych dwóch powodów twórcy systemu Linux stworzyli kilka udogodnień dających możliwość poznania, uzupełnienia lub/i poszerzenia wiedzy. Dzięki temu rozwiązaniu nie musimy intensywnie korzystać z internetu ponieważ w większości przypadków wystarczą informacje z podręcznika systemowego.

W tym artykule poznamy sposoby korzystania z tego typu dobrodziejstw.

Podręcznik man

Najprostszym sposobem uzyskania informacji o jakimś poleceniu jest użycie man. W ten sposób mamy dostęp do dokumentacji zawierającej informacje dotyczące każdego polecenia. Chociaż na pierwszy rzut oka wydawać by się mogło, iż opis poleceń zawarty w tych podręcznikach jest trochę zagmatwany to, po wnikliwym wczytaniu się w treść jesteśmy w stanie odnaleźć odpowiedzi na większość pytań.

Wyświetlmy dokumentację wcześniej poznanego polecenia ls:

kali@kali:~$ man ls

Niestety aby ukazać co mi się wyświetliło musiałbym przekopiować całą dokumentację na temat polecenia ls, a jest tego sporo. W związku z powyższym postanowiłem, że pominę wklejenie tej treści a skupię się jedynie na opisie.

Po wpisaniu man uruchomiony został edytor tekstowy w którym opisano polecenie ls. Po wciśnięciu literki „h” będąc w podręczniku otrzymamy listę dostępnych skrótów klawiszowych potrzebnych do poruszania się. Te z których ja najczęściej korzystam przedstawiam poniżej:

strzałka w dół – przesuwa tekst po linijce do dołu;

strzałka w górę – przesuwa tekst po linijce do góry;

Page Down - przesuwa po kilka linijek w dół (o całą stronę);

Page Up – przesuwa po kilka linijek w górę (o całą stronę);

/ - po wciśnięciu tego klawisza otrzymujemy możliwość przeszukiwania dokumentacji poprzez wpisanie poszukiwanej frazy;

q – kończy działanie programu oraz wcześniej wybranych opcji;

Polecenie apropos

Chociaż polecenie man powinno w większości przypadków wystarczyć to może wydarzyć się taka sytuacja iż informacje o poszukiwanym poleceniu będą znajdowały się w kilku różnych miejscach. Nie wszystkie informacje są zawarte w podręczniku man. Do wyszukania treści innych niż te z podręcznika posłuży polecenie apropos. Spójrzmy na poniższy przykład:

kali@kali:~$ apropos ls add-shell (8) - add shells to the list of valid login shells atril-thumbnailer (1) - create png thumbnails from atril supported documents blkls (1) - List or output file system data units. …. kali@kali:~$

Po wpisaniu apropos ls ukazała się spora lista podręczników, ułożonych alfabetycznie. Wkleiłem tylko trzy pierwsze jakie u mnie się wyświetliły ponieważ taka ilość wystarczy by wyjaśnić działanie narzędzia. Cała lista posiada w swoim repertuarze informacje dotyczące polecenia ls porozrzucane po różnych dokumentacjach. Chociaż jeżeli użyjemy jedynie polecenia man ls to na 99% zostanie wyświetlony podręcznik o który nam chodzi. Natomiast polecenie apropos może służyć jako pewnego rodzaju alternatywa gdy nie uda się znaleźć poszukiwanej informacji w standardowej dokumentacji man.

Dzienniki i sekcje

Jeżeli uważnie przyjrzałeś się przykładowi zauważyłeś, że za nazwą polecenia znajduje się w nawiasie cyfra. Każda z tych cyfr zawiera dziennik z innym rodzajem informacji. Jaśniej pisząc, każda cyfra od 1 do 9 ma przypisaną swoją własną sekcję, czyli są do niej przypisane innego rodzaju pliki, funkcje. Przykładowo 8 zawiera informacje dotyczące poleceń do zarządzania systemem Linux użytkownika root. W ten sposób łatwiej jesteśmy w stanie odnaleźć informacje jeżeli wiemy w jakim celu chcemy skorzystać z danego polecenia. Pełny spis wraz z opisami przedstawiam poniżej:

1 – polecenia powłoki, programy w systemie;

2 – wywołania jądra systemowego;

3 – wywołania bibliotek systemowych;

4 – pliki urządzeń;

5 – formaty plików;

6 – gry;

7 – streszczenia podręczników man;

8 – informacje dotyczące poleceń do zarządzania systemem Linux przez użytkownika root;

9 - podprogramy jądra systemu;

Polecenie stat

W artykule opisującym podstawowe polecenia poznaliśmy ls, które jest wykorzystywane w każdym innym artykule dotyczącym konsoli. Chociaż dostarcza naprawdę sporo informacji o plikach i katalogach to jednak nie są to wszystkie informacje jakie możemy poznać. Aby uzyskać podstawowe dane jak najbardziej należy skorzystać z polecenia ls lecz jeżeli potrzebujemy danych technicznych lepszym narzędziem okaże się polecenie stat. Porównajmy oba polecenia w prostym przykładzie:

kali@kali:~$ touch stat kali@kali:~$ ls stat stat kali@kali:~$ stat stat File: stat Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 801h/2049d Inode: 1572948 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/ kali) Gid: ( 1000/ kali) Access: 2020-10-04 08:15:18.927609103 -0400 Modify: 2020-10-04 08:15:18.927609103 -0400 Change: 2020-10-04 08:15:18.927609103 -0400 Birth: - kali@kali:~$

Jak widać różnica jest ogromna. Opiszmy jakie informacje otrzymaliśmy przy pomocy polecenia stat.

W pierwszej linijce widnieje nazwa pliku. Kolejna wskazuje rozmiar oraz typ. Trzecia, o miejscu na jakim urządzeniu znajduje się dany plik oraz o ilości dowiązań do niego. Kolejny wiersz to nic innego jak prawa dostępu do pliku. Ostatnie trzy przedstawiają kolejno: ostatni dostęp do pliku, modyfikację oraz datę zmiany objętości pliku.

Jeżeli chcesz uzyskać więcej informacji na temat polecenia stat skorzystaj z wcześniej poznanego polecenia man.

Dopełnienia nazw

Jeżeli używasz już trochę trybu tekstowego zauważyłeś pewną niedogodność. Gdy chcesz zrobić coś z plikami, które zawierają dość długie nazwy to samo wpisanie ich nazwy zajmuje bardzo dużo czasu. Zawsze możemy się pomylić, popełnić jakąś literówkę, a akurat się spieszymy. W przeglądarkach internetowych jeżeli nie wyczyszczamy historii przeglądanych stron to po wpisaniu kilku liter pojawia się lista stron o podobnych nazwach.

W systemie Linux pomyślano i o tym dlatego stworzono system dopełnień, dzięki któremu po wpisaniu kilku pierwszych liter nazwy pliku lub polecenia, cała pozostała część zostanie uzupełniona. Do tego zadania posłuży klawisz tabulatora. Jak on działa? Otóż kiedy mamy plik o długiej nazwie wystarczy wpisać kilka pierwszych liter i wcisnąć klawisz [Tab]. Jeżeli tylko jeden plik ma na początku litery które wpisaliśmy nazwa zostanie uzupełniona o brakującą część. Jeżeli jest ich kilka lub chociażby dwa to zostaniemy o tym poinformowani sygnałem dźwiękowym. Oznaczać to będzie, że musimy dopisać jeszcze kilka liter do wyrazu by mógł on zostać uzupełniony.

Żadnego sensownego przykładu nie zdołam wam pokazać dlatego spróbujcie sami stworzyć plik o jakiejś długiej nazwie, a następnie usuńcie go korzystając z polecenia rm oraz klawisza tabulacji.

Polecenie grep

Czasami może zdarzyć się, że będziemy potrzebowali wyświetlić jedynie kilka linijek tekstu znajdujących się w dość obszernym pliku. Rozwiązać to można przy pomocy wcześniej poznanych poleceń takich jak head czy też tail lecz przydadzą się one tylko wtedy kiedy ów szukane informacje znajdują się na początku lub końcu dokumentu. Jest jeszcze jedna możliwość, która polega na wyszukaniu informacji w dokumencie podając słowo kluczowe. Można by to nazwać poleceniem wyszukiwania danych w tekście które odnajdzie informacje i wyświetli w podobny sposób jak to robią wcześniej wymienione. Zerknijmy na poniższy przykład.

kali@kali:~$ cd /etc kali@kali:/etc$ grep bash adduser.conf DSHELL=/bin/bash kali@kali:/etc$

Jak widać w przykładzie została wyświetlona tylko jedna linijka pliku ponieważ tylko ona zawierała frazę przez nas szukaną, czyli w tej linijce odnalazł słowo kluczowe bash.

Polecenie może szukać informacji w kilku plikach np. w danym folderze, należy tylko zamiast nazwa pliku wpisać /nazwafolderu/*.

Opcje polecenia grep

Poniżej przedstawiam opcje polecenia:

-b – przy wyniku wypisuje numer linijki w którym dana informacja się znajduje;

-c – wyświetla liczbę znalezionych wyników;

-f – wyszukuje w nazwie pliku słowo kluczowe;

-h – nie wyświetla ścieżki do pliku w jakim znaleziono szukane słowo;

-i – ignoruje wielkość liter;

-l – wyświetlana jest jedynie nazwa pliku a nie zawartość;

-n – wyświetla wszystkie podstawowe informacje + numer wiersza w którym odnaleziono słowo;

-s – blokuje wyświetlanie komunikatów;

-v – wyświetla wszystko poza szukanym słowem;

-w – wyświetla wiersze w których słowo klucz jest całym wyrazem;

O poleceniu grep można napisać i osoby artykuł, a nawet i dział. Jest ono bardzo rozbudowane, szczególnie jeżeli chodzi o metody wyszukiwania jak i możliwości wykorzystania go w innych poleceniach.

Filtrowanie poleceń

Choć w pierwszej wersji zakończyłem opis tego polecenia na wcześniejszym podrozdziale to jednak zauważyłem brak rozwinięcia tego jakże użytecznego polecenia. Teraz chciałbym, abyś zapoznał się jedną z głównych cech polecenia grep które zmieni twój sposób przeszukiwania danych.

Wcześniej wykorzystywaliśmy polecenie do wyszukania słowa kluczowego w danym pliku. Teraz przyszła pora na poznanie sposobu wyświetlenia poszukiwanych przez nas danych w wynikach polecenia.

Nim przejdę do dokładnego opisu chciałbym abyś przeanalizował poniższy przykład:

kali@kali:~$ ls | grep .txt hasla.txt loginy.txt kali@kali:~$

Polecenie ls już znasz, wyświetla ono pliki z określonego przez nas katalogu.

Przechodząc do analizy przykładu, zaraz za poleceniem ls znajduje się znak | dzięki któremu przekazujemy wynik polecenia ls do grep. Następnie polecenie grep wyszukuje w otrzymanych danych te które zawierają klucz .txt i wyświetla je. Oczywiście jeżeli nie posiadasz takich plików, to należy je wcześniej stworzyć tak jak ja to zrobiłem lub zmienić słowo kluczowe.

Przekazywanie potokowe jest bardzo pomocne gdy chcemy aby dane polecenie wypisało tylko określone dane zawierające słowo klucz, a nie kilka stron tekstu w których sami będziemy zmuszeniu odszukać to co nam potrzeba.

Polecenie locate

Jest to jedno z najprostszych rozwiązań do przeszukiwania zasobów naszego systemu. Wystarczy w wierszu poleceń wpisać jego nazwę oraz poszukiwaną frazę tak jak na przykładzie poniżej:

kali@kali:~$ locate firefox /etc/firefox-esr /etc/firefox-esr/firefox-esr.js /etc/firefox-esr/kali.js /etc/firefox-esr/pref /etc/firefox-esr/profile /home/kali/.cache/mozilla/firefox * Dalszy ciąg wyników * kali@kali:~$

Głównym problemem, jest ilość wyświetlanych danych. Program wyszukał wszystkie pliki które w swojej nazwie zawierają poszukiwaną frazę. W większości przypadków taka ilość bardziej utrudnia poszukiwania ponieważ gdy katalog ma w swojej nazwie to czego szukamy to pliki w nim znajdujące się również zostaną wyświetlone, a wystarczyłby sam katalog.

Kolejną wadą tego polecenia jest to, że nie wyświetla aktualnie stworzonych plików. Działa ono na zasadzie, że polecenie robi listę plików, które zapisuje w bazie danych raz dziennie. W związku z tym może zdarzyć się sytuacja w której nowo stworzone pliki nie zostaną wyświetlone bo na przykład zostaną utworzone po wykonaniu takiej bazy.

Polecenie jednak nie ma tylko samych wad. Główną jego zaletą jest jego prostota i szybkość wyświetlania, które czasami się przydaje. Jesteśmy również pewni, że wyświetli nam wszystko oprócz ostatnio dodanych katalogów czy też plików.

Polecenie whereis

Jest to jedno z często wykorzystywanych poleceń jeżeli chodzi o osoby rozpoczynające swoją przygodę z systemem Linux. Wyszykuje miejsca w których znajdują się pliki dzięki którym polecenie działa, czyli pliki binarne oraz gdzie znajdują się pliki z kodem.

W przyszłości bardzo często korzystać będziesz z polecenia ifconfig. Wyjaśnię jego działanie w innym kursie dlatego skupmy się teraz tylko na wynikach poniższego przykładu:

kali@kali:~$ whereis ifconfig ifconfig: /usr/sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz kali@kali:~$

Pierwszy wynik wskazuje miejsce gdzie znajduje się plik binarny, natomiast drugie miejsce wskazuje plik z kodem źródłowym.

Polecenie witch

Większą precyzję uzyskamy jednak przy pomocy polecenia witch dzięki któremu wyświetlone zostaną tylko te miejsca które zostały uwzględnione w zmiennej Patch. Na tym etapie chciałbym tylko wspomnieć, że coś takiego istnieje ponieważ zmiennymi systemowymi zajmiemy się w dalszej części kursu.

Polecenie find

Ostatnie polecenie posłuży nam wyszukiwaniu plików. Nie zawsze można zapamiętać gdzie i co zapisaliśmy. Nawet jeżeli staramy się mieć porządek na swoich dyskach, partycjach to przy większej ilości plików możemy mieć problem w odnalezieniu tego którego obecnie potrzebujemy.

Jeżeli uważnie przeczytałeś dział ogólne informacje o systemie Linux, a dokładnie temat katalogowania plików i się tym kierowałeś to na pewno już wiesz, że ogromne znaczenie ma dla nas porządek na dysku, a w tej sytuacji nazewnictwo plików. Jeżeli o to zadbaliśmy to znacznie ułatwiliśmy sobie zadanie, ponieważ polecenie find, służy odnajdowaniu plików po nazwie.

Opcje polecenia find

-name [nazwa_pliku] – wyszukuje plik po jego nazwie;

-path [słowo klucz] – szuka plików które w nazwie ma podane słowo;

-perm [uprawnienie] – wyszukuje wg. uprawnień;

-type [typ] – wyszukuje wg. typów:

b blokowy;

c znakowy;

d katalog;

p łącze nazwane;

f zwykły plik;

l dowiązanie symboliczne;

s gniazdo;

-user [użytkownik] – wyszukuje pliki które należą do podanego użytkownika;

Powyżej wypisałem najistotniejsze opcje polecenia z których ja od czasu do czasu korzystam. Resztę można odnaleźć w podręcznikach man i tam odsyłam ciekawskich. Teraz spójrzmy na poniższy przykład:

kali@kali:~$ find / -name config find: ‘/run/udisks2’: Permission denied find: ‘/run/lightdm’: Permission denied find: ‘/run/user/1000/inaccessible’: Permission denied find: ‘/run/sudo’: Permission denied find: ‘/run/openvpn-server’: Permission denied find: ‘/run/openvpn-client’: Permission denied find: ‘/run/cryptsetup’: Permission denied find: ‘/run/systemd/unit-root’: Permission denied find: ‘/run/systemd/inaccessible’: Permission denied find: ‘/run/initramfs’: Permission denied find: ‘/.cache’: Permission denied /etc/subversion/config …. kali@kali:~$

Bardzo ważną informacją jest to, że plik o nazwie config, a config.cfg są to zupełnie inne pliki. Polecenie find widzi różnice między nimi, czyli rozpoznaje rozszerzenia plików które należy stosować przy poszukiwaniach. Jeżeli chcielibyśmy odnaleźć plik o nazwie kali i byłby to plik napisany w standardowym formacie open office, należałoby wpisać frazę kali.odt.

Podsumowanie

Kiedyś jak zaczynałem naukę swojego pierwszego języka programowania, a był to PASCAL zapytałem swojego znajomego który już programował od kilku lat na czym to polega? I od czego zacząć? Pamiętam do dziś jak wspomniał mi, że w większej mierze nauka programowania polega na umiejętności przeszukiwania ogólnie dostępnych zasobów. Czyli odnajdywaniu tego co ktoś już napisał. I choć wydawało mi się to śmieszne teraz muszę przyznać, że jest to 50% sukcesu. Reszta to własna inwencja twórcza.

Linux nie jest językiem programowania, ale dokumentacje posiada tak jak języki programowania. Do każdego polecenia znajduje się jakiś wpis w man stąd też umiejętności korzystania z tych zasobów są bardzo ważne. Przez cały czas będziemy poznawać coś nowego i teraz już wiemy gdzie szukać jak napotkamy jakiś problem.

<- Poprzedni rodział -- Następny rozdział ->

Strona stosuje pliki cookies w celu profilowania, oraz analizuje statystykę ruchu. Prosimy o zapoznanie się z naszą polityką prywatności i wyrażenie zgody na podejmowane działania. W przypadku braku zgody i pozostaniu na niej strona może nie działać właściwie.

Akceptuję warunki zawarte w Polityce Prywatności

Nie akceptuję warunków i chcę opuścić stronę