Primeiro projeto [RESOLVIDO]

1. Primeiro projeto [RESOLVIDO]

wagner gabriel oliveira da silva
wagnerg22

(usa Ubuntu)

Enviado em 25/08/2022 - 20:54h

Sou novo com Shell script e estou com muita dificuldade com esse projeto, qualquer ajuda será bem vinda!

Se a quantidade de argumentos fornecida não for igual a 2, somente uma ou nenhuma:
Imprimir "Uso nome_do_script diretório_origem diretório_destino"
O nome do script deve ser pego de forma automática
Exemplo (se o script se chamar sync.sh) a mensagem será:
Uso sync.sh diretório_origem diretório_destino

O diretório de origem é especificado no argumento 1

O diretório de destino é especificado no argumento 2

Se o diretório de origem não existe
Imprimir "diretorio de origem nao encontrado: diretório_origem" "Encerrando execução"
Exemplo (se o diretório de origem fornecido for ~/sync_dir e o mesmo não existir) a
mensagem será:
diretorio de origem nao encontrado: ~/sync_dir
Encerrando execução
Imprimir "Sincronização iniciada"

Se o diretório de destino ainda não existe,
Até que diretório passe a existir
Imprimir "Aguardando conexão com destino: diretório_destino" "**********" infinitamente.
Os asteriscos devem aparecer um de cada vez a cada segundo
Exemplo (se o diretório de destino se chamar ~/backup) a mensagem será:
Aguardando conexão com destino: ~/backup
Aguardando criação ou montagem do diretório de destino (encerramento com CTRL+C)
Aguardando até que diretório de destino seja criado

(Passo 7) Listar arquivos contidos no diretório de origem e salvar em arquivo

Para cada arquivo dessa Lista
Se arquivo existe no destino
Se arquivo na origem é mais recente do que no destino
Imprimir "Atualizando tipo arquivo"
Copiar arquivo do diretório de origem para o diretório de destino
Caso contrário (se arquivo na origem não é mais recente que no destino)
Imprimir "Ignorando tipo arquivo"
Caso contrário (se arquivo não existe no destino)
Imprimir "Criando tipo arquivo"
Copiar arquivo do diretório de origem para o diretório de destino

Excluir arquivo com listagem de arquivos (criado no Passo 7)
Imprimir "Sincronizacao encerrada"


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 25/08/2022 - 23:21h

Boa noite.
Para aprender a resolver este e muito mais, recomendo:
https://aurelio.net/shell/canivete/ 

3. Variáveis especiais
4. Expansão de variáveis
5. Blocos e agrupamentos
6. if, for, select, while, until, case
7. Opções do comando test ou "["
----------------------------------------------------------------------------------------------------------------
Uma parte, a mais "critica", está pronta:
#!/usr/bin/env bash

C=0;
l=4;
cls=$(tput cols);
aster=$(printf "%${cls}s"|sed 'y/ /*/');
rc="\e[1;38m";yc='\e[1;33m';bc='\e[1;34m';fc="\e[m";
printf "\x1bc";

(("$#" != 2)) && { echo -e "${rc}Uso: $0 diretório_origem diretório_destino${fc}\n";exit;}
[ ! -e $1 ] && printf "Diretório de origem: ${1}, não encontrado.\nAguardando conexão com destino: $1\nSincronização iniciada:";

while [ ! -e $1 ] ;do
(($C%2==0)) && cor=${bc} || cor=${yc} ##perfumaria|enfeite
printf "\e[${l};1f${cor}${aster:0:$C}${fc}"
sleep 1;
(("$C" < "${cls}")) && C=$((C+1)) || { C=0;l=$(($l+1));}
done

echo "Listagem de ${1}:"
ls -1 ${1}/*.* > arqs_org.txt;


O restante é tranquilo.
com o laço:
while read line;do
##EXECUTE o TEST##
done<arqs_org.txt

É feita a leitura linha a linha do arquivo,
na var "$line", vc tem o nome do arquivo....


______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________


3. Re: Primeiro projeto [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 26/08/2022 - 22:30h

wagnerg22, espero que tenha entendido os comandos que sugeri.
Qquer duvida é só perguntar.
Obrigado pela "Melhor Resposta",
atualmente isso é muito raro aqui no fórum.... Rsrsrsrsrssr


______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts