Duvidas atividade - Criar um arquivo texto. [RESOLVIDO]

1. Duvidas atividade - Criar um arquivo texto. [RESOLVIDO]

Darcio Ramires de Lima
DarcioRamires

(usa Ubuntu)

Enviado em 26/03/2021 - 15:29h

Boa tarde galera sou novo aqui então não conheço muito o fórum.
Galera gostaria de saber se é possível alguém me explicar uma atividade que o professor passou hoje?
Comecei a estudar Linux esse semestre e estava até legal conhecer os comandos, porém agora o professor mudou a didática e não estou conseguindo entender. Ele passou esse exercício:

Criar um Shell script para que o usuário Linux crie um arquivo texto.
a) pedir o nome do arquivo;
b) garantir que o arquivo não exista ou seja apagado;
c) gravar o arquivo uma linha de cada vez até que usuários de Enter;
d) quando terminar todo o texto, mostrar o conteúdo do arquivo e quantas linhas ele tem.
Eu fiz esse inicio e daqui eu me perdi. O professor fez um código explicando mais me deixou mais confuso ainda! vou postar o código abaixo se alguém puder me explicar agradeço.
[code]#!/bin/bash
ls
cd text
echo “Digite seu texto e aperte Ctrl + Z para salvar”
echo “Digite o comando vi se quiser editar o texto e aperte a tecla "i"”
cat> text

#!/bin/bash
procura_arq()
{
local arq=$1
local dest=&2
if [ -e "sdir/sarq" ] && [-e "sdird/sarq" ]
then
mv "sdir/sarq" && -e "sdird/sarq"
echo "feito!"

else
printf " O arquivo &arq não existe no diretório&dirb ou o diretório $dird não existe! "
fi
}
clear
printf "Extensão do Arquivo: "
read ext
op='x'
while [ op -ne 'a' ] && [ op -ne 'o' ]
do
printf 'Diretório (a) tual ou (o) utro? : "
read op
done
if [ op -e 'o' ]
then
printf "Diretório de destino: "
read dird
else
printf "Diretório Atual: "
pwd
fi
for arquivo in *. "&exit"
do
procura_arq &arquivo
done



  


2. Re: Duvidas atividade - Criar um arquivo texto.

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 26/03/2021 - 18:22h

DarcioRamires escreveu:

Boa tarde galera sou novo aqui então não conheço muito o fórum.
Galera gostaria de saber se é possível alguém me explicar uma atividade que o professor passou hoje?
Comecei a estudar Linux esse semestre e estava até legal conhecer os comandos, porém agora o professor mudou a didática e não estou conseguindo entender. Ele passou esse exercício:

Criar um Shell script para que o usuário Linux crie um arquivo texto.
a) pedir o nome do arquivo;
b) garantir que o arquivo não exista ou seja apagado;
c) gravar o arquivo uma linha de cada vez até que usuários de Enter;
d) quando terminar todo o texto, mostrar o conteúdo do arquivo e quantas linhas ele tem.
Eu fiz esse inicio e daqui eu me perdi.
O professor fez um código explicando mais me deixou mais confuso ainda!
vou postar o código abaixo se alguém puder me explicar agradeço.
[code]#!/bin/bash
ls
cd text
echo “Digite seu texto e aperte Ctrl + Z para salvar”
echo “Digite o comando vi se quiser editar o texto e aperte a tecla "i"”
cat> text


#!/bin/bash
procura_arq() {
local arq=$1
local dest=&2
if [ -e "sdir/sarq" ] && [-e "sdird/sarq" ]
then
mv "sdir/sarq" && -e "sdird/sarq"
echo "feito!"

else
printf " O arquivo &arq não existe no diretório&dirb ou o diretório $dird não existe! "
fi
}
clear
printf "Extensão do Arquivo: "
read ext
op='x'
while [ op -ne 'a' ] && [ op -ne 'o' ]
do
printf 'Diretório (a) tual ou (o) utro? : "
read op
done
if [ op -e 'o' ]
then
printf "Diretório de destino: "
read dird
else
printf "Diretório Atual: "
pwd
fi

