Qual è la differenza tra which
e whereis
?
which
come whereis
dare diversi output (su macOS Sierra) apple.stackexchange.com/questions/259047/…
type
superiore. Conosce anche alias definiti, funzioni ecc.
Qual è la differenza tra which
e whereis
?
which
come whereis
dare diversi output (su macOS Sierra) apple.stackexchange.com/questions/259047/…
type
superiore. Conosce anche alias definiti, funzioni ecc.
Risposte:
Che ne dici di imparare whereis
e which
usare whatis
?
$ whatis which
which (1) - shows the full path of (shell) commands
$ whatis whereis
whereis (1) - locate the binary, source, and manual page files for a command
Fondamentalmente, whereis
cerca i file "forse utili", mentre which
cerca solo gli eseguibili.
Uso raramente whereis
. D'altra parte, which
è molto utile, specialmente negli script. which
è la risposta alla seguente domanda: da dove proviene questo comando?
$ which ls
/bin/ls
$ whereis ls
ls: /bin/ls /usr/share/man/man1p/ls.1p.bz2 /usr/share/man/man1/ls.1.bz2
whereis
, non quello per which
.
which
mostra il percorso effettivo. Sei sicuro che il percorso indicato which
non sia solo un collegamento simbolico al percorso indicato whereis
? Forse è un alias di shell. In bash, prova a correre type your_cmd_here
.
whereis
cerca le posizioni * nix standard per un comando specificato.
which
cerca il PERCORSO specifico dell'utente (che può includere alcune delle posizioni in cui si trova la ricerca e potrebbe non includere altre - potrebbe anche includere alcuni luoghi che whereis
non effettuano ricerche se si fosse aggiunto al PERCORSO)
Citando le loro pagine man:
dove :
dove trova le sezioni sorgente / binarie e manuali per i file specificati.
Per esempio :
$ whereis php
php: /usr/bin/php /usr/share/php /usr/share/man/man1/php.1.gz
vale a dire, l'eseguibile "php" e alcune altre cose (come le pagine man).
e che :
che restituisce i nomi dei percorsi dei file che verrebbero eseguiti nell'ambiente attuale
Per esempio :
$ which php
/usr/bin/php
cioè, solo l'eseguibile "php".
che cerca gli eseguibili nelle directory specificate dalla variabile d'ambiente PATH. E se scoperto, verrà stampato il percorso completo di questo eseguibile.
$ which ls
/ bin / ls
$ which ifconfig
$ # Nessun output, perché ifconfig esiste solo nel PATH di root.
dove cerca eseguibili, file sorgente e pagine di manuale usando automaticamente un database creato dal sistema.
$ dove è meno
meno: / bin / less / usr / bin / less / usr / bin / X11 / less /usr/share/man/man1/less.1.gz
Ma sembra che Whereis e Locate non utilizzino lo stesso database. Quando ho installato un software e poi ho usato dov'è e individuare immediatamente per cercare questo software. Il risultato è che dove è possibile trovare alcuni file relativi a questo software mentre individuare non è possibile. Usano davvero database diversi? Come funziona il database? - Beh, che ne dici di rifiutare di essere un pedante? :)