Questão nº 51
Questão de Tecnologia da Informação · FGV DATAPREV 2024 (nº 51)
Considere os seguintes trechos de código, um em PowerShell e outro em Shell Script (Bash), que possuem a mesma finalidade:

Ambos os códigos mostrados realizam a cópia de arquivos com a extensão .txt de uma pasta de origem para uma pasta de backup. Considerando o comportamento esperado de cada script, assinale a opção correta.
- AO código PowerShell pode gerar um erro se a pasta de backup não existir, enquanto o script Bash irá criar a pasta automaticamente.
- BO código em PowerShell pode ser executado diretamente no Windows sem necessidade de software adicional, enquanto o código em Bash requer a instalação de um ambiente Unix no Windows. (alternativa correta)
- CAmbos os scripts estão incorretos, pois os comandos Copy-Item e cp não realizam cópia recursiva.
- DO código Bash é mais seguro que o PowerShell, pois impede o sobrescrita de arquivos no destino sem confirmação.
- EO código PowerShell possui melhor desempenho que o Bash, pois é uma linguagem compilada.
Resposta comentada
Gabarito Alternativa B
PowerShell é uma linguagem de script da Microsoft, nativa do Windows, que permite automatizar tarefas e gerenciar sistemas. Bash (Bourne Again SHell) é um interpretador de comandos e linguagem de script comum em sistemas Unix-like (Linux, macOS) e que pode ser usado no Windows através de ambientes específicos.
- (A) Incorreta: Ambos os comandos,
Copy-Item(PowerShell) ecp(Bash), não criam a pasta de destino automaticamente por padrão. Se a pastaC:\Backupou/mnt/c/Backupnão existir, ambos os scripts gerarão um erro. Para criar a pasta, seria necessário um comando adicional comoNew-Item -ItemType Directory -Force "C:\Backup"no PowerShell oumkdir -p /mnt/c/Backupno Bash. - (B) Correta: O PowerShell é uma ferramenta nativa do sistema operacional Windows, vindo pré-instalado na maioria das versões modernas, o que permite a execução direta de seus scripts. Já o Bash é um shell Unix-like e, para ser executado no Windows, requer a instalação de um ambiente compatível, como o WSL (Windows Subsystem for Linux), Git Bash, Cygwin, ou similar.
- (C) Incorreta: Os scripts estão corretos para a finalidade de copiar arquivos com a extensão
.txt. A cópia recursiva (-Recurseno PowerShell ou-rno Bash) é necessária apenas para copiar diretórios e seus conteúdos, o que não é o caso aqui, pois o objetivo é copiar arquivos específicos. - (D) Incorreta: Armadilha da banca: Tanto o
cpno Bash quanto oCopy-Itemno PowerShell, por padrão, sobrescrevem arquivos existentes no destino sem pedir confirmação. Para evitar a sobrescrita ou pedir confirmação, seriam necessários parâmetros adicionais (ex:cp -ioucp -nno Bash;Copy-Item -Confirmno PowerShell). Portanto, o Bash não é intrinsecamente mais seguro nesse aspecto. - (E) Incorreta: O PowerShell é uma linguagem interpretada, construída sobre o framework .NET, e não uma linguagem compilada no sentido tradicional (como C++ ou Java compilado para bytecode). O Bash também é uma linguagem interpretada. A performance de scripts para operações simples de arquivo geralmente depende mais da eficiência do sistema operacional e do hardware do que da natureza "compilada" ou "interpretada" da linguagem para essas tarefas específicas.
Fonte: FGV DATAPREV 2024 Analista de Processamento (Caderno Tipo 1). Reproduzida para fins de estudo.