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.