V tomto článku se podíváme na řadu nástrojů příkazového řádku, které v Linuxu fungují jako filtry. filtr je program, který čte standardní vstup, provádí na něm operaci a zapisuje výsledky na standardní výstup.
Z tohoto důvodu jej lze použít ke zpracování informací účinnými způsoby, jako je restrukturalizace výstupu za účelem generování užitečných zpráv, úprava textu v souborech a mnoho dalších úloh správy systému.
Níže jsou uvedeny některé z užitečných souborových nebo textových filtrů v Linuxu.
1. Příkaz Awk
Awk je pozoruhodný jazyk pro skenování a zpracování vzorů, lze jej použít k vytváření užitečných filtrů v Linuxu. Můžete ji začít používat přečtením naší série Awk od 1. do 13. části.
Kromě toho si také přečtěte awk manuálová stránka pro další informace a možnosti použití:
$ man awk
2. Příkaz Sed
sed je výkonný stream editor pro filtrování a transformaci textu. Již jsme napsali dva užitečné články o sed, které si můžete projít zde:
- Jak používat příkaz GNU ‚sed‘ k vytváření, úpravám a manipulaci se soubory v systému Linux
- 15 užitečných tipů a triků k příkazům „sed“ pro každodenní úlohy správy systému Linux
Manová stránka sed má přidané možnosti ovládání a pokyny:
$ muž sed
3. Příkazy Grep, Egrep, Fgrep, Rgrep
Tyto filtry vystupují řádky odpovídající danému vzoru. Čtou řádky ze souboru nebo standardního vstupu a všechny odpovídající řádky standardně tisknou na standardní výstup.
Poznámka :Hlavním programem je grep, varianty jsou jednoduše stejné jako použití konkrétních možností grep, jak je uvedeno níže (a stále se používají pro zpětnou kompatibilitu):
$ egrep =grep -E$ fgrep =grep -F$ rgrep =grep -r
Níže jsou uvedeny některé základní příkazy grep:
[chráněno e-mailem] ~ $ grep "aaronkilik" /etc/passwdaaronkilik:x:1001:1001::/home/aaronkilik: [chráněno e-mailem] ~ $ cat /etc/passwd | grep "aronkilik"aaronkilik:x:1001:1001::/home/aaronkilik:
Můžete si přečíst více o tom, jaký je rozdíl mezi Grep, Egrep a Fgrep v Linuxu?.
4. Head Command
hlava se používá k zobrazení prvních částí souboru, výstupem je prvních 10 linky ve výchozím nastavení. Můžete použít -n
příznak num k určení počtu řádků, které se mají zobrazit:
[chráněno e-mailem] ~ $ head /var/log/auth.log 2. ledna 10:45:01 TecMint CRON[3383]:pam_unix(cron:session):relace otevřena pro uživatele root uživatelem (uid=0) 2. ledna 10:45:01 TecMint CRON[3383]:pam_unix(cron:session) :relace uzavřena pro uživatele rootJan 2 10:51:34 TecMint sudo:tecmint :TTY=unknown; PWD=/home/tecmint; USER=root; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.pyJan 2 10:51:34 TecMint sudo:pam_unix(sudo:session):relace otevřena pro uživatele root (uid=0)ledna 2 10:51:39 TecMint sudo :pam_unix(sudo:session):relace uzavřena pro uživatele rootJan 2 10:55:01 TecMint CRON[4099]:pam_unix(cron:session):relace otevřena pro uživatele root (uid=0)ledna 2 10:55:01 TecMint CRON[4099]:pam_unix(cron:session):relace uzavřena pro uživatele rootJan 2 11:05:01 TecMint CRON[4138]:pam_unix(cron:session):relace otevřena pro uživatele root (uid=0)ledna 2 11:05:01 TecMint CRON[4138]:pam_unix(cron:session):relace uzavřena pro uživatele rootJan 2 11:09:01 TecMint CRON[4146]:pam_unix(cron:session):relace otevřena pro uživatele root uživatelem (uid =0)[e-mail chráněný] ~ $ head -n 5 /var/log/auth.log 2. ledna 10:45:01 TecMint CRON[3383]:pam_unix(cron:session):relace otevřena pro uživatele root uživatelem (uid=0) 2. ledna 10:45:01 TecMint CRON[3383]:pam_unix(cron:session) :relace uzavřena pro uživatele rootJan 2 10:51:34 TecMint sudo:tecmint :TTY=unknown; PWD=/home/tecmint; USER=root; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.pyJan 2 10:51:34 TecMint sudo:pam_unix(sudo:session):relace otevřena pro uživatele root (uid=0)ledna 2 10:51:39 TecMint sudo :pam_unix(sudo:session):relace uzavřena pro uživatele root
Naučte se používat příkaz head s příkazy tail a cat pro efektivní použití v Linuxu.
5. Příkaz ocas
ocas vypíše poslední části (10 řádků ve výchozím nastavení) souboru. Použijte -n
num přepínač k určení počtu řádků, které se mají zobrazit.
Následující příkaz vypíše posledních 5 řádky zadaného souboru:
[chráněno e-mailem] ~ $ tail -n 5 /var/log/auth.log 6. ledna 13:01:27 TecMint sshd[1269]:Server naslouchá na portu 0.0.0.0 22. ledna 6 13:01:27 TecMint sshd[1269]:Server naslouchá na portu ::22. ledna 6 13:01:27 TecMint sshd[1269]:Přijato SIGHUP; restartování. 6. ledna 13:01:27 TecMint sshd[1269]:Server naslouchající na portu 0.0.0.0 22. ledna 13:01:27 TecMint sshd[1269]:Server naslouchající na portu 22.
Navíc ocas má speciální volbu -f
pro sledování změn v souboru v reálném čase (zejména soubory protokolu).
Následující příkaz vám umožní sledovat změny v zadaném souboru:
[chráněno e-mailem] ~ $ tail -f /var/log/auth.log 6. ledna 12:58:01 TecMint sshd[1269]:Server naslouchá na ::portu 22. ledna 12:58:11 TecMint sshd[1269]:Přijato SIGHUP; restartování. 6. ledna 12:58:12 TecMint sshd[1269]:Server naslouchá na portu 0.0.0.0 22. 6. ledna 12:58:12 TecMint sshd[1269]:Server naslouchá na portu ::22. 6. ledna 13:01 :27 TecMint sshd[1269]:Přijato SIGHUP; restartování. 6. ledna 13:01:27 TecMint sshd[1269]:Server naslouchá na portu 0.0.0.0 22. 6. ledna 13:01:27 TecMint sshd[1269]:Server naslouchá na portu ::22. 6. ledna 13:01 :27 TecMint sshd[1269]:Přijato SIGHUP; restartování. 6. ledna 13:01:27 TecMint sshd[1269]:Server naslouchající na portu 0.0.0.0 22. ledna 13:01:27 TecMint sshd[1269]:Server naslouchající na portu 22.
Přečtěte si ocas manuálová stránka pro úplný seznam možností použití a pokynů:
$ mužský ocas
6. příkaz řazení
řadit se používá k řazení řádků textového souboru nebo ze standardního vstupu.
Níže je uveden obsah souboru s názvem domains.list :
[chráněno e-mailem] ~ $ kočičí domains.list tecmint.comtecmint.comnews.tecmint.comnews.tecmint.comlinuxsay.comlinuxsay.comwindowsmint.comwindowsmint.com
Můžete spustit jednoduchý příkaz řazení a seřadit obsah souboru takto:
[chráněno e-mailem] ~ $ seřadit seznam domén. linuxsay.comlinuxsay.comnews.tecmint.comnews.tecmint.comtecmint.comtecmint.comwindowsmint.comwindowsmint.com
Můžete použít řazení příkazem v mnoha ohledech, projděte si některé užitečné články o příkazu sort takto:
- 14 užitečných příkladů příkazu „sort“ systému Linux – část 1
- 7 zajímavých příkladů příkazů „sort“ v Linuxu – část 2
- Jak najít a seřadit soubory podle data a času úpravy
- Jak seřadit výstup příkazu „ls“ podle data a času poslední úpravy
7. příkaz uniq
jedinečné příkaz se používá k nahlášení nebo vynechání opakovaných řádků, filtruje řádky ze standardního vstupu a zapisuje výsledek na standardní výstup.
Po spuštění řazení ve vstupním proudu můžete odstranit opakované řádky pomocí uniq jako v příkladu níže.
K označení počtu výskytů řádku použijte -c
a ignorujte rozdíly v malých a velkých písmenech při porovnávání přidáním -i
možnost:
[chráněno e-mailem] ~ $ kočičí domains.list tecmint.comtecmint.comnews.tecmint.comnews.tecmint.comlinuxsay.comlinuxsay.comwindowsmint.com[e-mail chráněný] ~ $ třídění domén.seznam | uniq -c 2 linuxsay.com2 news.tecmint.com2 tecmint.com1 windowsmint.com
Přečtěte si unikátní manuálová stránka pro další informace o použití a příznaky:
$ man uniq
8. Příkaz fmt
fmt jednoduchý optimální formátovač textu, přeformátuje odstavce v určeném souboru a vytiskne výsledky na standardní výstup.
Níže je uveden obsah extrahovaný ze souboru seznam-domén.txt :
1.tecmint.com 2.news.tecmint.com 3.linuxsay.com 4.windowsmint.com
Chcete-li přeformátovat výše uvedený obsah na standardní seznam, spusťte následující příkaz s -w
přepínač se používá k definování maximální šířky řádku:
tecmint[chráněno e-mailem] ~ $ cat domain-list.txt 1.tecmint.com 2.news.tecmint.com 3.linuxsay.com 4.windowsmint.com[e-mail chráněný] ~ $ fmt -w 1 domain-list.txt 1.tecmint.com 2.news.tecmint.com 3.linuxsay.com 4.windowsmint.com
9. Příkaz pr
pr příkaz převede textové soubory nebo standardní vstup pro tisk. Například v Debianu systémy, můžete vypsat všechny nainstalované balíčky následovně:
$ dpkg -l
Chcete-li seznam uspořádat do stránek a sloupců připravených k tisku, zadejte následující příkaz.
[chráněno e-mailem] ~ $ dpkg -l | pr --sloupce 3 -l 20 2017-01-06 13:19 Stránka 1Desired=Neznámý/Instalovat ii adduser ii apg| Status=Not/Inst/Conf- ii adwaita-icon-theme ii app-install-data|/ Err?=(none)/Reinst-r ii adwaita-icon-theme- ii apparmor||/ Name ii alsa-base ii apt+++-===================ii alsa-utils ii apt-cloneii accountsservice ii anacron ii apt-transport-httpsii acl ii apache2 ii apt-utilsii acpi-support ii apache2 -bin ii apt-xapian-indexii acpid ii apache2-data ii aptdaemonii add-apt-key ii apache2-utils ii aptdaemon-data2017-01-06 13:19 Page 2ii aptitude ii avahi-daemon ii bind9-hostii aptitude avahi-utils ii binfmt-supportii apturl ii aview ii binutilsii apturl-common ii banshee ii bisonii archdetect-deb ii baobab ii bltii aspell ii base-files ii blueberryii aspell-en ii base-passwd atii-core bluetoothii bluezii attr ii bash-completion ii bluez-cupsii avahi-autoipd ii bc ii bluez-obexd.....
Zde použité příznaky jsou:
--column
definuje počet sloupců vytvořených ve výstupu.-l
určuje délku stránky (výchozí je 66 řádků).
10. Příkaz tr
Tento nástroj překládá nebo odstraňuje znaky ze standardního vstupu a zapisuje výsledky na standardní výstup.
Syntaxe pro použití tr je následující:
$ tr options set1 set2
Podívejte se na příklady níže v prvním příkazu set1( [:upper:] )
představuje velká a malá písmena vstupních znaků (všechna velká).
Poté set2([:lower:])
představuje případ, ve kterém budou výsledné znaky. Je to totéž v druhém příkladu a escape sekvenci \n
znamená tiskový výstup na nový řádek:
[chráněno e-mailem] ~ $ echo "WWW.TECMINT.COM" | tr [:upper:] [:lower:] www.tecmint.com[chráněno e-mailem] ~ $ echo "news.tecmint.com" | tr [:lower:] [:upper:] NEWS.TECMINT.COM
11. další příkaz
více je užitečný filtr pro prohlížení souborů vytvořený v podstatě pro prohlížení certifikátů. Zobrazuje obsah souboru ve formátu podobném stránce, kde uživatelé mohou stisknout [Enter] zobrazíte další informace.
Můžete jej použít k prohlížení velkých souborů, jako například:
[chráněno e-mailem] ~ $ dmesg | více [ 0,000000] Inicializace cgroup subsys cpuset[ 0,000000] Inicializace cgroup subsys cpu[ 0,000000] Inicializace cgroup subsys cpuacct[ 0,000000] Linux verze 4.4.0-21-generic ([Email 160451.protected version. 1-14ubuntu2) ) #37-Ubuntu SMP Po 18. duben 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-generic 4.4.6)[ 0.000000] Příkazový řádek:BOOT_IMAGE=/uz-4.v 21-generic root=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b ro tichý splash vt.handoff=7[ 0,000000] CPU podporovaný KERNEL:[ 0,000000] Intel GenuineIntelH0000000000.000 Intel GenuineIntelH00000.000.000.000 Intel GenuineIntel H00000.000.000. /fpu:xstate_offset[2]:576, xstate_sizes[2]:256[ 0,000000] x86/fpu:Podpora funkce XSAVE 0x01:'x87 registry s pohyblivou řádovou čárkou'[ 0,000000] x86/fpu:Podpora funkce XSSE2AVE:'0x02SAVE [ 0,000000] x86/fpu:Podpora funkce XSAVE 0x04:'AVX registry'[ 0,000000] x86/fpu:Povolené funkce xstate 0x7, velikost kontextu je 832 bajtů s, používající „standardní“ formát.[ 0.000000] x86/fpu:Používání „eager“ kontextových přepínačů FPU.[ 0.000000] e820:BIOSem poskytnutá fyzická mapa RAM:[ 0.000000] BIOS-e820:[mem 0x0000000000000000000000000000000000000000000000000000000 0,000000] BIOS-E820:[MEM 0x000000000009D400-0X0000000009FFFF] Vyhrazeno [0,000000] BIOS-E820:[MEM 0x00000000100 000] BIOS-E820:[MEM 0X0000000000100 000] [ 0x00000000a56b0000-0x00000000a5eaffff] vyhrazeno[ 0,000000] BIOS-e820:[mem 0x00000000a5eb0000-0x00000000aaabefff-More->strong>Více použitelné
12. méně příkaz
méně je opakem více výše, ale nabízí další funkce a je o něco rychlejší s velkými soubory.
Použijte jej stejným způsobem jako další:
[chráněno e-mailem] ~ $ dmesg | méně [ 0,000000] Inicializace cgroup subsys cpuset[ 0,000000] Inicializace cgroup subsys cpu[ 0,000000] Inicializace cgroup subsys cpuacct[ 0,000000] Linux verze 4.4.0-21-generic ([Email 160451.protected version. 1-14ubuntu2) ) #37-Ubuntu SMP Po 18. duben 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-generic 4.4.6)[ 0.000000] Příkazový řádek:BOOT_IMAGE=/uz-4.v 21-generic root=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b ro tichý splash vt.handoff=7[ 0,000000] CPU podporovaný KERNEL:[ 0,000000] Intel GenuineIntelH0000000000.000 Intel GenuineIntelH00000.000.000.000 Intel GenuineIntel H00000.000.000. /fpu:xstate_offset[2]:576, xstate_sizes[2]:256[ 0,000000] x86/fpu:Podpora funkce XSAVE 0x01:'x87 registry s pohyblivou řádovou čárkou'[ 0,000000] x86/fpu:Podpora funkce XSSE2AVE:'0x02SAVE [ 0,000000] x86/fpu:Podpora funkce XSAVE 0x04:'AVX registry'[ 0,000000] x86/fpu:Povolené funkce xstate 0x7, velikost kontextu je 832 bajtů s, používající „standardní“ formát.[ 0.000000] x86/fpu:Používání „eager“ kontextových přepínačů FPU.[ 0.000000] e820:BIOSem poskytnutá fyzická mapa RAM:[ 0.000000] BIOS-e820:[mem 0x0000000000000000000000000000000000000000000000000000000 0,000000] BIOS-E820:[MEM 0x000000000009D400-0X0000000009FFFF] Vyhrazeno [0,000000] BIOS-E820:[MEM 0x00000000100 000] BIOS-E820:[MEM 0X0000000000100 000] [ 0x00000000a56b0000-0x00000000a5eaffff] vyhrazeno[ 0,000000] BIOS-e820:[mem 0x00000000a5eb0000-0x00000000aaabefff>] použitelné:Přečtěte si, proč je příkaz „méně“ rychlejší než příkaz „více“ pro efektivní navigaci v souborech v systému Linux.
To je prozatím vše, dejte nám vědět o jakýchkoli užitečných nástrojích příkazového řádku, které zde nejsou uvedeny a které fungují jako textové filtry v Linuxu, prostřednictvím sekce komentářů níže.
10 užitečných konfigurací Sudoers pro nastavení „sudo“ v Linuxu Jak přidat nový disk větší než 2 TB do stávajícího LinuxuLinux