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

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

resolvido o problema do case e shift


From: edmarssouza
Subject: resolvido o problema do case e shift
Date: Sat, 03 Jan 2009 17:55:12 -0000
User-agent: eGroups-EW/0.82

E ai galera, consigue resolver o problema do case e shift.
Graças a ajuda do Elder Marco, ai cara muito obrigado.
Como sempre fui de pedi ajuda aqui na lista, hoje vou contribui
com o código que acabei de escrever com a ajuda do Elder Marco.
Eu escrecri esse programa para um mini linux totalmente em modo texto,
voltado tanto a mini servidor como para usuario avançado, visto
que o sistema todo é em modo texto. Com 34MB, lançarei na net em 
breve,
não era esse meu objetivo, mais fazer o que. É o seguinte o script é
para usar a lixeira em modo texto, com o script pode-se: apagar um 
arquivo
(enviando para lixeira), lista os arquivos da lixeira, recupera e 
esvazia:


#!/bin/sh
# Envia, lista, recupera e esvazia arquivo(s)/diretorio(s) da lixeira
#
# Autor   : Edmar de Souza
# E-mail  : address@hidden
# Licensa : GNU General Public License v2
# Versao  : 1.0
# Data    : 02/01/2009

# Define path de alguns comandos
mkdir=$(which mkdir); echo=$(which echo); ls=$(which ls); mv=$(which 
mv)
rm=$(which rm); wc=$(which wc); sed=$(which sed)

# Cria o diretorio que sera utilizado como lixeira
$mkdir -p "$HOME/.lixeira"

status() {
local variavel=$?
if [ "$variavel" = "0" ]; then
$echo -ne "\033[80G[ \033[32;1mOK\033[m ]"; $echo
else
$echo -ne "\\033[80G[ \033[31;1mFalha\033[m ]"; $echo
fi
}

# Ajuda do programa
help() {
$echo -e " Envia arquivo(s)/diretorio(s) deletados para lixeira

\033[37;1m Usage:\033[0m ${0##*/} opcao arquivo/diretorio

 Opcao:
       -l, --lista     Lista os arquivo(s)/diretorio(s), tamanho(s), 
tipo(s) na lixeira
       -d, --deleta    Envia um arquivo ou diretorio para lixeira
       -r, --recupera  Recupera um ou mais arquivos da lixeira
       -e, --esvazia   Esvazia a lixeira
       -h, --help      Imprime mensagem de ajuda do programa
       -v, --versao    Imprime a versao do programa
"
exit 0
}

# Lista os arquivos/diretorios da lixeira, por tamanho, por tipo e 
ordena do maior
# para o menor
lista() {
$echo " Existe(m) $($ls "$HOME/.lixeira" | $wc -l) arquivo
(s)/diretorio(s) na lixeira:"
$ls -lsSF "$HOME/.lixeira" | $sed '/^total [[:digit:]]\{1,\}$/d'
exit 0
}

# Pergunta ao usuario se o mesmo quer apagar os arquivos/diretorios 
da lixeira
esvazia() {
local simno
read -p " Tem certeza que deseja esvazia a lixeira (s/n)? " simno
case "$simno" in
     [Ss]) $echo -n " Esvaziando a lixeira ..."
           $rm -rf $HOME/.lixeira/* && status
           ;;
     [Nn]) $echo -e " Esvaziamento da lixeira cancelada ..."
           ;;
esac
exit 0
}

# Imprime a versao do programa
versao() {
$echo -e " del v1.0 - 02/01/2009"
exit 0
}

# Se existir menos do que 1 parametro na linha de comando, executa a 
ajuda do programa 
[ "$#" -lt "1" ] && help

if [ "$#" -gt "0" ]; then 
  case "$1" in
    -[Hh]|--[Hh][Ee][Ll][Pp])
               help
               ;;
    -[Ll]|--[Ll][Ii][Ss][Tt][Aa])
               lista
               ;;
    -[Ee]|--[Ee][Ss][Vv][Aa][Zz][Ii][Aa])
               esvazia
               ;;
    -[Vv]|--[Vv][Ee][Rr][Ss][Aa][Oo])
               versao
               ;;
    -[Dd]|--[Dd][Ee][Ll][Ee][Tt][Aa])
# Se o usuario escolher a opcao -d|--deleta e nao indicar um 
argumento, o programa envia
# uma mensagem ao mesmo, pedindo o argumento 
               if [ -z "$2" ]; then
                       $echo "O argumento para a opcao $1 esta vazia"
                       exit
               fi
# Esse shift tira da linha de comando, por exemplo, o parametro -d|--
deleta deixando apenas
# os argumentos, que seram processados
               shift
# Move cada argumento passado pelo usuario para a lixeira localizado 
no diretorio
# pessoal do usuario
               $mv -f $* "$HOME/.lixeira"
               ;;
    -[Rr]|--[Rr][Ee][Cc][Uu][Pp][Ee][Rr][Aa]) 
               if [ -z "$2" ]; then
                       $echo "O argumento para a opcao $1 esta vazia"
                       exit
               fi
               shift
# Cria o diretorio para onde os arquivos recuperados irao
               $mkdir -p "$HOME/.recuperado"
               cd "$HOME/.lixeira"
               $echo -n "Recuperando arquivo(s)/diretorio(s) para: 
$HOME/.recuperado"
               $mv -f $* "$HOME/.recuperado"
               status
               ;;
# Se o usuario escolher alguma opcao que nao esteja no case, sera 
imprimido a ajuda do programa
    *)         help 
               ;;
  esac
 shift
fi


Qualquer dúvida posta ai que eu respondo, estou aceitando critica, 
sugestões, qualquer coisa. Eu falei Elder seu teimoso que não era as 
aspas. rsrs. brincadeira obrigadão cara. Valeu galera.




reply via email to

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