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.~_-] ]]; then printf "$char" else printf '%%%02X' "'$char" fi done printf '\n' # opcional } urlencode "$@" Exemplo de uso Vejamos o código em ação: ...

janeiro 5, 2020 · 5 minutos · meleu
code snippet

Como checar se um array contém um determinado elemento

Quando estamos trabalhando com arrays em shell scripts é comum termos situações onde queremos saber se um determinado elemento está presente no array. O bash não tem um recurso específico para isso, portanto temos que arrumar um outro jeito. Neste artigo estudaremos três maneiras de alcançar esse objetivo. Método 1: infalível, porém “custoso” A maneira que logo vem a mente é percorrer todo o array através de um loop e checar se o elemento está presente lá. No código a seguir veremos a função elementInArray1: ...

janeiro 3, 2020 · 7 minutos · meleu
função joinBy()

Como juntar elementos de um array separando-os com um caracter qualquer

Eu estava precisando juntar os elementos do array em uma só string usando um | como separador. Em linguagens como JavaScript e PHP isso é obtido através de funções/métodos nativos, tipo join() ou implode(). Em bash teremos que implementar nós mesmos. Código Uma rápida googlada me levou a uma solução bem simples e bacana. Mostro aqui a minha versão: joinBy() { local IFS="$1" echo "${*:2}" } Agora vamos ver esse código em ação: ...

dezembro 31, 2019 · 2 minutos · meleu
exemplo de output do cheat.sh

cheat.sh: obtendo exemplos e macetes dos mais diversos comandos

Recentemente conheci um site muito maneiro para os amantes da linha de comando: https://cheat.sh E o que mais gostei dele é que conseguimos ter uma interação prazeirosa simplesmente acessando via curl. Abra o seu terminal e experimente você mesmo com o seguinte comando: curl cheat.sh Trata-se de um site com um repositório com diversos macetes de comandos, linguagens de programação, algoritmos, etc. Por exemplo, imaginemos que queremos ver alguns macetes do comando sudo. Basta executarmos um curl cheat.sh/sudo. Veja só: ...

dezembro 27, 2019 · 2 minutos · meleu
shebang

O que o #! realmente faz?

Para tornar o primeiro post deste blog bem simbólico, vamos falar sobre a primeira coisa que devemos colocar em um shell script: o #! (vulgarmente chamado de shebang ou hashbang). Como o #! funciona? O #! shebang serve para dizer ao kernel qual será o interpretador a ser utilizado para executar os comandos presentes no arquivo. Quando executamos um arquivo que começa com #!, o kernel abre o arquivo e pega tudo que está escrito após o shebang até o final da linha. Em seguida ele tenta executar um comando com o conteúdo desta string adicionando como parâmetro o nome do próprio arquivo. ...

dezembro 21, 2019 · 6 minutos · meleu