Diferença entre o locate e o que no Linux

27

Qual é a diferença entre locate e which no Linux?

Por que quando eu uso locate mentor , ele lista todo o mentor, mas quando eu usei o which mentor , ele diz "nenhum mentor em ..." - o que isso significa?

    
por Naddy 29.03.2016 / 11:43

3 respostas

45

Qual é a diferença entre locate e which ?

locate usa um banco de dados criado anteriormente para localizar o arquivo.

locate reads one or more databases prepared by updatedb(8) and writes file names matching at least one of the PATTERNs to standard output, one per line.

Fonte locate (1) - Página man do Linux

updatedb creates or updates a database used by locate(1). If the database already exists, its data is reused to avoid rereading directories that have not changed.

updatedb is usually run daily by cron(8) to update the default database (/var/lib/mlocate/mlocate.db)

Fonte updatedb (8) - Página man do Linux

which procura por um arquivo executável procurando-o nos diretórios na variável PATH environmental.

which takes one or more arguments. For each of its arguments it prints to stdout the full path of the executables that would have been executed when this argument had been entered at the shell prompt. It does this by searching for an executable or script in the directories listed in the environment variable PATH.

usando o mesmo algoritmo de bash (1).

Fonte qual (1) - página man do Linux

locate mentor lista o mentor, mas which mentor diz "nenhum mentor em ..."

What does that mean?

Você tem alguns arquivos chamados mentor , que podem ser encontrados no banco de dados locate .

Você não tem um arquivo ou script executável chamado mentor no seu PATH .

    
por 29.03.2016 / 11:53
11

which é localizar um comando ( which retorna um nome de caminho dos arquivos / links que seriam executados no ambiente atual)

locate é localizar arquivos pelo nome ( locate lê um ou mais bancos de dados preparados por updatedb e grava nomes de arquivos correspondentes a pelo menos um dos padrões à saída em destaque, um por linha)

    
por 29.03.2016 / 11:54
5

locate usa um padrão glob por padrão (o padrão Regex também pode ser usado) e procura no banco de dados /var/lib/mlocate/mlocate.db por qualquer nome de arquivo que corresponda ao padrão.

which é um comando para procurar o caminho completo de um comando nos diretórios interpretados pela variável de ambiente PATH .

    
por 29.03.2016 / 13:01