Cópia de arquivos com concorrência em Bash

concorrente-1_abertura.png

Em substituição de processos, demonstrei a concorrência utilizando o vimdiff para a comparação de dois arquivos baixados simultaneamente por instâncias do curl, cada uma em subshells distintas. Mas é possível aplicar a concorrência para tarefas bem mais simples e rotineiras como, por exemplo, a cópia de arquivos.

Continuar lendo

Anúncios

Argumentos da linha de comando com docopt

docopt-1_abertura

No que diz respeito aos argumentos passados via linha de comando, você pode interpretá-los de forma manual, ou seja, pegando a lista enviada pelo sistema operacional e identificar cada elemento, ou utilizar alguma biblioteca específica para tal função — E, felizmente, há diversas delas e disponíveis para várias linguagens de programação.

Especificamente em Python¹ há uma bastante interessante chamada docopt, que interpreta automaticamente a sintaxe dos argumentos da linha de comando a partir da forma como se convencionou descrever (há tempos) no próprio texto de ajuda —  “- -help” — e nas páginas de manual dos programas.

(¹) Ele foi originalmente escrito para ser usado em Python porém está disponível também para outras linguagens de programação.

Continuar lendo

Ambiente de desenvolvimento do Laravel com Vagrant

vagrant_laravel-1_abertura

Esta é uma configuração do Vagrant que preparei para automatizar a criação de um ambiente de desenvolvimento do Laravel em uma máquina virtual rodando a versão 17.10 do Ubuntu (esta versão só tem em 64 bit), com PHP 7.1 e os demais arquivos necessários para o framework já instaladas.

E já que as dependências não estavam assim tão óbvias resolvi disponibilizá-lo junto com os demais arquivos.

Continuar lendo

O comando ‘select’

select-1_abertura

O select é um comando interno do Bash e sua função é construir dinamicamente um menu a partir de uma lista de opções. Isto é, ele atribui um valor numérico para cada item, lista na tela, exibe um prompt e fica aguardando a seleção do usuário antes de seguir adiante.

E se você já utilizou o comando tzselect alguma vez na vida, saiba que já esbarrou com ele pela frente… 🙂

Continuar lendo

Substituição de processos no Bash

proc_subst-1_abertura

Um recurso muito útil do Bash, e também de outras shells em sistemas UNIX, é o pipe¹ e com ele é possível direcionar a saída de um programa para a entrada de outro. A substituição de processos — ou process substitution — funciona de modo parecido porém aqui é possível se direcionar a saída de mais de um programa para a entrada de outro como se este fossem arquivos.

(¹) Sim, outros sistemas não UNIX também possuem este recurso mas implementado de modo bem diferente as vezes.

Continuar lendo

Controle de jobs nos scripts em Bash

controle_jobs-2_abertura

No final do controle de jobs do Bash citei de dois comandos que fazem parte do controle de jobs do Bash mas que agem dentro dos scripts, não dei maiores detalhes mas prometi falar deles em outra oportunidade. São o suspend (que pausa a execução da shell) e o wait (que faz a shell aguardar o término de sub processos antes de prosseguir com a execução).

E, sim, esta é a “outra oportunidade”! 🙂

Continuar lendo