12 Kmandi Utli Għall-Iffiltrar tat-Test għal Operazzjonijiet Effettivi tal-Fajl fil-Linux


F'dan l-artikolu, se nirrevedu numru ta 'għodod tal-linja tal-kmand li jaġixxu bħala filtri fil-Linux. Filtru huwa programm li jaqra input standard, iwettaq operazzjoni fuqu u jikteb ir-riżultati fuq output standard.

Għal din ir-raġuni, tista 'tintuża biex tipproċessa l-informazzjoni b'modi b'saħħithom bħal output ta' ristrutturar biex tiġġenera rapporti utli, timmodifika test fil-fajls u ħafna kompiti oħra ta 'amministrazzjoni tas-sistema.

B'dak li ntqal, hawn taħt hemm xi wħud mill-filtri utli tal-fajl jew tat-test fil-Linux.

1. Kmand Awk

Awk hija lingwa ta 'skanjar u pproċessar ta' mudell notevoli, tista 'tintuża biex tibni filtri utli fil-Linux. Tista 'tibda tużah billi taqra s-serje Awk tagħna Parti 1 sa Parti 13.

Barra minn hekk, aqra wkoll il-paġna man awk għal aktar informazzjoni u għażliet ta 'użu:

$ man awk

2. Sed Kmand

sed huwa editur tan-nixxiegħa b'saħħtu għall-iffiltrar u t-trasformazzjoni tat-test. Diġà ktibna żewġ artikli utli dwar sed, li tista’ tgħaddi minnha hawn:

  1. Kif tuża l-Kmand GNU ‘sed’ biex Toħloq, Teditja, u timmanipula fajls fil-Linux
  2. 15 Suġġerimenti u Tricks Utli tal-Kmand ‘sed’ għal Kompiti ta’ Kuljum ta’ Amministrazzjoni tas-Sistema Linux

Il-paġna man sed żiedet għażliet ta' kontroll u struzzjonijiet:

$ man sed

3. Kmandi Grep, Egrep, Fgrep, Rgrep

Dawn il-filtri joħorġu linji li jaqblu ma 'mudell partikolari. Huma jaqraw linji minn fajl jew input standard, u jistampaw il-linji kollha li jaqblu awtomatikament għall-output standard.

