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
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:
- Zoek de cygwin
find
commando en hernoem / kopieer het naarlfind.exe
(of een andere naam die niet “in het Windows PATH staat) - In je
~/.bashrc
bestand voeg de regel toealias 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:
- Start Setup, selecteer een mirror, en ga naar het pakketscherm
- Selecteer “Keep” in de lijst met keuzerondjes bovenaan
- Selecteer de gewenste pakket onder de relevante groep
- 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.
/usr/bin/find
in plaats vanfind
/usr/bin
in het pad, ik denk dat de shell de eerstefind
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 ditfind
. Dus om dit op de juiste manier op te lossen, is door een aliasalias find="/usr/bin/find"
te schrijven in~/.bashrc
(of welke shell je ook ' hergebruikt) .