Suponha que no diretório /home/uerj/teste existam os subdire...

Próximas questões
Com base no mesmo assunto
Ano: 2015 Banca: SRH Órgão: UERJ Prova: SRH - 2015 - UERJ - Analista de Sistemas |
Q483288 Programação
Suponha que no diretório /home/uerj/teste existam os subdiretórios d1, d2, d3, d4 e d5 e que, em cada um deles, exista um arquivo com o nome a.txt. Deseja-se fazer um script que mova o arquivo a.txt desses subdiretórios para o diretório /home/uerj/teste. Como todos os arquivos possuem o mesmo nome, deve-se renomeá-lo e adicionar o número do diretório ao nome do arquivo. Por exemplo, o arquivo /home/uerj/teste/d1/a.txt será movido para /home/uerj/teste/a1.txt enquanto que o arquivo /home/uerj/teste/d3/a.txt será movido para /home/uerj/teste/a3.txt.
O código do script que realiza esse procedimento é:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: C

A questão aborda os conceitos de manipulação de arquivos e diretórios utilizando um script em shell, mais especificamente no Bash (Bourne Again SHell). Ela requer o conhecimento de como criar laços de repetição com a estrutura for, a sintaxe para expansão de variáveis e a utilização do comando mv para mover e renomear arquivos.

Para resolver a questão, é necessário compreender como o laço de repetição for funciona no Bash, que é usado para executar um bloco de comandos várias vezes. A sintaxe for ((i=1;i<6;i++)) inicializa a variável i com o valor 1 e incrementa-a até que seja menor que 6, o que implica que o corpo do loop será executado para os valores de i de 1 a 5, correspondendo aos diretórios d1 a d5.

Além disso, é essencial entender a sintaxe da expansão de variáveis em strings, indicada por ${i}, que será substituída pelo valor atual da variável i durante cada iteração do loop. Assim, /home/uerj/teste/d${i}/a.txt será expandido para os caminhos dos arquivos dentro dos subdiretórios correspondentes.

O comando mv, utilizado para mover (ou renomear) arquivos, necessita de dois argumentos: o caminho do arquivo fonte e o caminho do arquivo destino. No script, o uso de mv /home/uerj/teste/d${i}/a.txt /home/uerj/teste/a${i}.txt moverá e renomeará cada arquivo a.txt do subdiretório d${i} para o diretório /home/uerj/teste/ adicionando o número do diretório ao nome do arquivo.

A razão pela qual a Alternativa C é correta deve-se ao fato de que ela inclui todos os elementos necessários para a execução do script desejado: o loop correto com a condição i<6, que assegura que os diretórios d1 até d5 sejam inclusos, o uso do ponto e vírgula para separar os comandos dentro do loop e a palavra-chave do para iniciar o bloco de comandos, seguida pela palavra-chave done para indicar o fim do bloco de comandos do for. A alternativa C é a única que possui a sintaxe correta para um script Bash que realiza a tarefa descrita.

Portanto, é essencial que você tenha uma compreensão sólida de como os laços for funcionam no Bash, assim como a manipulação de strings com variáveis e o comando mv, para resolver essa questão e para trabalhar eficientemente com scripts de shell em geral.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Apenas pela sintaxe do comando é possível matar essa questão sem a necessidade de analisar por completo o código

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo