find Befehl in Cygwin mit falschem Parameterformat

14

Ich benutze Cygwin in meinem Windows-Rechner. Ich versuche eine Suche durchzuführen und es wird ein nicht korrektes Parameterformat angegeben. Warum das?

$ 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
  • Sollte ich während der Installation von cygwin etwas installieren oder mache ich etwas falsch?

quelle

Antworten:

19

Du PATHbist schlecht. Es enthält Windows-Systemverzeichnisse vor Cygwin-Verzeichnissen oder möglicherweise überhaupt keine Cygwin-Verzeichnisse. Diese Meldung stammt aus dem Windows-Befehl find(der Name FINDwird als Hinweis in Großbuchstaben angegeben).

Wenn Sie eine Cygwin-Shell starten, müssen Sie normalerweise die PATH. Ich empfehle, dass Sie eine Anmeldeshell starten (wenn ich mich richtig erinnere, tun dies die Standardeinträge des Cygwin-Systemmenüs). Ihre Cygwin PATHsollte /usr/local/bin, /usr/binund /bin(mindestens) vor allen nicht-Cygwin - Verzeichnis.

Gilles 'SO - hör auf böse zu sein'
quelle
1
Ja, das ist es wahrscheinlich. Dieser Fehler ist darauf zurückzuführen, dass der von Ihnen verwendete Suchbefehl der Windows-Befehl find und nicht der von cygwin ist.
Yanick Girouard
Oder geben Sie /usr/bin/findanstelle vonfind
Ich hatte /usr/binim Pfad, ich denke, die Shell verwendet die erste findin der $ PATH gefunden, die das System ist. Ich wollte es gerade entfernen (weil ich es sowieso nicht brauchte) , aber ich denke, dass einige zufällige Systemskripte genau dies erwarten könnten find. Um dies zu korrigieren, muss ein Alias alias find="/usr/bin/find"in die von ~/.bashrc Ihnen verwendete Shell geschrieben werden .
Hi-Angel
1

Ist find installiert? Was bringt "was finden" zurück? Denken Sie daran, dass Windows über eine integrierte Befehlszeilen-Suche verfügt, die Cygwin letztendlich verwenden würde, wenn die eigene Suche mia lautet.

James McLeod
quelle
1

Die Antwort von Gilles ist findinsofern richtig, als die Windows-Version des Befehls vor der Cygwin-Version steht und diese aufgerufen wird.

Wenn Sie Cygwin findvoranstellen find, rufen Batch-Dateien, die den Windows- Befehl verwenden, jetzt den Befehl cygwin auf , der möglicherweise nicht Ihren Wünschen entspricht .

Meiner Meinung nach ist die symbiotischste Möglichkeit für beide die folgende:

  1. Suchen Sie den findBefehl cygwin und benennen Sie ihn um / kopieren Sie ihn nach lfind.exe(oder nach einem anderen Namen, der sich nicht auf dem Windows-Pfad befindet)
  2. Fügen Sie in Ihrer ~/.bashrcDatei die Zeile hinzualias find=lfind

Auf diese Weise, wenn Sie laufen find dem Cygwin-Terminal die Cygwin-Version, während Batchdateien die Windows-Version verwenden.

Hinweis: Sie benötigen weiterhin das Verzeichnis cygwin bin in Ihrem PATH, es kann jedoch auch weiter vom Windows-Systemverzeichnis entfernt sein.

Mitch Kent
quelle
0

Bei der Installation von Cygwin werden nur dann alle möglichen Pakete installiert, wenn Sie dazu aufgefordert werden. Um ein gewünschtes Paket hinzuzufügen, werfen Sie einen Blick auf die Erklärung hier auf Super User.

Oder führen Sie einfach die folgenden Aktionen aus:

  1. Starten Sie Setup, wählen Sie einen Spiegel aus und rufen Sie den Paketbildschirm auf
  2. Wählen Sie "Behalten" aus der Auswahlliste oben
  3. Wählen Sie das gewünschte Paket unter der entsprechenden Gruppe aus
  4. Wählen Sie "Weiter"
Eugene S
quelle
0

Hier sind die GNU-Utils als native Win32-Ports . Sie benötigen nicht Cygwin, um ausgeführt zu werden, und verfügen über eine Shell (sh.exe), die grep, sed, awk, find, less, cat, tac und vieles mehr enthält.

Das Problem mit dem Windows-Pfad bleibt bestehen, aber vielleicht benennen Sie die Suche in gfind(gnu-find) oder searchin um, um den Zugriff zu erleichtern, und fügen Sie das Verzeichnis coreutils zu Ihrem PATH hinzu.

Benutzer unbekannt
quelle