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
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:
- Zlokalizuj cygwin
find
i zmień nazwę / skopiuj go dolfind.exe
(lub innej nazwy, której nie ma w ŚCIEŻCE systemu Windows) - W
~/.bashrc
plik dodaj wierszalias 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:
- Rozpocznij instalację, wybierz serwer lustrzany i przejdź do ekranu pakietów
- Wybierz opcję „Zachowaj” z listy przycisków opcji u góry
- Wybierz żądany pakiet w odpowiedniej grupie
- 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.
/usr/bin/find
zamiastfind
/usr/bin
w ścieżce, wydaje mi się, że powłoka używa pierwszegofind
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 tegofind
. Tak więc poprawnym rozwiązaniem jest zapisanie aliasualias find="/usr/bin/find"
w~/.bashrc
(lub w dowolnej powłoce ' ponownie używam) .