Vyhledávání na webu

Spravujte soubory efektivně pomocí příkazů hlava, ocas a kočka v systému Linux


Linux poskytuje několik příkazů a programů pro zobrazení obsahu souboru. Práce se soubory je jedním z skličujících úkolů, které provádí většina uživatelů počítačů, ať už je to nováček, běžný uživatel, pokročilý uživatel, vývojář, správce atd. Efektivně a efektivně pracovat se soubory je umění.

Dnes v tomto článku probereme nejoblíbenější příkazy zvané hlava, ocas a kočka, o kterých většina z nás již ví, ale jen velmi málo z nás to implementuje, když je to potřeba.

1. hlava Příkaz

Příkaz head přečte prvních deset řádků libovolného názvu souboru. Základní syntaxe příkazu head je:

head [options] [file(s)]

Například následující příkaz zobrazí prvních deset řádků souboru s názvem „/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

Pokud je zadáno více než jeden soubor, hlava zobrazí prvních deset řádků každého souboru zvlášť. Například následující příkaz zobrazí deset řádků každého souboru.

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

Pokud je požadováno načíst více řádků, než je výchozích deset, pak se použije možnost „-n“ spolu s celým číslem udávajícím počet řádků, které mají být načteny. Například následující příkaz zobrazí prvních 5 řádků ze souboru ‚/var/log/yum.log‘.

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

Ve skutečnosti není nutné používat volbu „-n“. Stačí pomlčka a zadat celé číslo bez mezer, abyste získali stejný výsledek jako výše uvedený příkaz.

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

Příkaz head může také zobrazit libovolný počet bajtů pomocí možnosti „-c“ následovaný počtem bajtů, které se mají zobrazit. Například následující příkaz zobrazí prvních 45 bajtů daného souboru.

head -c45 /var/log/yum.log

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

2. tail Command

Příkaz tail umožňuje zobrazit posledních deset řádků libovolného textového souboru. Podobně jako výše uvedený příkaz head podporuje příkaz tail také možnosti  „n“ počet řádků a „n“ počet znaků.

Základní syntaxe příkazu tail je:

tail [options] [filenames]

Například následující příkaz vytiskne posledních deset řádků souboru s názvem ‚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

Pokud je poskytnuto více než jeden soubor, tail vytiskne posledních deset řádků každého souboru, jak je znázorněno níže.

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

Podobně můžete také vytisknout několik posledních řádků pomocí možnosti „-n“, jak je znázorněno níže.

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ůžete také vytisknout počet znaků pomocí argumentu „-c“, jak je uvedeno níže.

tail -c5 access.log

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

3. kočičí povel

Příkaz ‚cat‘ je nejrozšířenější, univerzální nástroj. Kopíruje standardní vstup na standardní výstup. Příkaz podporuje rolování, pokud se textový soubor nevejde na aktuální obrazovku.

Základní syntaxe příkazu cat je:

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

Nejčastější použití cat je čtení obsahu souborů. Vše, co je potřeba k otevření souboru pro čtení, je napsat cat následovaný mezerou a názvem souboru.

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 
…

Příkaz cat se také používá ke spojení několika souborů dohromady.

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 

Může být také použit k vytváření souborů. Toho je dosaženo spuštěním cat následované operátorem přesměrování výstupu a názvem souboru, který má být vytvořen.

cat > tecmint.txt

Tecmint is the only website fully dedicated to Linux.

Můžeme mít vlastního koncového výrobce pro příkaz „kočka“. Zde je implementován.

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

Nikdy nepodceňujte sílu příkazu „cat“ a může být užitečný pro kopírování souborů.

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

Co je tedy opakem kočky? Ano, je to „tac“. „tac“ je příkaz v systému Linux. Je lepší ukázat příklad ‚tac‘, než o tom cokoliv mluvit.

Vytvořte textový soubor s názvy všech měsíců tak, aby se na řádku objevilo jedno slovo.

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

Další příklady použití příkazu cat naleznete v tématu Použití příkazu cat 13

To je prozatím vše. Budu tu znovu s dalším zajímavým článkem, který stojí za to vědět. Do té doby zůstaňte naladěni a připojeni k Tecmint. Nezapomeňte nám poskytnout svou cennou zpětnou vazbu v sekci komentářů.