comando unix find no cmder.exe no windows


10

Eu instalei o cmder shell emulator para Windows.

Funciona bem, mas não posso usar o comando find do Unix. Aparentemente, quando digito:

'find .'

no terminal, ele tenta usar o FIND do Windows e gera este erro:

FIND: Parameter format not correct

Eu realmente gostaria de usar o find, alguma dica de como fazê-lo funcionar?


11
Você precisaria fazer com que qualquer diretório que findaparecesse antes C:\Windows\System32(onde o Windows encontra vidas) na PATHvariável de ambiente. Geralmente, isso não é uma boa idéia para ser realizada globalmente, pois tende a confundir outros programas que esperam um ambiente Windows padrão. Em vez disso, você deve ver se você pode definir um script de inicialização em Cmder, e fazer o script fazer algo assimset PATH=C:\path\to\folder\with\unix\find;%PATH%
Bob

Não sei cmder, mas no Linux / Unix which -a findmostramos todos os programas que podem ser executados com o comando find. Identifique o Unix find. Em seguida, use seu caminho completo ou reorganize a ordem dos PATHdiretórios ou defina um alias, se cmderisso for compatível; você também pode renomear o Windows find.exepara wfind.exe. Se emular bash, você pode usar o embutido type -a find.
AFH 14/06



@AFH which -a findretorna /c/WINDOWS/system32/find /usr/bin/find. Infelizmente, porém, os /usr/bin/findrendimentos em execução The system cannot find the path specified.. Parece que o caminho real no estilo do Windows é necessário aqui. A execução typeinicia as janelas typee ela parece cmdernão fornecer a versão semelhante ao unix.
simlev

Respostas:


11

A solução mais simples é criar um alias para o findexecutável na cmderpasta de instalação:

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

Posso sugerir que você também experimente o Cygwin , onde, entre outras coisas, findfunciona imediatamente. Foi isso que eu usei para verificar a localização dos cmdersuprimentos find.exe.

Parabéns ao @Bob e ao @AFH por seus comentários perspicazes, e ao Lưu Vĩnh Phúc por sugerir outra solução simples:

renomeie o * nix findpara outro nome comofnd.exe

Na verdade, isso pode ser preferível à criação de um alias, porque os cmderaliases não funcionam no Windows 10, a menos que Use legacy consoleseja selecionado nas cmdpropriedades (veja como fazê-lo).


Obrigado pela sugestão. Parece o melhor caminho a percorrer. Normalmente, uso o cygwin nas janelas, mas, por razões de trabalho, sou forçado a usar o comando agora. Vou tentar isso o mais rápido possível!
Heisenbug

O @Heisenbug cmdertem a vantagem óbvia de ser portátil e não precisar da instalação para ser executada por um usuário privilegiado.
simlev

você também pode simplesmente mudar o nome do * nix findpara outro nome comofnd.exe
phuclv

Renomeei a versão unix, para evitar modificar coisas nativas do Windows. Mas obrigado, o que realmente estava faltando era a pasta em que esses comandos estavam armazenados e sua resposta me ajudou.
Heisenbug

O gnu não é encontrado normalmente chamado gfind em sistemas não-gnu?

4

Cmder\vendor\git-for-windows\usr\biné adicionado ao PATH por Cmder\vendor\init.bat. Infelizmente, ele foi adicionado no final do PATH, para que o find.exe do Windows seja encontrado primeiro.

Felizmente, é fácil de corrigir. Basta adicionar esta linha dentro Cmder\config\user-profile.cmd:

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


0

Eu instalei o smartgit no Windows

Em seguida, adiciono C: \ Arquivos de programas (x86) \ SmartGit \ git \ bin (minha pasta smartgit) no ambiente do caminho

pressione win + r e digite bash. no shell bash, você pode usar o comando find. no Cmder você também pode digitar bash para usá-lo

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.