Questão de Sistemas Operacionais — Geral — VUNESP 2026
- Código
- vu169445
- Banca
- VUNESP
- Órgão
- Pref Tremembé
- Ano
- 2026
- Cargo
- TInf ( )
- A./script.sh < data
- B./script.sh << data
- C./script.sh > data
- D./script.sh >> data
- E./script.sh | data
GabaritoA — ./script.sh < data
Gabarito: letra A. O operador < redireciona o conteúdo de um arquivo para a entrada padrão (stdin) de um comando, fazendo com que o script script.sh leia os dados de data como se fossem digitados pelo teclado. Os demais operadores (<<, >, >>, |) têm funções diferentes: here-document, redirecionamento de saída (sobrescrever), redirecionamento de saída (acrescentar) e pipe, respectivamente.
O shell do Linux (bash, sh, etc.) oferece mecanismos poderosos para controlar a entrada e saída de comandos, conhecidos como redirecionamentos. Eles permitem que um comando leia dados de um arquivo em vez do teclado, ou que sua saída seja enviada para um arquivo em vez da tela. O operador < é o redirecionador de entrada padrão: ele faz o shell abrir o arquivo especificado e conectá-lo ao stdin do processo. Isso é fundamental para scripts que processam dados de arquivos, como ./script.sh < data, que lê o conteúdo de data linha por linha.
A distinção entre os operadores é um dos pontos mais cobrados em provas de Linux, pois cada um tem um efeito específico e o uso incorreto pode causar perda de dados ou erros de execução. O operador > redireciona a saída padrão (stdout) para um arquivo, sobrescrevendo-o; >> faz o mesmo, mas acrescenta ao final do arquivo. O operador << é usado para here-documents, que permitem fornecer múltiplas linhas de entrada diretamente no comando. Já o pipe | conecta a saída de um comando à entrada de outro, criando um fluxo de dados entre processos.
Para entender a pegadinha, é crucial lembrar que o redirecionamento de entrada e o de saída são opostos: < alimenta o comando com dados, enquanto > e >> capturam a saída do comando. O pipe | também alimenta a entrada, mas de outro comando, não de um arquivo. O here-document << é uma forma especial de entrada embutida no próprio comando, não um arquivo externo.
Guarde a direção da seta: a seta aponta para onde os dados fluem. Em < data, a seta aponta para o comando, indicando que os dados vêm do arquivo para o comando. Em > data, a seta aponta para o arquivo, indicando que os dados vão do comando para o arquivo. Essa é a chave para não confundir os operadores.
O operador < é o redirecionador de entrada padrão. Ele faz o shell abrir o arquivo data e conectá-lo ao stdin do comando ./script.sh. Assim, o script lê o conteúdo de data como se fosse digitado pelo usuário. É exatamente o que o enunciado pede: usar o conteúdo do arquivo como entrada padrão.
O operador << é usado para here-documents, que permitem fornecer múltiplas linhas de entrada diretamente no comando, sem usar um arquivo externo. A sintaxe correta seria ./script.sh << EOF seguido das linhas de entrada e EOF para finalizar. Neste caso, data seria tratado como um delimitador, não como um arquivo, e o script não leria o conteúdo de data.
O operador > redireciona a saída padrão (stdout) do comando para um arquivo, sobrescrevendo-o. Ou seja, ./script.sh > data faria a saída do script ser gravada em data, não o contrário. Isso não atende ao requisito de usar data como entrada.
O operador >> também redireciona a saída padrão, mas acrescenta ao final do arquivo em vez de sobrescrever. Assim, ./script.sh >> data adicionaria a saída do script ao final de data, o que não é o que se deseja.
O operador | (pipe) conecta a saída padrão de um comando à entrada padrão de outro. A sintaxe ./script.sh | data tentaria usar data como um comando, o que falharia, pois data é um arquivo, não um executável. O pipe é usado para encadear comandos, como cat data | ./script.sh, mas não é a forma direta de redirecionar um arquivo para a entrada de um script.
A banca explora a confusão entre redirecionamento de entrada (<) e de saída (> e >>). Muitos candidatos lembram que > envia a saída para um arquivo e, por associação, acham que < também envia algo para o arquivo. Mas a direção é oposta: < traz o conteúdo do arquivo para o comando. Lembre-se: a seta aponta para onde os dados fluem — em < data, os dados fluem do arquivo para o comando.
Para fixar, monte uma tabela mental dos operadores:
Operador | Função | Exemplo | ||
|---|---|---|---|---|
| Redireciona entrada (arquivo → comando) |
| ||
| Redireciona saída, sobrescrevendo (comando → arquivo) |
| ||
| Redireciona saída, acrescentando (comando → arquivo) |
| ||
| Here-document (entrada embutida) |
| ||
` | ` | Pipe (saída de um comando → entrada de outro) | `cat data | ./script.sh` |
Gabarito: letra A
Link permanente: /questoes/vu169445