Hallake faile tõhusalt, kasutades pea, saba ja kassi käske Linuxis


Faili sisu vaatamiseks on Linuxil mitu käsku ja programmi. Failidega töötamine on üks hirmutav ülesanne, enamik arvutikasutajaid, olgu selleks algaja, tavakasutaja, kogenud kasutaja, arendaja, administraator jne. Efektiivne ja tõhus töö failidega on kunst.

Täna käsitleme selles artiklis kõige populaarsemaid käske, mida nimetatakse pea, saba ja kass, enamik meist on sellistest käskudest juba teadlikud, kuid väga vähesed meist rakendavad seda vajaduse korral.

1. pea käsk

Peakäsk loeb mis tahes antud failinime esimesed kümme rida. Pea käsu põhisüntaks on:

head [options] [file(s)]

Näiteks kuvab järgmine käsk faili esimesed kümme rida nimega ‘/ 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

Kui on antud rohkem kui üks fail, kuvatakse head iga faili kümme esimest rida eraldi. Näiteks näitab järgmine käsk iga faili kümmet rida.

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

Kui soovitakse tuua rohkem ridu kui kümme vaikerida, kasutatakse valikut ‘-n’ koos täisarvuga, mis ütleb allalaaditavate ridade arvu. Näiteks kuvatakse järgmise käsu abil faili ‘/var/log/yum.log’ esimesed 5 rida.

# 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

Tegelikult pole vaja kasutada valikut ‘-n’. Lihtsalt sidekriips ja määrake tühikuteta täisarv, et saada ülaltoodud käsuga sama tulemus.

# 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

Pea-käsk võib kuvada mis tahes soovitud arvu baite, kasutades valikut ‘-c’, millele järgneb kuvatavate baitide arv. Näiteks kuvab järgmine käsk antud faili esimesed 45 baiti.

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

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

2. saba käsk

Saba käsk võimaldab kuvada mis tahes tekstifaili viimast kümmet rida. Sarnaselt ülaltoodud peakäsule toetab ka saba käsk suvandeid ‘n’ ridade arv ja ‘n’ märkide arv.

Saba käsu põhisüntaks on:

# tail [options] [filenames]

Näiteks prindib järgmine käsk faili 'access.log' nimega kümme viimast rida.

# 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

Kui pakutakse rohkem kui ühte faili, prindib tail iga faili kümme viimast rida, nagu allpool näidatud.

# 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

Samamoodi saate ka viimaseid ridu printida, kasutades allpool näidatud valikut ‘-n’.

# 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

Märkide arvu saate printida ka argumendi ‘-c abil, nagu allpool näidatud.

# tail -c5 access.log

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

3. kassi käsk

Käsk ‘kass’ on kõige laialdasemalt kasutatav universaalne tööriist. See kopeerib standardse sisendi standardväljundisse. Käsk toetab kerimist, kui tekstifail ei vasta praegusele ekraanile.

Kassi käsu põhiline süntaks on:

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

Kassi kõige sagedamini kasutatakse failide sisu lugemist. Faili lugemiseks on vaja ainult sisestada kass, millele järgneb tühik ja faili nimi.

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

Kassi käsk liitis ka failide arvu kokku.

# 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 

Seda saab kasutada ka failide loomiseks. Selle saavutamiseks käivitatakse kass, millele järgneb väljundi ümbersuunamise operaator ja loodav failinimi.

# cat > tecmint.txt

Tecmint is the only website fully dedicated to Linux.

Meil võib olla kassi käskude jaoks kohandatud lõpptootja. Siin seda rakendatakse.

# 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

Ärge kunagi alahinnake käsu „kass” jõudu ja see võib olla kasulik failide kopeerimiseks.

# 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

Mis on kassi vastand? Jah, see on "tac". ‘Tac’ on Linuxi käsk. Parem on näidata „tac” näidet, kui sellest midagi rääkida.

Looge kogu kuu nimedega tekstifail, nii et reale ilmuks üks sõna.

# 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

Rohkem näiteid kassi käskude kasutamise kohta leiate artiklist 13 kassi käsu kasutamist

Praeguseks kõik. Olen siin taas ühe huvitava artikliga, mis on teadmist väärt. Siiani olge Tecmintiga kursis ja ühenduses. Ärge unustage meile oma kommentaaride jaotises oma väärtuslikku tagasisidet anda.