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 : [email protected] # 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.
