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

  • Yup, att ' är det nog. Det här felet beror på att sökningen du använde är Windows ' s find-kommando, inte cygwin ' s en.
  • Eller skriv /usr/bin/find istället för find
  • Jag ' har haft /usr/bin i sökvägen, jag antar att skalet använder den första find 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 detta find. Så att fixa detta på rätt sätt är att skriva ett alias alias find="/usr/bin/find" till ~/.bashrc (eller vilket skal du ' använder igen) .

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:

  1. Hitta cygwin find kommando och byt namn på / kopiera till lfind.exe (eller något annat namn som inte finns på Windows PATH)
  2. I din ~/.bashrc fil lägg till raden alias 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:

  1. Starta installationen, välj en spegel och gå till paketskärmen
  2. Välj ”Behåll” från listan över alternativknappar längst upp
  3. Välj önskat paket under den relevanta gruppen
  4. 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.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *