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

Rozdział 9: Edycja oraz wyświetlanie zawartości plików

Edytor nano

W tym rozdziale zajmiemy się edycją tekstu przy pomocy edytora nano. Jeżeli znasz edytor vi lub inny to korzystaj z niego.

Aby edytować plik należy wpisać polecenie nano "nazwa pliku" pojawić się powinno okno jak poniżej:

kali@kali:~$ nano "nazwa pliku"
Nano

W lewym górnym rogu, widnieje numer wersji naszego edytora. Trochę dalej w tej samej linii, na samym środku znajduje się nazwa pliku którą stworzyliśmy lub którą edytujemy. Spójrzmy teraz na sam dół. Widzimy skróty klawiszowe programu. Aby wywołać jedną z prezentowanych opcji należy wcisnąć i przytrzymać lewy przycisk ctrl + literę przypisaną wybranej opcji np. ctrl + o, która spowoduje nadpisanie/zapisanie danego pliku.

Bardzo istotną rzeczą jest nazwa pliku, którą wpisaliśmy w konsoli. Nazwy plików składające się z więcej niż jednego wyrazu muszą być ujęte w cudzysłowie. Nie ważne czy tworzymy nowy plik czy też chcemy edytować już istniejący. Aby móc cokolwiek zrobić z plikiem posiadającym nazwę składającą się z więcej niż jednego wyrazu musimy nazwę ująć w cudzysłowie.

W ramach treningu stwórzmy plik o nazwie dla testu:

kali@kali:~$ nano "dla testu" w edytorze został użyty skrót klawiszowy ctrl+o aby zapisać plik na dysku oraz ctrl+x aby go zamknąć. kali@kali:~$ ls Desktop Documents Music Public Videos 'dla testu' Downloads Pictures Templates kali@kali:~$

Polecenie cat

Czasami będziemy potrzebowali wyświetlić zawartość pliku bez potrzeby jego edycji. Takiej opcji nie oferuje nam edytor tekstu, ale do tego celu służy polecenie cat. Zobaczmy w konsoli:

kali@kali:~$ ls Desktop Documents Music Public Videos 'dla testu' Downloads Pictures Templates kali@kali:~$ nano 'dla testu' W edytorze wpisujemy article-text Dla testu, wciskamy ctrl+o, enter by potwierdzić, ctrl+x kali@kali:~$ cat 'dla testu' Dla testu kali@kali:~$ ^C kali@kali:~$

Jak widać w powyższym przykładzie, zawartość pliku dla testu została wyświetlona w konsoli. Daje nam to możliwość wyświetlania plików o małej zawartości, chociaż i duże w ten sam sposób można potraktować. Nie jest to wygodne rozwiązanie dlatego warto zapamiętać by starać się używać polecenia przy plikach o małej zawartości tekstu.

Opcje polecenia cat

Nie jest to jednak jedyna możliwość polecenia cat. Posiada ono szereg opcji które zapisałem poniżej:

-b – numeruje wiersze pliku które nie są puste;

-n – numeruje wszystkie wiersze niezależnie czy coś w nich jest napisane czy też nie;

-s - jeżeli w pliku występują puste wiersze (np. zrobione przy pomocy przycisku enter na klawiaturze) to opcja łączy je w jeden pusty;

-v – nie wyświetla znaków wiersza Tab oraz znaków zmiany wiersza;

-E – dodaje znak $ na końcu każdego wiersza;

-T – zamienia tabulatory na ^|;

-e – połączone opcje -v i -E;

-t – połączone opcje -v i -T;

-A – połączone opcje -v, -E i -T;

Inne zastosowanie polecenia cat

Poznane polecenie cat nie służy jedynie wyświetlaniu zawartości plików, może także je tworzyć jak również wpisywać, dopisywać oraz nadpisywać dane. Dokonujemy tego przy pomocy > (nawiasów ostrych) czyli tak zwanemu przekierowaniu danych z polecenia do pliku. Zobrazowałem to na przykładzie poniżej:

