Linux / Comandi / which, whereis, locate / Trovare la posizione dei comandi
In Linux, which è principalmente usato per trovare file eseguibili in PATH, whereis trova file correlati come eseguibili e manuali in posizioni predeterminate. locate cerca in un database di nomi file creato in precedenza, quindi può trovare rapidamente anche file normali, ma i risultati possono differire dallo stato attuale.
Quale comando dovrebbe essere usato?
- Percorso del file eseguibile: Controlla con
which findo con lacommand -v finddella shell per vedere quali comandi possono essere trovati nell'ambiente attuale. - File eseguibili e manuali: Usa
whereis findper verificare se programmi e relativi manuali/fonti sono in posizioni conosciute. - Ricerca per nome file:
locatericerca nei percorsi indicizzati e, se hai bisogno delle informazioni più aggiornate, puoi usarefindper cercare direttamente in una directory specificata.
L'ambito di ricerca e i risultati variano a seconda della distribuzione, dei programmi installati, dei permessi utente e delle impostazioni. I percorsi di output di seguito sono esempi a scopo illustrativo e potrebbero non essere gli stessi in tutti i sistemi.
Controllare gli eseguibili con which e command -v
PATH è una variabile d'ambiente che contiene un elenco di directory da cercare quando si cerca un comando da eseguire. Il seguente comando trova il percorso di un eseguibile chiamato find.
which find
Ad esempio, /usr/bin/find può essere l'output. Se non viene prodotto alcun percorso, verificare se il programma è installato e controllare PATH. Tuttavia, l'implementazione di which e la gestione degli alias variano a seconda del sistema, quindi è anche una buona idea controllare i comandi integrati della shell per vedere come la shell corrente interpreta i nomi.
command -v find
type -a find
In Bash, command -v mostra il nome o il percorso utilizzato per chiamare un comando, e type -a mostra gli elementi trovati, come alias, funzioni, comandi interni e file eseguibili con quel nome. I comandi interni della shell o gli alias potrebbero non avere un percorso di file eseguibile separato. Puoi verificare il loro comportamento in Descrizione del comando interno di Bash.
Trovare file correlati con whereis
whereis cerca i file eseguibili del programma, le fonti e i file man nelle posizioni standard e nei percorsi di ricerca configurati.
whereis find
L'elenco dei risultati mostra i percorsi trovati dopo find:. Se vuoi vedere solo i file eseguibili, puoi usare whereis -b find; se vuoi vedere solo i file manuali, puoi usare whereis -m find. Se il file non è installato o è fuori dal percorso di ricerca, non verrà visualizzato, quindi l'assenza di output non significa necessariamente che il file non si trovi sul sistema.
In util-linux, whereis -l mostra le posizioni di ricerca. Per dettagli sull'intervallo di ricerca, fai riferimento alla documentazione di util-linux whereis .
Ricerca dei nomi dei file con locate
locate cerca voci nel database creato da updatedb che corrispondono a un nome o a un percorso. Ad esempio, il seguente comando trova voci nei percorsi indicizzati che contengono find.
locate find
L'output può includere non solo file eseguibili, ma anche manuali o file con altri nomi. Le opzioni possono variare a seconda dell'implementazione installata, quindi controlla prima locate --help. Ad esempio, in plocate, puoi limitare i risultati fino a 10 come segue.
locate -l 10 find
Se il database è obsoleto, potrebbero mancare nuovi file e percorsi già eliminati potrebbero rimanere. Anche i percorsi esclusi dalla ricerca e i permessi di accesso dell'utente influenzano i risultati. La distribuzione può aggiornare periodicamente il database, e in un ambiente in cui è consentita l'amministrazione del sistema, puoi aggiornarlo direttamente con sudo updatedb. Poiché ciò può eseguire la scansione di un ampio insieme di directory di sistema, controlla le politiche di gestione prima di eseguirlo. L'implementazione e i manuali correlati possono essere trovati in documentazione ufficiale di plocate.
Verifica lo stato dell'installazione e gli ultimi file
locate potrebbe non essere installato. Ad esempio, puoi usare il pacchetto Ubuntu 24.04 plocate, e in un ambiente con privilegi amministrativi e accesso al repository dei pacchetti, puoi installarlo come segue.
sudo apt update
sudo apt install plocate
In altre distribuzioni o versioni, i nomi dei pacchetti e i metodi di aggiornamento potrebbero differire, quindi consulta la documentazione della rispettiva distribuzione. Se il database non esiste ancora o non è aggiornato dopo l'installazione, l'amministratore potrebbe doverlo inizializzare o aggiornare.
Per trovare direttamente il file attuale nella tua home directory senza aspettare il database, fai quanto segue:
find "$HOME" -name 'example.txt'
Questo comando cerca direttamente nell'albero di directory specificato, quindi potrebbe richiedere più tempo di locate e non può cercare nelle directory per le quali non si hanno permessi di accesso. Sostituire example.txt con il nome reale del file che si sta cercando e mantenere le virgolette in modo che il modello di ricerca non venga espanso anticipatamente dalla shell.




