Questão de Sistemas Operacionais — Scripts em Unix e Linux — FGV 2023
Sistemas Operacionais›Scripts 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
Ao primeiro falha quando o arquivo saida1.txt já existe.
Bo segundo falha quando o arquivo saida2.txt já existe.
Co segundo falha quando o arquivo saida2.txt não existe.
Dos dois são funcionalmente equivalentes em qualquer circunstância.
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:
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.
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.