web-dev-qa-db-fra.com

commande unix find sur cmder.exe dans Windows

J'ai installé cmder émulateur de shell pour Windows.

Fonctionne bien mais je ne peux pas utiliser la commande de recherche d'Unix. Apparemment quand je tape:

'find .'

dans le terminal, il essaie d'utiliser la fonction FIND de Windows et génère cette erreur:

FIND: Parameter format not correct

J'aimerais vraiment utiliser find, un indice sur la manière de le faire fonctionner?

8
Heisenbug

La solution la plus simple consiste à créer un alias pour l'exécutable find dans le dossier d'installation cmder:

λ 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]

Puis-je vous suggérer d'essayer aussi Cygwin où, entre autres choses, find fonctionne immédiatement. C’est ce que j’ai utilisé pour déterminer l’emplacement du cmder- fourni find.exe.

Félicitations à @ Bob et @ AFH pour leurs commentaires perspicaces, et à @ Lưu Vĩnh Phúc pour avoir suggéré une autre solution simpliste:

renommer * nix find en un autre nom, par exemple fnd.exe

Cela peut en fait être préférable à la création d'un alias, car les alias cmder ne fonctionnent pas dans Windows 10, à moins que Use legacy console soit sélectionné dans les propriétés cmd (voir comment le faire).

9
simlev

Cmder\vendor\git-for-windows\usr\bin est ajouté à PATH par Cmder\vendor\init.bat. Malheureusement, il est ajouté à la fin de PATH. Le fichier find.exe de Windows est donc trouvé en premier.

Heureusement, c'est facile à réparer. Ajoutez simplement cette ligne dans Cmder\config\user-profile.cmd:

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

3
Jerem

J'ai installé smartgit dans Windows

Ensuite, j'ajoute C:\Program Files (x86)\SmartGit\git\bin (mon dossier smartgit) dans l'environnement de chemin

appuyez sur win + r enter bash. dans le shell bash, vous pouvez utiliser la commande find. dans Cmder, vous pouvez aussi taper bash pour l'utiliser

0
lovebanyi