Jag använder cygwin i min Windows-maskin. Jag försöker göra en sökning och det ger parameterformatet inte korrekt. Varför är 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
- Ska jag installera något när jag installerar cygwin eller gör jag något fel?
Svar
Ditt PATH
är dåligt. Det har Windows-systemkataloger före Cygwin-kataloger, eller kanske inte har Cygwin-kataloger alls. Detta meddelande kommer från Windows-kommandot find
(att det rapporterar sitt namn som FIND
i versaler är en ledtråd).
När du startar ett Cygwin-skal måste du vanligtvis ställa in PATH
. att du startar ett inloggningsskal (om jag minns rätt är det vad Cygwins systemmenyposter gör). Din Cygwin PATH
ska ha /usr/local/bin
, /usr/bin
och /bin
(åtminstone) före alla icke-Cygwin-kataloger.
Kommentarer
Svar
Är sök installerat? Vad returnerar ”vilken hitta”? Kom ihåg att Windows har en inbyggd kommandorad som Cygwin skulle sluta använda om dess egna sökning är mia.
Svar
Svaret från Gilles är korrekt genom att Windows-versionen av find
kommandot kommer före cygwin-versionen, och så kallas det.
Att sätta Cygwin framåt betyder dock att alla batchfiler som använder windows find
kommandot nu faktiskt kommer att ringa cygwin find
kommandot, vilket kanske inte är vad du vill ha.
Det mest symbiotiska sättet för båda att arbeta, enligt min mening, är att göra nedan:
- Hitta cygwin
find
kommando och byt namn på / kopiera tilllfind.exe
(eller något annat namn som inte finns på Windows PATH) - I din
~/.bashrc
fil lägg till radenalias find=lfind
Detta sätt när du kör find
från cygwin-terminalen kommer du att använda t han cygwin-version, men batchfiler kommer att använda Windows-versionen.
Obs! Du behöver fortfarande cygwin-bin-katalogen på din PATH, men den kan nu vara längre tillbaka från Windows-systemkatalogen.
Svar
När du installerar Cygwin installerar det inte alla möjliga paket om du inte ber det. För att lägga till ett önskat paket, ta en titt på förklaringen här på Superanvändare.
Eller utför bara följande åtgärder:
- Starta installationen, välj en spegel och gå till paketskärmen
- Välj ”Behåll” från listan över alternativknappar längst upp
- Välj önskat paket under den relevanta gruppen
- Välj ”Fortsätt”
Svar
Här är GNU-verktygen som inbyggda win32-portar . De behöver inte cygwin för att köras och kommer med ett skal (sh.exe), inklusive grep, sed, awk, find, less, cat, tac och mycket mer.
Problemet med Windows-sökvägen kommer att kvarstå, men kanske du byter namn på sökningen till gfind
(gnu-find) eller till search
, för att göra det enklare tillgänglig och lägg till coreutils dir i din PATH.
/usr/bin/find
istället förfind
/usr/bin
i sökvägen, jag antar att skalet använder den förstafind
som finns i $ PATH, som är systemets. Jag tänkte ta bort den (eftersom jag inte behövde ' ändå) , men jag antar att vissa slumpmässiga systemskript kan förvänta sig just dettafind
. Så att fixa detta på rätt sätt är att skriva ett aliasalias find="/usr/bin/find"
till~/.bashrc
(eller vilket skal du ' använder igen) .