trova il comando in cygwin che dà il formato del parametro non corretto


14

Sto usando Cygwin nella mia macchina Windows. Sto provando a fare una ricerca e sta dando 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 l'installazione di Cygwin o sto facendo qualcosa di sbagliato?
find  cygwin 

Risposte:


19

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

Quando si avvia una shell Cygwin, di solito è necessario impostare il PATH. Ti consiglio di avviare una shell di accesso (se ricordo bene, è quello che fanno le voci del menu di sistema di Cygwin predefinite). Il tuo Cygwin PATHdovrebbe avere /usr/local/bin, /usr/bine /bin(almeno) davanti a qualsiasi directory non Cygwin.


1
Sì, probabilmente è quello. Questo errore è dovuto al fatto che la ricerca utilizzata è il comando find di Windows, non quello di Cygwin.
Yanick Girouard,

Oppure digita /usr/bin/findinvece difind

Ho avuto /usr/binnel percorso, immagino che la shell usi il primo findtrovato nel $ 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, fissare questo il modo giusto è quello di scrivere un alias alias find="/usr/bin/find"in ~/.bashrc (o qualunque shell che si sta usando) .
Hi-Angel,

1

Trova è installato? Cosa ritorna "che trova"? Ricorda che Windows ha una riga di comando integrata che Cygwin finirebbe per usare se la sua ricerca fosse mia.


1

La risposta di Gilles è corretta in quanto la versione di Windows del findcomando precede la versione di Cygwin e quindi viene chiamata.

Mettere avanti Cygwin significa comunque che tutti i file batch che usano il findcomando windows ora chiameranno effettivamente il findcomando cygwin , che potrebbe non essere quello che vuoi.

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

  1. Individua il findcomando cygwin e rinominalo / copialo lfind.exe(o qualsiasi altro nome che non sia sul PERCORSO di Windows)
  2. Nel tuo ~/.bashrcfile aggiungi la rigaalias find=lfind

In questo modo, quando si esegue finddal terminale cygwin si utilizzerà la versione di Cygwin, ma i file batch utilizzeranno la versione di Windows.

Nota: Avrai comunque bisogno della directory bin cygwin sul tuo PERCORSO, ma ora può essere più indietro dalla directory di sistema di Windows.


0

Quando si installa Cygwin, non installa tutti i pacchetti possibili a meno che non venga richiesto. Per aggiungere un pacchetto desiderato, dai un'occhiata alla spiegazione qui su Super User.

O semplicemente esegui le seguenti azioni:

  1. Avviare il programma di installazione, selezionare un mirror e accedere alla schermata dei pacchetti
  2. Seleziona "Mantieni" dall'elenco dei pulsanti di opzione in alto
  3. Seleziona il pacchetto desiderato nel gruppo pertinente
  4. Seleziona "Continua"

0

Ecco le GNU-utils come porte native win32 . Non hanno bisogno di Cygwin per essere eseguiti e sono dotati di una shell (sh.exe), che include 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ù facilmente accessibile e aggiungi la directory coreutils al tuo PERCORSO.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.