Administrer filer effektivt ved å bruke hode-, hale- og kattekommandoer i Linux


Det er flere kommandoer og programmer levert av Linux for å se innholdet i filen. Å jobbe med filer er en av de skremmende oppgavene, de fleste av databrukerne, enten det er nybegynnere, vanlige brukere, avanserte brukere, utviklere, admins osv. utfører. Å jobbe med filer effektivt og effektivt er en kunst.

I dag vil vi i denne artikkelen diskutere de mest populære kommandoene kalt hode, hale og katt, de fleste av oss er allerede klar over slike kommandoer, men svært få av oss implementerer det når det trengs.

1. hode Kommando

Head-kommandoen leser de første ti linjene i et gitt filnavn. Den grunnleggende syntaksen for head-kommando er:

head [options] [file(s)]

For eksempel vil følgende kommando vise de ti første linjene i filen med navnet '/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

Hvis mer enn én fil er gitt, vil head vise de første ti linjene i hver fil separat. For eksempel vil følgende kommando vise ti linjer av hver fil.

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

Hvis det er ønskelig å hente flere linjer enn standard ti, brukes '-n'-alternativet sammen med et heltall som forteller antall linjer som skal hentes. For eksempel vil følgende kommando vise de første 5 linjene fra filen «/var/log/yum.log»-filen.

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

Faktisk er det ikke nødvendig å bruke "-n"-alternativet. Bare bindestrek og spesifiser heltall uten mellomrom for å få samme resultat som kommandoen ovenfor.

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-kommandoen kan også vise et ønsket antall byte ved å bruke "-c"-alternativet etterfulgt av antall byte som skal vises. For eksempel vil følgende kommando vise de første 45 bytene av gitt fil.

head -c45 /var/log/yum.log

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

2. halekommando

Halekommandoen lar deg vise de ti siste linjene i en hvilken som helst tekstfil. I likhet med head-kommandoen ovenfor, støtter tail-kommando også alternativene  «n» antall linjer og «n» antall tegn.

Den grunnleggende syntaksen for halekommando er:

tail [options] [filenames]

Følgende kommando vil for eksempel skrive ut de ti siste linjene i en fil kalt «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

Hvis mer enn én fil er levert, vil tail skrive ut de siste ti linjene i hver fil som vist nedenfor.

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

På samme måte kan du også skrive ut de siste linjene ved å bruke «-n»-alternativet som vist nedenfor.

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

Du kan også skrive ut antall tegn ved å bruke «-c»-argumentet som vist nedenfor.

tail -c5 access.log

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

3. katt Kommando

«cat»-kommandoen er det mest brukte, universelle verktøyet. Den kopierer standard input til standard output. Kommandoen støtter rulling hvis tekstfilen ikke passer til gjeldende skjerm.

Den grunnleggende syntaksen for cat-kommando er:

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

Den hyppigste bruken av cat er å lese innholdet i filer. Alt som kreves for å åpne en fil for lesing er å skrive cat etterfulgt av et mellomrom og filnavnet.

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 
…

Katt-kommandoen brukes også til å sette sammen antall filer.

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 

Den kan også brukes til å lage filer. Det oppnås ved å utføre cat etterfulgt av utdataomdirigeringsoperatøren og filnavnet som skal opprettes.

cat > tecmint.txt

Tecmint is the only website fully dedicated to Linux.

Vi kan ha tilpasset sluttprodusent for "katt"-kommando. Her er det implementert.

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

Undervurder aldri kraften til «cat»-kommandoen og kan være nyttig for å kopiere filer.

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

Hva er nå det motsatte av katt? Ja, det er «tac». 'tac' er en kommando under Linux. Det er bedre å vise et eksempel på "tac" enn å snakke noe om det.

Lag en tekstfil med navnene på hele måneden, slik at ett ord vises på en linje.

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

For flere eksempler på bruk av katt-kommandoer, se 13-katt-kommandobruken

Det er alt for nå. Jeg vil være her igjen med en annen interessant artikkel, verdt å vite. Inntil da, følg med og koble til Tecmint. Ikke glem å gi oss din verdifulle tilbakemelding i kommentarfeltet.