kali@kali:~$ cat > nowy Tworzymy nowy plik kali@kali:~$ cat nowy Tworzymy nowy plik kali@kali:~$ cat >> nowy dodajemy nowy tekst kali@kali:~$ cat nowy Tworzymy nowy plik dodajemy nowy tekst kali@kali:~$ cat > nowy nadpisalismy wszystko kali@kali:~$ cat nowy nadpisalismy wszystko kali@kali:~$

Po każdym przekazaniu danych skorzystam z polecenia cat w jego pierwotnej formie w celu wyświetlenia zawartości pliku dlatego ten krok zostanie pominięty w opisie.

UWAGA! Wpisując polecenie cat z pojedynczym > lub podwójnym >> nawiasem ostrym chcąc zapisać wprowadzony tekst oraz powrócić do linii poleceń należy skorzystać z kombinacji klawiszy CTRL+D.

W pierwszej linii przykładu wykorzystujemy > pojedynczy ostry nawias czyli przekazujemy dane z polecenia cat do pliku tworząc go.

Następnie korzystając z podwójnych nawiasów ostrych >> do już stworzonego pliku, do jego końca dodajemy nowy tekst.

Korzystając ponownie z pojedynczego nawiasu ostrego > nadpisujemy całą zawartość pliku.

Nic skomplikowanego, a jednak w niektórych przypadkach przydaje się. Osobiście głównie wykorzystuje to polecenie w skryptach. Jest dla mnie wygodne jeżeli chodzi o magazynowanie na przykład logów.

Polecenie head

Często spotkamy się z sytuacją gdzie w pliku będzie znajdowało się bardzo dużo tekstu, a my potrzebujemy wyświetlić jego kilka pierwszych linijek. Do tego przyda się polecenie head. Nie jest ono bardzo skomplikowane dlatego spójrzmy od razu na przykład poniżej:

kali@kali:~$ cd /var/log kali@kali:/var/log$ nano alternatives.log kali@kali:/var/log$ head alternatives.log update-alternatives 2020-07-27 17:10:12: run with --quiet --install /usr/bin/awk awk /usr/bin/mawk 5 --slave /usr/share/man/man1/awk.1.gz awk.1.gz /usr/share/man/man1/mawk.1.gz --slave /usr/bin/nawk nawk /usr/bin/mawk --slave /usr/share/man/man1/nawk.1.gz nawk.1.gz /usr/share/man/man1/mawk.1.gz update-alternatives 2020-07-27 17:10:12: link group awk updated to point to /usr/bin/mawk update-alternatives 2020-07-27 17:10:35: run with --quiet --install /usr/bin/awk awk /usr/bin/mawk 5 --slave /usr/share/man/man1/awk.1.gz awk.1.gz /usr/share/man/man1/mawk.1.gz --slave /usr/bin/nawk nawk /usr/bin/mawk --slave /usr/share/man/man1/nawk.1.gz nawk.1.gz /usr/share/man/man1/mawk.1.gz update-alternatives 2020-07-27 17:10:35: run with --install /usr/share/man/man7/builtins.7.gz builtins.7.gz /usr/share/man/man7/bash-builtins.7.gz 10 update-alternatives 2020-07-27 17:10:35: link group builtins.7.gz updated to point to /usr/share/man/man7/bash-builtins.7.gz update-alternatives 2020-07-27 17:10:35: run with --install /usr/sbin/rmt rmt /usr/sbin/rmt-tar 50 --slave /usr/share/man/man8/rmt.8.gz rmt.8.gz /usr/share/man/man8/rmt-tar.8.gz update-alternatives 2020-07-27 17:10:35: link group rmt updated to point to /usr/sbin/rmt-tar update-alternatives 2020-07-27 17:10:37: run with --install /usr/bin/pager pager /bin/more 50 --slave /usr/share/man/man1/pager.1.gz pager.1.gz /usr/share/man/man1/more.1.gz update-alternatives 2020-07-27 17:10:37: link group pager updated to point to /bin/more update-alternatives 2020-07-27 17:10:37: run with --remove pager /usr/bin/pg kali@kali:/var/log$

