Será este o melhor script?

Iniciado por dlencastre, 22 de Julho de 2012, 17:50

tópico anterior - próximo tópico

dlencastre

Boas,
Preciso da vossa ajuda.

Sou um novato do linux e por isso há muita coisa que não sei.

Necessito de uma sequência de comandos que copie o ficheiro exame para um novo ficheiro sist_oper no directório user e elimine o ficheiro a



será este o melhor? ou o mais simples?
cp /etc/exame /home/user/sist_oper
rm /home/user/a

obrigado

Tota

Ola

Teria como postar o que já fez?

Isto evita ao forum "reinventar a roda". Além do fato de estimular aos outros usuarios a analisar sua abordagem.

[]'s

raidicar

Citação de: dlencastre online 22 de Julho de 2012, 17:50será este o melhor? ou o mais simples?
Sim, é o mais simples.

Para algo melhor e mais elaborado, vai da tua criatividade. Ex:
1 - Antes de copiar, verificar se o arquivo existe.
2 - Antes de remover, verificar se o arquivo existe.
3 - Depois de copiar, verificar e exibir uma mensagem na tela se a cópia foi bem sucedida.
4 - Antes de remover, perguntar se a pessoa deseja mesmo fazer isso.
5 - Pode pedir que o usuário insira o caminho e o arquivo que será removido.
etc...

if [ -e /etc/exame ]; then cp /etc/exame /home/user/sist_oper; else clear;echo "Erro ao Copiar: Arquivo Nao Existe."; fi
if [ -e /home/user/a ]; then rm -f /home/user/a; else clear;echo "Erro ao Remover: Arquivo Nao Existe."; fi

De qualquer forma, da maneira mais simples, são mesmo apenas essas duas linhas de comando, cp e rm.
Quem ama extremamente, deixa de viver em si e vive no que ama. Na vida três coisas são certas, o amor, a morte e o Linux !
Se Platão disse, então realmente sofremos de uma perigosa doença mental.

irtigor

Tá errado. Olhe com atenção

CitarNecessito de uma sequência de comandos que copie o ficheiro exame para um novo ficheiro sist_oper no directório user e elimine o ficheiro a

Você pode testar isso facilmente, mas qualquer dúvida, fale.

raidicar

Citação de: irtigor online 24 de Julho de 2012, 17:28Tá errado...

Onde?
Citação de: dlencastre online 22 de Julho de 2012, 17:50
cp /etc/exame /home/user/sist_oper #copia o ficheiro exame para um novo ficheiro sist_oper
rm /home/user/a #elimina o ficheiro a
Quem ama extremamente, deixa de viver em si e vive no que ama. Na vida três coisas são certas, o amor, a morte e o Linux !
Se Platão disse, então realmente sofremos de uma perigosa doença mental.

Tucotuco

Nao seria melhor utilizar o comando mv? Assim copia e apaga da directoria original
"Maria Lisboa, cidade mulher da minha vida"

raidicar

Citação de: Tucotuco online 26 de Julho de 2012, 06:49
Nao seria melhor utilizar o comando mv? Assim copia e apaga da directoria original
Parece que não, já que o arquivo que ele quer apagar (a) não é o arquivo que ele está copiando (exame), ao menos foi isso o que eu entendi pelo desenho! rsrsrs
Quem ama extremamente, deixa de viver em si e vive no que ama. Na vida três coisas são certas, o amor, a morte e o Linux !
Se Platão disse, então realmente sofremos de uma perigosa doença mental.

sigur

Citação de: irtigor online 24 de Julho de 2012, 17:28
Tá errado. Olhe com atenção

CitarNecessito de uma sequência de comandos que copie o ficheiro exame para um novo ficheiro sist_oper no directório user e elimine o ficheiro a

Você pode testar isso facilmente, mas qualquer dúvida, fale.

Opa, tire a curiosidade aqui, mostre onde está o erro. Será que o problema está no fato de não termos a garantia de que o ficheiro é novo?

irtigor

"sist_oper" não existe na imagem, o ficheiro precisa ser criado antes. A não ser que a intenção seja uma cópia com o nome "sist_oper".

sigur

Citação de: irtigor online 26 de Julho de 2012, 18:51
"sist_oper" não existe na imagem, o ficheiro precisa ser criado antes. A não ser que a intenção seja uma cópia com o nome "sist_oper".

Hum, então é mais ou menos o que pensei.

Quer dizer que, se o ficheiro já existe, independente do tipo de ficheiro, o comando faria com que esse ficheiro passasse a ser o copiado?

Agora, se não existe esse ficheiro, o comando faria uma cópia apenas com o nome sendo trocado?

Interessante.

raidicar

Citação de: irtigor online 26 de Julho de 2012, 18:51"sist_oper" não existe na imagem, o ficheiro precisa ser criado antes. A não ser que a intenção seja uma cópia com o nome "sist_oper".

Para uma cópia, não seria necessário apenas verificar se o ficheiro de origem existe e se o caminho de destino existe?
if [ -e /etc/exame ]; then cp /etc/exame /home/user/sist_oper; else clear;echo "Erro ao Copiar: Arquivo Nao Existe."; fi
Se o ficheiro exame existe, será copiado para /home/user/sist_oper, quer o ficheiro sist_oper exista ou não.
Se existe, será substituído.
Se não existe, será criado o ficheiro com esse nome.
Não entendi por que criar um ficheiro no destino para depois copiar um um ficheiro substituirá o ficheiro criado no destino.
Não entendi de que forma a pré-existência de sist_oper pode alterar de alguma forma o resultado do cp. Salvo que será solicitado confirmação para a substituição...
Acho que eu fiquei meio perdido... De novo rsrsrs. Tem acontecido muito isso nessa semana...

Citação de: sigur online 27 de Julho de 2012, 10:18
Agora, se não existe esse ficheiro, o comando faria uma cópia apenas com o nome sendo trocado?
Exato, Se não existe, será criado uma cópia do ficheiro, apenas trocando o nome.
Se existe, será substituído. Então, também podemos dizer que será criado uma cópia do ficheiro, apenas trocando o nome.
No final, o resultado será o mesmo, quer o ficheiro sist_oper exista ou não.
Quem ama extremamente, deixa de viver em si e vive no que ama. Na vida três coisas são certas, o amor, a morte e o Linux !
Se Platão disse, então realmente sofremos de uma perigosa doença mental.