comando encontrar unix en cmder.exe en windows


10

Instalé cmder shell emulator para Windows.

Funciona bien pero no puedo usar el comando find de Unix. Aparentemente cuando escribo:

'find .'

en el terminal intenta usar el FIND de Windows y genera este error:

FIND: Parameter format not correct

Realmente me gustaría usar find, ¿alguna pista sobre cómo hacer que funcione?


1
Tendría que hacer que findaparezca cualquier directorio C:\Windows\System32( antes de que Windows encuentre vidas) en la PATHvariable de entorno. En general, esto no se considera una gran idea para hacer a nivel mundial, ya que tiende a confundir a otros programas que esperan un entorno estándar de Windows. Por el contrario, debería ver si puede configurar un script de inicio en Cmder y hacer que el script haga algo comoset PATH=C:\path\to\folder\with\unix\find;%PATH%
Bob

No lo sé cmder, pero en Linux / Unix which -a findmostrará todos los programas que podrían ejecutarse con el comando find. Identifica el Unix find. Luego use su ruta completa, o reorganice el orden de los PATHdirectorios, o establezca un alias, si es cmdercompatible con esto; También puede cambiar el nombre de Windows find.exea wfind.exe. Si emula bash, puede usar el incorporado type -a find.
AFH



@AFH which -a findregresa /c/WINDOWS/system32/find /usr/bin/find. Desafortunadamente, sin embargo, la /usr/bin/findproducción de rendimientos The system cannot find the path specified.. Parece que aquí se necesita la ruta de estilo de Windows real. La ejecución typeinicia las ventanas type, y parece cmderque no proporciona la versión similar a Unix.
simlev

Respuestas:


11

La solución más simple es crear un alias para el findejecutable dentro de la cmdercarpeta de instalación:

λ which find
/c/WINDOWS/system32/find
λ find --help
FIND: FIND: Parameter format not correct
λ alias find=C:\Files\Programs\cmder\vendor\git-for-windows\usr\bin\find.exe $*
λ find --help
Usage: /usr/bin/find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

¿Puedo sugerirle que también pruebe Cygwin donde, entre otras cosas, findfunciona de forma inmediata? Eso es lo que solía determinar la ubicación de los cmdersuministrados find.exe.

Felicitaciones a @Bob y @AFH por sus perspicaces comentarios, y a @ Lưu Vĩnh Phúc por sugerir otra solución simple:

cambiar el nombre de * nix finda otro nombre comofnd.exe

Esto podría ser preferible en lugar de crear un alias, porque los cmderalias no funcionan en Windows 10 a menos que Use legacy consoleesté seleccionado en las cmdpropiedades (vea cómo hacerlo).


Gracias por la sugerencia. Parece el mejor camino a seguir. Normalmente uso cygwin cuando estoy en Windows, pero por razones de trabajo me veo obligado a hacerlo ahora. ¡Intentaré esto lo antes posible!
Heisenbug

@Heisenbug cmdertiene la ventaja obvia de ser portátil y no necesitar la instalación de un usuario privilegiado.
simlev

También puede simplemente cambiar el nombre de * nix finda otro nombre comofnd.exe
phuclv

Cambié el nombre de la versión de Unix, para evitar modificar cosas nativas de Windows. Pero gracias, lo que realmente me faltaba era la carpeta donde se almacenaban esos comandos y su respuesta me ayudó.
Heisenbug

¿No se encuentra gnu normalmente llamado gfind en sistemas que no son gnu?

4

Cmder\vendor\git-for-windows\usr\binse agrega a la RUTA por Cmder\vendor\init.bat. Desafortunadamente, se agrega al final de la RUTA, por lo que find.exe de Windows se encuentra primero.

Afortunadamente, es fácil de arreglar. Solo agregue esta línea adentro Cmder\config\user-profile.cmd:

set "PATH=%GIT_INSTALL_ROOT%\usr\bin;%PATH%"


0

He instalado smartgit en windows

Luego agrego C: \ Archivos de programa (x86) \ SmartGit \ git \ bin (mi carpeta smartgit) en el entorno de ruta

presione win + r enter bash. en el shell bash puedes usar el comando find. en Cmder también puedes escribir bash para usarlo

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.