Polecenie standardowo wyświetla 10 linijek z możliwością zmiany w jedną bądź drugą stronę.

Opcje polecenia head

Dwie dostępne opcje polecenia head przedstawiam poniżej:

-c „liczba” - jeżeli podstawimy zamiast słowa liczba np. 20 to wyświetli nam 20 bajtów pliku;

-n „liczba” - jeżeli podstawimy zamiast słowa liczbę 20 to wyświetli nam 20 pierwszych linijek pliku;

Polecenie tail

Odwrotnością poprzedniego polecenia jest tail. Działa ono na takiej samej zasadzie co head z tą różnicą, że wyświetla koniec pliku, a nie początek. Przykład uważam za zbędny, ale polecam zastąpić head z poprzedniego zadania na tail i spojrzeć na to co otrzymasz.

Opcje polecenia:

-c „liczba” - wyświetli końcowe np. 20 bajtów pliku;

-f – plik uruchomiony będzie prowadził coś w rodzaju sprawdzania zmian w nim. Lepiej to zrozumieć wypróbowując na jakimś pliku. (ctrl + c aby zakończyć);

-n „liczba” - wyświetla ilość końcowych wierszy np. 20 jeżeli zamiast „liczba” wpiszemy 20;

Polecenie more

Poznaliśmy już polecenia, dzięki którym przeczytamy początek i koniec tekstu, a co jeżeli zechcemy przeczytać cały artykuł który jest bardzo długi? Jeżeli używasz środowiska graficznego to sprawę masz o wiele prostszą, bo możesz używać suwaków, ale w trybie tekstowym nie ma czegoś takiego.

Aby można było przeczytać plik o dużej zawartości tekstu należy użyć polecenia more. Wyświetli ono cały plik, ale nie od razu. Na początku pokaże część pliku który zmieści się na ekranie. Gdy skończysz czytanie i będziesz chciał przejść dalej to wystarczy, że wciśniesz spację lub enter na swojej klawiaturze.

Enter przesunie treść artykułu w dół o jedną linię, natomiast spacja zadziała podobnie jak przycisk Page Down, czyli o całą stronę. Popatrzmy teraz jak wygląda to w praktyce.

kali@kali:/var/log$ more alternatives.log Zostanie wyświetlona zawartość całego pliku kali@kali:/var/log$

Opcje polecenia more

Jak większość poleceń w Linuksie more posiada, kilka opcji które przestawiam poniżej:

-d – poniżej wyświetli komunikat: Press space to continue. „q” to quit co oznacza Wciśnij spacje aby kontynuować, „q” aby zakończyć. Jeżeli more zostanie uruchomione z -d nadal będzie działał enter;

-f – długie linie tekstu nie są zwijane;

-l - wyłącza pauzę na końcu każdej strony;

-p – blokuje przewijanie ekranu;

-s – robi z kilku pustych wierszy jeden;

-u – zabrania podkreśleń;

-liczba wierszy – pozwala na wyświetlenie dowolnej ilości wierszy;

nr. wiersza – rozpoczyna przeglądanie od wskazanego numeru wiersza;

Polecenie du

Niejednokrotnie zdarzy się lub też zdarzyło, że chcielibyśmy sprawdzić ile miejsca zajmuje dany katalog. Do w/w zadania posłuży polecenie du. Zanim przejdziemy do praktycznej części zapoznajmy się z dostępnymi opcjami tego polecenia:

-a – wyświetla rozmiar wszystkich plików dostępnych w katalogu;

-b – wyświetla rozmiar wszystkich plików dostępnych w katalogu w bajtach;

-c - pokazuje całkowite miejsce jakie zajmują foldery;

-k – wyświetla rozmiar w kilobajtach;

-l – bierze pod uwagę dowiązania twarde;

-s – podaje tylko i wyłącznie rozmiar wybranego katalogu;

