Estoy usando cygwin en mi máquina con Windows. Estoy tratando de hacer una búsqueda y el formato de parámetro no es correcto. ¿Por qué?

$ ls bootstrap.jar catalina-tasks.xml catalina.bat catalina.sh commons-daemon-native.tar.gz commons-daemon.jar cpappend.bat digest.bat digest.sh setclasspath.bat setclasspath.sh shutdown.bat shutdown.sh startup.bat startup.sh tomcat-juli.jar tomcat-native.tar.gz tool-wrapper.bat tool-wrapper.sh version.bat version.sh $ find . -name "version.sh" FIND: Parameter format not correct 
  • ¿Debo instalar algo mientras instalo cygwin o estoy haciendo algo mal?

Respuesta

Tu PATH es malo. Tiene directorios del sistema de Windows antes que los directorios Cygwin, o tal vez no tiene directorios Cygwin en absoluto. Este mensaje proviene del comando de Windows find (que informa su nombre como FIND en mayúsculas es una pista).

Cuando inicia un shell Cygwin, normalmente necesita configurar el PATH. Recomiendo que inicie un shell de inicio de sesión (si no recuerdo mal, eso es lo que hacen las entradas predeterminadas del menú del sistema Cygwin). Tu Cygwin PATH debe tener /usr/local/bin, /usr/bin y /bin (al menos) por delante de cualquier directorio que no sea Cygwin.

Comentarios

  • Sí, eso ' probablemente lo sea. Este error se debe a que el hallazgo que usó es el comando find de Windows ', no el de cygwin '.
  • O escriba /usr/bin/find en lugar de find
  • Yo ' he tenido /usr/bin en la ruta, supongo que el shell usa la primera find que se encuentra en $ PATH, que es la del sistema. Estaba a punto de eliminarlo (porque no ' no lo necesitaba de todos modos) , pero supongo que algunos scripts de sistema aleatorios podrían esperar solo esto find. Entonces, arreglar esto de la manera correcta es escribir un alias alias find="/usr/bin/find" en ~/.bashrc (o cualquier shell que ' usando) .

Respuesta

¿Está Find instalado? ¿Qué devuelve «which find»? Recuerde que Windows tiene una línea de comando integrada find que Cygwin terminaría usando si su propia búsqueda es mia.

Answer

La respuesta de Gilles es correcta en que la versión de Windows del comando find viene antes que la versión cygwin, por lo que se está llamando.

Poniendo a Cygwin por delante sin embargo, significará que cualquier archivo por lotes que use el comando find de Windows ahora llamará al comando cygwin find, que puede no ser lo que usted que desee.

La forma más simbiótica para que ambos funcionen, en mi opinión, es hacer lo siguiente:

  1. Localice el find y cambie el nombre / cópielo a lfind.exe (o cualquier otro nombre que no esté en la RUTA de Windows)
  2. En su ~/.bashrc archivo agregue la línea alias find=lfind

De esta manera, cuando ejecute find desde la terminal cygwin usarás t La versión cygwin, pero los archivos por lotes usarán la versión de Windows.

Nota: Aún necesitará el directorio cygwin bin en su PATH, pero ahora puede estar más atrás del directorio de sistema de Windows.

Respuesta

Cuando estás instalando Cygwin, no instala todos los paquetes posibles a menos que tú lo pidas. Para agregar un paquete deseado, eche un vistazo a la explicación aquí en Superusuario.

O simplemente realice las siguientes acciones:

  1. Inicie la configuración, seleccione un espejo y acceda a la pantalla de paquetes
  2. Seleccione «Mantener» en la lista de botones de opción en la parte superior
  3. Seleccione el paquete deseado en el grupo correspondiente
  4. Seleccione «Continuar»

Responder

Aquí están los GNU-utils como puertos win32 nativos . No necesitan que cygwin se ejecute y vienen con un shell (sh.exe), que incluye grep, sed, awk, find, less, cat, tac y mucho más.

El problema con la ruta de Windows persistirá, pero tal vez cambie el nombre de la búsqueda a gfind (gnu-find) o a search, para que sea más fácil accesible y agregue el directorio coreutils a su RUTA.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *