Troque o Basename por Expansão de Parâmetros

Publicado por Mauricio Ferrari em 20/05/2021

[ Hits: 2.290 ]

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

Sem Itens Repetidos no bash_history

Métodos para a Limpeza do Terminal do Linux em C

Desbloquear Pendrive Protegido Contra Gravação

Convertendo Segundos em Horas Usando Bash

Desativar Abertura de Diretório ao Plugar Mídias USB no Linux Mint 20

Leitura recomendada

Cinnamon no Fedora 17

Monitorar arquivos abertos no SAMBA

Customizando o SystemRescueCD Linux

Reinstalando Linux sem fazer backup ou formatação no KDE

Libs C realmente alternativos

  

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