Ich verwende cygwin auf meinem Windows-Computer. Ich versuche einen Suchvorgang durchzuführen und das Parameterformat ist nicht korrekt. Warum ist das so?

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

Antwort

Ihre PATH ist schlecht. Es hat Windows-Systemverzeichnisse vor Cygwin-Verzeichnissen oder möglicherweise überhaupt keine Cygwin-Verzeichnisse. Diese Nachricht stammt vom Windows-Befehl find (der Name wird als FIND in Großbuchstaben ist ein Hinweis).

Wenn Sie eine Cygwin-Shell starten, müssen Sie normalerweise die PATH festlegen. Ich empfehle dass Sie eine Login-Shell starten (wenn ich mich richtig erinnere, ist dies das, was die Standard-Menüeinträge des Cygwin-Systems tun). Ihr Cygwin PATH sollte /usr/local/bin, /usr/bin und /bin (zumindest) vor jedem Nicht-Cygwin-Verzeichnis.

Kommentare

  • Ja, das ' ist es wahrscheinlich. Dieser Fehler ist darauf zurückzuführen, dass der von Ihnen verwendete Suchvorgang der Suchbefehl von Windows ' und nicht der Befehl von cygwin ' ist.
  • Oder geben Sie /usr/bin/find anstelle von find
  • ein, die ich ' hatte /usr/bin im Pfad, ich denke, die Shell verwendet die erste find, die im $ PATH gefunden wurde, der das System ist. Ich wollte es gerade entfernen (weil ich es ' sowieso nicht brauchte) , aber ich denke, einige zufällige Systemskripte könnten genau dieses find. Um dies richtig zu beheben, schreiben Sie einen Alias alias find="/usr/bin/find" in ~/.bashrc (oder in eine beliebige Shell, die Sie ' verwenden) .

Antwort

Ist find installiert? Was gibt „welcher Fund“ zurück? Denken Sie daran, dass Windows über eine integrierte Befehlszeilensuche verfügt, die Cygwin am Ende verwenden würde, wenn seine eigene Suche mia ist.

Antwort

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

Cygwin voranbringen Dies bedeutet jedoch, dass alle Batch-Dateien, die den Befehl windows find verwenden, jetzt tatsächlich den Befehl cygwin find aufrufen, was möglicherweise nicht das ist, was Sie sind wollen.

Meiner Meinung nach ist die symbiotischste Art, wie beide arbeiten, die folgenden:

  1. Suchen Sie den Cygwin find und benenne ihn um / kopiere ihn in lfind.exe (oder einen anderen Namen, der nicht auf dem Windows-Pfad steht)
  2. In deiner ~/.bashrc Datei Fügen Sie die Zeile alias find=lfind

hinzu, wenn Sie find Vom Cygwin-Terminal aus verwenden Sie t Die Cygwin-Version, aber Batch-Dateien verwenden die Windows-Version.

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

Antwort

Wenn Sie Cygwin neu installieren, werden nicht alle möglichen Pakete installiert, es sei denn, Sie werden dazu aufgefordert. Um ein gewünschtes Paket hinzuzufügen, lesen Sie die Erklärung hier unter Super User.

Oder führen Sie einfach die folgenden Aktionen aus:

  1. Starten Sie das Setup, wählen Sie einen Spiegel aus und rufen Sie den Paketbildschirm auf.
  2. Wählen Sie „Behalten“ aus der Optionsfeldliste oben
  3. gewünschtes Paket unter der entsprechenden Gruppe
  4. Wählen Sie „Weiter“

Antwort

Hier sind die GNU-Utils als native Win32-Ports . Sie brauchen kein Cygwin, um ausgeführt zu werden, und werden mit einer Shell (sh.exe) geliefert, die grep, sed, awk, find, less, cat, tac und vieles mehr enthält.

Das Problem mit Der Windows-Pfad bleibt bestehen, aber möglicherweise benennen Sie den Fund in gfind (gnu-find) oder in search um, um ihn einfacher zu gestalten Zugriff und fügen Sie das Verzeichnis coreutils zu Ihrem PFAD hinzu.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.