Cygwin "trova" non restituisce nulla


0

Questo comando non restituisce nulla in Cygwin in esecuzione su Windows Server 2008 r2:

/ usr / bin / find /

Prendo una leggera pausa, ma non viene restituito alcun testo. Nessun errore, nessun risultato, ecc. Ho provato con percorsi di ricerca diversi, usando argomenti (come -type f) e impostato il mio percorso cygwin su / usr / local / bin: / usr / bin. Niente funziona.

Idee?

Grazie


Bene ... Se ti dico di "trovare qualcosa", cosa fai?
not2qubit

Se pensi che la mia sintassi sia errata, chiaramente non capisci come funziona il comando find.
DByrne

La risposta corretta è: CHE COSA vuoi che trovi?
not2qubit

Okay user1147688, ecco come dovrebbe funzionare find: Quando viene chiamato "find /", dovrebbe scaricare una lista di tutti gli oggetti nel file system.
DByrne

Probabilmente il tuo $PATH è incasinato o mancante. Cosa fa echo $PATH darvi? (E dove l'hai impostato?) Assicurati che sia impostato come variabile di sistema e non come variabile utente locale (in Windows), ma puoi anche eseguire l'override in .bashrc.
not2qubit

Risposte:


0

È un comportamento molto strano e non ho mai visto nulla di simile durante l'utilizzo di Cygwin. Non ho abbastanza punti reputazione per chiedere informazioni usando i commenti quindi pubblicherò solo le tecniche di debug che userò. Spero che saranno utili a chiunque abbia problemi simili.

In primo luogo, proverei a verificare che stavo eseguendo l'eseguibile corretto. In esecuzione find --version dovrebbe restituire qualcosa di simile al seguente:

find (GNU findutils) 4.5.11

Confezionato da Cygwin (4.5.11-1)

Se non avessi ancora ricevuto alcun risultato, avrei installato (e installato) Cygwin strace comando:

mkdir testdir
strace -o find.out find testdir
rmdir testdir

strace consente di vedere ciò che chiama un Cygwin eseguibile per Cygwin DLL. Con il comando precedente, l'output del comando find è memorizzato in find.out.

A meno che non abbiate familiarità con la programmazione di sistema di Windows, in gran parte non ha senso Tuttavia, guardare attraverso l'output ti darà ancora un idea di ciò che sta facendo il comando, ad es. il Cygwin PATH e altri ambienti le variabili passate al comando vengono catturate. Io di solito cerco open( per vedere quali file sta tentando di usare il comando (trova). Chiamate riuscite a la funzione aperta verrà visualizzata come:

open: open(/home/anthony/t, 0x30C000)
open: open(., 0x400000)

Le chiamate non riuscite per aprire restituiscono un valore di -1. Nota che non tutti i file i tentativi di apertura sono effettivamente necessari per il corretto funzionamento del comando. Questo è un esempio di un tale tentativo fallito (le informazioni in locale.alias sarebbe letto se esistesse, ma non è necessario per trovare fare il suo lavoro):

open: -1 = open(/usr/local/share/locale/locale.alias, 0x8000), errno 2

Nota: creo (e quindi rimuovo) il vuoto testdir directory così non c'è una quantità schiacciante di informazioni catturate nel file di output strace.


Grazie, strace è una buona idea. Ho finito per spazzare via il sistema operativo, quindi non posso provare la tua idea.
DByrne
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.