Sto usando cygwin nella mia macchina Windows. Sto cercando di fare una ricerca e il formato del parametro non è corretto. Perché?

$ 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 
  • Devo installare qualcosa durante linstallazione di cygwin o sto facendo qualcosa di sbagliato?

Risposta

Il tuo PATH non è valido. Ha directory di sistema Windows prima di directory Cygwin, o forse non ha affatto directory Cygwin. Questo messaggio proviene dal comando Windows find (che riporta il suo nome come FIND in maiuscolo è un suggerimento).

Quando avvii una shell Cygwin, di solito devi impostare PATH. Consiglio che avvii una shell di login (se ricordo bene, questo è ciò che fanno le voci del menu di sistema Cygwin di default). Il tuo Cygwin PATH dovrebbe avere /usr/local/bin, /usr/bin e /bin (almeno) davanti a qualsiasi directory non Cygwin.

Commenti

  • Già, ' probabilmente è così. Questo errore è dovuto al fatto che il find che hai utilizzato è il comando find di Windows ', non quello di cygwin '.
  • Oppure digita /usr/bin/find invece di find
  • I ' ho avuto /usr/bin nel percorso, immagino che la shell utilizzi il primo find trovato in $ PATH, che è quello di sistema. Stavo per rimuoverlo (perché ' non ne avevo bisogno comunque) , ma immagino che alcuni script di sistema casuali potrebbero aspettarsi proprio questo find. Quindi, risolvere questo problema nel modo giusto è scrivere un alias alias find="/usr/bin/find" in ~/.bashrc (o qualsiasi altra shell ' sta utilizzando) .

Risposta

Find è installato? Cosa restituisce “quale trovare”? Ricorda che Windows ha una riga di comando incorporata find che Cygwin finirebbe per utilizzare se la sua find fosse mia.

Answer

La risposta di Gilles è corretta in quanto la versione Windows del comando find viene prima della versione cygwin, quindi viene chiamata.

Mettere Cygwin in vantaggio tuttavia significa che tutti i file batch che utilizzano il comando find ora chiameranno effettivamente il comando cygwin find, che potrebbe non essere quello che hai voglio.

Il modo più simbiotico per far funzionare entrambi, secondo me, è fare quanto segue:

  1. Individua il cygwin find e rinominalo / copialo in lfind.exe (o qualsiasi altro nome che non sia nel PATH di Windows)
  2. Nel tuo ~/.bashrc aggiungi la riga alias find=lfind

In questo modo, quando esegui find dal terminale cygwin utilizzerai t La versione di cygwin, ma i file batch useranno la versione di Windows.

Nota: Avrai ancora bisogno della directory bin di cygwin sul tuo PATH, ma ora può essere più indietro rispetto alla directory di sistema di Windows.

Risposta

Quando “stai installando Cygwin, non installa tutti i pacchetti possibili a meno che tu non glielo chieda. Per aggiungere un pacchetto desiderato, dai unocchiata alla spiegazione qui su Super User.

Oppure esegui semplicemente le seguenti azioni:

  1. Avvia linstallazione, seleziona un mirror e accedi alla schermata dei pacchetti
  2. Seleziona “Mantieni” dallelenco dei pulsanti di opzione in alto
  3. Seleziona il pacchetto desiderato nel gruppo pertinente
  4. Seleziona “Continua”

Rispondi

Ecco le GNU-utils come porte win32 native . Non hanno bisogno di cygwin per essere eseguito e sono dotati di una shell (sh.exe), inclusi grep, sed, awk, find, less, cat, tac e molto altro.

Il problema con il percorso di Windows persisterà, ma forse rinominerai la ricerca in gfind (gnu-find) o in search, per renderla più facile accessibile e aggiungi la directory coreutils al tuo PATH.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *