Amri 12 Muhimu za Kuchuja Maandishi kwa Uendeshaji Bora wa Faili katika Linux


Katika makala hii, tutapitia zana kadhaa za mstari wa amri ambazo hufanya kama vichungi katika Linux. Kichujio ni programu inayosoma ingizo la kawaida, hufanya operesheni juu yake na kuandika matokeo kwa matokeo ya kawaida.

Kwa sababu hii, inaweza kutumika kuchakata taarifa kwa njia zenye nguvu kama vile kurekebisha matokeo ili kutoa ripoti muhimu, kurekebisha maandishi katika faili na kazi nyingine nyingi za usimamizi wa mfumo.

Kwa kuwa alisema, hapa chini ni baadhi ya faili muhimu au vichungi vya maandishi katika Linux.

1. Amri ya Awk

Awk ni lugha ya ajabu ya kuchanganua na kuchakata muundo, inaweza kutumika kutengeneza vichujio muhimu katika Linux. Unaweza kuanza kuitumia kwa kusoma mfululizo wetu wa Awk Sehemu ya 1 hadi Sehemu ya 13.

Kwa kuongeza, pia soma kupitia ukurasa wa mtu wa awk kwa habari zaidi na chaguzi za utumiaji:

$ man awk

2. Sed Amri

sed ni kihariri cha mtiririko chenye nguvu cha kuchuja na kubadilisha maandishi. Tayari tumeandika nakala mbili muhimu kwenye sed, ambazo unaweza kuzipitia hapa:

  1. Jinsi ya kutumia Amri ya GNU ‘sed’ Kuunda, Kuhariri, na Kudhibiti faili katika Linux
  2. Vidokezo na Mbinu 15 Muhimu za Amri za ‘sed’ kwa Majukumu ya Kila Siku ya Utawala wa Mfumo wa Linux

Ukurasa wa sed man umeongeza chaguzi za udhibiti na maagizo:

$ man sed

3. Amri za Grep, Egrep, Fgrep, Rgrep

Mistari ya pato la vichujio hivi vinavyolingana na mchoro fulani. Wanasoma mistari kutoka kwa faili au ingizo la kawaida, na kuchapisha mistari yote inayolingana kwa chaguo-msingi hadi pato la kawaida.

Kumbuka: Programu kuu inatumia chaguzi maalum za grep kama ilivyo hapo chini (na bado zinatumika kwa utangamano wa nyuma):

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

Chini ni amri za msingi za grep:

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

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

Unaweza kusoma zaidi juu ya Nini Tofauti Kati ya Grep, Egrep na Fgrep katika Linux?.

4. kichwa Amri

head hutumika kuonyesha sehemu za kwanza za faili, hutoa mistari 10 ya kwanza kwa chaguo-msingi. Unaweza kutumia alama ya nambari -n kubainisha idadi ya mistari itakayoonyeshwa:

