Explore como o comando `type` desvenda se uma instrução corresponde a um alias, um arquivo no disco, uma função shell, um comando interno ou uma palavra reservada. Utilize o `type` para entender a execução dos comandos no Linux e aprofundar seu conhecimento sobre o sistema.
Desvendando a Execução de Comandos
Ao interagirmos com o terminal do Linux, raramente refletimos sobre os mecanismos que traduzem nossos comandos em ações. Digitamos, recebemos resultados e continuamos nossas tarefas.
Compreender como os comandos são processados nos proporciona uma visão mais clara da arquitetura do Linux e de outros sistemas operacionais Unix-like. Esse mergulho nos bastidores nos transforma em usuários mais conscientes.
As instruções que fornecemos na linha de comando se encaixam em uma destas categorias:
Alias: Um atalho definido pelo usuário (ou sistema) que ativa outras sequências de comandos, geralmente mais extensas ou complexas.
Arquivo de disco: Um executável binário, como `/usr/bin/top`.
Função shell: Uma rotina criada pelo usuário (ou sistema) que pode ser chamada no terminal ou incluída em scripts.
Comando interno: Uma instrução processada diretamente pelo próprio shell, como `pwd`.
Palavra reservada: Um termo com significado especial para o shell, como `if` e `elif`. Também conhecidas como palavras-chave.
O comando `type` nos revela a categoria a qual cada comando do Linux pertence. Confira este guia rápido para interpretar a saída desse comando.
Analisando o Comando `type`
Vamos analisar exemplos para cada categoria de comando.
type date
O comando `date` é um arquivo executável armazenado no disco.
type ls
O comando `ls` é um alias que, por padrão, invoca o comando `ls` com a opção `–color=auto`.
type lowdown
O comando `lowdown` é uma função definida pelo usuário, configurada no sistema utilizado para este artigo. Ela exibe um resumo de informações do sistema, combinando `whoami`, `w`, `free` e `df`.
type pwd
O comando `pwd` é um comando interno do shell Bash.
type elif
O comando `elif` é uma palavra reservada do shell Bash.
Analisando Múltiplos Comandos
É possível usar o `type` para verificar vários comandos de uma só vez.
type date top ls
A Opção `-t`
As opções do `type` não possuem nomes formais, então podemos criar nossas próprias denominações. Pense na opção `-t` como “tipo” ou “conciso”, pois ela simplifica a saída do `type` para uma única palavra.
type -t date
type -t pwd
type -t lowdown
A Opção `-a`
Esta é a opção “todos”. Ela exibe todos os locais onde o comando é encontrado. Esta opção não funciona em conjunto com a opção `-p`.
Por exemplo, se um alias tiver o mesmo nome de um comando subjacente, você pode obter informações sobre ambos.
type -a ls
A Opção `-f`
A opção `-f` instrui o `type` a ignorar as funções definidas pelo usuário ou sistema. Imagine que ela significa “funções desativadas”. Se o comando for uma função, o `type` indicará que ele não foi encontrado.
type -f top
type -f lowdown
A Opção `-P`
A opção `-P` faz com que o `type` procure apenas nos diretórios listados na variável `$PATH`. Podemos considerar esta opção como “caminho”. Observe que ela usa um “P” maiúsculo.
type -P date chmod adduser
A Opção `-p`
A opção `-p` faz com que o `type` responda somente se o comando corresponder a um arquivo no disco rígido. Observe que ela usa um “p” minúsculo.
type -p mount
type -p ls
type -p -a ls
O `type` não fornece nenhuma resposta para `ls`, pois ele é um alias e não um arquivo de disco.
Entretanto, se incluirmos a opção `-a`, para que o `type` verifique todas as ocorrências do comando `ls`, ele lista o arquivo de disco subjacente utilizado pelo alias `ls`.
Conclusão
Essa análise foi simples, mas reveladora.
Tendemos a tratar tudo que digitamos no terminal como um “comando”, sem nos aprofundarmos. No entanto, os comandos são executados de diversas maneiras no Linux. E o `type` permite que você descubra quais são elas.