Ik gebruik cygwin op mijn Windows-machine. Ik probeer een vondst te doen en het geeft het parameterformaat niet correct. Waarom is dat?

$ 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 
  • Moet ik iets installeren tijdens het installeren van cygwin of doe ik iets verkeerd?

Antwoord

Uw PATH is slecht. Het heeft Windows-systeemmappen vóór Cygwin-mappen, of misschien helemaal geen Cygwin-mappen. Dit bericht komt van het Windows-commando find (dat het zijn naam rapporteert als FIND in hoofdletters is een hint).

Als je een Cygwin-shell start, moet je meestal de PATH instellen. Ik raad aan dat je een login-shell start (als ik het me goed herinner, is dat wat de standaard Cygwin-systeemmenu-items doen). Uw Cygwin PATH moet /usr/local/bin, /usr/bin en /bin (tenminste) voor op een niet-Cygwin-directory.

Opmerkingen

  • Ja, dat ' s waarschijnlijk. Deze fout komt doordat de zoekopdracht die je hebt gebruikt de opdracht find van Windows ' is, niet de opdracht van cygwin '.
  • Of typ /usr/bin/find in plaats van find
  • Ik ' heb gehad /usr/bin in het pad, ik denk dat de shell de eerste find gebruikt die wordt gevonden in $ PATH, wat de systeemversie is. Ik stond op het punt het te verwijderen (omdat ik ' het toch niet nodig had) , maar ik denk dat sommige willekeurige systeemscripts precies dit find. Dus om dit op de juiste manier op te lossen, is door een alias alias find="/usr/bin/find" te schrijven in ~/.bashrc (of welke shell je ook ' hergebruikt) .

Antwoord

Is find geïnstalleerd? Wat keert “die vondst” terug? Onthoud dat Windows een ingebouwde opdrachtregelzoekopdracht heeft die Cygwin uiteindelijk zou gebruiken als zijn eigen zoekopdracht mia is.

Antwoord

Het antwoord van Gilles is juist in die zin dat de Windows-versie van het find -commando voor de cygwin-versie komt, en dat wordt dus aangeroepen.

Cygwin voorop zetten zal echter betekenen dat alle batchbestanden die het windows find commando gebruiken, nu daadwerkelijk het cygwin find commando aanroepen, wat misschien niet is wat je willen.

De meest symbiotische manier om beide te laten werken, is naar mijn mening het onderstaande te doen:

  1. Zoek de cygwin find commando en hernoem / kopieer het naar lfind.exe (of een andere naam die niet “in het Windows PATH staat)
  2. In je ~/.bashrc bestand voeg de regel toe alias find=lfind

Op deze manier, wanneer je find vanaf de cygwin-terminal gebruikt u t de cygwin-versie, maar batchbestanden zullen de Windows-versie gebruiken.

Opmerking: je hebt nog steeds de cygwin bin-directory op je PATH nodig, maar deze kan nu verder van de Windows-systeemdirectory verwijderd zijn.

Answer

Als je “Cygwin aan het installeren bent,” installeert het niet alle mogelijke pakketten, tenzij je erom vraagt. Om een gewenst pakket toe te voegen, bekijk de uitleg hier op Super User.

Of voer gewoon de volgende acties uit:

  1. Start Setup, selecteer een mirror, en ga naar het pakketscherm
  2. Selecteer “Keep” in de lijst met keuzerondjes bovenaan
  3. Selecteer de gewenste pakket onder de relevante groep
  4. Selecteer “Doorgaan”

Antwoord

Hier zijn de GNU-utils als native win32-poorten . Ze hebben geen cygwin nodig om te worden uitgevoerd, en worden geleverd met een shell (sh.exe), inclusief grep, sed, awk, find, less, cat, tac en nog veel meer.

Het probleem met het Windows-pad blijft bestaan, maar misschien hernoem je de zoekopdracht naar gfind (gnu-find) of naar search, om het gemakkelijker te maken toegankelijk, en voeg de coreutils-map toe aan je PAD.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *