Existe um yes
comando no unix / linux que basicamente infinitamente imprime y
ao stdout
. Qual é o objetivo disso e como é útil?
Existe um yes
comando no unix / linux que basicamente infinitamente imprime y
ao stdout
. Qual é o objetivo disso e como é útil?
Respostas:
yes pode ser usado para enviar uma resposta afirmativa (ou negativa; por exemplo, yes n) a qualquer comando que, de outra forma, solicitaria um, fazendo com que o comando fosse executado de maneira não interativa.
O comando yes em conjunto com o comando head pode ser usado para gerar arquivos de grande volume para meios de teste.
Também pode ser usado para testar como um sistema lida com altas cargas, pois o uso de yes resulta em 100% de uso do processador, para sistemas com um único processador (para um sistema multiprocessador, um processo deve ser executado para cada processador). Isso, por exemplo, pode ser útil para investigar se o sistema de resfriamento de um sistema será eficaz quando o processador estiver funcionando a 100%.
Em 2006, o comando yes recebeu publicidade por ser um meio de testar se o MacBook de um usuário é ou não afetado pela Síndrome de Desligamento Intermitente. Ao executar o comando yes duas vezes via Terminal no Mac OS X, os usuários conseguiram maximizar a CPU do computador e, assim, ver se a falha estava relacionada ao calor
via wikipedia: http://en.wikipedia.org/wiki/Yes_(Unix)
yes `yes yes`
Essa pode ser uma opinião controversa, mas, na minha opinião , é uma correção feia para uma interface de usuário ruim em ferramentas de linha de comando .
Algumas ferramentas de linha de comando fazem perguntas ao usuário com um prompt e não têm a opção de executar de maneira não interativa; imagine, por exemplo, algo como
$ frobnicate *
frobnicate file a.txt? (y/n) y
frobnicate file b.txt? (y/n) y
...
Como a resposta à pergunta é extraída da entrada padrão, uma solução rápida para esse problema é ter um aplicativo que gera a string y\n
continuamente, e é exatamente yes
isso que faz. Unix tubos pode ser usado para enviar esta saída como uma entrada para um determinado comando.
$ yes | frobnicate
Um dos problemas dessa abordagem é que yes
não há possibilidade de verificar a pergunta para a qual está respondendo:
frobnicate file a.txt? (y/n) y
frobnicate file b.txt? (y/n) y
format device /dev/sda1? (y/n) y
frobnicate file c.txt? (y/n) y
Uma solução melhor, quando disponível, é uma opção específica para executar de maneira não interativa, como rm -f
ou apt-get -y
. Isso permite codificar um comportamento mais sensível no aplicativo.
Acabei de encontrar outro uso para ele: gostava de limpar um disco rígido com um padrão diferente de apenas zeros (como: dd se = / dev / zero de = / dev / sdd bs = 1M) e usou 'yes' para isso:
yes UUUUUUUUUUUUU > /dev/sdd
Um colega de trabalho usou isso de uma maneira nova para inserir uma senha
yes password | passwd
passwd
solicitará a senha antiga primeiro, se o usuário não for root ou um superusuário e não continuará, a menos que a senha correta seja digitada. Portanto, o usuário é root ou também password
é a senha antiga e nada é alterado.
ps
ou top
no momento certo).