Jeg bruker cygwin i Windows-maskinen min. Jeg prøver å finne og det gir parameterformat ikke riktig. 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 noe mens jeg installerer cygwin, eller gjør jeg noe galt?
Svar
PATH
er dårlig. Den har Windows-systemkataloger før Cygwin-kataloger, eller har kanskje ikke Cygwin-kataloger i det hele tatt. Denne meldingen kommer fra Windows-kommandoen find
(at den rapporterer navnet som FIND
med store bokstaver er et hint).
Når du starter et Cygwin-skall, må du vanligvis angi PATH
. at du starter et påloggingsskall (hvis jeg husker riktig, er det hva Cygwin-systemmenyoppføringene gjør). Cygwin PATH
skal ha /usr/local/bin
, /usr/bin
og /bin
(i det minste) foran alle ikke-Cygwin-kataloger.
Kommentarer
Svar
Er finne installert? Hva returnerer «hvilke finner»? Husk at Windows har en innebygd kommandolinje, og finn at Cygwin vil ende opp med å bruke hvis det er et eget funn.
Svar
Svaret fra Gilles er riktig ved at Windows-versjonen av find
kommandoen kommer før cygwin-versjonen, og så blir det kalt.
Sette Cygwin foran vil imidlertid bety at alle batchfiler som bruker windows find
-kommandoen nå faktisk vil kalle cygwin find
-kommandoen, som kanskje ikke er det du ønsker.
Den mest symbiotiske måten for begge å jobbe på, er etter min mening å gjøre følgende:
- Finn cygwin
find
kommando og gi nytt navn / kopier den tillfind.exe
(eller et hvilket som helst annet navn som ikke er «t på Windows PATH) - I
~/.bashrc
fil legg til linjenalias find=lfind
På denne måten når du kjører find
fra cygwin-terminalen vil du bruke t han cygwin-versjon, men batch-filer vil bruke Windows-versjonen.
Merk: Du trenger fremdeles cygwin-papirkatalogen på PATH, men den kan nå være lenger tilbake fra Windows-systemkatalogen.
Svar
Når du installerer Cygwin, installerer den ikke alle mulige pakker med mindre du ber om det. For å legge til en ønsket pakke, ta en titt på forklaringen her på Superbruker.
Eller bare utfør følgende handlinger:
- Start oppsett, velg et speil og kom til pakkeskjermen
- Velg «Behold» fra listen over alternativknapper øverst
- Velg ønsket pakke under den aktuelle gruppen
- Velg «Fortsett»
Svar
Her er GNU-verktøyene som native win32-porter . De trenger ikke cygwin for å kjøres, og kommer med et skall (sh.exe), inkludert grep, sed, awk, find, less, cat, tac og mye mer.
Problemet med Windows-banen vil fortsette, men kanskje du gir navnet nytt navn til gfind
(gnu-find) eller til search
, for å gjøre det lettere tilgjengelig, og legg til coreutils dir i PATH.
/usr/bin/find
i stedet forfind
/usr/bin
i banen, antar jeg at skallet bruker den førstefind
som finnes i $ PATH, som er systemet. Jeg var i ferd med å fjerne den (fordi jeg ikke ' ikke trengte det uansett) , men jeg antar at noen tilfeldige systemskripter kan forvente akkurat dettefind
. Så, å fikse dette på riktig måte er å skrive et aliasalias find="/usr/bin/find"
i~/.bashrc
(eller hvilket skall du ' gjenbruker) .