Folosesc cygwin în mașina mea Windows. Încerc să fac o căutare și oferă formatul parametrilor nu este corect. De ce este asta?

$ 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 
  • Ar trebui să instalez ceva în timp ce instalez cygwin sau fac ceva greșit?

Răspuns

PATH este rău. Are directoare de sistem Windows înainte de directoarele Cygwin sau poate nu are deloc directoare Cygwin. Acest mesaj provine din comanda Windows find (că își raportează numele ca FIND în majusculă este un indiciu).

Când porniți un shell Cygwin, de obicei trebuie să setați PATH. Vă recomandăm că porniți un shell de conectare (dacă îmi amintesc corect, așa fac intrările implicite din meniul sistemului Cygwin). Cygwin PATH ar trebui să aibă /usr/local/bin, /usr/bin și /bin (cel puțin) înaintea oricărui director care nu este Cygwin.

Comentarii

  • Da, acel ' este probabil asta. Această eroare se datorează faptului că găsirea pe care ați folosit-o este comanda de găsire a Windows ', nu una a Cygwin '.
  • Sau tastați /usr/bin/find în loc de find
  • Am ' /usr/bin în cale, cred că shell-ul folosește primul find găsit în $ PATH, care este cel de sistem. Am fost pe punctul de a-l elimina (pentru că nu am ' oricum nevoie de el) , dar cred că unele scripturi de sistem aleatorii s-ar putea aștepta doar la acest find. Deci, soluționarea corectă este să scrieți un alias alias find="/usr/bin/find" în ~/.bashrc (sau orice alt shell pe care îl ' re using) .

Răspuns

Este găsit instalat? Ce se întoarce „care găsește”? Amintiți-vă că Windows are o linie de comandă încorporată pe care Cygwin ar ajunge să o folosească dacă propria sa găsire este mia.

Răspuns

Răspunsul de la Gilles este corect prin faptul că versiunea pentru Windows a comenzii find vine înainte de versiunea cygwin și așa se numește.

Punerea Cygwin înainte totuși va însemna că orice fișier batch care utilizează comanda Windows find va apela acum de fapt comanda cygwin find, care poate să nu fie ceea ce want.

Cel mai simbiotic mod de a lucra ambii, în opinia mea, este de a face cele de mai jos:

  1. Localizați cygwin find comandați și redenumiți-o / copiați-o în lfind.exe (sau orice alt nume care nu este „în Windows PATH)
  2. În ~/.bashrc fișier adăugați linia alias find=lfind

În acest fel, când rulați find de la terminalul cygwin veți folosi t versiunea cygwin, dar fișierele batch vor folosi versiunea Windows.

Notă: Veți avea nevoie în continuare de directorul bin Cygwin de pe PATH, dar acum poate fi mai înapoi din directorul sistemului Windows.

Răspuns

Când reinstalați Cygwin, nu instalează toate pachetele posibile decât dacă vi se solicită acest lucru. Pentru a adăuga un pachet dorit, aruncați o privire la explicația aici la Super User.

Sau efectuați următoarele acțiuni:

  1. Porniți configurarea, selectați o oglindă și accesați ecranul pachetelor
  2. Selectați „Păstrați” din lista de butoane radio din partea de sus
  3. Selectați pachetul dorit în grupul relevant
  4. Selectați „Continuați”

Răspundeți

Iată GNU-utils ca porturi win32 native . Nu au nevoie de cygwin pentru a fi rulat și vin cu un shell (sh.exe), inclusiv grep, sed, awk, find, less, cat, tac și multe altele.

Problema cu calea Windows va persista, dar poate redenumiți căutarea la gfind (gnu-find) sau la search, pentru a o face mai ușoară accesibil și adăugați direcția coreutils în PATH.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *