De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 7 de maio de 2024
No shell bash do Linux, existe um comando que, à primeira vista, pode parecer
inútil: o comando :
. Também conhecido como o comando null
ou true
, ele
não realiza nenhuma ação visível, mas retorna sempre um status de saída 0,
indicando sucesso. No entanto, apesar de sua aparente simplicidade, o comando
:
desempenha um papel crucial em várias situações no shell scripting.
Quando você executa o comando :
no terminal, nada acontece visualmente,
mas o shell considera que o comando foi executado com sucesso.
Internamente, o comando :
é tratado como um caso especial pelo
shell bash. Ele é implementado como uma função interna do shell, e seu
comportamento é definido para simplesmente retornar um status de saída 0,
sem realizar nenhuma ação adicional.
No código-fonte da versão 5.2. do bash, o comando :
é definido no
arquivo builtins/colon.def
.
o comando :
não faz nada, mas permite que a linha e os redirecionamentos sejam interpretados pelo bash, o que origina um grande parceiro das expansões de parâmetros, a variável $_
(sobre a qual diz o man bash: expands to the last argument to the previous simple command executed in the foreground, after expansion)
$ Nome="Rubens Queiroz" $ echo $Nome; echo $_ Rubens Queiroz Queiroz # O último parâmetro visto foi Queiroz $ echo "$Nome"; echo $_ Rubens Queiroz Rubens Queiroz # Agora as aspas fizeram com que o bash não interpretasse o espaço e visse tudo como um único parâmetro
Como não posso usar pipes em expansão de parâmetros, pois elas atuam
como variáveis e não como comandos, uso o $_
para passar a saída de uma com
a entrada da outra, como se fosse um pipe. Para pegar o mês em uma data:
$ Data=01/02/2024 $ : ${Data%/*} # Exclui à direita (%) a menor combinação possível com o padrão /* (/2024) $ echo $_ # O $_ foi gerado pela interpretação da linha permitida pelo comando ':' 01/02 $ echo ${_#*/} # Exclui à esquerda (#) a menor combinação possível com o padrão */ (01/) 02
Além da expansão de parâmetros, o comando :
também é usado em outras
situações no shell scripting:
while
ou for
, quando nenhuma ação específica é necessária.
if
ou case
.
while : do # Faça algo repetidamente # até que uma condição de saída seja atendida done
Nesse exemplo, o comando :
é usado como um comando vazio no loop
while
. O loop continuará executando indefinidamente até que uma
condição de saída seja atendida dentro do bloco do
.
Exemplo de uso como um placeholder em uma construção condicional if
:
if condição; then # Faça algo se a condição for verdadeira else : fi
Nesse exemplo, o comando :
é usado como um placeholder no bloco else
da construção if
. Se a condição não for verdadeira, nenhuma ação
será executada, mas a sintaxe do if
ainda será válida.
O comando :
pode parecer insignificante à primeira vista, mas desempenha
um papel fundamental em várias situações no shell scripting. Seu uso mais
comum é em expansão de parâmetros, permitindo fornecer valores padrão
para variáveis ou argumentos opcionais de forma concisa e elegante.
Além disso, o comando :
também é útil como um comando vazio em
estruturas de controle, como loops e construções condicionais, e pode ser
usado para adicionar comentários em scripts shell.
Compreender o funcionamento interno do comando :
e seus diversos usos
pode ajudar você a escrever scripts shell mais eficientes, flexíveis e
legíveis. Portanto, não subestime o poder do comando que "não faz nada"! O
comando :
é uma ferramenta valiosa no seu arsenal de shell scripting.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários