shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Projeto - dry-shell


From: Alysson Azevedo
Subject: Re: [shell-script] Projeto - dry-shell
Date: Wed, 9 May 2018 15:13:34 -0300

Vi ali que tem o os.file.compress, eu tenho o extract:

extract() {
    if [ -f $1 ] ; then
        case $1 in
            *.tar.bz2)
                tar xvjf $1;;
            *.tar.gz)
                tar xvzf $1;;
            *.bz2)
                bunzip2 $1;;
            *.rar)
                unrar x $1;;
            *.gz)
                gunzip $1;;
            *.tar)
                tar xvf $1;;
            *.tbz2)
                tar xvjf $1;;
            *.tgz)
                tar xvzf $1;;
            *.zip)
                unzip $1;;
            *.Z)
                uncompress $1;;
            *.7z)
                7z x $1;;
            *)
                echo "'$1' cannot be extracted via >extract<";;
        esac
    else
        echo "'$1' is not a valid file"
    fi
}

Obs: Nem sei se é a forma mais eficiente, mas veio desse link [1] e eu não quis alterar.
1: https://github.com/jdavis/zsh-files/blob/master/functions/functions.zsh


Alysson Azevedo
Sócio Fundador / CTO
_______

Rx Tecnologia & Educação
address@hidden |  +55 41 99954-7451

Em 9 de maio de 2018 14:54, 'Julio C. Neves' address@hidden [shell-script] <address@hidden> escreveu:
 

Mais duas interessantes. Só não são Shell puro pq usam o cmd tput e wc (o wc pode até ser evitado mas acho que o wc -L deve ser mais veloz que ler linha a linha para ver o tamanho da maior):

function DesenhaCaixa
{
        #  Desenha uma caixa
        #+     1o. parâmetro: Linha
        #+     2o. parâmetro: Coluna
        #+     3o. parâmetro: Altura
        #+     4o. parâmetro: Largura
    local i
    local Largura=$4
    printf -v Linha "%${Largura}s" ' '     # Cria $Largura espaços em $Linha
    printf -v Traco "\e(0\x71\e(B"         # Põe um traço semigráfico em $Traco
    tput cup $1 $2; printf "\e(0\x6c\e(B"  # Canto superior esquerdo
    echo -n ${Linha// /$Traco}             # Troca todos os espaços de $Linha por $Traco
    printf "\e(0\x6b\e(B\n"                # Canto superior direito
    for  ((i=1; i<=$3; i++))               # Construindo altura
    do
        tput cup $(($1+i)) $2 
        printf "\e(0\x78\e(B"               # Barra vertical esquerda
        printf %${Largura}s"\e(0\x78\e(B\n" # Barra vertical direita
    done
    printf -v linha "%${Largura}s" ' '
    printf -v traco "\e(0\x71\e(B"
    tput cup $(($1+i)) $2; printf "\e(0\x6d\e(B"
    echo -n ${Linha// /$Traco}             # Troca todos os espaços de $Linha por $Traco
    printf "\e(0\x6a\e(B\n"
}; export -f DesenhaCaixa

function DesenhaCaixaComTexto
{
        #  Desenha uma caixa
        #+     1o. parâmetro: Linha
        #+     2o. parâmetro: Coluna
        #+     3o. parâmetro: Texto que ficará na caixa (se quiser multilinha tem de mandar com os <ENTER> em $3)
    local i
    local Texto=$(echo -e "$3")
    local Largura=$(( $(wc -L <<< "$Texto") + 2))   # wc -L dá o tamanho da maior linha
    local Linhas                                    # Vetor que conterá as linhas (origem 1)
    for ((i=1; i<=$(wc -l <<< "$Texto"); i++))
    {
        Linhas[i]=$(head -$i <<< "$Texto" | tail -1)
    }
    printf -v Linha "%${Largura}s" ' '              # Cria $Largura espaços em $Linha
    printf -v Traco "\e(0\x71\e(B"                  # Põe um traço semigráfico em $Traco
    tput cup $1 $2; printf "\e(0\x6c\e(B"           # Canto superior esquerdo
    echo -n ${Linha// /$Traco}                      # Troca todos os espaços de $Linha por $Traco
    printf "\e(0\x6b\e(B\n"                         # Canto superior direito
    for  ((i=1; i<=$(wc -l <<< "$Texto"); i++))     # Construindo altura
    do
        tput cup $(($1+i)) $2
        printf "\e(0\x78\e(B ${Linhas[i]}"          # Barra vertical esquerda + texto
        tput cup $(($1+i)) $(($2 + Largura +1))
        printf "\e(0\x78\e(B"                       # Barra vertical direita
    done
    printf -v linha "%${Largura}s" ' '
    printf -v traco "\e(0\x71\e(B"
    tput cup $(($1+i)) $2; printf "\e(0\x6d\e(B"
    echo -n ${Linha// /$Traco}                      # Troca todos os espaços de $Linha por $Traco
    printf "\e(0\x6a\e(B\n"
}; export -f DesenhaCaixaComTexto


Abraços,
Julio

» Não tem tempo para fazer um curso presencial?
» Na sua cidade não tem nenhum bom curso de Linux?
» O treinamento está muito caro?
O melhor de todos em EAD é http://www.dicas-l.com.br/cursos/psl/

Damos treinamento em sua empresa com certificado
e nota fiscal por um preço, no mínimo, 50% abaixo
de qualquer curso.

​​
Nosso time de instrutores in company é formado somente por
autores
​ ​
de Best Sellers
​ ​
​laureados ​sobre os temas. P. exemplo:

Shell básico e Programação em Shell Julio Neves
Bacula Heitor Medrado
Zabbix Adail Host
Produção Gráfica e Videografismo Cadunico










Em 9 de maio de 2018 11:50, Enilton Angelim address@hidden [shell-script] <address@hidden.br> escreveu:
 

Pessoal, estou fazendo uma biblioteca de funções com foco em clean code, padrão de código, produtividade e praticidade. É um projeto novo, mas já possui alguns recursos.

Estou tentando fazer tudo de forma nativa (sempre que possivel), apenas usando comandos internos do shell. 


Espero que gostem e aceito sugestões xD




reply via email to

[Prev in Thread] Current Thread [Next in Thread]