Administração de Linux Question #019e3987
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?
apropos
which
find
query
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. Sefooestá em um diretório que não está em$PATH,whichnão vai encontrar.query: Este não é um comando padrão do Linux para busca de arquivos. Pode ser confundido comlocateouslocate, masqueryem 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/sbine 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 encontrarfoose colocado em outro lugar.