Como usar o comando yes no Linux
O comando yes parece muito simples para ser de uso prático, mas neste tutorial, mostraremos sua aplicação e como se beneficiar da sua positividade reprimida no Linux e no macOS .
O comando sim
O comando sim é um dos mais simples comandos no Linux e outros sistemas operacionais semelhantes ao Unix, como 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 - equivale a meras seis linhas de código.
Mas não o escreva por ser um pequeno comando simples. Pode ser usado de alguma forma interessante e útil.
O que sim faz?
Usado sem nenhum parâmetro de linha de comando, o comando yes se comporta como se você estivesse digitando “y” e pressionando Enter, repetidamente (e repetidamente) novamente. Muito rapidamente. E continuará assim até você pressionar Ctrl + C para interrompê-lo.
sim
Na verdade, sim pode ser usado para gerar repetidamente qualquer mensagem que você escolher. Simplesmente digite sim, um espaço, a string que você deseja usar e pressione Enter. Isso costuma ser usado para fazer com que o yes gere um fluxo de saída de strings "yes" ou "no".
sim sim
[ PRE] sim qualquer coisa que você gosta
Mas o que é isso?
A saída do yes pode ser canalizada para outros programas ou scripts.
Isso soa familiar? Você inicia um longo processo em execução e se afasta, deixando que ele seja executado. Quando você retorna ao seu computador, o processo não é concluído. Na sua ausência, ele fez uma pergunta e ficou sentado esperando uma resposta “sim” ou “não”.
Se você sabe de antemão que todas as suas respostas serão positivas (“sim”) ou "y") ou negativo ("não" ou "n") você pode usar sim para fornecer essas respostas para você. Seu longo processo será executado até a conclusão autônoma com yes fornecendo as respostas para quaisquer perguntas que o processo solicitar.
Usando sim com scripts
Veja o script de shell Bash a seguir. (Precisamos imaginar que isso é parte de um script muito maior que levará um tempo considerável para ser executado.)
#! / Bin / bash # ... # no meio de algum script longo # obtém uma resposta do usuário # ... echo "Você está satisfeito em prosseguir? [y, n]" read input # nós obtivemos um valor de entrada? if ["$ input" == ""]; então ecoar "Nada foi digitado pelo usuário" # foi um y ou um sim? elif [["$ input" == "y"]] || [["$ input" == "sim"]]; em seguida, eco "Resposta positiva: $ input" # trata qualquer outra coisa como uma resposta negativa else 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 chmod para 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
IMAGEM_4
Para que o yes forneça nossa resposta à pergunta do script, canalize a saída de yes para o script.
yes | ./long_script.sh
Alguns scripts são mais rígidos em seus requisitos e aceitam apenas a palavra inteira "sim" como uma resposta positiva. Você pode fornecer "sim" como um parâmetro para yes, da seguinte forma:
yes yes | ./long_script.sh
Não diga sim sem pensar nisso
Você precisa ter certeza de que a entrada em que você vai alimentar o roteiro ou programa definitivamente lhe dará o resultado esperado. 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? [y, n]. ”Se fosse esse o caso, uma resposta negativa teria permitido que o script prosseguisse.
Você deve estar familiarizado com o script, comando ou programa antes de transmitir sim isso.
Usando sim com comandos
Em sua infância, sim seria usado com outros comandos do Linux. Desde então, a maioria desses outros comandos do Linux tem sua própria maneira de rodar sem interação humana. Sim, não é mais necessário para isso.
Vamos pegar o gerenciador de pacotes do Ubuntu apt-get como exemplo. Para instalar uma aplicação sem ter que pressionar “y” na metade da instalação, sim teria sido usado da seguinte forma:
yes | sudo apt-get instalar fortune-mod
O mesmo resultado pode ser alcançado usando a opção -y (suponha que sim) no apt-get:
sudo apt-get -y instalar o mod-fortune
Você verá que o apt-get nem sequer perguntou o que era habitual “Você quer continuar? [Y / n] ”pergunta. Apenas assumiu que a resposta seria “sim”.
Em outras distribuições do Linux, a situação é a mesma. No Fedora você teria usado esse tipo de comando do gerenciador de pacotes de uma só vez:
yes | yum install fortune-mod
O gerenciador de pacotes dnf substituiu yum e dnf tem sua própria opção -y (suponha que sim).
dnf -y install fortune-mod
O mesmo se aplica a cp, fsck e rm. Cada um desses comandos tem suas próprias opções -f (força) ou -y (assume sim).
Então parece que sim foi relegado a apenas trabalhar com scripts? Não é bem assim. Existem mais alguns truques no antigo cão ainda.
Alguns Outros Sim Truques
Você pode usar sim com uma seqüência de dígitos gerados pelo seq para controlar um loop de ações repetidas.
Este one-liner ecoa os dígitos gerados para a janela do terminal e então chama sleep por um segundo.
Em vez de simplesmente fazer eco dos dígitos para a janela do terminal, você poderia 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 loop.
yes "$ (seq 1 20)" | enquanto ler dígito; do echo digit; dormir 1; done
Às vezes, é útil ter um arquivo grande para testar. Talvez você queira praticar usando o comando zip ou desejar ter um arquivo considerável para testar os uploads de FTP.
Você pode gerar rapidamente arquivos grandes com yes. Tudo o que você precisa fazer é fornecer uma longa seqüência de texto para trabalhar e redirecionar a saída para um arquivo. Não cometa erros; esses arquivos crescerão rapidamente. Prepare-se para pressionar Ctrl + C em alguns segundos.
sim, longa linha de texto sem sentido para preenchimento de arquivo > test.txt
ls -lh teste.txt
teste wc.txt
O arquivo gerado aqui levou cerca de cinco segundos na máquina de teste usada para pesquisar este artigo. Há relatos de que o tamanho é de 557 Mb, e nos dizem que existem 12,4 milhões de linhas.
Podemos limitar o tamanho do arquivo incluindo head em nossa string de comando. Dizemos quantas linhas incluir no arquivo. O -50 significa head permitirá apenas 50 linhas até o arquivo test.txt.
sim longa linha de texto sem sentido para preenchimento de arquivo | cabeça -50 > test.txt
Assim que houver 50 linhas no arquivo test.txt, o processo será interrompido. Você não precisa usar Ctrl + C. Ele chega a uma pausa graciosa por sua própria vontade.
O wc relata que existem exatamente 50 linhas no arquivo, 400 palavras e 2350 bytes de tamanho.
Mesmo que ainda seja útil para alimentar respostas em scripts de longa execução (e alguns outros truques), o comando yes não fará parte de 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.
Via: How to Geek
Nenhum comentário