quali / dove sono le differenze


112

Qual è la differenza tra whiche whereis?


Mi dispiace ma sul mio sistema OS X 10.5.8 che e dove danno sempre gli stessi risultati. Forse questa è una domanda molto specifica su OS X, dato che sono d'accordo, ci si aspetta un risultato diverso. Forse laddove non è conforme a ciò che dovrebbe fare. Almeno i due esempi (vedi sotto) non funzionano: dove sono e dove php danno sempre lo stesso risultato del quale ... Qualcuno può confermarlo? Snow Leopard si comporta allo stesso modo?
— Lupo,

Sì, lo so, ecco perché ho posto questa domanda.
— mk12,

@Wolf ecco un esempio di whichcome whereisdare diversi output (su macOS Sierra) apple.stackexchange.com/questions/259047/…
— Matteo,

@ mk12 Mi sento come se fosse typesuperiore. Conosce anche alias definiti, funzioni ecc.
— phil294

Risposte:


121

Che ne dici di imparare whereise whichusare 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, whereiscerca i file "forse utili", mentre whichcerca 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

34
non sapevo cosa, grazie.
— MK

1
A proposito, rimuoverei il tag "osx", poiché questa domanda si applica a tutte le varianti di unix (inclusi Linux, BSD, Mac OS X, ...)
— Denilson Sá Maia,

modificato in unix
— mk12,

1
C'è di più. Sul mio sistema, dov'è e che restituiscono percorsi eseguibili diversi. Posso solo ottenere il percorso verso quello che corre effettivamente whereis, non quello per which.
— Jordan Reiter,

1
@JordanReiter: Non può essere! whichmostra il percorso effettivo. Sei sicuro che il percorso indicato whichnon sia solo un collegamento simbolico al percorso indicato whereis? Forse è un alias di shell. In bash, prova a correre type your_cmd_here.
— Denilson Sá Maia,

23

whereis cerca le posizioni * nix standard per un comando specificato.

whichcerca 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 whereisnon effettuano ricerche se si fosse aggiunto al PERCORSO)


Che cos'è * nix?
— MK

2
Unix, Linux ecc. (Mac OS X appartenente a ecc.)

8
Ohhh, ahah, ho sempre pensato che l'overflow dello stack censurasse l'U in Unix ogni volta che l'ho visto per qualche motivo ..
— MK

No. Solo una convenzione abbastanza comune dell'uso di caratteri jolly creativi fa riferimento a una famiglia di sistemi operativi simili. ;)

6

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".


1

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? :)


hai eseguito il comando updatedb? Per quanto mi ricordi, individuare si basa su questo
— Oliver M Grech,
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.