Qual é o sentido do comando "sim"?

38

Existe um comando yes no unix / linux que basicamente imprime infinitamente y para o stdout . Qual é o sentido disso e como é útil?

    
por Cemre 06.09.2012 / 15:01

5 respostas

39

yes can be used to send an affirmative (or negative; e.g. yes n) response to any command that would otherwise request one, thereby causing the command to run non-interactively.

The yes command in conjunction with the head command can be used to generate large volume files for means of testing.

It can also be used to test how well a system handles high loads, as using yes results in 100% processor usage, for systems with a single processor (for a multiprocessor system, a process must be run for each processor). This, for example, can be useful for investigating whether a system's cooling system will be effective when the processor is running at 100%.

In 2006, the yes command received publicity for being a means to test whether or not a user's MacBook is affected by the Intermittent Shutdown Syndrome. By running the yes command twice via Terminal under Mac OS X, users were able to max out their computer's CPU, and thus see if the failure was heat related

via wikipedia: link

    
por 06.09.2012 / 15:17
17

Esta 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 forma 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 para a pergunta é retirada da entrada padrão, uma solução rápida para esse problema é ter um aplicativo que emita a string y\n continuamente, que é exatamente o que o yes faz. Unix pipes pode ser usado para enviar essa saída como uma entrada para um determinado comando.

$ yes | frobnicate

Um dos problemas com essa abordagem é que yes não tem possibilidade de verificar a pergunta à 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 forma não interativa, como rm -f ou apt-get -y . Isso permite codificar um comportamento mais sensível no aplicativo.

    
por 06.06.2015 / 23:30
3

Eu gosto de usar yes quando estou descompactando vários arquivos .zip que contêm o mesmo arquivo com o mesmo nome e me perguntam o que fazer em cada caso (por exemplo, um contrato de licença).

yes | for z in *.zip; do unzip "$z"; done 
    
por 10.11.2017 / 18:53
2

Acabou de encontrar outro uso para ele: gostei de apagar um disco rígido com um padrão diferente de apenas zeros (como: dd se = / dev / zero de = / dev / sdd bs = 1M) e usado 'sim' para isso:

yes UUUUUUUUUUUUU > /dev/sdd

    
por 08.03.2016 / 16:36
1

Um colega de trabalho usou isso de maneira inovadora para inserir uma senha

yes password | passwd
    
por 25.08.2013 / 23:04

Tags