Bestanden effectief beheren met de commando’s head, tail en cat in Linux

Er zijn verschillende commando’s en programma’s die door Linux worden aangeboden voor het bekijken van de inhoud van een bestand. Werken met bestanden is een uitdagende taak die de meeste computergebruikers, of ze nu nieuwkomers, reguliere gebruikers, gevorderde gebruikers, ontwikkelaars, beheerders, enzovoort zijn, uitvoeren. Effectief en efficiënt werken met bestanden is een kunst.

Manage Files in Linux

Vandaag zullen we in dit artikel de meest populaire commando’s genaamd head, tail en cat bespreken, de meesten van ons zijn al bekend met dergelijke commando’s, maar slechts heel weinig mensen passen ze toe wanneer dat nodig is.

1. head Command

Het head commando leest de eerste tien regels van een gegeven bestandsnaam. De basis syntaxis van het head commando is:

head [options] [file(s)]

Bijvoorbeeld, het volgende commando zal de eerste tien regels van het bestand genaamd ‘/etc/passwd‘ weergeven.

# 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

Als er meer dan één bestand wordt opgegeven, zal head de eerste tien regels van elk bestand afzonderlijk weergeven. Bijvoorbeeld, het volgende commando zal tien regels van elk bestand tonen.

# 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:::

Als er meer regels dan de standaard tien moeten worden opgehaald, wordt de ‘-n‘ optie gebruikt samen met een geheel getal dat het aantal op te halen regels aangeeft. Bijvoorbeeld, het volgende commando zal de eerste 5 regels uit het bestand ‘/var/log/yum.log‘ weergeven.

# 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

In feite is het niet nodig om de ‘-n‘ optie te gebruiken. Geef gewoon het minteken en specificeer het geheel getal zonder spaties om hetzelfde resultaat te krijgen als het bovenstaande commando.

# 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

Het head-commando kan ook een willekeurig aantal bytes weergeven met behulp van de optie ‘-c‘ gevolgd door het aantal weer te geven bytes. Bijvoorbeeld, het volgende commando zal de eerste 45 bytes van het opgegeven bestand weergeven.

# head -c45 /var/log/yum.log

Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el

2. tail Command

Het tail-commando stelt u in staat de laatste tien regels van een tekstbestand weer te geven. Net als het head-commando hierboven, ondersteunt het tail-commando ook opties zoals ‘n‘ voor het aantal regels en ‘n‘ voor het aantal tekens.

De basisopmaak van het tail-commando is:

# tail [options] [filenames]

Bijvoorbeeld, het volgende commando zal de laatste tien regels van een bestand genaamd ‘access.log‘ afdrukken.

# 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

Als er meer dan één bestand wordt opgegeven, zal tail de laatste tien regels van elk bestand afdrukken, zoals hieronder getoond.

# 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

Op vergelijkbare wijze kunt u ook de laatste paar regels afdrukken met behulp van de ‘-n‘ optie, zoals hieronder getoond.

# 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

U kunt ook het aantal tekens afdrukken met behulp van het ‘-c’ argument, zoals hieronder getoond.

# tail -c5 access.log

ymantec.com:443 - NONE/- text/html

3. cat Command

Het ‘cat‘-commando is het meest gebruikte, universele gereedschap. Het kopieert standaardinvoer naar standaarduitvoer. Het commando ondersteunt scrollen als een tekstbestand niet op het huidige scherm past.

De basisopmaak van het cat-commando is:

# cat [options] [filenames] [-] [filenames]

Het meest gebruikte doel van cat is het lezen van de inhoud van bestanden. Het enige dat nodig is om een bestand te openen voor lezen is het typen van cat gevolgd door een spatie en de bestandsnaam.

# 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 
…

Het cat-commando wordt ook gebruikt om een aantal bestanden samen te voegen.

# echo 'Hi Tecmint-Team' > 1 
# echo 'Keep connected' > 2 
# echo 'Share your thought' > 3 
# echo 'connect us [email protected]' > 4
# cat 1 2 3 4 > 5
# cat 5 

Hi Tecmint-Team 
Keep connected 
Share your thought 
connect us [email protected]

Het kan ook worden gebruikt om bestanden aan te maken. Dit wordt bereikt door het uitvoeren van cat gevolgd door de uitvoeromleidingsoperator en de naam van het te maken bestand.

# cat > tecmint.txt

Tecmint is the only website fully dedicated to Linux.

We kunnen een aangepaste eindmaker hebben voor het ‘cat’-commando. Hier is het geïmplementeerd.

# 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

Onderschat nooit de kracht van het ‘cat’-commando en het kan handig zijn voor het kopiëren van bestanden.

# 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

Wat is nu het tegenovergestelde van cat? Ja, dat is ’tac’. ’tac’ is een commando onder Linux. Het is beter om een voorbeeld van ’tac’ te tonen dan er iets over te zeggen.

Maak een tekstbestand met de namen van alle maanden, zodat één woord op elke regel verschijnt.

# 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

Voor meer voorbeelden van het gebruik van het cat-commando, raadpleeg de 13 cat Command Usage

Dat is alles voor nu. Ik kom terug met een ander interessant artikel, de moeite waard om te weten. Blijf ondertussen afgestemd en verbonden met Tecmint. Vergeet niet om ons waardevolle feedback te geven in onze opmerkingensectie.

Source:
https://www.tecmint.com/view-contents-of-file-in-linux/