commande unix find sur cmder.exe dans windows


10

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

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

'find .'

dans le terminal, il essaie d'utiliser le FIND de Windows et de générer cette erreur:

FIND: Parameter format not correct

J'aimerais vraiment utiliser find, une astuce sur la façon de le faire fonctionner?


1
Vous auriez besoin de faire apparaître le répertoire finddans C:\Windows\System32lequel il se trouve avant (où Windows trouve des vies) dans la PATHvariable d'environnement. Cela n'est généralement pas considéré comme une bonne idée à faire à l'échelle mondiale car cela a tendance à confondre d'autres programmes qui attendent un environnement Windows standard. Au contraire, vous devriez voir si vous pouvez définir un script de démarrage dans Cmder et faire en sorte que le script fasse quelque chose commeset PATH=C:\path\to\folder\with\unix\find;%PATH%
Bob

Je ne sais pas cmder, mais sous Linux / Unix which -a findaffichera tous les programmes qui pourraient s'exécuter avec la commande find. Identifiez l'Unix find. Utilisez ensuite son chemin complet, ou réorganisez l'ordre des PATHrépertoires, ou définissez un alias, si cmdercela prend en charge ceci; vous pouvez également renommer Windows find.exepour wfind.exe. S'il émule bash, alors vous pouvez utiliser le intégré type -a find.
AFH



@AFH which -a findrevient /c/WINDOWS/system32/find /usr/bin/find. Malheureusement, cependant, les /usr/bin/findrendements courants The system cannot find the path specified.. Il semble que le chemin réel de style Windows soit nécessaire ici. L'exécution typelance les fenêtres type, et il semble cmderne pas fournir la version de type Unix.
simlev

Réponses:


11

La solution la plus simple consiste à créer un alias pour l' findexécutable dans le cmderdossier d'installation:

λ 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 également d'essayer Cygwin où, entre autres choses, findfonctionne hors de la boîte. C'est ce que j'ai utilisé pour déterminer l'emplacement du cmder-fourni find.exe.

Kudos à @Bob et @AFH pour leurs commentaires perspicaces et à @ Lưu Phúc Vĩnh pour proposer une autre solution morte simple:

renommer le * nix finden un autre nom commefnd.exe

Cela pourrait en fait être préférable à la création d'un alias, car les cmderalias ne fonctionnent pas dans Windows 10, sauf s'ils Use legacy consolesont sélectionnés dans les cmdpropriétés (voir comment le faire).


Merci pour la suggestion. Semble la meilleure façon de procéder. J'utilise normalement cygwin sur Windows, mais pour des raisons de travail, je suis obligé de tourner en ce moment. Je vais essayer cela dès que possible!
Heisenbug

@Heisenbug cmdera l'avantage évident d'être portable et de ne pas nécessiter d'installation par un utilisateur privilégié.
simlev

vous pouvez également simplement renommer le * nix finden un autre nom commefnd.exe
phuclv

J'ai renommé la version unix, pour éviter de modifier les choses natives de Windows. Mais merci, ce qui me manquait vraiment, c'était le dossier où ces commandes étaient stockées et votre réponse m'a aidé.
Heisenbug

Gnu find n'est-il pas normalement appelé gfind sur les systèmes non-gnu?

4

Cmder\vendor\git-for-windows\usr\binest ajouté au CHEMIN par Cmder\vendor\init.bat. Malheureusement, il est ajouté à la fin du CHEMIN, donc find.exe de Windows est trouvé en premier.

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

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


0

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 entrez bash. dans le shell bash, vous pouvez utiliser la commande find. dans Cmder, vous pouvez également taper bash pour l'utiliser

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.