Używam cygwin na moim komputerze z systemem Windows. Próbuję znaleźć i podaje nieprawidłowy format parametru. Dlaczego tak jest?

$ 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 
  • Czy powinienem cokolwiek instalować podczas instalacji cygwin, czy robię coś nie tak?

Odpowiedź

Twój PATH jest zły. Ma katalogi systemu Windows przed katalogami Cygwin lub może w ogóle nie ma katalogów Cygwin. Ta wiadomość pochodzi z polecenia Windows find (zgłasza swoją nazwę jako FIND wielkimi literami to wskazówka).

Gdy uruchamiasz powłokę Cygwin, zwykle musisz ustawić PATH. Polecam że uruchamiasz powłokę logowania (jeśli dobrze pamiętam, to właśnie robią domyślne pozycje menu systemowego Cygwin). Twój Cygwin PATH powinien mieć /usr/local/bin, /usr/bin i /bin (przynajmniej) przed każdym katalogiem spoza Cygwin.

Komentarze

  • Tak, że ' to prawdopodobnie to. Ten błąd jest spowodowany tym, że użyty wynik to polecenie wyszukiwania systemu Windows ', a nie polecenie Cygwin '.
  • Lub wpisz /usr/bin/find zamiast find
  • I ' ve miał /usr/bin w ścieżce, wydaje mi się, że powłoka używa pierwszego find znalezionego w $ PATH, czyli systemowym. Miałem zamiar go usunąć (ponieważ nie ' i tak go nie potrzebowałem) , ale wydaje mi się, że niektóre losowe skrypty systemowe mogą oczekiwać tylko tego find. Tak więc poprawnym rozwiązaniem jest zapisanie aliasu alias find="/usr/bin/find" w ~/.bashrc (lub w dowolnej powłoce ' ponownie używam) .

Odpowiedź

Czy find jest zainstalowany? Co zwraca „który znajdzie”? Pamiętaj, że system Windows ma wbudowany wiersz poleceń, którego Cygwin użyje, jeśli jego własne znalezisko to mia.

Odpowiedź

Odpowiedź od Gillesa jest poprawna, ponieważ wersja polecenia find dla systemu Windows znajduje się przed wersją cygwin, a więc jest nazywana.

Przede wszystkim będzie to jednak oznaczać, że wszystkie pliki wsadowe korzystające z polecenia systemu Windows find będą teraz wywoływać polecenie cygwin find, które może nie być tym, co Ty chcesz.

Moim zdaniem najbardziej symbiotycznym sposobem działania obu jest wykonanie poniższych czynności:

  1. Zlokalizuj cygwin find i zmień nazwę / skopiuj go do lfind.exe (lub innej nazwy, której nie ma w ŚCIEŻCE systemu Windows)
  2. W ~/.bashrc plik dodaj wiersz alias find=lfind

W ten sposób po uruchomieniu find z terminalu Cygwin użyjesz t Wersja cygwin, ale pliki wsadowe będą korzystać z wersji dla systemu Windows.

Uwaga: Nadal będziesz potrzebować katalogu bin cygwin w swojej PATH, ale teraz może on znajdować się dalej od katalogu systemowego Windows.

Odpowiedź

Podczas „ponownej instalacji Cygwin” nie instaluje on wszystkich możliwych pakietów, chyba że o to poprosisz. Aby dodać żądany pakiet, spójrz na wyjaśnienie tutaj w witrynie Super User.

Lub po prostu wykonaj następujące czynności:

  1. Rozpocznij instalację, wybierz serwer lustrzany i przejdź do ekranu pakietów
  2. Wybierz opcję „Zachowaj” z listy przycisków opcji u góry
  3. Wybierz żądany pakiet w odpowiedniej grupie
  4. Wybierz „Kontynuuj”

Odpowiedz

Oto narzędzia GNU jako natywne porty win32 . Nie potrzebują cygwin do uruchomienia i są dostarczane z powłoką (sh.exe), w tym grep, sed, awk, find, less, cat, tac i wiele więcej.

Problem z ścieżka systemu Windows pozostanie, ale może zmienisz nazwę znalezienia na gfind (gnu-find) lub na search, aby było łatwiej dostępne i dodaj katalog coreutils do swojej PATH.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *