Administração de Linux
medium

Administração de Linux Question #019e3987

Question Statement
Administração de Linux
#find
#executable-search
#path-independent
#file-location
#filesystem-traversal
Medium

Qual dos seguintes comandos pode ser usado para procurar o arquivo executável foo quando ele estiver em um diretório que não esteja incluído em $PATH?

A

apropos

B

which

C

find

Correct
D

query

E

whereis

Official Explanation / Community Explanations

O comando find é usado para buscar arquivos e diretórios em uma hierarquia de diretórios. Ele pode localizar o arquivo executável foo mesmo que não esteja nos diretórios listados na variável de ambiente $PATH, porque find pesquisa com base em nomes de caminho e critérios, não no $PATH.

Como funciona

find percorre o sistema de arquivos a partir de um diretório específico (por exemplo, /) e encontra arquivos com base em condições especificadas. Para encontrar um executável chamado foo, você pode usar:

find / -name foo -type f -executable

Esta função pesquisa todo o sistema de arquivos em busca de um arquivo regular (-type f) nomeado foo que possui a permissão de execução definida (-executable). A opção -name corresponde exatamente ao nome do arquivo. Ao contrário de which ou whereis, find não depende de $PATH; ele examina o sistema de arquivos real.

Por que a resposta correta está certa

O comando find é a ferramenta correta porque consegue localizar arquivos em qualquer lugar do sistema, independentemente de $PATH. Ele foi projetado para buscas flexíveis de arquivos com base em nome, tipo, permissões e outros atributos.

Por que as opções incorretas estão erradas

  • apropos: Pesquisa os nomes e descrições das páginas de manual em busca de uma palavra-chave. Não localiza arquivos executáveis; encontra apenas as páginas de manual relevantes.
  • which: Mostra o caminho completo de um comando pesquisando os diretórios listados em $PATH. Se foo está em um diretório que não está em $PATH, which não vai encontrar.
  • query: Este não é um comando padrão do Linux para busca de arquivos. Pode ser confundido com locate ou slocate, mas query em si não é um comando válido.
  • whereis: Localiza os arquivos binários, de código-fonte e de páginas de manual de um comando, mas pesquisa apenas em um conjunto predefinido de diretórios (normalmente /bin, /sbin, /usr/bin, /usr/sbin e diretórios de páginas de manual), não todo o sistema de arquivos. Ela não pesquisa diretórios fora da sua lista padrão, portanto pode não encontrar foo se colocado em outro lugar.