Zarządzaj plikami efektywnie za pomocą poleceń head, tail i cat w systemie Linux
Linux udostępnia kilka poleceń i programów do przeglądania zawartości pliku. Praca z plikami to jedno z trudnych zadań, które wykonuje większość użytkowników komputerów, zarówno nowicjuszy, zwykłych użytkowników, zaawansowanych użytkowników, programistów, administratorów itp. Efektywna i wydajna praca z plikami jest sztuką.
Dzisiaj w tym artykule omówimy najpopularniejsze polecenia: head, tail i cat, większość z nas zna już takie polecenia, ale bardzo niewielu z nas wdraża je w razie potrzeby.
1. szef Dowództwa
Polecenie head odczytuje pierwsze dziesięć wierszy dowolnej nazwy pliku. Podstawowa składnia polecenia head to:
head [options] [file(s)]
Na przykład poniższe polecenie wyświetli pierwsze dziesięć wierszy pliku o nazwie „/etc/passwd”.
head /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
Jeśli podano więcej niż jeden plik, head wyświetli pierwsze dziesięć wierszy każdego pliku osobno. Na przykład poniższe polecenie wyświetli dziesięć wierszy każdego pliku.
head /etc/passwd /etc/shadow
==> /etc/passwd <== root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin ==> /etc/shadow <==
root:$6$85e1:15740:0:99999:7:::
bin:*:15513:0:99999:7:::
daemon:*:15513:0:99999:7:::
adm:*:15513:0:99999:7:::
lp:*:15513:0:99999:7:::
sync:*:15513:0:99999:7:::
shutdown:*:15513:0:99999:7:::
halt:*:15513:0:99999:7:::
mail:*:15513:0:99999:7:::
uucp:*:15513:0:99999:7:::
Jeśli wymagane jest pobranie większej liczby linii niż domyślne dziesięć, wówczas używana jest opcja „-n” wraz z liczbą całkowitą określającą liczbę linii do pobrania. Na przykład poniższe polecenie wyświetli pierwsze 5 wierszy z pliku „/var/log/yum.log”.
head -n5 /var/log/yum.log
Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el6_5.4.i686
Jan 10 00:06:56 Updated: openssl-devel-1.0.1e-16.el6_5.4.i686
Jan 10 00:11:42 Installed: perl-Net-SSLeay-1.35-9.el6.i686
Jan 13 22:13:31 Installed: python-configobj-4.6.0-3.el6.noarch
Jan 13 22:13:36 Installed: terminator-0.95-3.el6.rf.noarch
W rzeczywistości nie ma potrzeby używania opcji „-n”. Wystarczy łącznik i podać liczbę całkowitą bez spacji, aby uzyskać taki sam wynik jak powyższe polecenie.
head -5 /var/log/yum.log
Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el6_5.4.i686
Jan 10 00:06:56 Updated: openssl-devel-1.0.1e-16.el6_5.4.i686
Jan 10 00:11:42 Installed: perl-Net-SSLeay-1.35-9.el6.i686
Jan 13 22:13:31 Installed: python-configobj-4.6.0-3.el6.noarch
Jan 13 22:13:36 Installed: terminator-0.95-3.el6.rf.noarch
Polecenie head może również wyświetlić dowolną żądaną liczbę bajtów za pomocą opcji „-c”, po której następuje liczba wyświetlanych bajtów. Na przykład poniższe polecenie wyświetli pierwsze 45 bajtów danego pliku.
head -c45 /var/log/yum.log
Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el
2. Komenda ogona
Polecenie tail umożliwia wyświetlenie ostatnich dziesięciu linii dowolnego pliku tekstowego. Podobnie do powyższego polecenia head, polecenie tail obsługuje również opcje „n” liczby linii i „n” liczby znaków.
Podstawowa składnia polecenia tail jest następująca:
tail [options] [filenames]
Na przykład poniższe polecenie wydrukuje dziesięć ostatnich wierszy pliku o nazwie „access.log”.
tail access.log
1390288226.042 0 172.16.18.71 TCP_DENIED/407 1771 GET http://download.newnext.me/spark.bin? - NONE/- text/html
1390288226.198 0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.210 1182 172.16.20.44 TCP_MISS/200 70872 GET http://mahavat.gov.in/Mahavat/index.jsp pg DIRECT/61.16.223.197 text/html
1390288226.284 70 172.16.20.44 TCP_MISS/304 269 GET http://mahavat.gov.in/Mahavat/i/i-19.gif pg DIRECT/61.16.223.197 -
1390288226.362 570 172.16.176.139 TCP_MISS/200 694 GET http://p4-gayr4vyqxh7oa-3ekrqzjikvrczq44-if-v6exp3-v4.metric.gstatic.com/v6exp3/redir.html pg
1390288226.402 0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.437 145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.445 0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.605 0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.808 0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
Jeśli podano więcej niż jeden plik, tail wydrukuje ostatnie dziesięć linii każdego pliku, jak pokazano poniżej.
tail access.log error.log
==> access.log <== 1390288226.042 0 172.16.18.71 TCP_DENIED/407 1771 GET http://download.newnext.me/spark.bin? - NONE/- text/html 1390288226.198 0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.210 1182 172.16.20.44 TCP_MISS/200 70872 GET http://mahavat.gov.in/Mahavat/index.jsp pg DIRECT/61.16.223.197 text/html 1390288226.284 70 172.16.20.44 TCP_MISS/304 269 GET http://mahavat.gov.in/Mahavat/i/i-19.gif pg DIRECT/61.16.223.197 - 1390288226.362 570 172.16.176.139 TCP_MISS/200 694 GET http://p4-gayr4vyqxh7oa-3ekrqzjikvrczq44-if-v6exp3-v4.metric.gstatic.com/v6exp3/redir.html pg 1390288226.402 0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.437 145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html 1390288226.445 0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html 1390288226.605 0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.808 0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html ==> error_log <==
[Sun Mar 30 03:16:03 2014] [notice] Digest: generating secret for digest authentication ...
[Sun Mar 30 03:16:03 2014] [notice] Digest: done
[Sun Mar 30 03:16:03 2014] [notice] Apache/2.2.15 (Unix) DAV/2 PHP/5.3.3 mod_ssl/2.2.15 OpenSSL/1.0.0-fips configured -- resuming normal operations
Podobnie możesz wydrukować kilka ostatnich linii, używając opcji „-n”, jak pokazano poniżej.
tail -5 access.log
1390288226.402 0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.437 145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.445 0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.605 0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.808 0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
Możesz także wydrukować liczbę znaków za pomocą argumentu „-c”, jak pokazano poniżej.
tail -c5 access.log
ymantec.com:443 - NONE/- text/html
3. Polecenie kota
Polecenie „cat” jest najczęściej używanym, uniwersalnym narzędziem. Kopiuje standardowe wejście na standardowe wyjście. Polecenie obsługuje przewijanie, jeśli plik tekstowy nie mieści się na bieżącym ekranie.
Podstawowa składnia polecenia cat jest następująca:
cat [options] [filenames] [-] [filenames]
Najczęstszym zastosowaniem cat jest odczytywanie zawartości plików. Aby otworzyć plik do odczytu, wystarczy wpisać cat, spację i nazwę pliku.
cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
…
Polecenie cat służy również do łączenia wielu plików.
echo 'Hi Tecmint-Team' > 1
echo 'Keep connected' > 2
echo 'Share your thought' > 3
echo 'connect us [email ' > 4
cat 1 2 3 4 > 5
cat 5
Hi Tecmint-Team
Keep connected
Share your thought
connect us [email
Można go również używać do tworzenia plików. Osiąga się to poprzez wykonanie cat, po którym następuje operator przekierowania wyjścia i nazwa pliku, który ma zostać utworzony.
cat > tecmint.txt
Tecmint is the only website fully dedicated to Linux.
Możemy mieć niestandardowego kreatora końcowego dla polecenia „cat”. Tutaj jest to realizowane.
cat > test.txt << end
I am Avishek
Here i am writing this post
Hope your are enjoying
end
# cat test.txt
I am Avishek
Here i am writing this post
Hope your are enjoying
Nigdy nie lekceważ potęgi polecenia „cat”, które może być przydatne przy kopiowaniu plików.
cat avi.txt
I am a Programmer by birth and Admin by profession
cat avi.txt > avi1.txt
cat avi1.txt
I am a Programmer by birth and Admin by profession
Jakie jest zatem przeciwieństwo kota? Tak, to „tak”. „tac” to polecenie w systemie Linux. Lepiej pokazać przykład „tac”, niż cokolwiek o nim mówić.
Utwórz plik tekstowy z nazwami wszystkich miesięcy, tak aby w wierszu pojawiło się jedno słowo.
cat month
January
February
March
April
May
June
July
August
September
October
November
December
tac month
December
November
October
September
August
July
June
May
April
March
February
January
Więcej przykładów użycia polecenia cat można znaleźć w artykule 13 Użycie polecenia cat
To wszystko na teraz. Wrócę tu ponownie z kolejnym ciekawym artykułem, wartym poznania. Do tego czasu bądź na bieżąco i połącz się z Tecmint. Nie zapomnij podzielić się z nami swoją cenną opinią w sekcji komentarzy.