Używam cygwin w moim komputerze z systemem Windows. Próbuję wykonać wyszukiwanie, a format parametru jest nieprawidłowy. Dlaczego?
$ 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 coś instalować podczas instalacji cygwina, czy robię coś źle?
/usr/bin/find
zamiastfind
/usr/bin
na ścieżce, chyba powłoka używa pierwszejfind
znalezionej w $ PATH, czyli systemowej. Już miałem go usunąć (bo i tak go nie potrzebowałem) , ale chyba losowe skrypty systemowe mogą się tego spodziewaćfind
. Tak więc naprawienie tego właściwego sposobu polega na zapisaniu aliasualias find="/usr/bin/find"
w~/.bashrc
(lub jakiejkolwiek powłoce, której używasz) .Czy program Find jest zainstalowany? Co zwraca „które znajdują”? Pamiętaj, że system Windows ma wbudowane wykrywanie wiersza poleceń, którego Cygwin użyłby, gdyby jego własne znalezisko to mia.
źródło
Odpowiedź Gillesa jest prawidłowa, ponieważ wersja
find
komendy Windows znajduje się przed wersją cygwin i dlatego jest wywoływana.Wyprzedzanie Cygwina oznacza jednak, że wszystkie pliki wsadowe korzystające z
find
komendy windows będą teraz wywoływaćfind
komendę cygwin , co może nie być tym, czego chcesz.Moim zdaniem najbardziej symbiotyczny sposób działania obu jest wykonanie następujących czynności:
find
polecenie cygwin i zmień jego nazwę / skopiuj nalfind.exe
(lub dowolną inną nazwę, która nie znajduje się na ścieżce systemu Windows)~/.bashrc
pliku dodaj linięalias find=lfind
W ten sposób, kiedy uruchomisz
find
z terminalu cygwin, będziesz używać wersji cygwin, ale pliki wsadowe będą używać wersji Windows.Uwaga: Nadal będziesz potrzebował katalogu bin cygwin na PATH, ale może być teraz dalej z katalogu systemu Windows.
źródło
Podczas instalacji Cygwin nie instaluje wszystkich możliwych pakietów, chyba że o to poprosisz. Aby dodać żądany pakiet, zapoznaj się z wyjaśnieniem tutaj na temat Super User.
Lub po prostu wykonaj następujące czynności:
źródło
Oto GNU-utils jako natywne porty win32 . Nie potrzebują uruchamiania cygwina i są dostarczane z powłoką (sh.exe), w tym grep, sed, awk, find, less, cat, tac i wiele więcej.
Problem ze ścieżką systemu Windows będzie się utrzymywał, ale może zmienisz nazwę find na
gfind
(gnu-find) lub tosearch
, aby uczynić go łatwiej dostępnym, i dodasz katalog coreutils do ŚCIEŻKI.źródło