Questão de Sistemas Operacionais — Geral — FGV 2024
Sistemas Operacionais›Geral
Código
fg165652
Banca
FGV
Órgão
DATAPREV
Ano
2024
Cargo
Ana Proc ( )
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 backupnão existir, enquanto o script Bash irá criar a pastaautomaticamente.
BO código em PowerShell pode ser executado diretamente noWindows sem necessidade de software adicional, enquanto ocódigo em Bash requer a instalação de um ambiente Unix noWindows.
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 osobrescrita de arquivos no destino sem confirmação.
EO código PowerShell possui melhor desempenho que o Bash,pois é uma linguagem compilada.
Revelar gabarito e comentário▾
GabaritoB — O código em PowerShell pode ser executado diretamente noWindows sem necessidade de software adicional, enquanto ocódigo em Bash requer a instalação de um ambiente Unix noWindows.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
PowerShell vs Bash: cópia de arquivos e portabilidade
Gabarito: letra B. O código em PowerShell pode ser executado diretamente no Windows sem necessidade de software adicional, pois o PowerShell é nativo do sistema desde o Windows 7/Server 2008, enquanto o código em Bash requer a instalação de um ambiente Unix no Windows (como WSL, Cygwin ou Git Bash). As demais alternativas contêm erros conceituais sobre o comportamento dos comandos Copy-Item e cp, sobre recursividade, segurança e desempenho.
O enunciado apresenta dois scripts que copiam arquivos .txt de uma pasta de origem para uma pasta de backup. O primeiro, em PowerShell, provavelmente usa o cmdlet Copy-Item; o segundo, em Bash, usa o comando cp. Ambos são ferramentas de linha de comando amplamente utilizadas para manipulação de arquivos, mas pertencem a ambientes distintos: o PowerShell é o shell padrão do Windows, enquanto o Bash é o shell padrão de sistemas Unix-like (Linux, macOS).
A questão explora conhecimentos básicos de sistemas operacionais: a portabilidade de scripts entre plataformas, o comportamento de comandos de cópia e a diferença entre linguagens interpretadas e compiladas. Vamos analisar cada alternativa com profundidade.
Primeiro, é importante entender o que cada comando faz. O Copy-Item do PowerShell copia arquivos e diretórios, mas, por padrão, não copia recursivamente o conteúdo de um diretório — para isso, é necessário usar o parâmetro -Recurse. Já o cp do Bash, sem opções, copia apenas o arquivo ou diretório especificado; para copiar recursivamente, usa-se -r ou -R. Ambos os comandos, quando o destino não existe, podem criar o arquivo de destino, mas não criam diretórios automaticamente — o cp falha se o diretório de destino não existir, e o Copy-Item também falha se o diretório de destino não existir (a menos que se use -Force com caminhos que incluam a criação de diretórios, o que não é o comportamento padrão).
A alternativa B é a correta porque reflete a realidade da portabilidade: o PowerShell é um componente nativo do Windows, presente desde o Windows 7 e Windows Server 2008 R2, e pode ser executado diretamente no sistema, sem instalação adicional. Já o Bash, embora possa ser executado no Windows por meio de emuladores (Cygwin) ou subsistemas (WSL), não é nativo — requer a instalação de um ambiente Unix. Essa é uma distinção fundamental que a banca explora.
As demais alternativas contêm erros:
A) Afirma que o PowerShell pode gerar erro se a pasta de backup não existir, enquanto o Bash criaria a pasta automaticamente. Isso é falso: o cp não cria diretórios automaticamente; se o diretório de destino não existir, o comando falha com erro. O Copy-Item também não cria diretórios automaticamente. Ambos exigem que o diretório de destino exista previamente.
C) Afirma que ambos os scripts estão incorretos porque Copy-Item e cp não realizam cópia recursiva. Isso é falso: ambos os comandos suportam cópia recursiva, mas por padrão não a realizam. O Copy-Item tem o parâmetro -Recurse, e o cp tem a opção -r/-R. A afirmação de que "não realizam cópia recursiva" é incorreta, pois eles podem realizar, apenas não por padrão.
D) Afirma que o Bash é mais seguro que o PowerShell porque impede a sobrescrita de arquivos sem confirmação. Isso é falso: o cp sobrescreve arquivos existentes sem confirmação, a menos que se use a opção -i (interactive). O Copy-Item também sobrescreve por padrão, sem confirmação. Nenhum dos dois é intrinsecamente mais seguro nesse aspecto.
E) Afirma que o PowerShell tem melhor desempenho que o Bash porque é uma linguagem compilada. Isso é falso: o PowerShell é uma linguagem interpretada (baseada em .NET, mas interpretada em runtime), não compilada. O Bash também é interpretado. A afirmação sobre desempenho é infundada e o motivo apresentado é incorreto.
A pegadinha da questão está na alternativa A, que inverte o comportamento dos comandos em relação à criação de diretórios. Muitos candidatos podem pensar que o cp cria diretórios automaticamente, mas isso não é verdade. A alternativa B é a única que apresenta uma afirmação factualmente correta sobre a portabilidade dos scripts.
PowerShell vs Bash
1Portabilidade
PowerShell: [+] nativo do Windows
Bash: [-] requer ambiente Unix (WSL/Cygwin)
2Cópia de arquivos
Copy-Item (PowerShell)
Não cria diretório automaticamente
Recursivo: -Recurse
cp (Bash)
Não cria diretório automaticamente
Recursivo: -r/-R
3Sobrescrita
Ambos sobrescrevem sem confirmação
Bash: -i para confirmar
PowerShell: -Confirm
4Linguagem
PowerShell: interpretada
Bash: interpretada
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Afirma que o código PowerShell pode gerar erro se a pasta de backup não existir, enquanto o script Bash criará a pasta automaticamente. Isso é falso: o comando cp do Bash não cria diretórios automaticamente. Se o diretório de destino não existir, o cp retorna erro ("No such file or directory"). O Copy-Item do PowerShell também não cria diretórios automaticamente; ambos exigem que o diretório de destino exista. A alternativa inverte o comportamento real: na verdade, ambos falham se o diretório de destino não existir, a menos que se use opções específicas (como -Force no PowerShell ou mkdir -p antes do cp).
Alternativa B — ✅ Correta ⟵ GABARITO
O PowerShell é um componente nativo do Windows, presente desde o Windows 7 e Windows Server 2008 R2, e pode ser executado diretamente no sistema, sem necessidade de software adicional. Já o Bash, embora possa ser executado no Windows por meio de emuladores (Cygwin) ou subsistemas (WSL), não é nativo — requer a instalação de um ambiente Unix. Essa é a afirmação correta e reflete a realidade da portabilidade de scripts entre plataformas.
Alternativa C — ❌ Incorreta
Afirma que ambos os scripts estão incorretos porque Copy-Item e cp não realizam cópia recursiva. Isso é falso: ambos os comandos suportam cópia recursiva, mas não a realizam por padrão. O Copy-Item tem o parâmetro -Recurse, e o cp tem a opção -r/-R. A afirmação de que "não realizam cópia recursiva" é incorreta, pois eles podem realizar, apenas não por padrão. Além disso, a questão não afirma que a cópia é recursiva; apenas copia arquivos .txt de uma pasta para outra, o que pode ser feito sem recursão.
Alternativa D — ❌ Incorreta
Afirma que o Bash é mais seguro que o PowerShell porque impede a sobrescrita de arquivos sem confirmação. Isso é falso: o cp sobrescreve arquivos existentes sem confirmação, a menos que se use a opção -i (interactive). O Copy-Item também sobrescreve por padrão, sem confirmação. Nenhum dos dois é intrinsecamente mais seguro nesse aspecto. A segurança depende das opções utilizadas, não da linguagem em si.
Alternativa E — ❌ Incorreta
Afirma que o PowerShell tem melhor desempenho que o Bash porque é uma linguagem compilada. Isso é falso: o PowerShell é uma linguagem interpretada (baseada em .NET, mas interpretada em runtime), não compilada. O Bash também é interpretado. A afirmação sobre desempenho é infundada e o motivo apresentado é incorreto. O desempenho de scripts depende de muitos fatores, mas a natureza compilada ou interpretada não é o determinante principal nesse contexto.
NÃO CAIA NESSA!
A banca inverte o comportamento dos comandos em relação à criação de diretórios: sugere que o cp cria a pasta automaticamente, quando na verdade ele falha se o diretório de destino não existir. Fique atento: tanto cp quanto Copy-Item exigem que o diretório de destino exista previamente, a menos que se use opções específicas.
PEGA ESSA DICA!
Para questões que comparam PowerShell e Bash, lembre-se: o PowerShell é nativo do Windows, o Bash é nativo de Unix-like. Para cópia recursiva, use -Recurse no PowerShell e -r no Bash. Para sobrescrita com confirmação, use -i no Bash e -Confirm no PowerShell. Esses são os pontos mais cobrados.