Como usar o comando yes no Linux

Conteúdo

O comando sim parece muito simples para ter uso prático, mas neste tutorial, Mostraremos seu aplicativo e como se beneficiar de sua positividade cumulativa no Linux e macOS.

O comando sim

a yes command é um dos comandos mais simples no Linux e em outros sistemas operacionais semelhantes ao Unix, como o macOS. E para simples, queremos dizer simples em seu uso e sua implementação inicial. O código-fonte da versão original, tornado público no sistema 7 Unix e criado por Ken Thompson– equivale a um mero seis linhas de código.

Mas não o descarte por ser um comando simples. Pode ser usado de maneiras interessantes e úteis.

O que significa sim?

Usado sem nenhum parâmetro de linha de comando, a yes O comando se comporta como se você estivesse digitando "y" e pressionando Enter, uma e outra vez (e de novo e de novo). Muito rapidamente. E continuará a fazê-lo até que você pressione Ctrl + C para interrompê-lo.

sim

Na realidade, yes pode ser usado para gerar repetidamente qualquer mensagem que você escolher. Basta digitar yes, um espaço, a string que você deseja usar e pressione Enter. Isso geralmente é usado para causar yes para generar un flujo de salida de cadenas “sim” o “não”.

sim Sim

sim qualquer coisa que você goste

Mas, Que bom é isso?

A saída de yes pode ser canalizado para outros programas ou scripts.

Isso soa familiar para você? Você inicia um procedimento de longa duração e sai, deixando funcionar. Quando você retornar ao seu computador, o procedimento não está completo. Na ausência dele, le ha hecho una pregunta y está sentado esperando una respuesta de “sim” o “não”.

Se você sabe com antecedência que todas as suas respostas serão positivas (“sim” o “e”) o negativas (“não” o “n”), Você pode usar yes para lhe fornecer essas respostas. Su largo procedimiento se ejecutará hasta su finalización sin supervisión con yes proporcionando las respuestas a las preguntas del procedimiento.

Utilizar yes con scripts

Mire el siguiente script de shell de Bash. (Necesitamos imaginar que esto es parte de un script mucho más grande que llevará un tiempo considerable para ejecutarse).

#!/bin / bash

# ...
# in the middle of some long script
# obtain a response from the user
# ...

eco "Are you happy to proceed? [e,n]"
read input

# did we get an input value?
E se [ "$input" == "" ]; then

   echo "Nothing was entered by the user"

# was it a y or a yes?
elif [[ "$input" == "e" ]] || [[ "$input" == "sim" ]]; then

   echo "Positive response: $input"

# treat anything else as a negative response
else

   echo "negative response: $input"

ser

Este guión hace una pregunta y espera una respuesta. El flujo lógico dentro del script lo decide la entrada del usuario.

  • uma “sim” o “e” indica una respuesta positiva.
  • Cualquier otra entrada se considera una respuesta negativa.
  • Presionar Enter sin ingresar texto no hace nada.

Para probar esto, copie el script en un archivo y guárdelo como long_script.sh. Usar chmod para torná-lo executável.

chmod +x long_script.sh

Execute o script com o seguinte comando. Intente proporcionar “sim”, “e” y cualquier otra cosa como entrada, incluindo pressionar Enter sem inserir texto.

./long_script.sh

Para obter yes para fornecer nossa resposta à pergunta do script, canalizar a saída de yes para o script.

sim | ./long_script.sh

Alguns scripts são mais rígidos em seus requisitos e só aceitam a palavra "sim" inteira como uma resposta positiva.. Puede proporcionar “sim” como parámetro para yes, Como segue:

sim Sim | ./long_script.sh

Não diga sim sem pensar nisso

Você deve ter certeza de que a entrada que vai inserir no script ou programa certamente fornecerá o resultado esperado.. Para ser capaz de tomar essa decisão, você deve saber as perguntas e quais devem ser suas respostas.

É possível que a lógica do script, comando ou programa não corresponde às suas expectativas. Em nosso script de exemplo, a pergunta pode ter sido “Você quer parar? [e,n]. ” Si ese hubiera sido el caso, uma resposta negativa teria permitido que o script continuasse.

tu tem que estar familiarizado com o script, comando ou programa antes de canalizar alegremente yes nele.

Use sim com comandos

Em sua infância, yes seria usado com outros comandos Linux. Desde então, a maioria desses outros comandos do Linux tem sua própria maneira de funcionar sem interação humana. yes não é mais necessário alcançá-lo.

Vamos pegar o gerenciador de pacotes Ubuntu apt-get como exemplo. Para instalar una aplicación sin tener que presionar “e” a la mitad de la instalación, yes teria sido usado da seguinte maneira:

sim | sudo apt-get install fortune-mod

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

sudo apt-get -y install fortune-mod

Você vai ver isso apt-get ele nem mesmo perguntou ao seu habitual "Deseja continuar? [S / n]” pergunta. Simplemente asumió que la solución sería “sim”.

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

sim | yum instalar mod da sorte

a dnf gerenciador de pacotes foi substituído yum e dnf Tem seu próprio -y (suponha que sim) opção.

dnf -y instalar mod da sorte

O mesmo se aplica a cp, fsck, e rm. Cada um desses comandos tem seu próprio -f (força) o -y (suponha que sim) opções.

Então parece que yes foi relegado a trabalhar apenas com scripts? Não exatamente. Ainda existem mais alguns truques no cachorro velho.

Mais alguns truques sim

Você pode usar yes com uma sequência de dígitos gerados por seq para controlar um ciclo de ações repetidas.

Esta única linha ecoa os dígitos gerados na janela do terminal e, em seguida, chama sleep por um segundo.

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

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

sim one-liner que regula um loop na janela do terminal

Às vezes ajuda ter um arquivo grande para testar. Você pode querer praticar usando o comando zip, ou você deseja ter um arquivo considerável para testar seus uploads de FTP.

Você pode gerar arquivos grandes rapidamente com yes. Tudo o que você precisa fazer é fornecer uma longa string de texto para trabalhar e redirecionar a saída para um arquivo. Não cometer erros; esses arquivos crescerão rapidamente. Esteja preparado 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

gerando arquivos de teste com uma janela de terminal sim ia

O arquivo gerado aqui levou cerca de cinco segundos na máquina de teste usada para investigar esta postagem. ls relata que tem um tamanho de 557 Mb, e wc diga-nos o que contém 12,4 milhões de linhas.

Podemos limitar o tamanho do arquivo incluindo head em nossa string de comando. Dizemos quantas linhas devem ser incluídas no arquivo. a -50 metade head vai sair sozinho 50 linhas através do test.txt procedimentos.

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

usando a cabeça para limitar o tamanho de um arquivo em uma janela de terminal

Assim que houver 50 linhas no test.txt Arquivo, o procedimento vai parar. Não há necessidade de usar Ctrl + C. Pára graciosamente por conta própria.

wc informa que existe exatamente 50 linhas no arquivo, 400 palavras e tem um tamanho de 2350 bytes.


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

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.