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: Márcio C. M. Rezende
Data de Publicação: 31 de julho de 2013
Depois de ver a dica do dia 22 e, como uso alguns aliases para facilidar minha vida, decidi aprofundar um pouco e postar o resultado aqui.
Aliases podem nos economizar o trabalho de ficar guardando um monte de scripts simples, conhecidos como one-liners, num diretório. Para que fiquem mais interessantes poderiam, a grosso modo, ser comparados com "Closures". Para os não iniciados, isto se resumiria como um esquema de programação que usa funções que retornam funções.
Estas funções são ótimas para se trabalhar com listas, coleções, tabelas, etc e comumente usadas nas poderosas técnicas do paradigma programação funcional, onde se usam funções lambdas, funções de ordem superior, etc. São, portanto, de amplo conhecimento de programadores Lisp, Python, Scheme, Ruby e outras. Adianto que não sou versado em nenhuma delas mas estou cada vez mais interessado, principalmente em Python e peço que os programadores, versados, não se ofendam com a comparação. (No flames please)
Enfim esta introdução foi para dizer que dá para aprofundar um pouco mais nos aliases e torná-los peças "colecionáveis". A minha coleção fica no meu .bash_aliases, como sugerido na dica do Rubens, do dia 22.
Os dois maiores problemas que enfrentei foram:
Explico: quando temos arquivos com espaços nos nomes (IMHO, uma herança maldita de hábitos ruins de usuários oriundos de outros sistemas operacionais) passamos a criar quebras. Cotar estes argumentos é sempre uma fonte de dor de cabeça em bash, principalmente com o comando find.
Concluindo, sem me estender mais, aqui vai um alias que criei usando a técnia de embutir uma função e passar um argumento, que aceita os "malditos espaços".
# Este alias remove todos os arquivos de backup (foo~) do emacs e temporários perdidos (#bar#) que ficam esquecidos pelo caminho durante uma sessão "intensa" de programação (:-)
alias crush='function _crush(){ find $@ -type f -and -name '"'"'*~'"'"' -or -type f -and -name '"'"'#*'"'"' -exec rm -i \{\} \;;}; _crush'
Note que:
_crush
, que "faz o serviço" é criada e chamada logo em seguida à sua definição e usa os argumentos da linha de comandos via "$@"
'"'"' +||||---> fecha a sequencia anterior, aberta no inicio (logo após o `=') +|||---> abre uma nova string de um caractere (aspas simples) +||---> literalmete uma aspa simples cotadas ("'") +|---> fecha a aspa cotada +---> abre uma nova string que se fechará com a próxima aspa simples
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