Pular para o conteúdo

Troque o Basename por Expansão de Parâmetros

Dica publicada em Linux / Avançado
Mauricio Ferrari (LinuxProativo) maurixnovatrento
Hits: 2.576 Categoria: Linux Subcategoria: Avançado
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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##*/}
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Sed - duplicando linhas

Grub não detecta outras partições após a atualização do Slackware [Resolvido]

Fazendo Upload no Git pelo Terminal

Tenha um aquário no seu terminal no Debian, Ubuntu, Linux Mint e derivados

WhatsApp Desktop Aceitável no Deepin 20

Como Instalar o Gentoo Linux

Nagios - Obtendo endereços IPs dos servidores nos arquivos de configuração

Man Pages via Web no Fedora 19

Assistindo o outro terminal

Montando servidor OpenGTS (rastreamento GPS) em GNU/Linux

#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

Entre na sua conta para comentar.