Troque o Basename por Expansão de Parâmetros

Publicado por Mauricio Ferrari em 20/05/2021

[ Hits: 2.172 ]

Blog: https://www.youtube.com/@LinuxDicasPro

 


Troque o Basename por Expansão de Parâmetros



Muitos usuários Linux que utilizam o shell ou até profissionais de TI que são programadores em shell, devem conhecer o basename. Ele geralmente é utilizado para adquirir o nome do script com o uso da variável "$0" como parâmetro, dessa forma por exemplo.

echo $(basename $0)

Isso retorna o nome do script. O echo foi para enfeite, só o comando e a variável padrão "$0" já dá a saída, mas talvez você queira colocar em uma mensagem para o parâmetro help. Só que existe uma maneira mais fácil de fazer isso como pode ser feito a seguir.

echo ${0##*/}

Que isso? Se você não entendeu nada, vou explicar melhor. Isso é expansão de parâmetros, ele age na pilha de dados diretamente no setor de processamento, o que o torna mais eficiente. A expansão apresentada anteriormente, tem a função de remover caracteres da esquerda para a direita. Sua sintaxe é: ${PARM#EXPR} ou ${PARM##EXPR}.

Existe um diferença entre os dois. O primeiro, remove apenas a primeira ocorrência e a segunda remove todas as ocorrências.

Agora é mais fácil de entender, o ## vai remover tudo o que casar com "*/" na variável "$0", sobrando só o nome do programa. O "*" é expandido pelo shell, o que faz com que os caracteres antes da barra fossem todos mapeados e fossem excluídos junto com a barra.

Mas isso é mesmo eficiente? Vamos fazer o teste usando time.
Linux: Troque o basename por Expansão de Parâmetros
Aqui, testamos 200 vezes o comando para ter um bom valor para comparação.
Linux: Troque o basename por Expansão de Parâmetros
Não tem nem comparação. Aqui, como não estamos em um script, setamos o local como parâmetro usando set, o que fez o local cair na variável $1.

Com essas reflexões, já podem largar do basename para usar expansão de parâmetros.

Outras dicas deste autor

Pacotes KDE Plasma 5 do Slackware 14.2

p7zip-desktop reformulado para o Linux Mint 20

Conky Manager no Linux Mint 20

Usando o Notable no Slackware

Preparando o Linux Mint 20 para instalar o Plugin coc.nvim no VIM

Leitura recomendada

Instalando DHCP/Squid/Sarg no Ubuntu

Erro do Grub ao clonar servidor Linux com ACRONIS

Participe da criação de uma distribuição

Backup em DVD com growisofs

Como Renomear uma Interface de Rede pelo SystemD

  

Comentários
[1] Comentário enviado por fabio em 20/05/2021 - 05:31h

Rapaz, nunca tinha ouvido falar nisso.

[2] Comentário enviado por danniel-lara em 20/05/2021 - 17:51h


Bacana

[3] Comentário enviado por devtiagofranca em 23/05/2021 - 21:21h


Toooooop cara parabéns 🎊

[4] Comentário enviado por maurixnovatrento em 24/05/2021 - 20:01h


[2] Comentário enviado por danniel-lara em 20/05/2021 - 17:51h


Bacana


Valeu.

[5] Comentário enviado por maurixnovatrento em 24/05/2021 - 20:02h


[3] Comentário enviado por devtiagofranca em 23/05/2021 - 21:21h


Toooooop cara parabéns 🎊


Valeu.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts