Polecenia: edytor nano, cat, head, tail, more i du


meta: nano cat head tail more du


Edytor nano

W tym artykule zajmiemy się edycją tekstu. Posłuży nam do tego edytor nano. Jeżeli znasz się np. na edytorze vi to korzystaj z niego. Ja nie będę używał tego narzędzia ponieważ jest za bardzo rozbudowane i może okazać się dużym wyzwaniem jak na sam początek.

Aby edytować plik należy wpisać polecenie nano „nazwa pliku” i powinno uruchomić się nam podobne okienko:

kali@kali:~$ nano "nazwa pliku"
Konsola: edytor nano, cat, head, tail, more i du

W lewym górnym rogu, widnieje numer wersji naszego edytora. Trochę dalej w tej samej linii, pośrodku widać nazwę pliku który stworzyliśmy lub który 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

Wcześniej uczyliśmy się edytować pliki przy pomocy programu nano. Czasami będziemy potrzebowali wyświetlić zawartość pliku bez potrzeby jego edycji. Takiej opcji nie oferuje nam edytor tekstu, ale do tego celu posłuży nam polecenia cat. Zobaczmy to w konsoli:

kali@kali:~$ ls
 Desktop      Documents   Music      Public      Videos
'dla testu'   Downloads   Pictures   Templates
kali@kali:~$ nano 'dla testu'
W edytorze wpisujemy tekst 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 można w ten sam sposób 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

Polecenie head

Często spotkamy się z sytuacją gdzie w pliku będzie znajdowało się bardzo dużo tekstu, a my będziemy chcieli np. wyświetlić jego kilka pierwszych linijek. Do tego przyda nam 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 wyświetla zawsze 10 linijek. Oczywiście jest również możliwość wyświetlenia więcej lub mniej linijek z pliku.

Opcje polecenia head

Dwie 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


meta: nano cat head tail more du


Odwrotnością poprzedniego polecenia jest polecenie tail. Działa ono na takiej samej zasadzie co head z tą różnicą, że wyświetli koniec pliku, a nie początek. Przykład uważam za zbędny, ale jeżeli ktoś chce sprawdzić to polecenie niech zastąpi head z poprzedniego zadania na tail.

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 to 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 tekst 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 monitorze. Gdy skończysz czytanie i będziesz chciał/a przejść dalej to wystarczy, że wciśniesz spację lub enter na swojej klawiaturze.

Enter przesunie tekst 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 polecenie more posiada, kilka opcji które przestawiam poniżej:

-d – nic takiego szczególnego nie robi, oprócz tego że na dole wypisuje nam: 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 które mają być wyświetlone.

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

Polecenie du

Nieraz się nam zdarzy lub też zdarzyło, że chcielibyśmy sprawdzić ile miejsca zajmuje dany katalog. Do w/w zadania posłuży nam 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 wyskoczyły by mi wszystkie podkatalogi z rozmiarami. Jeżeli jesteś ciekaw/a jak to wygląda to pokombinuj trochę z poleceniem du.

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ść będzie niezbędna ponieważ bardzo dużo danych będziemy musieli przetwarzać. Bardzo dużo danych będziemy musieli wyświetlać tylko w jakiejś mniejszej bądź większej części. Prawda jest taka, że poznajemy tylko podstawy podstaw, my i tak będziemy zmuszeni naszą wiedzę w tym temacie zwiększyć. Jeżeli czujesz jakiś niedosyt, poczytaj sobie więcej na temat edytora nano i jego opcjach lub też bardziej zaawansowanego edytora vi.


meta: nano cat head tail more du