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.