for arquivo in *. "&exit";do
procura_arq &arquivo
done



Muitos ERROS no SCRIPT do 'Professor',
Segue com os ERROS encontrados até o momento...
procura_arq() {
local arq=$1
local dest=&2 #Desconheço '&2' como "Variáveis especiais", provavelmente é $2, que não foi passada.
if [ -e "sdir/sarq" ] && [-e "sdird/sarq" ];then #Variáveis ERRADAS!
mv "sdir/sarq" && -e "sdird/sarq" #Variáveis ERRADAS! - mv para onde?
echo "feito!"
else
printf "O arquivo &arq não existe no diretório&dirb ou o diretório $dird não existe! " #&dirb?
fi
}

clear
#Se é para criar um arquivo de texto, isso não é necessário, pois a "ext" é "txt"
#printf "Extensão do Arquivo: " # Não é necessário, use a opção -p do read
read -p "Extensão do Arquivo: " ext

op='x'
#Solicita que você escolha "a" ou "o"
#Enquanto não digitar "a" ou "o" ficará pedindo...
#Corrigido, faltou $ em 'op'
while [ "$op" -ne 'a' ] && [ "$op" -ne 'o' ];do #ERRO, testando string ("letra") com expressão para testar NúMERO!
read -p "Diretório (a)tual ou (o)utro? : " op
done

#Corrigido, faltou $ em 'op'
#Só define a var dird se op=o,
#E usa dird de forma incorreta na função 'procura_arq'
if [ "$op" -e 'o' ];then #ERRO!!!!!
read -p "Diretório de destino: " dird
else
printf "Diretório Atual: $PWD"
fi

#Tem erros nesse laço.
#1 - *.
#2 - Chama a função procura_arq com um argumento
#e a função espera 2
for arquivo in *. "&exit";do
procura_arq &arquivo # &arquivo?????
done


O professor fez um código explicando mais me deixou mais confuso ainda!
Tantos erros que fica difícil.....
Eu também fiquei confuso.....
Darcio, não entendi esse item:
gravar o arquivo uma linha de cada vez até que usuários de Enter;
Gravar o que?
______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
______________________________________________________________________



3. Duvidas atividade - Criar um arquivo texto.

Darcio Ramires de Lima
DarcioRamires

(usa Ubuntu)

Enviado em 26/03/2021 - 20:23h


Marcelo Obrigado!
Também não sei! ele deu essas instruções e fez vários códigos até chegar nesse. Vou pedir para ele explicar novamente ou fazer o código que ele quer para demonstrar.


4. Re: Duvidas atividade - Criar um arquivo texto. [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 26/03/2021 - 20:34h


msoliver escreveu:

c) gravar o arquivo uma linha de cada vez até que usuários de Enter;

gravar o arquivo uma linha de cada vez até que usuários de Enter;
Gravar o que?


creio que "gravar o que" não venha ser o problema, acho que ele só pede a opção de o usuários poder gravar coisas ( de linha em linha ) ... um read -p até q x seja pressionado !!

------------------------------------------------------| Linux User #621728 |------------------------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------------------| Linux User #621728 |------------------------------------------------------




5. Duvidas atividade - Criar um arquivo texto.

Darcio Ramires de Lima
DarcioRamires

(usa Ubuntu)

Enviado em 26/03/2021 - 20:44h

Mauriciodez Obrigado! É isso que ele falou gravar uma linha de cada vez.


6. Re: Duvidas atividade - Criar um arquivo texto.

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 26/03/2021 - 22:15h

DarcioRamires escreveu:


Marcelo Obrigado!
Também não sei! ele deu essas instruções e fez vários códigos até chegar nesse. Vou pedir para ele explicar novamente ou fazer o código que ele quer para demonstrar.


Tô testando, jaja posto.....
-------------------------------------------------------------------------------------------------------
Testado e Funcionando:
-------------------------------------------------------------------------------------------------------

#!/usr/bin/env bash

#Usa o Diretório Atual
_dir="$PWD"

