Gestioneu els fitxers de manera eficaç utilitzant les ordres head, tail i cat a Linux


Hi ha diverses ordres i programes proporcionats per Linux per visualitzar el contingut del fitxer. Treballar amb fitxers és una de les tasques descoratjadores, la majoria dels usuaris d'ordinadors, ja siguin novells, usuari habitual, usuari avançat, desenvolupador, administrador, etc. Treballar amb fitxers de manera eficaç i eficient és un art.

Avui, en aquest article parlarem de les ordres més populars anomenades cap, cua i gat, la majoria de nosaltres ja coneixem aquestes ordres, però molt pocs les implementem quan cal.

1. Cap de comandament

L'ordre head llegeix les deu primeres línies d'un nom de fitxer determinat. La sintaxi bàsica de l'ordre head és:

head [options] [file(s)]

Per exemple, l'ordre següent mostrarà les deu primeres línies del fitxer anomenat /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

Si es dóna més d'un fitxer, head mostrarà les deu primeres línies de cada fitxer per separat. Per exemple, l'ordre següent mostrarà deu línies de cada fitxer.

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

Si es vol recuperar més de línies que les deu predeterminades, s'utilitza l'opció -n juntament amb un nombre enter que indica el nombre de línies que cal recuperar. Per exemple, l'ordre següent mostrarà les primeres 5 línies del fitxer '/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

De fet, no cal utilitzar l'opció '-n'. Només cal el guionet i especifiqueu l'enter sense espais per obtenir el mateix resultat que l'ordre anterior.

# 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

L'ordre head també pot mostrar el nombre desitjat de bytes mitjançant l'opció -c seguida del nombre de bytes que es mostraran. Per exemple, l'ordre següent mostrarà els primers 45 bytes del fitxer donat.

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

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

2. Comandament de la cua

L'ordre tail us permet mostrar les últimes deu línies de qualsevol fitxer de text. De manera similar a l'ordre del cap de dalt, l'ordre de la cua també admet les opcions n nombre de línies i n nombre de caràcters.

La sintaxi bàsica de l'ordre tail és:

# tail [options] [filenames]

Per exemple, l'ordre següent imprimirà les últimes deu línies d'un fitxer anomenat 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

Si es proporciona més d'un fitxer, tail imprimirà les últimes deu línies de cada fitxer tal com es mostra a continuació.

# 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

De la mateixa manera, també podeu imprimir les últimes línies amb l'opció '-n' tal com es mostra a continuació.

# 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

També podeu imprimir el nombre de caràcters amb l'argument -c com es mostra a continuació.

# tail -c5 access.log

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

3. Comandament gat

L'ordre cat és l'eina universal més utilitzada. Copia l'entrada estàndard a la sortida estàndard. L'ordre admet el desplaçament, si el fitxer de text no s'adapta a la pantalla actual.

La sintaxi bàsica de l'ordre cat és:

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

L'ús més freqüent de cat és llegir el contingut dels fitxers. Tot el que cal per obrir un fitxer per llegir-lo és escriure cat seguit d'un espai i el nom del fitxer.

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

L'ordre cat també s'utilitza per concatenar el nombre de fitxers junts.

# 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 

També es pot utilitzar per crear fitxers. S'aconsegueix executant cat seguit de l'operador de redirecció de sortida i el nom del fitxer que s'ha de crear.

# cat > tecmint.txt

Tecmint is the only website fully dedicated to Linux.

Podem tenir un fabricant d'extrems personalitzat per a l'ordre cat. Aquí s'implementa.

# 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

No subestimeu mai el poder de l'ordre cat i pot ser útil per copiar fitxers.

# 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

Ara què és el contrari de gat? Sí, és 'tac'. 'tac' és una ordre sota Linux. És millor mostrar un exemple de tac que parlar-ne res.

Creeu un fitxer de text amb els noms de tot el mes, de manera que aparegui una paraula en una línia.

# 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

Per obtenir més exemples d'ús d'ordres cat, consulteu 13 Ús d'ordres cat

Això és tot per ara. Tornaré a ser aquí amb un altre article interessant, que val la pena conèixer. Fins aleshores estigueu atents i connectats a Tecmint. No us oblideu de proporcionar-nos els vostres valuosos comentaris a la nostra secció de comentaris.