Categories: Tecnologia

Como usar o comando yes no Linux

Fatmawati Achmad Zaenuri / Shutterstock.com

O comando yes parece muito simples para ter algum uso prático, mas neste tutorial, mostraremos sua aplicação e como se beneficiar de sua positividade reprimida no Linux e macOS.

O comando sim

O yescomando é um dos comandos mais simples no Linux e em outros  sistemas operacionais semelhantes ao Unix,  como o macOS. E por simples, queremos dizer simples em seu uso e sua implementação inicial. O código-fonte da versão original – lançado no System 7 Unix e de autoria de Ken Thompson – chega a apenas seis linhas de código .

Mas não o descarte por ser um pequeno comando simples. Ele pode ser usado de algumas maneiras interessantes e úteis.

O que sim faz?

Usado sem nenhum parâmetro de linha de comando, o yescomando se comporta como se você estivesse digitando “y” e pressionando Enter, repetidamente (e indefinidamente) novamente. Muito rapidamente. E continuará fazendo isso até que você pressione Ctrl + C para interrompê-lo.

sim

Na verdade, yespode ser usado para gerar repetidamente qualquer mensagem que você escolher. Simplesmente digite yes, um espaço, a string que deseja usar e pressione Enter. Isso geralmente é usado para yesgerar um fluxo de saída de strings “sim” ou “não”.

sim Sim

sim qualquer coisa que você goste

Mas que uso é esse?

A saída do yespode ser canalizada para outros programas ou scripts.

Isso soa familiar? Você inicia um longo processo em execução e se afasta, deixando-o para ser executado. Quando você retorna ao seu computador, o processo não foi concluído. Na sua ausência, ele fez uma pergunta e ficou sentado esperando uma resposta “sim” ou “não”.

Se você sabe com antecedência que todas as suas respostas serão positivas (“sim” ou “s”) ou negativas (“não” ou “n”), você pode usar yespara fornecer essas respostas para você. Seu longo processo será concluído sem supervisão, yesfornecendo as respostas para todas as perguntas que o processo fizer.

Usando sim com scripts

Observe o seguinte script de shell Bash. (Precisamos imaginar que esta é uma parte de um script muito maior que levará um tempo considerável para ser executado.)

#! / bin / bash

# ...
# no meio de algum script longo
# obter uma resposta do usuário
# ...

echo "Você está feliz em continuar? [s, n]"
ler entrada

# recebemos um valor de entrada?
if ["$ input" == ""]; então

   echo "Nada foi inserido pelo usuário"

# foi sim ou sim?
elif [["$ input" == "y"]] || [["$ input" == "sim"]]; então

   echo "Resposta positiva: $ input"

# tratar qualquer outra coisa como uma resposta negativa
outro

   echo "resposta negativa: $ input"

fi

Este script faz uma pergunta e aguarda uma resposta. O fluxo lógico dentro do script é decidido pela entrada do usuário.

  • Um “sim” ou “y” indica uma resposta positiva.
  • Qualquer outra entrada é considerada uma resposta negativa.
  • Pressionar Enter sem texto de entrada não faz nada.

Para testar isso, copie o script em um arquivo e salve-o como long_script.sh. Use chmodpara torná-lo executável.

chmod + x long_script.sh

Execute o script com o seguinte comando. Tente fornecer “sim”, “y” e qualquer outra coisa como entrada, incluindo pressionar Enter sem texto de entrada.

./long_script.sh

Para yesfornecer nossa resposta à pergunta do script, canalize a saída de yespara o script.

sim | ./long_script.sh

Alguns scripts são mais rígidos em seus requisitos e aceitam apenas a palavra “sim” completa como uma resposta positiva. Você pode fornecer “sim” como um parâmetro para yes, da seguinte maneira:

sim sim | ./long_script.sh

Não diga sim sem pensar direito

Você precisa ter certeza de que a entrada que irá inserir no script ou programa certamente dará o resultado que você espera. Para poder tomar essa decisão, você deve conhecer as perguntas e quais devem ser suas respostas.

A lógica do script, comando ou programa pode não corresponder às suas expectativas. Em nosso script de exemplo, a pergunta pode ter sido “Você deseja parar? [s, n]. ” Se fosse esse o caso, uma resposta negativa teria permitido que o script continuasse.

Você deve estar familiarizado com o script, comando ou programa antes de enviá-lo alegremente yes.

Usando sim com comandos

Em sua infância, yesseria usado com outros comandos do Linux. Desde então, a maioria dos outros comandos do Linux têm sua própria maneira de funcionar sem interação humana. yesnão é mais necessário para conseguir isso.