READ_ARQ() {
while :;do
read -p "Nome do arquivo, (sem ext): " arq #Pede o nome do arquivo
arq=${_dir}/${arq}.txt
if [ -e ${arq} ];then #Testa se arq informado já existe, caso positivo, solicita novamente.
echo -e "\nArquivo:$arq existe\n"
else
touch "$arq" ## Cria $arq.
[ -e ${arq} ] && echo -e "\nArquivo Criado em:\n${arq}\n" || { echo -e "Erro na criação do arquivo";exit;}
sudo bash -c "chattr +a ${arq}" ##Bloqueia exclusão
pegatexto;break; #chama próxima função e interrompe o laço
fi
done
}

pegatexto() {
echo -e "Digite o texto\nPara quando digitar [Enter], em uma linha VAZIA"
while read line;do
echo "$line" >> ${arq};
[[ "$line" == '' ]] && break; #Linha Vazia = ''
done
printf "\nConteúdo do Arquivo: ${arq}\n\n$(cat ${arq})\n\nLinhas: $(wc -l ${arq})"
}

#---------------------------------------------------------------------#
<<COMENTARIO
Criar um Shell script para que o usuário Linux crie um arquivo texto. ok
a) pedir o nome do arquivo; ok
b) garantir que o arquivo não exista ou seja apagado; ok
c) gravar o arquivo uma linha de cada vez até que usuários de Enter; ok
d) quando terminar todo o texto, mostrar o conteúdo do arquivo e quantas linhas ele tem. ok
COMENTARIO
#---------------------------------------------------------------------#
READ_ARQ
#FIM DO SCRIPT#


______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.




7. Duvidas atividade - Criar um arquivo texto.

Darcio Ramires de Lima
DarcioRamires

(usa Ubuntu)

Enviado em 29/03/2021 - 15:54h

Obrigado! ajudou muito e com os comentários facilitou o aprendizado dos comandos.
msoliver escreveu:

DarcioRamires escreveu:


Marcelo Obrigado!
Também não sei! ele deu essas instruções e fez vários códigos até chegar nesse. Vou pedir para ele explicar novamente ou fazer o código que ele quer para demonstrar.


Tô testando, jaja posto.....
-------------------------------------------------------------------------------------------------------
Testado e Funcionando:
-------------------------------------------------------------------------------------------------------

#!/usr/bin/env bash

#Usa o Diretório Atual
_dir="$PWD"

READ_ARQ() {
while :;do
read -p "Nome do arquivo, (sem ext): " arq #Pede o nome do arquivo
arq=${_dir}/${arq}.txt
if [ -e ${arq} ];then #Testa se arq informado já existe, caso positivo, solicita novamente.
echo -e "\nArquivo:$arq existe\n"
else
touch "$arq" ## Cria $arq.
[ -e ${arq} ] && echo -e "\nArquivo Criado em:\n${arq}\n" || { echo -e "Erro na criação do arquivo";exit;}
sudo bash -c "chattr +a ${arq}" ##Bloqueia exclusão
pegatexto;break; #chama próxima função e interrompe o laço
fi
done
}

pegatexto() {
echo -e "Digite o texto\nPara quando digitar [Enter], em uma linha VAZIA"
while read line;do
echo "$line" >> ${arq};
[[ "$line" == '' ]] && break; #Linha Vazia = ''
done
printf "\nConteúdo do Arquivo: ${arq}\n\n$(cat ${arq})\n\nLinhas: $(wc -l ${arq})"
}

#---------------------------------------------------------------------#
<<COMENTARIO
Criar um Shell script para que o usuário Linux crie um arquivo texto. ok
a) pedir o nome do arquivo; ok
b) garantir que o arquivo não exista ou seja apagado; ok
c) gravar o arquivo uma linha de cada vez até que usuários de Enter; ok
d) quando terminar todo o texto, mostrar o conteúdo do arquivo e quantas linhas ele tem. ok
COMENTARIO
#---------------------------------------------------------------------#
READ_ARQ
#FIM DO SCRIPT#


______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.










Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts