Kolore kombini je Grep kaj less

Mi kutimas uzi Grep por serĉi precizan tekston en dosieroj. Per grep -R teksto en dosierujo mi povas trovi ĉiujn dosierojn en kiu tiu teksto estas.

Kiam estas multaj kongruoj, estas pli komforta uzi less por moviĝi tra la rezultoj. La problemo estas, ke plenumante grep -R teksto | less oni ne plu vidas la kolorojn.

Grep ne montras kolorojn defaŭlte, sed estas konfigurita en la plejparto de GNU/Linuksa sistemoj per alinomo en la dosiero .bashrc, aŭ en la funkcie ekvivalenta en aliaj ŝeloj, por detekti kiam montri kaj kiam ne montri kolorojn: alias grep='grep --color=auto'. Kiam la rezulto de ĝia plenumo estas donita al alia programo per dukto, Grep ĉesas montri kolorojn, ĉar la kodoj uzitaj por montri kolorojn en la ŝeloj aldonas ne ekzistantajn signojn, kiuj povas krei neatenditajn rezultojn. Por montri kolorojn ankaŭ tiukaze ni devas aldoni je --color=always. Ankaŭ devas ni doni la opcion -r al less, por ke ĝi montru la kolorajn signojn. Tiel estus la komando: grep --color=always -R teksto | less -r.

Ĉar skribi tiom multe estas teda, estas bona ideo aldoni ĉi tiun funkcion al la dosiero .bashrc (memoru, ke estas necesa reŝarĝi la agordaron de Bash por uzi la funkcion):

lgrep ()
{
  grep --color=always -R "$1" | less -r
}

Tiumaniere nur necesas skribi lgrep teksto por montriĝi la koloraj rezultoj en less.

Komentoj