Linux Shell Scripting

Barras de Progresso Bash: Três Métodos Poderosos

Spread the love

As barras de progresso são inestimáveis para fornecer feedback visual durante processos demorados, oferecendo aos usuários uma indicação clara do progresso da tarefa. Embora o Bash não tenha suporte nativo para barra de progresso, várias ferramentas e bibliotecas externas oferecem soluções robustas. Este guia explora três métodos distintos: aproveitando o comando pv, utilizando o comando dialog e empregando a biblioteca ncurses.

Sumário

Usando pv para Barras de Progresso

O comando pv (pipe viewer) se destaca no monitoramento de fluxos de dados, tornando-o ideal para visualizar o progresso em transferências de arquivos ou operações semelhantes com uso intensivo de dados. Sua simplicidade e eficácia são vantagens significativas.

Instalação:

pv está prontamente disponível por meio da maioria dos gerenciadores de pacotes de distribuição Linux. Instale usando o comando específico da sua distribuição (por exemplo, sudo apt-get install pv no Debian/Ubuntu, sudo yum install pv no CentOS/RHEL, sudo pacman -S pv no Arch Linux).

Uso:

A sintaxe fundamental é simples:

pv arquivo_entrada > arquivo_saída

Substitua arquivo_entrada pelo seu arquivo de origem e arquivo_saída pelo destino desejado. pv exibirá dinamicamente uma barra de progresso indicando a taxa de transferência e o tempo estimado de conclusão.

Exemplo:

Para copiar um arquivo grande (large_file.zip) com uma barra de progresso:

pv large_file.zip > copied_large_file.zip

A flexibilidade do pv se estende além da cópia de arquivos. Ele se integra perfeitamente a comandos que geram fluxos de dados. Por exemplo, para monitorar uma extração de arquivo tar:

tar -xvf large_archive.tar | pv > /dev/null

Aqui, /dev/null descarta os arquivos extraídos, focando apenas no monitoramento do progresso.

Empregando dialog para Barras de Progresso

O comando dialog oferece uma gama mais ampla de caixas de diálogo interativas, incluindo uma barra de progresso versátil. Ele fornece mais controle sobre a aparência da barra em comparação com o pv e não se limita a fluxos de dados.

Instalação:

Assim como o pv, o dialog geralmente está disponível por meio do gerenciador de pacotes da sua distribuição (por exemplo, sudo apt-get install dialog, sudo yum install dialog, sudo pacman -S dialog).

Uso:

A barra de progresso do dialog usa a opção --gauge. Você especifica o título, o valor máximo (100%) e o valor atual. O script atualiza iterativamente o valor atual.

Exemplo:

Este script simula um processo e exibe uma barra de progresso:

#!/bin/bash

for i in $(seq 1 100); do
  dialog --gauge "Processando..." 10 60 $i
  sleep 0.1
done
dialog --infobox "Processo concluído!" 10 30

O script executa um loop 100 vezes, incrementando a barra de progresso. sleep 0.1 adiciona um atraso para demonstração. Torne o script executável usando chmod +x seu_script.sh.

Aproveitando ncurses para Barras de Progresso Avançadas

Para personalização e controle máximos, a biblioteca ncurses fornece flexibilidade incomparável. ncurses manipula diretamente a saída do terminal, permitindo barras de progresso altamente personalizadas. No entanto, essa abordagem exige um conhecimento mais profundo de programação e das funções ncurses.

Instalação:

ncurses geralmente já está pré-instalado. Se não estiver, instale usando o gerenciador de pacotes da sua distribuição (por exemplo, sudo apt-get install libncurses5-dev, sudo yum install ncurses-devel, sudo pacman -S ncurses).

Uso:

Um exemplo completo de ncurses está além do escopo deste guia devido à sua complexidade. O processo envolve inicializar ncurses, desenhar a barra usando funções como mvprintw, atualizá-la iterativamente e, finalmente, limpar ncurses. Você gerencia manualmente a posição do cursor. Inúmeros recursos online oferecem tutoriais detalhados de ncurses em C ou outras linguagens; adaptá-los para Bash requer atenção cuidadosa.

Este artigo apresentou três abordagens para criar barras de progresso em Bash. Escolha o método mais adequado às suas necessidades e habilidades. pv é ideal para tarefas simples; dialog oferece mais controle; e ncurses fornece personalização máxima.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *