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.