Nota: Il-programm ewlieni qed juża għażliet grep speċifiċi kif hawn taħt (u għadhom qed jintużaw għal kompatibilità b'lura):

$ egrep = grep -E
$ fgrep = grep -F
$ rgrep = grep -r  

Hawn taħt hawn xi kmandi bażiċi grep:

[email  ~ $ grep "aaronkilik" /etc/passwd
aaronkilik:x:1001:1001::/home/aaronkilik:

[email  ~ $ cat /etc/passwd | grep "aronkilik"
aaronkilik:x:1001:1001::/home/aaronkilik:

Tista 'taqra aktar dwar X'Differenza Bejn Grep, Egrep u Fgrep fil-Linux?.

4. Kap Kmand

head tintuża biex turi l-ewwel partijiet ta 'fajl, toħroġ l-ewwel 10 linji awtomatikament. Tista' tuża l-marka -n num biex tispeċifika n-numru ta' linji li għandhom jintwerew:

[email  ~ $ head /var/log/auth.log  
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session closed for user root
Jan  2 10:51:34 TecMint sudo:  tecmint : TTY=unknown ; PWD=/home/tecmint ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py
Jan  2 10:51:34 TecMint sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Jan  2 10:51:39 TecMint sudo: pam_unix(sudo:session): session closed for user root
Jan  2 10:55:01 TecMint CRON[4099]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 10:55:01 TecMint CRON[4099]: pam_unix(cron:session): session closed for user root
Jan  2 11:05:01 TecMint CRON[4138]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 11:05:01 TecMint CRON[4138]: pam_unix(cron:session): session closed for user root
Jan  2 11:09:01 TecMint CRON[4146]: pam_unix(cron:session): session opened for user root by (uid=0)

[email  ~ $ head  -n 5 /var/log/auth.log  
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session closed for user root
Jan  2 10:51:34 TecMint sudo:  tecmint : TTY=unknown ; PWD=/home/tecmint ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py
Jan  2 10:51:34 TecMint sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Jan  2 10:51:39 TecMint sudo: pam_unix(sudo:session): session closed for user root

Tgħallem kif tuża l-kmand tar-ras bil-kmandi tad-denb u tal-qtates għal użu effettiv fil-Linux.

5. Kmand tad-denb

tail joħroġ l-aħħar partijiet (10 linji awtomatikament) ta 'fajl. Uża l-iswiċċ -n num biex tispeċifika n-numru ta' linji li għandhom jintwerew.

Il-kmand hawn taħt joħroġ l-aħħar 5 linji tal-fajl speċifikat:

[email  ~ $ tail -n 5 /var/log/auth.log
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.

Barra minn hekk, denb għandu għażla speċjali -f biex tara bidliet f'fajl f'ħin reali (speċjalment log files).

Il-kmand li ġej jippermettilek tissorvelja l-bidliet fil-fajl speċifikat:

[email  ~ $ tail -f /var/log/auth.log
Jan  6 12:58:01 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 12:58:11 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 12:58:12 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 12:58:12 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.

Aqra l-paġna man tail għal lista kompluta ta 'għażliet ta' użu u istruzzjonijiet:

$ man tail

6. issortja Kmand

sort huwa użat biex issolvi linji ta 'fajl test jew minn input standard.

Hawn taħt hemm il-kontenut ta' fajl bl-isem domains.list:

[email  ~ $ cat domains.list
linux-console.net
linux-console.net
news.linux-console.net
news.linux-console.net
linuxsay.com
linuxsay.com
windowsmint.com
windowsmint.com

Tista' tmexxi kmand ta' sort sempliċi biex issolvi l-kontenut tal-fajl hekk:

[email  ~ $ sort domains.list
linuxsay.com
linuxsay.com
news.linux-console.net
news.linux-console.net
linux-console.net
linux-console.net
windowsmint.com
windowsmint.com

Tista' tuża l-kmand tal-issortjar f'ħafna modi, tgħaddi minn uħud mill-artikoli utli dwar il-kmand tal-issortjar kif ġej:

  1. 14 Eżempji Utli ta’ Kmand ta’ ‘sort’ Linux – Parti 1
  2. 7 Eżempji ta’ Kmand Interessanti ta’ ‘sort’ Linux – Parti 2
  3. Kif Sib u Issortja Fajls Ibbażat fuq id-Data u l-Ħin tal-Modifikazzjoni
  4. Kif Issortja l-Output tal-Kmand ‘ls’ Skont l-Aħħar Data u Ħin Modifikat

7. Kmand uniq

Il-kmand uniq jintuża biex jirrapporta jew iħalli barra linji ripetuti, jiffiltra linji minn input standard u jikteb ir-riżultat għall-output standard.

Wara li taħdem issortja fuq fluss ta 'input, tista' tneħħi linji ripetuti b'uniq bħal fl-eżempju hawn taħt.

Biex tindika n-numru ta' okkorrenzi ta' linja, uża l-għażla -c u injora d-differenzi fil-każ waqt li tqabbel billi tinkludi l-għażla -i:

[email  ~ $ cat domains.list
linux-console.net
linux-console.net
news.linux-console.net
news.linux-console.net
linuxsay.com
linuxsay.com
windowsmint.com

[email  ~ $ sort domains.list | uniq -c 
2 linuxsay.com
2 news.linux-console.net
2 linux-console.net
1 windowsmint.com 

Aqra l-paġna man uniq għal aktar informazzjoni dwar l-użu u bnadar:

$ man uniq

8. Kmand fmt

fmt formatter tat-test ottimali sempliċi, jifformattja l-paragrafi fil-fajl speċifikat u jistampa r-riżultati għall-output standard.

Dan li ġej huwa l-kontenut estratt mill-fajl domain-list.txt:

1.linux-console.net 2.news.linux-console.net 3.linuxsay.com 4.windowsmint.com

Biex tifforma mill-ġdid il-kontenut ta' hawn fuq għal lista standard, mexxi l-kmand li ġej bi -w swiċċ jintuża biex tiddefinixxi l-wisa 'massimu tal-linja:

[email  ~ $ cat domain-list.txt 
1.linux-console.net 2.news.linux-console.net 3.linuxsay.com 4.windowsmint.com

[email  ~ $ fmt -w 1 domain-list.txt
1.linux-console.net 
2.news.linux-console.net 
3.linuxsay.com 
4.windowsmint.com

9. pr Kmand

kmand pr jikkonverti fajls ta 'test jew input standard għall-istampar. Pereżempju fuq is-sistemi Debian, tista’ telenka l-pakketti installati kollha kif ġej:

$ dpkg -l

Biex torganizza l-lista f'paġni u kolonni lesti għall-istampar, agħti l-kmand li ġej.

[email  ~ $ dpkg -l | pr --columns 3 -l 20  

2017-01-06 13:19                                                  Page 1


Desired=Unknown/Install 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-clone
ii  accountsservice	ii  anacron		ii  apt-transport-https
ii  acl			ii  apache2		ii  apt-utils
ii  acpi-support	ii  apache2-bin		ii  apt-xapian-index
ii  acpid		ii  apache2-data	ii  aptdaemon
ii  add-apt-key		ii  apache2-utils	ii  aptdaemon-data


2017-01-06 13:19                                                  Page 2


ii  aptitude		ii  avahi-daemon	ii  bind9-host
ii  aptitude-common	ii  avahi-utils		ii  binfmt-support
ii  apturl		ii  aview		ii  binutils
ii  apturl-common	ii  banshee		ii  bison
ii  archdetect-deb	ii  baobab		ii  blt
ii  aspell		ii  base-files		ii  blueberry
ii  aspell-en		ii  base-passwd		ii  bluetooth
ii  at-spi2-core	ii  bash		ii  bluez
ii  attr		ii  bash-completion	ii  bluez-cups
ii  avahi-autoipd	ii  bc			ii  bluez-obexd

.....

Il-bnadar użati hawn huma:

  1. --kolonna jiddefinixxi n-numru ta' kolonni maħluqa fl-output.
  2. -l jispeċifika t-tul tal-paġna (default huwa 66 linja).

10. tr Kmand

Din l-għodda tittraduċi jew tħassar karattri minn input standard u tikteb ir-riżultati għall-output standard.

Is-sintassi għall-użu tr hija kif ġej:

$ tr options set1 set2

Agħti ħarsa lejn l-eżempji hawn taħt, fl-ewwel kmand, set1([:upper:] ) tirrappreżenta l-każ ta’ karattri ta’ input (kollha majju).

Imbagħad set2([:lower:]) tirrappreżenta l-każ li fih se jkunu l-karattri li jirriżultaw. Hija l-istess ħaġa fit-tieni eżempju u s-sekwenza tal-ħarba tfisser output tal-istampar fuq linja ġdida:

[email  ~ $ echo "WWW.TECMINT.COM" | tr [:upper:] [:lower:]
linux-console.net

[email  ~ $ echo "news.linux-console.net" | tr [:lower:] [:upper:]
NEWS.TECMINT.COM

11. aktar Kmand

aktar kmand huwa filtru utli tal-perusal tal-fajl maħluqa bażikament għall-wiri taċ-ċertifikat. Juri l-kontenut tal-fajl f'format bħal paġna, fejn l-utenti jistgħu jagħfsu [Enter] biex jaraw aktar informazzjoni.

Tista' tużaha biex tara fajls kbar bħal dan:

[email  ~ $ dmesg | more
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 4.4.0-21-generic ([email ) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2) ) #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-generic
 4.4.6)
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-generic root=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b ro quiet splash vt.handoff=7
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Centaur CentaurHauls
[    0.000000] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
[    0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers'
[    0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
[    0.000000] x86/fpu: Using 'eager' FPU context switches.
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000a56affff] usable
[    0.000000] BIOS-e820: [mem 0x00000000a56b0000-0x00000000a5eaffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000a5eb0000-0x00000000aaabefff] usable
--More--

12. inqas Kmand

inqas huwa l-oppost ta 'aktar kmand hawn fuq iżda joffri karatteristiċi żejda u huwa ftit aktar mgħaġġel b'fajls kbar.

Użaha bl-istess mod bħal aktar:

[email  ~ $ dmesg | less
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 4.4.0-21-generic ([email ) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2) ) #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-generic
 4.4.6)
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-generic root=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b ro quiet splash vt.handoff=7
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Centaur CentaurHauls
[    0.000000] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
[    0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers'
[    0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
[    0.000000] x86/fpu: Using 'eager' FPU context switches.
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000a56affff] usable
[    0.000000] BIOS-e820: [mem 0x00000000a56b0000-0x00000000a5eaffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000a5eb0000-0x00000000aaabefff] usable
:

Tgħallem Għaliex inqas huwa Faster Than aktar Kmand għal navigazzjoni effettiva tal-fajls fil-Linux.

Dak kollu għalissa, għarrafna bi kwalunkwe għodda utli tal-linja tal-kmand mhux imsemmija hawn, li jaġixxu bħala test filtri fil-Linux permezz tat-taqsima tal-kummenti hawn taħt.