Cygwin "buscar" no devuelve nada

Cygwin "buscar" no devuelve nada

Este comando no devuelve nada en Cygwin ejecutándose en Windows Server 2008 r2:

/usr/bin/buscar /

Hago una pequeña pausa, pero no se devuelve ningún mensaje de texto. Sin errores, sin resultados, etc. Lo intenté con diferentes rutas de búsqueda, usando argumentos (como -tipo f) y configuré mi ruta cygwin solo en /usr/local/bin:/usr/bin. Nada funciona.

¿Ideas?

Gracias

Respuesta1

Ese es un comportamiento muy extraño y nunca me había encontrado con algo así mientras usaba Cygwin. No tengo suficientes puntos de reputación para solicitar información mediante comentarios, así que simplemente publicaré las técnicas de depuración que usaría. Con suerte, serán de utilidad para cualquier otra persona que tenga problemas similares.

En primer lugar, intentaría verificar que estaba ejecutando el ejecutable correcto. La ejecución find --versiondebería devolver algo como lo siguiente:

buscar (GNU findutils) 4.5.11

Empaquetado por Cygwin (4.5.11-1)

Si todavía no obtenía ningún resultado, (instalaría y) usaría strace el comando de Cygwin:

mkdir testdir
strace -o find.out find testdir
rmdir testdir

stracele permite ver qué llamadas realiza un ejecutable de Cygwin a la DLL de Cygwin. Con el comando anterior, la salida del comando de búsqueda se almacena en find.out.

A menos que esté familiarizado con la programación del sistema Windows, gran parte de esto no tendrá sentido. Sin embargo, mirar el resultado aún le dará una idea de lo que está haciendo el comando; por ejemplo, se capturan la RUTA de Cygwin y otras variables de entorno que se pasan al comando. Normalmente busco para open( ver qué archivos intenta utilizar el comando (buscar). Las llamadas exitosas a la función abierta se mostrarán como:

open: open(/home/anthony/t, 0x30C000)
open: open(., 0x400000)

Las llamadas fallidas para abrir devuelven un valor de -1. Tenga en cuenta que no todos los archivos que encuentran intentos de apertura son realmente necesarios para que el comando funcione correctamente. Este es un ejemplo de uno de esos intentos fallidos (la información contenida locale.alias se leería si existiera, pero no es necesaria para que find haga su trabajo):

open: -1 = open(/usr/local/share/locale/locale.alias, 0x8000), errno 2

Nota: Creo (y luego elimino) el testdirdirectorio vacío para que no se capture una cantidad abrumadora de información en el archivo de salida de strace.

información relacionada