Pular para o conteúdo principal

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

Sistemas OperacionaisScripts em Unix e Linux
Código
qa543529
Banca
FUNDATEC
Órgão
IFC
Ano
2023
Cargo
PEBTT ( )

Considere os programas bash, cat e sort, todos do projeto GNU. Em uma sessão bash, o usuário está em um diretório em que existe um arquivo chamado file.txt. O usuário deseja imprimir na tela o conteúdo do arquivo, mas ordenado alfabeticamente. A linha que deve ser usada na sessão bash para usar os programas cat e sort para realizar a tarefa desejada é:

  1. Acat file.txt | sort
  2. Bcat file.txt > sort
  3. Ccat file.txt < sort
  4. Dsort | cat file.txt
  5. Esort > cat file.txt
Revelar gabarito e comentário

GabaritoA — cat file.txt | sort

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 e pipes no shell Linux

Gabarito: letra A. Para imprimir o conteúdo de file.txt ordenado alfabeticamente, o comando correto é cat file.txt | sort, pois o pipe (|) conecta a saída padrão do cat à entrada padrão do sort, que então ordena as linhas e as exibe na tela. As demais alternativas usam incorretamente os redirecionadores > e <, que não realizam a conexão entre programas.

O pipe é um mecanismo fundamental do shell Unix/Linux que permite encadear comandos, fazendo com que a saída de um programa sirva de entrada para outro. No comando cat file.txt | sort, o cat lê o arquivo e envia seu conteúdo para a saída padrão; o | captura essa saída e a direciona para a entrada padrão do sort, que então ordena as linhas alfabeticamente e imprime o resultado na tela. Esse é o uso clássico de pipes, que permitem construir pipelines de processamento de texto.

Os redirecionadores > e < têm funções distintas: > redireciona a saída padrão de um comando para um arquivo (sobrescrevendo-o), enquanto < redireciona a entrada padrão de um comando a partir de um arquivo. Eles não servem para conectar dois comandos entre si — essa é a função exclusiva do pipe. Por exemplo, sort < file.txt lê o arquivo e o ordena, mas não envolve o cat. Já cat file.txt > sort tentaria escrever a saída do cat em um arquivo chamado sort, o que não é o desejado.

Na prática, o usuário poderia simplesmente usar sort file.txt para obter o mesmo resultado, mas a questão exige o uso de ambos os programas (cat e sort), o que torna o pipe a solução correta. A banca explora exatamente a confusão entre pipe e redirecionamento, um erro comum para quem está começando no shell.

Guarde a distinção: pipe (|) conecta comandos; > e < redirecionam para/de arquivos. É esse critério que separa a alternativa correta das demais.

  1. 1cat file.txt
  2. 2| (pipe)
  3. 3sort
  4. 4Saída ordenada na tela
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta ⟵ GABARITO

cat file.txt | sort usa o pipe para conectar a saída do cat à entrada do sort, que ordena as linhas e as imprime na tela. É exatamente a tarefa pedida: imprimir o conteúdo do arquivo ordenado alfabeticamente.

Alternativa B — ❌ Incorreta

cat file.txt > sort redireciona a saída do cat para um arquivo chamado sort (sobrescrevendo-o ou criando-o), em vez de executar o comando sort. O > é redirecionamento de saída para arquivo, não um conector entre programas.

Alternativa C — ❌ Incorreta

cat file.txt < sort tenta redirecionar a entrada do cat a partir de um arquivo chamado sort, o que não faz sentido — sort não é um arquivo de dados, e o cat não ordena nada. O < é redirecionamento de entrada a partir de arquivo, não um conector.

Alternativa D — ❌ Incorreta

sort | cat file.txt inverte a ordem: o sort receberia a entrada padrão (que não é o arquivo) e o cat file.txt seria executado depois, mas sem receber a saída do sort (o pipe conecta a saída do sort à entrada do cat, mas o cat já tem um argumento de arquivo e ignoraria a entrada do pipe). O resultado não é o desejado.

Alternativa E — ❌ Incorreta

sort > cat file.txt redireciona a saída do sort para um arquivo chamado cat, e file.txt é tratado como argumento do sort (que o leria e ordenaria, mas a saída iria para o arquivo cat, não para a tela). O > redireciona para arquivo, não conecta comandos.

NÃO CAIA NESSA!

A banca troca o pipe (|) pelos redirecionadores > e <, que têm funções completamente diferentes. O candidato que confunde esses símbolos cai nas alternativas B, C e E. Lembre-se: | conecta a saída de um comando à entrada de outro; > envia a saída para um arquivo; < lê a entrada de um arquivo. Com esse critério, você elimina as erradas de imediato.

PEGA ESSA DICA!

Para fixar, pense no pipe como um encanamento: a água (dados) flui de um comando para o outro. Já > e < são como desviar o fluxo para um reservatório (arquivo) ou puxar de um reservatório. Na prova, se a questão pede para "usar dois comandos para processar dados", quase sempre é pipe. Se pede para "salvar a saída em um arquivo" ou "ler de um arquivo", use > ou <.

Gabarito: letra A

Link permanente: /questoes/qa543529