[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

Jifunze jinsi ya kutumia amri ya kichwa na tail na paka amri kwa matumizi bora katika Linux.

5. Amri ya mkia

mkia hutoa sehemu za mwisho (mistari 10 kwa chaguo-msingi) za faili. Tumia swichi ya -n num ili kubainisha idadi ya mistari itakayoonyeshwa.

Amri hapa chini itatoa mistari 5 ya mwisho ya faili maalum:

[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.

Zaidi ya hayo, mkia una chaguo maalum -f la kutazama mabadiliko katika faili katika muda halisi (hasa faili za kumbukumbu).

Amri ifuatayo itawawezesha kufuatilia mabadiliko katika faili maalum:

[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.

Soma kupitia ukurasa wa mtu wa mkia kwa orodha kamili ya chaguzi na maagizo ya utumiaji:

$ man tail

6. panga Amri

sort hutumiwa kupanga mistari ya faili ya maandishi au kutoka kwa ingizo la kawaida.

Yafuatayo ni maudhui ya faili yenye jina 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

Unaweza kuendesha amri rahisi ya kupanga kupanga yaliyomo kwenye faili kama hivyo:

[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

Unaweza kutumia aina ya amri kwa njia nyingi, pitia baadhi ya vifungu muhimu kwenye amri ya kupanga kama ifuatavyo:

  1. Mifano 14 Muhimu ya Amri ya 'panga' ya Linux - Sehemu ya 1
  2. Vielelezo 7 vya Kuvutia vya Linux ‘panga’ Amri - Sehemu ya 2
  3. Jinsi ya Kupata na Kupanga Faili Kulingana na Tarehe na Wakati wa Urekebishaji
  4. Jinsi ya Kupanga Toleo la Amri ya ‘ls’ Kwa Tarehe na Wakati Iliyorekebishwa Mwisho

7. Uniq Amri

amri ya uniq inatumika kuripoti au kuacha mistari inayorudiwa, inachuja mistari kutoka kwa pembejeo ya kawaida na kuandika matokeo kwa pato la kawaida.

Baada ya kuendesha kupanga kwenye mkondo wa ingizo, unaweza kuondoa mistari inayorudiwa na uniq kama ilivyo kwenye mfano hapa chini.

Ili kuonyesha idadi ya matukio ya mstari, tumia chaguo la -c na upuuze tofauti wakati unapolinganisha kwa kujumuisha chaguo 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 

Soma kupitia ukurasa wa uniq man kwa habari zaidi ya utumiaji na bendera:

$ man uniq

8. fmt Amri

fmt umbizo la maandishi rahisi zaidi, hurekebisha aya katika faili maalum na kuchapisha matokeo kwa matokeo ya kawaida.

Yafuatayo ni maudhui yaliyotolewa kutoka kwa faili domain-list.txt:

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

Ili kurekebisha yaliyomo hapo juu kuwa orodha ya kawaida, endesha amri ifuatayo na swichi ya -w inatumika kufafanua upeo wa upana wa mstari:

[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 Amri

amri ya pr inabadilisha faili za maandishi au pembejeo ya kawaida ya uchapishaji. Kwa mfano kwenye mifumo ya Debian, unaweza kuorodhesha vifurushi vyote vilivyosanikishwa kama ifuatavyo:

$ dpkg -l

Ili kupanga orodha katika kurasa na safu tayari kwa uchapishaji, toa amri ifuatayo.

[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

.....

Bendera zinazotumika hapa ni:

  1. --safu inafafanua idadi ya safu wima zilizoundwa katika matokeo.
  2. -l inabainisha urefu wa ukurasa (chaguo-msingi ni mistari 66).

10. tr Amri

Zana hii hutafsiri au kufuta vibambo kutoka kwa ingizo la kawaida na huandika matokeo kwa matokeo ya kawaida.

Syntax ya kutumia tr ni kama ifuatavyo:

$ tr options set1 set2

Angalia mifano iliyo hapa chini, katika amri ya kwanza, set1( [:upper:] ) inawakilisha kesi ya herufi za ingizo (zote herufi kubwa).

Kisha set2([:lower:]) inawakilisha hali ambayo vibambo vya matokeo vitakuwa. Ni jambo lile lile katika mfano wa pili na mfuatano wa kutoroka \n unamaanisha matokeo ya kuchapisha kwenye mstari mpya:

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

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

11. Amri zaidi

amri zaidi ni kichujio muhimu cha usomaji faili iliyoundwa kimsingi kwa utazamaji wa cheti. Inaonyesha maudhui ya faili katika ukurasa kama umbizo, ambapo watumiaji wanaweza kubonyeza [Enter] ili kuona maelezo zaidi.

Unaweza kuitumia kutazama faili kubwa kama vile:

[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. chini ya Amri

less ni kinyume cha amri zaidi hapo juu lakini inatoa huduma za ziada na ni haraka sana na faili kubwa.

Tumia kwa njia sawa na zaidi:

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

Jifunze Kwa nini 'chini' ni Haraka Kuliko 'zaidi' Amri kwa urambazaji mzuri wa faili katika Linux.

Ni hayo tu kwa sasa, tujulishe juu ya zana zozote muhimu za mstari wa amri ambazo hazijatajwa hapa, ambazo hufanya kama vichungi vya maandishi kwenye Linux kupitia sehemu ya maoni hapa chini.