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ářů.