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

  • Ano, ' pravděpodobně to je. Tato chyba je způsobena tím, že použitým hledáním je příkaz Windows ' s find, nikoli cygwin ' s.
  • Nebo zadejte /usr/bin/find místo find
  • já ' jsem měl /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ě toto find. Správnou cestou tedy je zapsat alias alias find="/usr/bin/find" do ~/.bashrc (nebo jiného shellu, který ' re using) .

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:

  1. Vyhledejte cygwin find a přejmenujte / zkopírujte jej na lfind.exe (nebo na jakýkoli jiný název, který není na PATH systému Windows)
  2. Ve vašem ~/.bashrc soubor přidejte řádek alias 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:

  1. Spusťte instalaci, vyberte zrcadlo a přejděte na obrazovku balíčků
  2. Ze seznamu přepínačů v horní části vyberte možnost „Ponechat“.
  3. Vyberte požadovaný balíček v příslušné skupině
  4. 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.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *