parametros no shell script

Como lidar com parâmetros passados na linha de comando em shell scripts

O shell script é uma “linguagem” muito permissiva. Não é necessário muito conhecimento pra você começar a fazer algumas coisas legais. Isso é bom, fazer coisas legais é divertido, mas também tem um perigo embutido: você pode acabar ir levando adiante uma prática ruim que funciona em determinado cenário mas que em outro pode trazer consequências indesejadas (a não utilização de aspas duplas pra proteger suas variáveis é um exemplo dessas práticas ruins)....

fevereiro 2, 2020 · 9 minutos · meleu
problemas ao não usar aspas

Por que você deve usar aspas SEMPRE

Esse post é para tentar convencê-los de que suas variáveis devem ser protegidas com aspas duplas SEMPRE. E quando eu digo sempre, é sempre mesmo. Até mesmo em $(subshells). OK… Tá bom. As vezes precisamos referenciar variáveis sem aspas, mas faça isso só quando for estritamente necessário. E quando isso acontecer, deixe um comentário falando sobre esta necessidade. Insisto: Não fique perdendo tempo pensando “Uhmm… Será que tem problema se eu deixar essa variável sem aspas?...

janeiro 26, 2020 · 4 minutos · meleu
função camelCase()

Como converter de maiúsculas para minúsculas (e vice-versa) com bash

Desde a versão 4.0 do bash (lançada em 2009) nós temos disponível alguns operadores para lidar com case conversion. Nos exemplos a seguir imagine que var contém uma string: ${var,,}: conteúdo de var todo em minúsculas ${var^^}: conteúdo de var todo em maiúsculas ${var,}: primeira letra de var minúscula ${var^}: primeira letra de var maiúscula ${var~~}: inverte de maiúsculo para minúsculo, ou vice-versa, todo o conteúdo de var ${var~}: inverte de maiúsculo para minúsculo, ou vice-versa, a primeira letra de var Funções Para Case Conversion De posse desse conhecimento, vamos fazer nossas versões bash de toLower() e toUpper() e, por que não?...

janeiro 25, 2020 · 3 minutos · meleu
loop while para percorrer o arquivo linha a linha

Como ler o conteúdo de um arquivo linha por linha em shell script

Uma das coisas que você certamente vai encarar um dia como um programador de shell scripts é a necessidade de percorrer um arquivo inteiro lendo cada linha e fazer algo com este conteúdo. Veremos neste artigo como fazer isso de maneira segura, robusta e evitando as possíveis armadilhas que podem aparecer no caminho. Pra adiantar seu lado, vou logo de cara lhe dar a solução que eu considero mais robusta. Em seguida explica cada detalhe dessa estrutura....

janeiro 21, 2020 · 9 minutos · meleu
exemplo de here strings

here string: evitando o uso desnecessário do echo

O que é um here string? Um here string nada mais é do que uma maneira de transformar uma string na entrada padrão (stdin) de um programa. Normalmente utilizamos essa técnica pegando a string contida em uma variável. A sintaxe, pegando de uma variável, é a seguinte: COMMAND <<< "$VAR" Onde o conteúdo variável $VAR será colocado na entrada padrão do COMMAND. Usar a técnica do here string evita o uso de estruturas como:...

janeiro 17, 2020 · 3 minutos · meleu
screenshot de explainshell.com

explainshell: obtendo uma explicação rápida de uma linha de comando e cada um dos seus argumentos

Recentemente conheci mais um site que certamente é muito útil para iniciantes e até mesmo para usuários de linha de comando já iniciados: https://explainshell.com/ conheça o https://explainshell.com Na página inicial deste site tem um campo de texto onde você pode digitar uma linha de comando inteira (incluindo até mesmo | pipes e << redirecionamentos >) e obter uma explicação do(s) comando(s) e de cada um dos argumentos utilizados. Por exemplo, clique neste link para ver a explicação de find / -type d -name deleteme 2>/dev/null....

janeiro 14, 2020 · 4 minutos · meleu
dica result

Uma dica simples que vai fazer você ganhar muito tempo quando estiver escrevendo shell scripts

Quando estamos escrevendo um shell script é muito comum precisarmos verificar se um teste resultará em verdadeiro ou falso. Fazer esses testes muitas vezes é tedioso, principalmente quando o comando não gera saída alguma (ou seja, não imprime nada na tela). Veremos aqui como lidar com isso de maneira simples, fácil e muito prática. A origem da ideia Geralmente eu costumo fazer essa checagem, assim: $ comando && echo verdadeiro || echo falso O comando no exemplo acima está representando o comando a ser executado....

janeiro 11, 2020 · 4 minutos · meleu
prompt

Por que você deveria aprender sobre shell e linha de comando?

No ramo de TI as coisas mudam de uma maneira absurdamente rápida! Por mais que você tente se manter atualizado, as tecnologias da moda estão sempre mudando. Se você é um aspirante a programador, provavelmente passa por aquela situação de indecisão paralisante. Fica naquele receio de despediçar o seu tempo estudando tecnologias que sairão de moda e no final do dia acabou não estudando coisa alguma. Na sua cabeça rolam perguntas como:...

janeiro 10, 2020 · 2 minutos · meleu
xdg-open

Como abrir qualquer arquivo no programa correto a partir da linha de comando

Um recurso que facilita muito a vida do usuário quando usando um gerenciador de arquivos no ambiente gráfico é o fato de poder dar um duplo clique no ícone e o sistema já saber qual programa utilizar para abrí-lo. Conhecendo o xdg-open Quando estamos utilizando o terminal dentro de um ambiente gráfico podemos ter uma funcionalidade similar usando o comando xdg-open em sistemas Linux. Equivalentes ao comando xdg-open em outros ambientes:...

janeiro 7, 2020 · 3 minutos · meleu
output de urlencode e urldecode

Como fazer URL encode/decode com shell script

Quando estamos trabalhando com URLs e/ou APIs REST, precisamos com frequência converter uma string para um formato válido de URL, conhecido como URL encoded. Se estivermos trabalhando com o curl é tranquilo, já temos a nossa disposição a opção --data-urlencode. Mas quando não vamos usar o curl, podemos implementar nossa própria solução usando bash puro. urlencode() Eis o código: #!/usr/bin/env bash # # urlencode - codificando sua string para usar em URLs urlencode() { local LC_ALL=C local string="$*" local length="${#string}" local char for (( i = 0; i < length; i++ )); do char="${string:i:1}" if [[ "$char" == [a-zA-Z0-9....

janeiro 5, 2020 · 5 minutos · meleu