Učinkovito upravljajte s datotekami z ukazi za glavo, rep in mačko v Linuxu
Linux ponuja več ukazov in programov za ogled vsebine datoteke. Delo z datotekami je ena zastrašujočih nalog, saj večina uporabnikov računalnikov, pa naj bo to novinec, redni uporabnik, napredni uporabnik, razvijalec, skrbnik itd. Učinkovito in uspešno delo z datotekami je umetnost.
Danes bomo v tem članku razpravljali o najbolj priljubljenih ukazih, imenovanih glava, rep in mačka, večina se teh ukazov že zaveda, vendar jih le redki izvajajo po potrebi.
1. head Command
Ukaz head prebere prvih deset vrstic katerega koli imena datoteke. Osnovna sintaksa ukaza head je:
head [options] [file(s)]
Na primer, naslednji ukaz bo prikazal prvih deset vrstic datoteke z imenom "/ 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
Če je podanih več datotek, bo head prikazal prvih deset vrstic vsake datoteke posebej. Na primer, naslednji ukaz bo prikazal deset vrstic vsake datoteke.
# 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:::
Če želite pridobiti več vrstic, kot je privzetih deset, se uporabi možnost '-n' skupaj s celim številom, ki pove število vrstic, ki jih je treba pridobiti. Na primer, naslednji ukaz bo prikazal prvih 5 vrstic iz datoteke '/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
Pravzaprav ni treba uporabljati možnosti '-n'. Samo vezaj in določite celo število brez presledkov, da dobite enak rezultat kot zgornji ukaz.
# 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
Ukaz head lahko prikaže tudi poljubno število bajtov z uporabo možnosti -c, čemur sledi število bajtov, ki jih je treba prikazati. Na primer, naslednji ukaz bo prikazal prvih 45 bajtov dane datoteke.
# head -c45 /var/log/yum.log Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el
2. rep ukaz
Ukaz tail omogoča prikaz zadnjih deset vrstic katere koli besedilne datoteke. Podobno kot zgornji ukaz zgornji, tudi ukaz rep podpira možnosti 'n' število vrstic in 'n' število znakov.
Osnovna sintaksa ukaza tail je:
# tail [options] [filenames]
Naslednji ukaz bo na primer natisnil zadnjih deset vrstic datoteke z imenom „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
Če je na voljo več datotek, bo tail natisnil zadnjih deset vrstic vsake datoteke, kot je prikazano spodaj.
# 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
Podobno lahko zadnjih nekaj vrstic natisnete tudi z uporabo možnosti -n, kot je prikazano spodaj.
# 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
Število znakov lahko natisnete tudi z uporabo argumenta -c, kot je prikazano spodaj.
# tail -c5 access.log ymantec.com:443 - NONE/- text/html
3. mačji ukaz
Ukaz "mačka" je najbolj razširjeno, univerzalno orodje. Kopira standardni vhod na standardni izhod. Ukaz podpira drsenje, če besedilna datoteka ne ustreza trenutnemu zaslonu.
Osnovna sintaksa ukaza mačka je:
# cat [options] [filenames] [-] [filenames]
Najpogostejša uporaba mačke je branje vsebine datotek. Vse, kar je potrebno za odpiranje datoteke za branje, je vtipkati cat, čemur sledi presledek in ime datoteke.
# 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 …
Ukaz cat se uporablja tudi za združevanje števila datotek.
# 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
Uporablja se lahko tudi za ustvarjanje datotek. To se doseže z izvajanjem mačke, ki ji sledi operater izhodne preusmeritve in ime datoteke, ki jo želite ustvariti.
# cat > tecmint.txt Tecmint is the only website fully dedicated to Linux.
Za ukaz 'mačka' imamo lahko izdelovalca konca po meri. Tu se izvaja.
# 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
Nikoli ne podcenjujte moči ukaza 'mačka' in je lahko koristen za kopiranje datotek.
# 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
Kaj pa je nasprotno od mačke? Ja, to je 'tac'. 'Tac' je ukaz pod Linuxom. Bolje je pokazati primer 'tac', kot pa o tem kaj govoriti.
Ustvarite besedilno datoteko z imeni vseh mesecev, tako da se v vrstici pojavi ena beseda.
# 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
Za več primerov uporabe mačjih ukazov glejte 13 Uporaba mačjih ukazov
To je vse za zdaj. Spet bom tu z drugim zanimivim člankom, vrednim vedenja. Do takrat ostanite z nami in povezani s Tecmintom. Ne pozabite nam poslati svojih dragocenih povratnih informacij v našem oddelku za komentarje.