Efektīvi pārvaldiet failus, izmantojot galvas, astes un kaķa komandas Linux


Faila satura apskatei ir vairākas Linux nodrošinātās komandas un programmas. Darbs ar failiem ir viens no biedējošajiem uzdevumiem. Lielākā daļa datoru lietotāju ir iesācējs, parasts lietotājs, pieredzējis lietotājs, izstrādātājs, administrators utt. Darbs ar failiem ir efektīva māksla.

Šodien šajā rakstā mēs apspriedīsim vispopulārākās komandas, ko sauc par galvu, asti un kaķi. Lielākā daļa no mums jau zina par šādām komandām, taču ļoti maz no mums to īsteno, kad nepieciešams.

1. galva Komanda

Galva komanda nolasa jebkura norādītā faila nosaukuma pirmās desmit rindas. Galvas komandas sintakse ir šāda:

head [options] [file(s)]

Piemēram, šī komanda parādīs faila pirmās desmit rindas ar nosaukumu “/ 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

Ja tiek doti vairāki faili, galva katra faila pirmās desmit rindas parādīs atsevišķi. Piemēram, šī komanda parādīs katra faila desmit rindas.

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

Ja ir vēlams iegūt vairāk rindu nekā noklusējuma desmit, tad opcija ‘-n’ tiek izmantota kopā ar veselu skaitli, kas norāda izgūstamo līniju skaitu. Piemēram, šī komanda parādīs pirmās 5 rindas no faila “/var/log/yum.log” faila.

# 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

Faktiski nav nepieciešams izmantot opciju ‘-n’. Vienkārši defise un norādiet veselu skaitli bez atstarpēm, lai iegūtu tādu pašu rezultātu kā iepriekšminētā komanda.

# 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

Galva komanda var arī parādīt jebkuru vēlamo baitu skaitu, izmantojot opciju ‘-c’, kam seko parādāmo baitu skaits. Piemēram, šī komanda parādīs pirmos 45 baitus no norādītā faila.

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

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

2. astes komanda

Komanda aste ļauj parādīt jebkura teksta faila pēdējās desmit rindas. Līdzīgi kā virs galvas komandai, arī astes komanda atbalsta opcijas ‘n’ līniju skaits un ‘n’ rakstzīmju skaits.

Komandas pamata sintakse ir:

# tail [options] [filenames]

Piemēram, šī komanda izdrukās pēdējās desmit rindas failā ar nosaukumu “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

Ja tiek nodrošināti vairāki faili, aste izdrukās katra faila pēdējās desmit rindas, kā parādīts zemāk.

# 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

Līdzīgi jūs varat arī izdrukāt pēdējās rindas, izmantojot opciju ‘-n’, kā parādīts zemāk.

# 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

Varat arī izdrukāt rakstzīmju skaitu, izmantojot ‘-c’ argumentu, kā parādīts zemāk.

# tail -c5 access.log

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

3. kaķu komanda

Visizplatītākais universālais rīks ir komanda ‘cat’. Tas kopē standarta ievadi standarta izvadē. Komanda atbalsta ritināšanu, ja teksta fails neatbilst pašreizējam ekrānam.

Kaķu komandas sintakse ir šāda:

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

Visbiežāk kaķis tiek izmantots failu satura lasīšanai. Lai atvērtu failu lasīšanai, ir nepieciešams ierakstīt cat, kam seko atstarpe un faila nosaukums.

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

Kaķu komanda arī izmantoja, lai kopā sasietu failu skaitu.

# 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 

To var izmantot arī, lai izveidotu failus. Tas tiek panākts, izpildot kaķi, kam seko izejas pāradresācijas operators un izveidojamais faila nosaukums.

# cat > tecmint.txt

Tecmint is the only website fully dedicated to Linux.

Mums var būt pielāgots gala veidotājs komandai “kaķis”. Šeit tas tiek īstenots.

# 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

Nekad nenovērtējiet par zemu komandas ‘cat’ spēku un tā var būt noderīga failu kopēšanai.

# 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

Kas tagad ir pretstats kaķim? Jā, tas ir ‘tac’. ‘Tac’ ir komanda operētājsistēmā Linux. Labāk ir parādīt ‘tac’ piemēru, nekā par to kaut ko runāt.

Izveidojiet teksta failu ar visa mēneša nosaukumiem tā, lai uz līnijas tiktu parādīts viens vārds.

# 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

Lai iegūtu vairāk kaķu komandu izmantošanas piemēru, skatiet 13 kaķu komandu lietošanu

Tas pagaidām ir viss. Es atkal būšu šeit ar vēl vienu interesantu rakstu, kura vērts zināt. Līdz tam sekojiet līdzi un sazinieties ar Tecmint. Neaizmirstiet sniegt mums vērtīgas atsauksmes mūsu komentāru sadaļā.