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
À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
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
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.