comando unix find su cmder.exe in windows


10

Ho installato l' emulatore shell cmder per Windows.

Funziona bene ma non riesco a usare il comando find di Unix. Apparentemente quando scrivo:

'find .'

nel terminale tenta di utilizzare FIND di Windows e genera questo errore:

FIND: Parameter format not correct

Mi piacerebbe davvero usare find, qualche suggerimento su come farlo funzionare?


1
Dovresti fare in modo che qualunque directory findsia visualizzata prima C:\Windows\System32(dove Windows trova la vita) nella PATHvariabile d'ambiente. Questa non è generalmente una buona idea da fare a livello globale in quanto tende a confondere altri programmi che prevedono un ambiente Windows standard. Piuttosto, dovresti vedere se riesci a impostare uno script di avvio in Cmder e fare in modo che lo script faccia qualcosa del genereset PATH=C:\path\to\folder\with\unix\find;%PATH%
Bob

Non lo so cmder, ma in Linux / Unix which -a findmostrerà tutti i programmi che potrebbero essere eseguiti con il comando find. Identifica Unix find. Quindi utilizzare il suo percorso completo o riorganizzare l'ordine delle PATHdirectory o impostare un alias, se cmdersupporta questo; puoi anche rinominare Windows find.exein wfind.exe. Se emula bash, puoi usare l'in-built type -a find.
AFH,



@AFH which -a findritorna /c/WINDOWS/system32/find /usr/bin/find. Sfortunatamente, comunque, i /usr/bin/findrendimenti in corso The system cannot find the path specified.. Sembra che qui sia necessario il vero percorso in stile Windows. L'esecuzione typeavvia Windows typee sembra cmderche non fornisca la versione unix-like.
simlev,

Risposte:


11

La soluzione più semplice è creare un alias findnell'eseguibile nella cmdercartella di installazione:

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

Vorrei suggerirti di provare anche Cygwin dove, tra le altre cose, findfunziona fuori dagli schemi. Questo è ciò che ho usato per accertare l'ubicazione del prodotto cmderfornito find.exe.

Complimenti a @Bob e @AFH per i loro commenti perspicaci, e a @ Lưu Vĩnh Phúc per aver suggerito un'altra soluzione estremamente semplice:

rinominare * nix findcon un altro nome comefnd.exe

Questo potrebbe effettivamente essere preferibile rispetto alla creazione di un alias, perché gli cmderalias non funzionano in Windows 10 a meno che non Use legacy consolesia selezionato nelle cmdproprietà (vedere come farlo).


Grazie per il suggerimento Sembra il modo migliore per andare. Normalmente uso Cygwin su Windows, ma per motivi di lavoro sono costretto a curiosare adesso. Proverò questo al più presto!
Heisenbug,

@Heisenbug cmderha l'ovvio vantaggio di essere portatile e non richiedere l'installazione da parte di un utente privilegiato.
simlev,

puoi anche semplicemente rinominare * nix findcon un altro nome comefnd.exe
phuclv,

Ho rinominato la versione unix, per evitare di modificare roba nativa di Windows. Ma grazie, quello che mi mancava davvero era la cartella in cui erano archiviati quei comandi e la tua risposta mi ha aiutato.
Heisenbug,

Gnu non trova normalmente chiamato gfind su sistemi non gnu?

4

Cmder\vendor\git-for-windows\usr\binviene aggiunto al PERCORSO da Cmder\vendor\init.bat. Sfortunatamente, viene aggiunto alla fine del PERCORSO, quindi find.exe di Windows viene trovato per primo.

Fortunatamente, è facile da risolvere. Aggiungi questa riga all'interno Cmder\config\user-profile.cmd:

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


0

Ho installato smartgit in Windows

Quindi aggiungo C: \ Programmi (x86) \ SmartGit \ git \ bin (la mia cartella smartgit) nell'ambiente del percorso

premi win + r inserisci bash. nella shell bash puoi usare il comando find. in Cmder puoi anche digitare bash per usarlo

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.