Baixar e usar Bíblia Sagrada usando o terminal linux
Publicado por Iago Lira (última atualização em 13/07/2018)
[ Hits: 4.380 ]
Homepage: https://notabug.org/iagolira/
Download 1531229845.bibliadw.sh (versão 2)
A BíbliaDW é ideal para fazer estudos bíblicos.
Se desejar contribuir com o projeto acesse a página: https://github.com/iagolirapasssos/biblia-bash
Lembrando que o script está em fase beta, tem muita coisa a ser implementada, então não se assuste se surgir bugs durante sua execução.
Você pode compartilhar o script e modificá-lo, desde que você cite o autor principal do projeto.
Versão 2 - Enviado por Iago Lira em 10/07/2018
Changelog: - Alguns comandos inseridos erroneamente foram removidos.
- Melhorias em geral.
Download 1531229845.bibliadw.sh
#!/bin/bash #+-------------------------------------------------------+ #|Program: Bíblia DW | #|Version: 1.0.3 | #|Autor: Francisco Iago Lira Passos | #|GitHub: https://github.com/iagolirapasssos/biblia-bash | #+-------------------------------------------------------+ export site="https://www.bibliaonline.com.br" export dirat="antigo-testamento" export dirnt="novo-testamento" #Salta para uma coluna e linha function jmp() { tput cup $1 $2 } #---------------- #Versão bíblica function versaob() { echo " +----------------------------------------+ | Escolha uma das versões | | | | [1] Almeida Corrigida Fiel (ACF) | | [2] Nova Versão Internacional (NVI) | | [3] Sociedade Bíblica Britânica (SBB) | | [4] Versão Católica (VC) | +----------------------------------------+" read -p " Digite o índice correspondente: " vsb unset abv case $vsb in 1) abv="acf" ;; 2) abv="nvi" ;; 3) abv="tb" ;; 4) abv="vc" ;; esac } #------------------- #Antigo testamento function vt() { case "$1" in 1) imax=50 livro="Gênesis" abv="gn" ;; 2) imax=40 livro="Êxodo" abv="ex" ;; 3) imax=27 livro="Levíticos" abv="lv" ;; 4) imax=36 livro="Números" abv="nm" ;; 5) imax=34 livro="Deuteronômio" abv="dt" ;; 6) imax=24 livro="Josué" abv="js" ;; 7) imax=21 livro="Juízes" abv="jz" ;; 8) imax=4 livro="Rute" abv="rt" ;; 9) imax=31 livro="1Samuel" abv="1sm" ;; 10) imax=24 livro="2Samuel" abv="2sm" ;; 11) imax=22 livro="1Reis" abv="1rs" ;; 12) imax=25 livro="2Reis" abv="2rs" ;; 13) imax=29 livro="1Crônicas" abv="1cr" ;; 14) imax=36 livro="2Crônicas" abv="2cr" ;; 15) imax=10 livro="Esdras" abv="ed" ;; 16) imax=13 livro="Neemias" abv="ne" ;; 17) imax=10 livro="Ester" abv="et" ;; 18) imax=42 livro="Jó" abv="jó" ;; 19) imax=150 livro="Salmos" abv="sl" ;; 20) imax=31 livro="Provérbios" abv="pv" ;; 21) imax=12 livro="Eclesiastes" abv="ec" ;; 22) imax=8 livro="Cânticos" abv="ct" ;; 23) imax=66 livro="Isaías" abv="is" ;; 24) imax=52 livro="jeremias" abv="jr" ;; 25) imax=5 livro="Lamentações" abv="lm" ;; 26) imax=48 livro="Ezequiel" abv="ez" ;; 27) imax=12 livro="Daniel" abv="dn" ;; 28) imax=14 livro="Oséias" abv="os" ;; 29) imax=3 livro="Joel" abv="jl" ;; 30) imax=9 livro="Amós" abv="am" ;; 31) imax=1 livro="Obadias" abv="ob" ;; 32) imax=4 livro="Jonas" abv="jn" ;; 33) imax=7 livro="Miqueias" abv="mq" ;; 34) imax=3 livro="Naum" abv="na" ;; 35) imax=3 livro="Habacuque" abv="hc" ;; 36) imax=3 livro="Sofonias" abv="sf" ;; 37) imax=2 livro="Ageu" abv="ag" ;; 38) imax=14 livro="Zacarias" abv="zc" ;; 39) imax=4 livro="Malaquias" abv="ml" ;; *) echo "Entre com outro número!" ;; esac case $3 in 1) bb="acf" ;; 2) bb="nvi" ;; 3) bb="tb" ;; 4) bb="vc" ;; *) vtm ;; esac if [ "$2" = "1" ]; then vtb="at" builddir "$imax" "$abv" "$vtb" "$livro" "$bb" elif [ "$2" = "2" ]; then vtb="at" menuler "$abv" "$vtb" "$livro" "$bb" fi } #--------------- #Novo testamento function nt() { case "$1" in 1) imax=28 livro="Mateus" abv="mt" ;; 2) imax=16 livro="Marcos" abv="mc" ;; 3) imax=24 livro="Lucas" abv="lc" ;; 4) imax=21 livro="João" abv="jo" ;; 5) imax=28 livro="Atos" abv="atos" ;; 6) imax=16 livro="Romanos" abv="rm" ;; 7) imax=16 livro="1Coríntios" abv="1co" ;; 8) imax=13 livro="2Coríntios" abv="2co" ;; 9) imax=6 livro="Gálatas" abv="gl" ;; 10) imax=6 livro="Efésios" abv="ef" ;; 11) imax=4 livro="Filipenses" abv="fp" ;; 12) imax=4 livro="Colossenses" abv="cl" ;; 13) imax=5 livro="1Tessalonicenses" abv="1ts" ;; 14) imax=3 livro="2Tessalonicenses" abv="2ts" ;; 15) imax=6 livro="1Timóteo" abv="1tm" ;; 16) imax=4 livro="2Timóteo" abv="2tm" ;; 17) imax=3 livro="Tito" abv="tt" ;; 18) imax=1 livro="Filemom" abv="fm" ;; 19) imax=13 livro="Hebreus" abv="hb" ;; 20) imax=5 livro="Tiago" abv="tg" ;; 21) imax=5 livro="1Pedro" abv="1pe" ;; 22) imax=3 livro="2Pedro" abv="2pe" ;; 23) imax=5 livro="1João" abv="1jo" ;; 24) imax=1 livro="2João" abv="2jo" ;; 25) imax=1 livro="3João" abv="3jo" ;; 26) imax=1 livro="Judas" abv="jd" ;; 27) imax=22 livro="Apocalipse" abv="ap" ;; *) echo "Entre com outro número!" ;; esac case $3 in 1) bb="acf" ;; 2) bb="nvi" ;; 3) bb="tb" ;; 4) bb="vc" ;; *) ntm ;; esac if [ "$2" = "1" ]; then ntb="nt" builddir $imax "$abv" "$ntb" "$livro" "$bb" elif [ "$2" = "2" ]; then ntb="nt" menuler "$abv" "$ntb" "$livro" "$bb" fi } #--------------- #antigo testamento function atm() { clear echo " +-------------------------------------------------------+ | A N T I G O T E S T A M E N T O | +-------------------------------------------------------+ | [01] Gn [02] Ex [03] Lv [04] Nm [05] Dt | | [06] Js [07] Jz [08] Rt [09] 1Sm [10] 2Sm | | [11] 1Rs [12] 2Rs [13] 1Cr [14] 2Cr [15] ed | | [16] Ne [17] Et [18] Jó [19] Sl [20] Pv | | [21] Ec [22] Ct [23] Is [24] Jr [25] Lm | | [26] Ez [27] Dn [28] Os [29] Jl [30] Am | | [31]-Ob [32] Jn [33] Mq [34] Na [35] Hc | | [36] Sf [37] Ag [38] Zc [39] Ml | +-------------------------------------------------------+" read -p " Deseja baixar(1) ou ler(2) os livros? " bl echo if [ $bl = 1 ]; then read -p " Você irá baixar um (1) ou vários livros (2)? " bv case $bv in 1) versaob read -p " Escolha o livro pelo índice (ex.: 23): " a vt $a $bl "$vsb" menu ;; 2) versaob read -p " Digite o intervalo a ser baixado (ex.1 39): " a b for (( j=$a; j<=$b; j++ )) do vt $j $bl "$vsb" done menu ;; *) echo " Opção inválida! Digite '0' ou '1'." ;; esac elif [ $bl = 2 ]; then versaob read -p " Escolha o livro pelo índice (ex.: 23): " a vt $a $bl "$vsb" else atm fi } #----------------- #novo testamento function ntm() { clear echo " +-------------------------------------------------------+ | N O V O T E S T A M E N T O | +-------------------------------------------------------+ | [01] Mt [02] Mc [03] Lc [04] Jo [05] At | | [06] Rm [07] 1Co [08] 2Co [09] Gl [10] Ef | | [11] Fp [12] Cl [13] 1Ts [14] 2Ts [15] 1Tm | | [16] 2Tm [17] Tt [18] Fm [19] Hb [20] Tg | | [21] 1Pe [22] 2Pe [23] 1Jo [24] 2Jo [25] 3Jo | | [26] Jd [27] Ap | +-------------------------------------------------------+" read -p " Deseja baixar(1) ou ler(2) os livros? " bl if [ "$bl" = "1" ]; then read -p " Você irá baixar um (1) ou vários livros (2)? " bv case $bv in 1) versaob read -p " Escolha o livro pelo índice (ex.: 23): " a nt $a $bl $vsb menu ;; 2) versaob read -p " Digite o intervalo a ser baixado (ex.1 27): " a b for (( j=$a; j<=$b; j++ )) do nt $j $bl "$vsb" done menu ;; *) echo " Opção inválida! Digite '0' ou '1'." ;; esac elif [ $bl = 2 ]; then versaob read -p " Escolha o livro pelo índice (ex.: 23): " a nt $a $bl $vsb else ntm fi } #----------------- #Limpa linha function clearline() { jmp "$1" "$2" ind=$(("$3")) for (( i=1; i<"$ind"; i++ )); do printf '%.s '; done } #----------------- #barra progresso function progresso() { clear ini=2 imax=51 per=$(echo "scale=0; ($1*50)/$2" | bc) per2=$((2 * $per)) jmp "$ini" 0 echo "[" jmp "$ini" "$(($imax))" echo "][ "$per2"% ]" echo "Baixando o livro de $3..." clearline "$ini" 1 "$per" jmp "$ini" 1 for (( i=0; i<$per; i++ )); do printf '%.s='; done echo } #----------------- #construir diretorio function builddir() { [[ -d "$5" ]] || mkdir "$5" [[ -d "$5"/at ]] || mkdir "$5"/at [[ -d "$5" ]] || mkdir "$5" [[ -d "$5"/nt ]] || mkdir "$5"/nt buildbook $1 "$2" "$3" "$5" "$4" } #----------------- #Detectar a tecla up, dw e zero function key() { keyup='\[A' keydown='\[B' keyzero='0' SUCCESSO=0 read -n3 key # Ler 3 caracteres echo -n "$key" | grep "$keyup" #verifica se o codigo do caract. foi detectado if [ "$?" -eq "$SUCCESSO" ] then keyud=1 fi echo -n "$key" | grep "$keydown" if [ "$?" -eq "$SUCCESSO" ] then keyud=2 fi echo -n "$key" | grep "$keyzero" if [ "$?" -eq "$SUCCESSO" ] then keyud=0 fi } #----------------- #construir livro function buildbook() { livro="$4"/"$3"/"$2" [[ -f "$livro" ]] && rm -f "$livro" for (( k=1; k<=$1; k++ )) do progresso $k $1 "$5" wget -qO file "$site"/"$4"/"$2"/"$k" grep -oP '(?<=osisID=\\\").*(</verse>)' file |\ sed 's/\<verse osisID=\\\"/\n/g; s/[/\><]//g; s/"/ /g; s/"\|verse//g; s/—/-/g' |\ sed '1d; s/\./@ /; s/.*@//g; s/.//' |\ sed -e "s/^/$2 /g; s/^[a-zA-Z]/\U&/g" >> "$livro" done [[ -f file ]] && rm -f file } #----------------- #Gerenciar livro function lerlivro() { book="$4"/"$2"/"$1" #Diretorio do livro linebook=$(wc -l "$book" | sed 's/[^0-9]//g') #numero de linhas do livro unset i i=1 read -p " Quantas linhas você deseja ler por vez? " lpv while : do clear echo " +------------------------------+ |Tecle a seta para cima ou | |a tecla para baixo para | |avançar ou voltar uma linha | +------------------------------| | | | [0] Ir ao menu | | | +------------------------------+ Linha "$i" de "$linebook"" if [ `which fmt` ]; then grep -oP '(?<=[a-zA-Z] ).*(?=$)' "$book" | head -"$i" |\ tail -n "$lpv" | sed 's/¶//; s/$/\n/' | fmt -w 90 elif [ `which fold` ]; then grep -oP '(?<=[a-zA-Z] ).*(?=$)' "$book" | head -"$i" |\ tail -n "$lpv" | sed 's/¶//; s/$/\n/' | fold -s -w90 else grep -oP '(?<=[a-zA-Z] ).*(?=$)' "$book" | head -"$i" |\ tail -n "$lpv" | sed 's/¶//; s/$/\n/' | fold -s -w90 fi key #chama a funcao key if [ "$keyud" = 2 ]; then let i="$i"+1 elif [ "$keyud" = 1 ] && [ "$i" > 1 ]; then let i=$i-1 elif [ "$keyud" = 1 ] && [ "$i" = 1 ]; then i=1 elif [ "$keyud" = 0 ]; then menuler "$1" "$2" "$3" "$4" fi #Nao pode passar do maximo [[ "$i" -gt "$linebook" ]] && i="$linebook" #Nao pode ser menor que o minimo [[ "$i" -lt 1 ]] && i=1 done } #----------------- #Gera dados function gerardados() { arquivo1="$4/$3-dados-pesquisa-$1.txt" case "$3" in "acf") versao="Almeida Corrigida e Revista" ;; "nvi") versao="Nova Versão Internacional" ;; "tb") versao="Sociedade Bíblica Britânica" ;; "vc") versao="Versão Católica" ;; esac echo " ====== DADOS DA PESQUISA ====== Palavras-chave: $1 Ocorrências: $2 Versão bíblica: $versao Data da pesquisa: `date` ===================== " > "$arquivo1" } #----------------- #Buscar palavra(s) function encontrar() { unset book dirpesq="pesquisa" #versão/at-nt/livro [[ "$5" != "1" ]] && book="$3/$4" #Diretorio do livro [[ "$5" = "1" ]] && book="$3"/"$4"/"$6" #Somente um livro words=($1) n1=0 #fixo n2=$2 #fixo flag1=0 #flag cont1=0 #contador cont2=0 #contador i=0 #contador while : do for (( j=$n1; j<=$n2; j++ )) do [[ "$j" = "$n2" ]] && { unset flag1; flag1=$i; } [[ "$i" > "$n2" ]] && { unset i; i=0; } keys[$j]=$(echo ${words[$i]}"*.*") let i=$i+1 done if [ `echo ${keys[@]} | wc -w` > 1 ]; then search="$(echo ${keys[@]} | sed 's/ //g; s/\*\.\**.$//g')" unformated="$(echo "$search" | sed 's/\*\.\*/; /')" else search="$(echo ${keys[@]} | sed 's/ //g')" unformated="$search" fi if [ `which fmt` ]; then [ -d pesquisa ] || mkdir pesquisa grep --color=always -wrE "$search" "$book" | sed 's/¶//; s/$/\n/' |\ fmt -w 100 > pesquisa/"$unformated".txt ocorrencias=$(bc -l <<< "`grep -wcrE "$search" "$book" |\ sed 's/.*://' | tr '\n' '+' | sed 's/+*.$//g'`") let cont2=$cont2+$ocorrencias else [ -d pesquisa ] || mkdir pesquisa #Irá pesquisa por 'search' grep --color=always -wrE "$search" "$book" |\ sed 's/¶//; s/$/\n/' > pesquisa/"$unformated".txt #Numero de ocorrencias ocorrencias=$(bc -l <<< "`grep -wcrE "$search" "$book" |\ sed 's/.*://' | tr '\n' '+' | sed 's/+*.$//g'`") #Quantidade total de ocorrencias let cont2=$cont2+$ocorrencias fi echo $cont2 gerardados "$unformated" $cont2 "$3" "$dirpesq" i=$flag1 [[ $cont1 -le $n2 ]] && break let cont1=$cont1+1 done clear #Mostra a resposta da pesquisa cat pesquisa/"$unformated".txt #Mostra os dados da pesquisa cat "$arquivo1" } function buscar() { clear echo " +----------------------------------------------------------------+ | A busca é 'case sensitive', ou seja, Deus é diferente de deus. | +----------------------------------------------------------------+ | A seguinte entradas é válida: Deus terra Canaã | | As três palavras serão permutadas e a busca será eficiente | | | +----------------------------------------------------------------+ " read -p " Digite a(s) palavra(s) a ser(em) buscada(s): " keywords palavras=($keywords) #Vetor palavras numpalavras=${#palavras[*]} #Número de palavras contador=$(($numpalavras-1)) #Fim do loop if [[ "$4" = "1" ]]; then read -p " Você deseja procurar no AT(1) ou NT(2) testamento? " resposta1 case "$resposta1" in 1) unset resposta1 resposta1="at" #versao livro abreviação flag encontrar "$keywords" $contador "$1" "$resposta1" 0 "$3" ;; 2) unset resposta1 resposta1="nt" #versao livro abreviação flag encontrar "$keywords" $contador "$1" "$resposta1" 0 "$3" ;; *) buscar "$1" "$2" "$3" "$4" ;; esac else resposta1="$2" #versao livro abreviação flag encontrar "$keywords" $contador "$1" "$resposta1" 1 "$3" fi } #----------------- #Menu de leitura function menuler(){ clear echo " Livro de "$3" +------------------------------+ | MENU DE LEITURA | | | | [1] Ler livro | | [2] Pesquisar palavra(s) | | [0] Voltar ao menu principal | | | +------------------------------+" read -p " Digite a opção desejada: " opc echo case "$opc" in 1) #abreviação livro livro-extenso versão lerlivro "$1" "$2" "$3" "$4" ;; 2) #versao livro abreviação flag buscar "$4" "$2" "$1" 0 ;; 0) menu ;; *) echo "Digite um índice válido!" sleep 0.5 #abreviação livro livro-extenso versão menuler "$1" "$2" "$3" "$4" ;; esac } #----------------- #Menu function menu() { clear echo " +--------------------------------+ | NVI- Nova Versão Internacional | |--------------------------------| | | | [1] Velho testamento (VT) | | [2] Novo testamento (NT) | | [3] Buscar palavra(s) | | [0] Sair (Ctrl+C) | | | +--------------------------------+" read -p " Escolha o índice correspondente: " lv case "$lv" in 1) atm ;; 2) ntm ;; 3) clear versaob #versao livro abreviação flag buscar "$abv" 0 0 1 ;; 0) exit; echo ;; *) menu ;; esac } #----------------- #chama menu menu #chama menu
Relatório de suprimentos da empresa
tirinha-0.5.sh : Baixa as tirinhas da Ilustrada da Folha de São Paulo
Criando pdf para impressão de livros
Nenhum comentário foi encontrado.
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
O que esta havendo com o mercado de ti? (8)
Não consigo cadastrar nenhuma conta online (4)
Hotspot Mikrotik nao carrega pagina de login. (0)