He visto en algunos Linux, que grep
está configurado para resaltar la coincidencia e imprimir el archivo coincidente.
¿Cómo puedo configurar grep
para resaltar coincidencias?
alias cgrep='grep -nR --color'
Uso:
$ cgrep somestring /path/to/dir/or/file/with*/possible/*wild.card
También uno de mis favoritos:
$ pgrep some-hanging-process
enumerará todos los pids de procesos que coinciden con el nombre de algún proceso que puede usar en la siguiente situación:
$ kill $(pgrep some-hanging-process)
grep
,grep -r
generalmente se debe preferir agrep -R
las anteriores, ya que la primera no atraviesa enlaces simbólicos.He descubierto que la mejor manera de pimp grep es usar ack , que es esencialmente grep recursivo con una lista inteligente de ignorar (por ejemplo, no busca directorios .svn, ignora archivos de copia de seguridad, etc.), resaltando los resultados en color y perl regexps. Es lo que quieres que haga grep el 98,6% del tiempo.
fuente
Configuré esto en mi .bashrc, en lugar de redefinir grep usando un alias:
Para mí, esto funciona en Linux, MacOSX y FreeBSD.
fuente
GREP_OPTIONS
debe considerarse dañino Recomiendo usaralias
en su lugar. Ver aquí: bugs.launchpad.net/ubuntu/+bug/67141Recomiendo evitar la variable de entorno GREP_OPTIONS, afectará cada invocación de grep, incluso aquellas integradas en otras herramientas. Si esas herramientas esperan que grep se comporte de una manera, y usted cambia ese comportamiento, las romperá y las romperá.
En su lugar, puede crear un alias, que funciona bien. Esto solo afectará las llamadas a grep desde su shell interactivo (es decir, que escriba usted mismo).
La última opción, que me gusta más que nada, es crear un script de envoltura que invoque grep. Prefiero esto sobre un alias, porque puedo invocar este contenedor desde otros programas. Por ejemplo, en vim configurando vimgrep, de modo que mis búsquedas desde vim se comporten de manera idéntica a las búsquedas en la línea de comandos.
Invoque esto usando:
p.ej
buscará instancias de 'patrón' en todos los archivos de texto en el directorio actual y subdirecciones.
Tenga en cuenta que llamo a mi script 'grp', en lugar de sombrear 'grep', para que siempre esté al tanto de si invoco grep con mis valores predeterminados personalizados o no.
Por defecto incluyo:
Creo que todos querrían omitir los directorios de control de código fuente: .hg .git .bzr .svn
Omitir 'build' y 'dist' son Python-isms, y probablemente no se aplican a la mayoría de las personas. Sin duda, desarrollará sus propias idiosincrasias mientras trabaja.
'tags' es el resultado de ctags, que uso para 'ir a la definición de funciones' y similares en herramientas como vim. Como tal, contiene al menos una copia de cada palabra y símbolo de mi código fuente, por lo que vale la pena saltarse los resultados de búsqueda.
"$ *" al final es la sintaxis de bash para "y todos los demás parámetros de la línea de comandos", por lo que puede pasar el patrón y el directorio para buscar normalmente, y anular cualquier otra marca de línea de comando que desee .
fuente
La
--color
opción ya se ha mencionado varias veces, pero me gustaría agregar que es posible configurar el color en el que se resaltarán las coincidencias utilizando una variable de entornoEl color debe codificarse utilizando códigos de color ANSI, como referencia
fuente
GREP_COLOR
es obsoleto. Usar en suGREP_COLORS
lugar.Como no vi ningún ejemplo de configuración de colores, aquí hay una configuración simple para GNU grep:
Ten cuidado con
GREP_OPTIONS
; no lo use para otra cosa que no sea cosas--color=auto
o dañará cualquier script que use grep en su sistema.fuente