Jeg bruger cygwin i min Windows-maskine. Jeg prøver at finde, og det giver parameterformat ikke korrekt. Hvorfor er det?
$ ls bootstrap.jar catalina-tasks.xml catalina.bat catalina.sh commons-daemon-native.tar.gz commons-daemon.jar cpappend.bat digest.bat digest.sh setclasspath.bat setclasspath.sh shutdown.bat shutdown.sh startup.bat startup.sh tomcat-juli.jar tomcat-native.tar.gz tool-wrapper.bat tool-wrapper.sh version.bat version.sh $ find . -name "version.sh" FIND: Parameter format not correct
- Skal jeg installere noget, mens jeg installerer cygwin, eller laver jeg noget forkert?
Svar
Dit PATH
er dårligt. Det har Windows-systemmapper før Cygwin-mapper, eller måske har det slet ikke Cygwin-mapper. Denne meddelelse kommer fra Windows-kommandoen find
(at den rapporterer sit navn som FIND
med store bogstaver er et tip).
Når du starter en Cygwin-skal, skal du normalt indstille PATH
. at du starter en login-shell (hvis jeg husker korrekt, er det, hvad standardindstillingerne i Cygwin-systemmenuen gør). Din Cygwin PATH
skal have /usr/local/bin
, /usr/bin
og /bin
(i det mindste) foran ethvert bibliotek, der ikke er Cygwin.
Kommentarer
Svar
Er find installeret? Hvad returnerer “hvilket fund”? Husk, at Windows har en indbygget kommandolinje, find ud af, at Cygwin ender med at bruge, hvis dets eget fund er mia.
Svar
Svaret fra Gilles er korrekt, da Windows-versionen af find
kommandoen kommer før cygwin-versionen, og så kaldes det.
Sætter Cygwin foran vil dog betyde, at alle batchfiler, der bruger windows find
kommandoen nu faktisk kalder cygwin find
kommandoen, hvilket muligvis ikke er det, du ønsker.
Den mest symbiotiske måde for begge at arbejde på er efter min mening at gøre nedenstående:
- Find cygwin
find
kommando, og omdøb / kopier den tillfind.exe
(eller ethvert andet navn, der ikke er “t på Windows PATH) - I din
~/.bashrc
fil tilføj linjenalias find=lfind
Denne måde, når du kører find
fra cygwin-terminalen bruger du t han cygwin-version, men batchfiler bruger Windows-versionen.
Bemærk: Du har stadig brug for cygwin-bin-biblioteket på din PATH, men det kan nu være længere tilbage fra Windows-systemmappen.
Svar
Når du installerer Cygwin, installerer det ikke alle mulige pakker, medmindre du beder det om det. For at tilføje en ønsket pakke, se forklaringen her på Superbruger.
Eller bare udfør følgende handlinger:
- Start opsætningen, vælg et spejl og kom til pakkeskærmen
- Vælg “Behold” fra listen over radioknapper øverst
- Vælg ønsket pakke under den relevante gruppe
- Vælg “Fortsæt”
Svar
Her er GNU-værktøjerne som native win32-porte . De har ikke brug for cygwin for at blive kørt og kommer med en skal (sh.exe), inklusive grep, sed, awk, find, less, cat, tac og meget mere.
Problemet med Windows-stien fortsætter, men måske omdøber du søgningen til gfind
(gnu-find) eller til search
for at gøre det lettere tilgængelig, og tilføj coreutils dir til din PATH.
/usr/bin/find
i stedet forfind
/usr/bin
i stien, antager jeg, at skallen bruger den førstefind
, der findes i $ PATH, som er systemets. Jeg var ved at fjerne det (fordi jeg ikke havde ' ikke brug for det alligevel) , men jeg antager, at nogle tilfældige systemskripter måske forventer netop dettefind
. Så det er at rette dette på den rigtige måde at skrive et aliasalias find="/usr/bin/find"
til~/.bashrc
(eller hvilken skal du end ' genbruger) .