[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.
- resolvido o problema do case e shift,
edmarssouza <=