-x – nie bierze pod uwagę katalogów które należą do innego systemu plików;

-D – znajduje dowiązania symboliczne i wyświetla je;

-L – brane pod uwagę są katalogi których dotyczy dane dowiązanie;

-S – nie zwraca uwagi na podkatalogi w wybranym katalogu;

Zajmijmy się teraz przykładem. Przejdźmy do katalogu home i sprawdźmy ile nasz katalog zajmuje, tak jak poniżej:

kali@kali:~$ cd /home kali@kali:/home$ du -s kali 39876 kali kali@kali:/home$

Użyłem polecenia du z opcją -s która powoduje wyświetlenie rozmiaru wskazanego katalogu. Gdybym użył polecenia bez -s pojawiłyby by się podkatalogi z ich rozmiarami. Jeżeli jesteś ciekaw jak to wygląda to pokombinuj trochę z poleceniem du.

Wyszukiwanie oraz zastępowanie danych w plikach

Wyszukiwać jak i otwierać pliki już potrafisz dlatego nadeszła pora nauczyć się ich modyfikacji. Do tego zadania posłuży polecenie sed. Spójrzmy na przykład:

kali@kali:~$ cat loginy.txt root boot loot hoot msfadmin RoOt boot root kali@kali:~$sed s/root/ROOT/g loginy.txt > loginy2.txt kali@kali:~$cat loginy2.txt ROOT boot loot hoot msfadmin RoOt boot ROOT kali@kali:~$

Na samym początku wyświetlamy zawartość pliku loginy.txt. Zwróćmy szczególną uwagę, że dwa razy występuje słowo root oraz RoOt.

W dalszym kroku zamieniamy wszystkie wystąpienia słowa root na ROOT i zapisujemy w nowym pliku gdzie na samym końcu nazwy dodajemy liczbę 2.

Po wykonaniu polecenia wyświetlamy zawartość stworzonego pliku z zamienionymi wartościami. Zwróć uwagę, że nie zastąpiło słowa RoOt pomimo że oznacza ono to samo co root tylko jest pisane raz dużą raz małą literą. Dzieje się tak ponieważ system Linux rozpoznaje różnicę pomiędzy dużymi i małymi literami dlatego dla niego te dwie nazwy są inne. Ale to już wiesz.

Sposoby numerowania linii wyświetlonych danych z pliku

Bardzo pomocne jest wypisanie numerów przy każdej z linii pliku. Do tego celu posłuży polecenie nl. Pamiętaj, że druga litera polecenia to nie jest liczba 1 tylko litera l jak linia. Spójrzmy na poniższy przykład:

kali@kali:~$ nl hasla.txt 1 root 2 !root 3 Cisco 4 NeXT 5 QNX 6 admin 7 attack 8 ax400 9 bagabu 10 msfadmin kali@kali:~$

Wypisaliśmy całą zawartość pliku numerując jego każdą linie. Dość pomocne, ale prawdziwa przydatność tkwi w połączeniu go z wcześniej poznanym poleceniem grep oraz potokiem. Oto przykład:

kali@kali:~$ nl /etc/passwd | grep kali 53 kali:x:1000:1000:Kali,,,:/home/kali:/usr/bin/zsh kali@kali:~$

Przekazaliśmy ponumerowane dane z pliku /etc/passwd do polecenia grep gdzie jako słowo klucz podaliśmy kali. Otrzymaliśmy poszukiwane dane oraz numer linii w której znajduje się fraza.

Podsumowanie

Edycja plików przy pomocy konsoli po pewnym czasie okaże się bardzo istotną sprawą jeżeli chodzi o oprogramowanie z którego zamierzamy korzystać. Tak samo jak z poprzednim artykułem dotyczącym poleceń pwd, ls, cd, warto się w tym miejscu zatrzymać i dokładnie sprawdzić czy wszystko zrozumieliśmy. Ta umiejętność jest niezbędna ponieważ bardzo dużo danych przetwarzamy codziennie.

<- 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ę