Používám cygwin v mém systému Windows. Snažím se najít a dává formát parametru není správný. Proč tomu tak je?
$ 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
- Mám během instalace cygwinu něco nainstalovat, nebo dělám něco špatně?
Odpověď
Vaše PATH
je špatná. Má systémové adresáře Windows před adresáři Cygwin, nebo možná vůbec nemá adresáře Cygwin. Tato zpráva pochází z příkazu systému Windows find
(který hlásí svůj název jako FIND
velká písmena je nápověda).
Když spustíte prostředí Cygwin, je obvykle nutné nastavit PATH
. Doporučuji že spustíte přihlašovací shell (pokud si dobře pamatuji, tak to dělají výchozí položky nabídky systému Cygwin). Váš Cygwin PATH
by měl mít /usr/local/bin
, /usr/bin
a /bin
(alespoň) před jakýmkoli jiným adresářem než Cygwin.
Komentáře
Odpověď
Je nalezený nainstalován? Co se vrátí „který nález“? Nezapomeňte, že Windows mají vestavěný příkazový řádek, který by Cygwin nakonec použil, pokud by jeho vlastní nález byl mia.
Odpovědět
Odpověď Gillese je správná v tom, že verze příkazu find
pro Windows přichází před verzí cygwin, a proto se volá.
Upřednostňování Cygwinu to však bude znamenat, že jakékoli dávkové soubory, které používají příkaz windows find
, budou nyní skutečně volat příkaz cygwin find
, což nemusí být to, co vy chtít.
Podle mého názoru je nejsymbiotičtější způsob, jak oba pracovat:
- Vyhledejte cygwin
find
a přejmenujte / zkopírujte jej nalfind.exe
(nebo na jakýkoli jiný název, který není na PATH systému Windows) - Ve vašem
~/.bashrc
soubor přidejte řádekalias find=lfind
Tímto způsobem, když spustíte find
z terminálu cygwin použijete t Verze cygwin, ale dávkové soubory budou používat verzi systému Windows.
Poznámka: Stále budete potřebovat adresář bin cygwin na vaší PATH, ale nyní může být dále ze systémového adresáře systému Windows.
Odpověď
Když instalujete Cygwin, nenainstaluje všechny možné balíčky, pokud o to nepožádáte. Chcete-li přidat požadovaný balíček, podívejte se na vysvětlení zde pro superuživatele.
Nebo proveďte následující akce:
- Spusťte instalaci, vyberte zrcadlo a přejděte na obrazovku balíčků
- Ze seznamu přepínačů v horní části vyberte možnost „Ponechat“.
- Vyberte požadovaný balíček v příslušné skupině
- Vyberte možnost „Pokračovat“
Odpovědět
Zde jsou GNU-utils jako nativní porty win32 . Nepotřebují ke spuštění cygwin a přicházejí s shellem (sh.exe), včetně grep, sed, awk, find, less, cat, tac a mnoho dalšího.
Problém s cesta Windows bude přetrvávat, ale možná přejmenujete nález na gfind
(gnu-find) nebo na search
, aby byl snadnější přístupný a do své PATH přidejte adresář coreutils.
/usr/bin/find
místofind
/usr/bin
na cestě myslím, že shell používá prvnífind
nalezený v $ PATH, což je systémový. Chystal jsem se to odstranit (protože jsem to ' stejně nepotřeboval) , ale myslím, že některé náhodné systémové skripty mohou očekávat právě totofind
. Správnou cestou tedy je zapsat aliasalias find="/usr/bin/find"
do~/.bashrc
(nebo jiného shellu, který ' re using) .