Hallitse tiedostoja tehokkaasti käyttämällä pää-, häntä- ja kissakomentoja Linuxissa


Linuxissa on useita komentoja ja ohjelmia tiedostojen sisällön tarkastelemiseksi. Työskentely tiedostojen kanssa on yksi pelottava tehtävä, useimmat tietokoneen käyttäjät ovat aloittelija, tavallinen käyttäjä, kokenut käyttäjä, kehittäjä, järjestelmänvalvoja jne. Työskentely tiedostojen kanssa on taiteellista.

Tänään keskustelemme tässä artikkelissa suosituimmista komennoista nimeltä pää, häntä ja kissa. Useimmat meistä ovat jo tietoisia tällaisista komennoista, mutta hyvin harvat meistä toteuttavat sen tarvittaessa.

1. pääkomento

Head-komento lukee minkä tahansa tiedostonimen kymmenen ensimmäistä riviä. Pääkomennon perussyntaksi on:

head [options] [file(s)]

Esimerkiksi seuraava komento näyttää tiedoston '/ etc/passwd' ensimmäiset kymmenen riviä.

# 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

Jos annettuja tiedostoja on useampi kuin yksi, pää näyttää kunkin tiedoston kymmenen ensimmäistä riviä erikseen. Esimerkiksi seuraava komento näyttää kymmenen riviä kustakin tiedostosta.

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

Jos halutaan hakea enemmän rivejä kuin oletuksena kymmenen, niin vaihtoehtoa ’-n’ käytetään yhdessä kokonaisluvun kanssa, joka kertoo haettavien rivien lukumäärän. Esimerkiksi seuraava komento näyttää tiedoston ”/var/log/yum.log” tiedoston viisi ensimmäistä riviä.

# 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

Itse asiassa ei tarvitse käyttää -n -vaihtoehtoa. Vain väliviiva ja määritä kokonaisluku ilman välilyöntejä saadaksesi saman tuloksen kuin yllä oleva komento.

# 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

Head-komento voi myös näyttää minkä tahansa halutun tavumäärän käyttämällä ‘-c’ -vaihtoehtoa ja sen jälkeen näytettävien tavujen lukumäärää. Esimerkiksi seuraava komento näyttää annetun tiedoston ensimmäiset 45 tavua.

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

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

2. hännän komento

Häntäkomennon avulla voit näyttää minkä tahansa tekstitiedoston kymmenen viimeistä riviä. Kuten yllä olevassa pääkomennossa, hännäkomento tukee myös vaihtoehtoja 'n' rivien määrä ja 'n' merkkien lukumäärä.

Häntäkomennon perussyntaksi on:

# tail [options] [filenames]

Esimerkiksi seuraava komento tulostaa ”access.log” -nimisen tiedoston viimeiset kymmenen riviä.

# 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

Jos tiedostoja on useampi kuin yksi, tail tulostaa kunkin tiedoston kymmenen viimeistä riviä alla olevan kuvan mukaisesti.

# 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

Vastaavasti voit tulostaa myös viimeiset rivit käyttämällä ‘-n’ -vaihtoehtoa alla olevan kuvan mukaisesti.

# 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

Voit myös tulostaa merkkien lukumäärän käyttämällä -c-argumenttia alla olevan kuvan mukaisesti.

# tail -c5 access.log

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

3. kissan komento

Kissa-komento on yleisimmin käytetty, yleinen työkalu. Se kopioi vakiosyötteen vakiolähtöön. Komento tukee vieritystä, jos tekstitiedosto ei sovi nykyiseen näyttöön.

Kissakomennon perussyntaksi on:

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

Kissan yleisin käyttö on tiedostojen sisällön lukeminen. Ainoa mitä tarvitaan avaamaan tiedosto luettavaksi, on kirjoittaa cat, jota seuraa välilyönti ja tiedostonimi.

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

Kissakomennolla myös liitettiin tiedostojen määrä yhteen.

# 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 

Sitä voidaan käyttää myös tiedostojen luomiseen. Se saavutetaan suorittamalla kissa, jota seuraa lähdön uudelleenohjausoperaattori ja luotava tiedoston nimi.

# cat > tecmint.txt

Tecmint is the only website fully dedicated to Linux.

Meillä voi olla mukautettu loppukäyttäjä "kissa" -komennolle. Tässä se toteutetaan.

# 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

Älä koskaan aliarvioi kissa-komennon tehoa, ja siitä voi olla hyötyä tiedostojen kopioinnissa.

# 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

Mikä on kissan vastakohta? Jee se on "tac". ’Tac’ on komento Linuxissa. On parempi näyttää esimerkki "tacista" kuin puhua siitä mitään.

Luo tekstitiedosto, joka sisältää koko kuukauden nimet siten, että yksi sana näkyy rivillä.

# 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

Lisää esimerkkejä kissan komentojen käytöstä on artikkelissa 13 kissan komentojen käyttöä

Tässä kaikki tältä erää. Olen täällä taas toisen mielenkiintoisen artikkelin kanssa, jonka arvoinen tietää. Till sitten pysy kuulolla ja yhteydessä Tecmintiin. Älä unohda antaa meille arvokasta palautettasi kommenttiosastollamme.