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
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:
- Individua il cygwin
find
e rinominalo / copialo inlfind.exe
(o qualsiasi altro nome che non sia nel PATH di Windows) - Nel tuo
~/.bashrc
aggiungi la rigaalias 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:
- Avvia linstallazione, seleziona un mirror e accedi alla schermata dei pacchetti
- Seleziona “Mantieni” dallelenco dei pulsanti di opzione in alto
- Seleziona il pacchetto desiderato nel gruppo pertinente
- 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.
/usr/bin/find
invece difind
/usr/bin
nel percorso, immagino che la shell utilizzi il primofind
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 questofind
. Quindi, risolvere questo problema nel modo giusto è scrivere un aliasalias find="/usr/bin/find"
in~/.bashrc
(o qualsiasi altra shell ' sta utilizzando) .