Vamos pegar o gerenciador de pacotes do Ubuntu  apt-getcomo exemplo. Para instalar um aplicativo sem ter que pressionar “y” no meio da instalação, yesteria sido usado da seguinte forma:

sim | sudo apt-get install fortune-mod

O mesmo resultado pode ser alcançado usando a opção -y(assumir sim) em apt-get:

sudo apt-get -y install fortune-mod

Você verá que apt-getnem mesmo perguntou o seu usual “Você quer continuar? [S / n] ”pergunta. Ele apenas presumiu que a resposta seria “sim”.

Em outras distribuições Linux, a situação é a mesma. No Fedora, você teria usado este tipo de comando do gerenciador de pacotes ao mesmo tempo:

sim | yum  install  fortune-mod

O dnfgerenciador de pacotes foi substituído yume dnftem sua própria opção -y(assumir que sim).

dnf -y  install  fortune-mod

O mesmo se aplica a cp, fscke rm. Cada um desses comandos tem suas próprias opções -f(forçar) ou -y(assumir que sim).

Então, parece que yesfoi relegado a trabalhar apenas com scripts? Não exatamente. Ainda existem mais alguns truques no velho cão.

Mais alguns truques sim

Você pode usar yescom uma sequência de dígitos gerados por seqpara controlar um loop de ações repetidas.

Este one-liner ecoa os dígitos gerados para a janela do terminal e então chama sleeppor um segundo.

Em vez de simplesmente ecoar os dígitos para a janela do terminal, você pode chamar outro comando ou script. Esse comando ou script nem mesmo precisa usar os dígitos e eles estão lá apenas para iniciar cada ciclo do loop.

sim "$ (seq 1 20)" | enquanto lê o dígito; faça eco dígito; dormir 1; feito

Às vezes, é útil ter um arquivo grande para testar. Talvez você queira praticar o uso do comando zip ou deseja ter um arquivo considerável para testar uploads de FTP .

Você pode gerar arquivos grandes rapidamente com yes. Tudo o que você precisa fazer é fornecer uma longa sequência de texto para trabalhar e redirecionar a saída para um arquivo. Não cometa erros; esses arquivos crescerão rapidamente. Esteja pronto para pressionar Ctrl + C em alguns segundos.

sim longa linha de texto sem sentido para preenchimento de arquivo> test.txt
ls -lh test.txt
wc test.txt

O arquivo gerado aqui levou cerca de cinco segundos na máquina de teste usada para pesquisar este artigo.  lsinforma que tem 557 Mb de tamanho e wcnos diz que há 12,4 milhões de linhas nele.

Podemos limitar o tamanho do arquivo incluindo  headem nossa string de comando. Dizemos quantas linhas incluir no arquivo. O -50meio headpermitirá apenas 50 linhas para o test.txtarquivo.

sim longa linha de texto sem sentido para preenchimento de arquivo | head -50> test.txt

Assim que houver 50 linhas no test.txtarquivo, o processo será interrompido. Você não precisa usar Ctrl + C. Ele chega a uma parada graciosa por sua própria vontade.

wc relata que há exatamente 50 linhas no arquivo, 400 palavras e 2350 bytes de tamanho.


Embora ainda seja útil para alimentar as respostas em scripts de longa execução (e alguns outros truques), o yescomando não fará parte do seu kit de ferramentas diário de comandos. Mas quando você precisar, descobrirá que é a própria simplicidade – e tudo em seis linhas de código dourado.

maisroot

Recent Posts

O novo aplicativo “PC Manager” da Microsoft se parece muito com o CCleaner

Muitos aplicativos de limpeza estão disponíveis para Windows ao longo dos anos, mas hoje em…

1 ano ago

Como reiniciar um PS4

Seu PlayStation 4 está congelado? Seus jogos favoritos continuam travando? Reiniciar seu PS4 pode resolver…

1 ano ago

Veja por que as reticências são tão assustadoras ao enviar mensagens de texto…

A popularidade das mensagens de texto significou aprender uma forma totalmente nova de comunicação. Você…

1 ano ago

O telescópio James Webb acaba de capturar os “Pilares da Criação”

A foto dos "Pilares da Criação" tirada pelo Telescópio Espacial Hubble é uma das fotos…

1 ano ago

Você poderá baixar o Proton Drive mais cedo do que pensa

O Proton Drive saiu de seu estágio beta há algumas semanas, mas o aplicativo real…

1 ano ago

Como aumentar o zoom no Photoshop

Para ver suas fotos mais de perto ou para uma edição precisa , você pode…

1 ano ago