-bash: lstat: comando não encontrado

5

Estou usando um Macbook Pro executando o El Capitan v 10.11.6. Estou aprendendo sobre links simbólicos e, na página man ln , encontrei o seguinte:

A stat(2) on a symbolic link will return the linked-to file; an lstat(2) must be done to obtain information about the link.

Como teste, criei um link simbólico para um arquivo (em outro sistema de arquivos, se isso for importante), da seguinte maneira:

ln -s /Volumes/foobardir/foobarfile foobarlink

Em seguida, executei lstat foobarlink para obter informações sobre o arquivo de link simbólico em si, mas recebi a seguinte saída:

-bash: lstat: command not found

O comando which lstat não retorna nada, o que confirma que não há nenhum executável com este nome no meu caminho de arquivo.

Eu posso executar stat foobarlink , mas não tenho certeza se as estatísticas retornadas são para o arquivo vinculado ou para o link simbólico em si. Eu vejo a data de hoje na forma de registro de data e hora entre a saída desse comando, enquanto a execução de stat foobarfile mostra uma data de alguns meses atrás. Então, eu estou supondo que esta é a saída que estou procurando, mas eu gostaria de uma segunda opinião.

A propósito, executando which stat retorna /usr/bin/stat . Um grep no diretório /usr/bin para todos os executáveis com stat em seu nome retorna o seguinte:

  • db_stat
  • diffstat
  • link
  • jstat
  • jstatd
  • lockstat
  • lpstat
  • nfsstat
  • plockstat
  • snmpnetstat
  • snmpstatus
  • stat
  • uustat
  • vm_stat

Como afirmei acima, meu palpite é que stat retorna a saída que eu esperava lstat retornar. Minhas perguntas são:

  • por que lstat aparentemente não está instalado em meu sistema, quando man lstat reconhece lstat como um comando válido?
  • Por que incluir informações manuais para um executável que você não envia?
  • brew search lstat não retorna resultados. É possível instalar o lstat em minha máquina local de alguma forma, e há alguma vantagem em fazê-lo?
por Richie Thomas 25.06.2017 / 17:00

1 resposta

13

A Seção 1 do Manual do BSD é para comandos gerais. A seção 2 é para chamadas de sistema, ou seja, , chamadas de função que você pode fazer se programar para o seu sistema na linguagem C , ou uma de suas derivadas.

O número entre parênteses indica de qual seção do manual a entrada é. Nesse caso, lstat(2) indica que esta página fornece informações sobre uma chamada do sistema, não sobre um binário independente que pode ser executado na linha de comando.

Se você digitou man lstat , verá a página de manual da chamada do sistema lstat . stat , por contraste, é o nome de ambos uma chamada de sistema e um utilitário autônomo. Se você digitar man stat , por padrão, você obterá a página de manual do utilitário de linha de comando. Para ver a página de manual de chamadas do sistema, você precisa informar explicitamente a man qual seção do manual pesquisar:

man 2 stat

link é um link (desatualizado) listando todas as seções do Manual BSD. As seções serão as mesmas em seu sistema, mas não consigo encontrar uma página de manual listando explicitamente as seções.

    
por 25.06.2017 / 17:07