GNU/Linux >> Linux Esercitazione >  >> Ubuntu

La differenza tra individuare/dov'è/quale?

Qual è la differenza fondamentale tra locate whereis e which comando.

La differenza fondamentale che ho osservato è che locate individua tutti i nomi di file correlati nell'intero filesystem, mentre whereis e which i comandi forniscono solo la posizione (sistema/indirizzo locale del file) dell'applicazione installata. Quanto è accurata la mia osservazione?

Come vengono implementati internamente questi comandi. Perché locate funziona così velocemente rispetto alla ricerca con trattino, mentre locate deve cercare un nome file particolare che corrisponda alla stringa di destinazione nell'intera gerarchia del filesystem?

Risposta accettata:

which trova l'eseguibile binario del programma (se è nel tuo PERCORSO). man which spiega più chiaramente:

che restituisce i percorsi dei file (o collegamenti) che sarebbero
eseguiti nell'ambiente corrente, se i suoi argomenti fossero stati forniti come comandi in una shell rigorosamente conforme a POSIX. Lo fa cercando nel PATH i file eseguibili che corrispondono ai nomi degli argomenti. Non segue collegamenti simbolici.

whereis trova i file binari, sorgente e man per un programma. Ad esempio

$ whereis gimp
/usr/bin/gimp /usr/lib/gimp /etc/gimp /usr/share/gimp /usr/share/man/man1/gimp.1.gz

Puoi ottenere ulteriori dettagli passando l'output di questi comandi come argomenti a ls -l o file

$ ls -l $(which gimp)
lrwxrwxrwx 1 root root 8 Jun 30 19:59 /usr/bin/gimp -> gimp-2.8

$ file $(which gimp)
/usr/bin/gimp: symbolic link to gimp-2.8

locate infatti trova tutti i file che hanno il modello specificato ovunque nei loro percorsi. Puoi dirgli di trovare solo i file e le directory i cui nomi (piuttosto che percorsi completi) includi il modello con -b opzione, che di solito è ciò che desideri, e fornisce un elenco meno ingombrante.

locate è veloce perché utilizza un database binario che viene aggiornato periodicamente (una volta al giorno, da cron ). Puoi aggiornarlo tu stesso per assicurarti che i file aggiunti di recente vengano trovati eseguendo sudo updatedb

Un'altra cosa su locate – non importa se i file esistono ancora o meno, quindi per evitare di trovare file eliminati di recente, usa -e . Spesso faccio anche pipe a less poiché l'elenco può essere lungo. In genere lo faccio:

sudo updatedb && locate -b -e gimp | less

Come funziona il trattino di Unity è spiegato qui:utilizza Zeitgeist per indicizzare i file di sistema e imparare dai modelli di utilizzo e consente ad altre applicazioni di utilizzare questi dati, quindi sta facendo molto più lavoro di locate .


Ubuntu
  1. Qual è la differenza tra InnoDB e MyISAM?

  2. La differenza tra [[ $a ==Z* ]] e [ $a ==Z* ]?

  3. Centos – La differenza tra spegnimento alle 18:00 e spegnimento alle 18:00?

  4. Qual è la differenza tra Ddrescue, Gddrescue e Dd_rescue?

  5. La differenza tra Update-grub e Update-grub2?

La differenza tra sudo e su spiegata

La differenza tra backup e replica

Qual è la differenza tra Rsync e BTRFS in Linux?

Qual è la differenza tra Cat e Touch Command

Differenza tra driver aggiuntivi (nvidia)?

Qual è la differenza tra unlink e rm?