Questão de Sistemas Operacionais — Linux — FGV 2023
Sistemas Operacionais›Linux
Código
fg061555
Banca
FGV
Órgão
Câmara dos Deputados
Ano
2023
Nível
Superior
Cargo
Analista Legislativo - Informática Legislativa - Tarde
No contexto de script Bash, considere os comandos a seguir num ambiente Linux like operando com as configurações usuais.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 usados em scripts Bash. Ele permite direcionar a saída padrão (stdout) de um comando para um arquivo, em vez de exibi-la no terminal. Os dois operadores principais são > (sobrescrever) e >> (acrescentar). Ambos criam o arquivo de destino se ele não existir — esse é o ponto-chave da questão. A diferença surge quando o arquivo já existe: > trunca (apaga) o conteúdo anterior e escreve a nova saída; >> mantém o conteúdo anterior e adiciona a nova saída ao final.
Vamos ver um exemplo prático. Suponha que o arquivo saida.txt contenha a linha "conteúdo antigo". Se você executar echo "novo" > saida.txt, o arquivo passará a conter apenas "novo". Se executar echo "novo" >> saida.txt, o arquivo conterá "conteúdo antigo" seguido de "novo". Agora, se o arquivo não existir, ambos os comandos criam o arquivo com o conteúdo "novo" — não há diferença de comportamento.
A pegadinha da banca está em inverter essa lógica: muitas vezes o candidato acha que >> falha quando o arquivo não existe, ou que > falha quando o arquivo existe. Na verdade, nenhum dos dois falha em nenhuma das situações — eles apenas se comportam de forma diferente quando o arquivo já existe. A alternativa E captura exatamente a única circunstância em que os dois são equivalentes: quando o arquivo de destino não existe.
Guarde a regra de ouro: > = sobrescrever; >> = acrescentar; ambos criam o arquivo se não existir. É essa fronteira que separa as alternativas corretas das incorretas.
Alternativa A — ❌ Incorreta
Afirma que o primeiro comando (>) falha quando saida1.txt já existe. Isso é falso: > não falha quando o arquivo existe — ele simplesmente sobrescreve o conteúdo. O redirecionamento > abre o arquivo em modo de truncamento, ou seja, apaga o conteúdo anterior e escreve a nova saída. Não há erro nem falha; o comando é executado normalmente. A banca tenta confundir o candidato ao sugerir que sobrescrever seria um comportamento de falha, mas é o comportamento padrão e esperado.
Alternativa B — ❌ Incorreta
Afirma que o segundo comando (>>) falha quando saida2.txt já existe. Isso também é falso: >> não falha quando o arquivo existe — ele acrescenta a nova saída ao final do conteúdo existente. O modo de abertura é de append (acréscimo), que preserva o conteúdo anterior e adiciona a nova saída. Não há erro nem falha; o comando é executado normalmente. A banca inverte o comportamento: quem falha (ou melhor, quem se comporta de forma diferente) não é o >> quando o arquivo existe, mas sim o > quando o arquivo existe (sobrescreve).
Alternativa C — ❌ Incorreta
Afirma que o segundo comando (>>) falha quando saida2.txt não existe. Isso é falso: >> não falha quando o arquivo não existe — ele cria o arquivo e escreve a saída. Esse é um dos pontos centrais da questão: tanto > quanto >> criam o arquivo de destino se ele não existir. A banca tenta fazer o candidato acreditar que >> exigiria um arquivo preexistente, mas não é o caso. O comportamento de criação é idêntico para ambos os operadores.
Alternativa D — ❌ Incorreta
Afirma que os dois comandos são funcionalmente equivalentes em qualquer circunstância. Isso é falso: eles são equivalentes apenas quando o arquivo de destino não existe. Quando o arquivo já existe, > sobrescreve o conteúdo, enquanto >> acrescenta ao final. Essa diferença é fundamental e faz com que os dois comandos não sejam equivalentes em todas as situações. A banca usa o termo "qualquer circunstância" para tornar a afirmação exagerada e, portanto, incorreta.
Alternativa E — ✅ Correta ⟵ GABARITO
Afirma que os dois comandos são funcionalmente equivalentes quando o arquivo saida2.txt não existe. Isso é verdadeiro: quando o arquivo de destino não existe, tanto > quanto >> criam o arquivo e escrevem a saída nele, produzindo exatamente o mesmo resultado. A diferença entre sobrescrever e acrescentar só se manifesta quando o arquivo já existe. Portanto, a única circunstância em que os dois são equivalentes é quando o arquivo não existe — exatamente o que a alternativa E afirma.
NÃO CAIA NESSA!
A banca explora a confusão entre os operadores > e >>. Muitos candidatos acham que >> falha quando o arquivo não existe, ou que > falha quando o arquivo existe. Na verdade, ambos criam o arquivo se ele não existir; a diferença só aparece quando o arquivo já existe: > sobrescreve, >> acrescenta. Lembre-se: nenhum dos dois falha em nenhuma situação — eles apenas se comportam de forma diferente quando o arquivo já existe.
PEGA ESSA DICA!
Para fixar, pense em > como "apagar e escrever" e >> como "escrever no final". Se o arquivo não existe, os dois fazem a mesma coisa: criam o arquivo. Se o arquivo existe, > destrói o conteúdo antigo, enquanto >> preserva. Na prova, quando a questão perguntar sobre equivalência, verifique sempre se o arquivo de destino existe ou não — essa é a chave.