Pular para o conteúdo principal

Questão de Sistemas Operacionais — Scripts em Unix e Linux — FGV 2023

Sistemas OperacionaisScripts em Unix e Linux
Código
fg161283
Banca
FGV
Órgão
CAM DEP
Ano
2023
Cargo
AL ( )

No contexto de script Bash, considere os comandos a seguir num ambiente Linux like operando com as configurações usuais.

 

1. echo "Texto de exemplo 1." > saida1.txt

 

2. echo "Texto de exemplo 2." >> saida2.txt

 

Sobre esses comandos, é correto afirmar que

  1. Ao primeiro falha quando o arquivo saida1.txt já existe.
  2. Bo segundo falha quando o arquivo saida2.txt já existe.
  3. Co segundo falha quando o arquivo saida2.txt não existe.
  4. Dos dois são funcionalmente equivalentes em qualquer circunstância.
  5. Eos dois são funcionalmente equivalentes quando o arquivo saida2.txt não existe.
Revelar gabarito e comentário

GabaritoE — os dois são funcionalmente equivalentes quando o arquivo saida2.txt não existe.

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”.

Redirecionamento de saída no Bash: > vs >>

Gabarito: letra E. Os dois comandos são funcionalmente equivalentes quando o arquivo saida2.txt não existe, pois tanto > quanto >> criam o arquivo de saída caso ele não exista. A diferença entre eles só aparece quando o arquivo já existe: > sobrescreve o conteúdo, enquanto >> acrescenta ao final. Essa é a distinção central que a questão explora.

O redirecionamento de saída é um dos recursos mais fundamentais do shell. O operador > (maior que) redireciona a saída padrão (stdout) de um comando para um arquivo, sobrescrevendo o conteúdo existente. Já o operador >> (dois maiores que) também redireciona a saída para um arquivo, mas acrescenta ao final, preservando o conteúdo já existente. Ambos criam o arquivo se ele não existir — esse é o ponto-chave que a alternativa E captura.

Vamos analisar os comandos do enunciado:

  1. echo "Texto de exemplo 1." > saida1.txt — se saida1.txt não existe, ele é criado com o texto; se existe, o conteúdo é substituído pelo novo texto.

  2. echo "Texto de exemplo 2." >> saida2.txt — se saida2.txt não existe, ele é criado com o texto; se existe, o texto é adicionado ao final, mantendo o conteúdo anterior.

A pegadinha da banca está em inverter o comportamento: sugerir que > falha quando o arquivo existe (errado — ele simplesmente sobrescreve) e que >> falha quando o arquivo não existe (errado — ele cria o arquivo). A alternativa E é a única que descreve corretamente a equivalência quando o arquivo não existe.

Para fixar, veja a tabela comparativa:

Operador

Arquivo não existe

Arquivo existe

>

Cria o arquivo

Sobrescreve o conteúdo

>>

Cria o arquivo

Acrescenta ao final

Guarde essa distinção: a diferença entre > e >> só se manifesta quando o arquivo já existe. É exatamente nesse ponto que as alternativas se dividem.

Alternativa A — ❌ Incorreta

Afirma que o primeiro comando falha quando saida1.txt já existe. Isso é falso: o operador > sobrescreve o arquivo existente, não falha. O comando só falharia se não houvesse permissão de escrita no diretório ou no arquivo, mas a questão considera configurações usuais.

Alternativa B — ❌ Incorreta

Afirma que o segundo comando falha quando saida2.txt já existe. Também é falso: o operador >> acrescenta ao final do arquivo existente, sem falhar. A falha só ocorreria por falta de permissão, o que não é o caso.

Alternativa C — ❌ Incorreta

Afirma que o segundo comando falha quando saida2.txt não existe. É o oposto do comportamento real: >> cria o arquivo se ele não existir. Não há falha nesse cenário.

Alternativa D — ❌ Incorreta

Afirma que os dois comandos são funcionalmente equivalentes em qualquer circunstância. Isso é falso: quando o arquivo já existe, > sobrescreve e >> acrescenta — comportamentos distintos. A equivalência só ocorre quando o arquivo não existe.

Alternativa E — ✅ Correta ⟵ GABARITO

Afirma que os dois comandos são funcionalmente equivalentes quando saida2.txt não existe. Correto: tanto > quanto >> criam o arquivo de saída se ele não existir, gravando o texto. A diferença só aparece quando o arquivo já existe, como vimos.

NÃO CAIA NESSA!

A banca inverte o comportamento dos operadores: sugere que > falha quando o arquivo existe e que >> falha quando o arquivo não existe. Na verdade, ambos criam o arquivo se ele não existir; a diferença é que > sobrescreve e >> acrescenta quando o arquivo já existe. Fique atento a essa troca clássica.

PEGA ESSA DICA!

Para não errar, lembre-se: > = sobrescreve (apaga o conteúdo anterior), >> = acrescenta (mantém o conteúdo anterior). Se o arquivo não existe, ambos criam. Essa é a regra de ouro para questões de redirecionamento.

Gabarito: letra E

Link permanente: /questoes/fg161283