Comando yes: Automatizando Confirmacoes

Comando yes: Automatizando Confirmacoes

O Que Voce Vai Aprender

  • O que o comando yes realmente faz
  • Como responder automaticamente a prompts interativos como "Tem certeza? (y/n)"
  • Por que o yes pode ser perigoso e como evitar problemas
  • Alternativas mais seguras como a opcao -y do proprio comando

Resumo Rapido

  • Quer responder y a tudo -> yes | comando
  • Mas prefira a opcao -y do proprio comando quando houver (mais seguro)
  • Pare o yes com Ctrl + C

1. O Que E o Comando yes?

Conclusao: yes simplesmente imprime a letra y repetidamente, para sempre, ate voce para-lo.

Lina: Ouvi dizer que existe um comando literalmente chamado yes. O que ele faz? Ele diz "sim" por voce?
Veterano Linny: Boa pergunta. E exatamente como o nome, mas mais simples do que voce imagina. Ele imprime a letra y repetidamente, infinitamente, ate voce para-lo.
Lina: Infinitamente? Deixa eu tentar agora.
Veterano Linny: Espera. Se voce so executar, sua tela enche de y e nao para. Deixa eu te dar a tecla de parada primeiro: pressione Ctrl + C para parar. Lembre disso, depois tente.

Veja o que acontece (pare imediatamente com Ctrl + C):

$ yes
y
y
y
y
(continua ate voce pressionar Ctrl + C)

Executar yes sem argumentos imprime y para sempre. Nao entre em panico, basta pressionar Ctrl + C para parar. Isso nao e um bug, e como o yes foi projetado para funcionar.

2. Por Que "Imprimir y Para Sempre" E Util?

Conclusao: Para alimentar esse y automaticamente em comandos que ficam perguntando "Tem certeza? (y/n)".

Lina: Mas qual e o sentido de imprimir y para sempre?
Veterano Linny: Sozinho parece uma brincadeira. Seu valor real aparece quando voce combina com um pipe (|).
Lina: Um pipe... aquilo de "enviar a saida da esquerda para o comando da direita" que fizemos antes.
Veterano Linny: Exatamente. Digamos que voce esta deletando muitos arquivos e o rm pergunta "remover este? (y/n)" para cada um. Com 100 arquivos, sao 100 vezes digitando y. E ai que o yes entra.

Quando o yes brilha

Para comandos que pedem confirmacao muitas vezes ("Tem certeza? (y/n)"), o yes fornece esse y automaticamente, para voce nao digitar de novo e de novo.

3. Resposta Automatica Com Pipe: yes | comando

Conclusao: yes | comando alimenta um y automatico para cada prompt de confirmacao que o comando mostra.

Por exemplo, rm -i (interativo) pergunta antes de cada exclusao.

$ rm -i file1.txt file2.txt file3.txt
rm: remove regular file 'file1.txt'?

Em vez de digitar y a cada vez, redirecione yes para ele e cada prompt recebe um y automatico.

$ yes | rm -i file1.txt file2.txt file3.txt
Lina: So adicionar yes | na frente responde cada prompt por mim!
Veterano Linny: Certo. yes continua transmitindo y, e rm consome um por arquivo conforme deleta. Funciona nao importa quantos prompts aparecem.

Isso e pratico mas tambem muito perigoso. Pular toda confirmacao significa os arquivos errados sao deletados sem perguntas. Sempre verifique o que o comando visa antes de executar. Cobrimos isso em "O Perigo do yes" abaixo.

4. Repetir Qualquer String: yes STRING

Conclusao: Passe um argumento ao yes e ele repete essa string em vez de y.

yes nao esta limitado a y. Passe um argumento e ele repete essa string.

$ yes hello
hello
hello
hello
(continua ate Ctrl + C)

Multiplas palavras sao juntadas com espacos em uma linha.

$ yes I am ready
I am ready
I am ready
(continua ate Ctrl + C)

Repetir linhas vazias (em vez de ficar apertando Enter)

yes "" repete linhas vazias (apenas quebras de linha). Util para prompts onde voce so precisa pressionar Enter repetidamente.

$ yes "" | command

