En nuestro servidor Solaris, descubro que grep -r
no funciona, que es la forma habitual que uso grep
. Parece que egrep
tiene el mismo comportamiento.
Dado que no tengo control sobre la máquina, ¿hay alguna forma de grep
realizar una búsqueda recursiva? ¿O necesito canalizar la salida de find
en grep
?
Respuestas:
No estoy familiarizado con Solaris, pero si cambia de GNU / linux a Solaris, encontrará que la mayoría de los comandos se comportarán de manera ligeramente diferente. La versión GNU de las herramientas de Unix tiene características adicionales que faltan en los Unix "propietarios".
Puede descargar GNU grep (s) aquí y luego compilar e instalar.
Si tiene acceso de root, puede ejecutar configure --prefix = / usr / local De modo que las utilidades se instalen en / usr / local
Si no tiene acceso de root, puede ejecutar configure --prefix = $ {HOME} De modo que las utilidades se instalen en su directorio de inicio
fuente
--prefix=${HOME}}/.local
es probablemente más aconsejable ... no es necesario saturar el directorio de inicioshare
y laslib
carpetasshare
¡Tiene que ser un directorio basura!"rm -rf
Doh!Si desea usar
find
, esta sería la forma más rápida:Sin embargo, es muy probable que Gnu grep ya esté instalado en su máquina.
Forma parte de la instalación predeterminada en Solaris 11 en
/usr/gnu/bin/grep
. Lo mismo para Solaris 10 donde lo encuentra/usr/sfw/bin/ggrep
. En versiones anteriores, es posible que se haya instalado desde sunfreeware u otros repositorios, verifique/usr/local/bin/grep
y busque/opt/csw/bin/grep
ubicaciones comunes.fuente
-name
opción confind
.-name
no buscará dentro de los archivos, sino que solo buscará los nombres de los archivos, que no es lo que pide el OP.Use ggrep en su lugar si está instalado.
Por ejemplo, busque "mysearchstring" desde el directorio actual hasta todos los subdirectorios (
-R
), y muestre el nombre del archivo y la ruta de las coincidencias (-H
) e ignore los archivos binarios (-I
). No olvides el*
final del comando.ggrep se encuentra en
/usr/sfw/bin
Puede agregarlo a su perfil con un comando EXPORT para poder llamarlo directamente desde la línea de comando.Versión Solaris: SunOS 5.10 Generic_147440-13 sun4u sparc SUNW, SPARC-Enterprise
fuente
ggrep
es de hecho GNU grep. ¡Gracias!Descargue el
ack
script perl independiente de http://betterthangrep.com/ , póngalo en su$HOME/bin
y aprenda a usarlo en su lugar. Creo que es, como se anuncia, mejor que grep para muchos usos en mi trabajo de desarrollo diario.fuente
Solaris grep no tiene
-r
opción.Puedes usar el siguiente comando.
fuente
find /opt/ -name "*.sh" -type f | xargs grep "start"
Sí, necesitarás el GNU grep. Personalmente, no echo de menos el indicador "-r" porque puede hacer lo mismo con una combinación de
find
y,grep
pero esto recuerda que tener las herramientas GNU disponibles en su caja Solaris es lo que consideraría una mejor práctica. Así que, aquí vamos:No me gustaría descargar el código fuente de varios lugares en Internet y luego construirme usted mismo. Eso no es necesario. Si simplemente desea que su Solaris tenga las herramientas típicas de GNU disponibles, haga lo siguiente:
Si está en Solaris 10 , debería obtener el disco complementario Solaris 10. Sol solía distribuirlo, pero ahora vive aquí . Personalmente, siempre instalaré el contenido de este disco o al menos las partes más importantes de GNU. ¡Hágalo parte de su JumpStart (o lo que sea que use) para nuevos servidores en su organización!
Si está en Solaris 11, la vida es mucho más simple. Las herramientas GNU generalmente se instalan por defecto, pero no todas se propagan a zonas locales. IFS, el sistema de empaquetado de Solaris 11, hace su vida mucho más fácil, por lo que realmente debería mudarse a Solaris 11 (muchas otras razones también). La lista de paquetes que debe considerar tener siempre disponible para cualquier zona es la siguiente:
y si usa el host para fines de desarrollo / compilación, es posible que desee agregar:
Personalmente, haría que lo anterior (potencialmente menos las herramientas de desarrollo) sea parte de la instalación predeterminada de mi empresa para nuevos servidores / zonas. Los administradores de sistemas de Solaris a menudo insisten en ser diferentes del mundo Linux, pero realmente no hay necesidad de hacerlo. Simplemente hazlo y hazlo parte de tu instalación predeterminada. No te arrepentirás.
fuente