Conclusao: Redirecione yes para head para pegar um numero fixo de linhas em vez de um fluxo infinito. Pratico para dados de teste.

Quando saida infinita e um problema, use head para pegar apenas as linhas que precisa.

$ yes | head -n 5
y
y
y
y
y

O mesmo funciona com uma string personalizada. Voce obtem texto repetido instantaneamente.

$ yes test | head -n 3
test
test
test
Lina: Entao voce corta o loop infinito com head em "pare aqui."
Veterano Linny: Certo. yes tambem e discretamente util para criar dados de teste ficticio quando voce verifica como um comando se comporta. Use head -n CONTAGEM para escolher exatamente quantas linhas voce quer.

6. O Perigo do yes

Conclusao: yes pula toda confirmacao, entao combina-lo com operacoes irreversiveis como deletar ou sobrescrever convida ao desastre.

Lina: yes | parece uma solucao magica. Por que nao usar para tudo?
Veterano Linny: Esse e o ponto chave. Um prompt de confirmacao e a ultima rede de seguranca perguntando "voce tem certeza? isso nao pode ser desfeito." yes ignora todos eles. Entao se ele varrer um arquivo que voce nao deveria ter tocado, ele se foi de vez.

Nao adicione yes | a um comando que voce nao entende completamente. Ao copiar e colar comandos da internet, tenha cuidado extra se yes | esta na frente.

7. Alternativas Mais Seguras ao yes

Conclusao: Muitos comandos tem sua propria opcao -y / --yes. Prefira-a em vez de redirecionar yes.

Se voce so quer pular confirmacoes, muitas vezes nao precisa do yes. O proprio comando geralmente tem uma opcao que significa "sim".

Opcoes integradas de pular confirmacao (exemplos)

Comando Opcao para pular confirmacao
apt -y / --yes
dnf / yum -y
cp / mv -f (force)
rm -f (sem prompts)

Exemplo: sudo apt install -y nome-do-pacote

Lina: Entao o -y em apt install -y literalmente significa "yes"!
Veterano Linny: Exatamente. A opcao do proprio comando visa apenas o prompt daquele comando. yes, por outro lado, silencia toda confirmacao indiscriminadamente. Entao quando uma opcao dedicada existe, use-a no lugar, e mais seguro.

Regra geral

  • Uma opcao dedicada -y / -f existe -> use-a (seguro, intencao clara)
  • Nenhuma opcao dedicada, ou pergunta repetidamente -> considere yes | (apos verificar o alvo)

8. Mini Exercicios: Tente Voce Mesmo

Conclusao: Tres exercicios sobre saida, limitar a contagem e strings personalizadas. Nao esqueca o Ctrl + C.

Lina: Quero aprender fazendo!
Veterano Linny: Otimo. Voce pode parar qualquer um destes com Ctrl + C, entao tente com confianca.

Exercicio 1: Execute yes sem argumentos, confirme que imprime y, depois pare com Ctrl + C.

Mostrar dica

Digite yes e pressione Enter. Quando a tela encher de y, pressione Ctrl + C.

Resposta exemplo
$ yes

Pare com Ctrl + C.

Exercicio 2: Imprima a string OK exatamente 4 vezes.

Mostrar dica

Redirecione yes STRING para head -n CONTAGEM.

Resposta exemplo
$ yes OK | head -n 4

Exercicio 3: Instale um pacote com apt pulando a confirmacao, sem usar o comando yes.

Mostrar dica

Use a opcao -y do proprio comando.

Resposta exemplo
$ sudo apt install -y nome-do-pacote

9. Modelos Para Copiar e Colar

Conclusao: Mantenha os padroes para resposta automatica, limitar contagem, linhas vazias e alternativas seguras a mao.

Padroes comuns para ter a mao

# Responder y automaticamente a prompts (apos verificar o alvo)
yes | command

# Imprimir a mesma linha um numero fixo de vezes (dados de teste)
yes | head -n 5
yes test | head -n 3

# Repetir linhas vazias (Enter)
yes "" | command

# [Recomendado] Pular confirmacao com opcao dedicada
sudo apt install -y nome-do-pacote

# Parar o yes
Ctrl + C

Proximas Leituras