如何在linux上使用yes命令

yes命令似乎太简单,没有任何实际用途,但是在本教程中,我们将向您展示它的应用程序,以及如何从Linux和macOS中被压抑的积极性中获益。...

yes命令似乎太简单,没有任何实际用途,但是在本教程中,我们将向您展示它的应用程序,以及如何从Linux和macOS中被压抑的积极性中获益。

“是”命令

yes命令是Linux和macOS等类似Unix的操作系统中最简单的命令之一。简单,我们指的是简单的使用和初始实现。在system7unix中发布的原始版本的源代码由kenthompson编写,总共只有六行代码。

但不要因为它是一个简单的小命令就把它一笔勾销。它可以用在一些有趣和有用的方式。

是做什么的?

在没有任何命令行参数的情况下使用yes命令,其行为就像您键入“y”并反复(反复)按Enter键一样。很快。它将继续这样做,直到您按Ctrl+C来中断它。

yes

如何在linux上使用yes命令

事实上,yes可以用于重复生成您选择的任何消息。只需键入yes、空格和要使用的字符串,然后按Enter键。这通常用于使yes生成“yes”或“no”字符串的输出流。

yes yes

如何在linux上使用yes命令

yes anything you like

如何在linux上使用yes命令

但这有什么用呢?

yes的输出可以通过管道传输到其他程序或脚本中。

这听起来熟悉吗?你开始了一个漫长的进程,然后走开,让它继续运行。当你回到你的电脑,这个过程还没有完成。在你不在的时候,它会问你一个问题,然后坐在那里等待“是”或“否”的回答。

如果你事先知道你所有的回答都是肯定的(“是”或“y”)或否定的(“否”或“n”),你可以用“是”为你提供这些回答。然后,您的长流程将在无人值守的情况下运行到完成,并为流程提出的任何问题****。

对脚本使用yes

请看下面的bashshell脚本。(我们需要设想,这是一个更大的脚本的一部分,需要相当长的时间才能运行。)

#!/bin/bash # ... # in the middle of some long script # obtain a resp***e from the user # ... echo "Are you happy to proceed? [y,n]" read input # did we get an input value? if [ "$input" == "" ]; then echo "Nothing was entered by the user" # was it a y or a yes? elif [[ "$input" == "y" ]] || [[ "$input" == "yes" ]]; then echo "Positive resp***e: $input" # treat anything else as a negative resp***e else echo "negative resp***e: $input" fi

此脚本提出一个问题并等待响应。脚本中的逻辑流由用户的输入决定。

  • “是”或“y”表示肯定回答。
  • 任何其他输入都被视为负面响应。
  • 在没有输入文本的情况下按Enter键不起任何作用。

要对此进行测试,请将脚本复制到一个文件中,并将其保存为long_脚本.sh。使用chmod使其可执行。

chmod +x long_script.sh

使用以下命令运行脚本。尝试提供“是”、“y”和其他任何输入,包括在不输入文本的情况下按Enter键。

./long_script.sh

如何在linux上使用yes命令

要获得yes以提供我们对脚本问题的响应,请将yes的输出通过管道传输到脚本。

yes | ./long_script.sh

如何在linux上使用yes命令

有些脚本的要求更加严格,只接受完整的“是”字作为肯定的回答。您可以提供“yes”作为yes的参数,如下所示:

yes yes | ./long_script.sh

如何在linux上使用yes命令

不仔细考虑就不要答应

你需要确定你将要输入到脚本或程序中的输入肯定会给你预期的结果。要做出决定,你必须知道问题和你的回答。

脚本、命令或程序中的逻辑可能与您的期望不匹配。在我们的示例脚本中,问题可能是“您希望停止吗?如果是这样的话,否定的回答会让脚本继续。

您必须熟悉脚本、命令或程序,然后才能轻松地将“是”引入其中。

对命令使用yes

在初期,yes将与其他Linux命令一起使用。从那时起,大多数其他Linux命令都有自己的运行方式,无需人工交互。实现这一目标不再需要“是”。

让我们以Ubuntu包管理器apt-get为例。要安装应用程序而不必在安装过程中按“y”,应按以下方式使用“是”:

yes | sudo apt-get install fortune-mod

如何在linux上使用yes命令

使用apt get中的-y(假设是)选项可以获得相同的结果:

sudo apt-get -y install fortune-mod

如何在linux上使用yes命令

你会发现apt-get甚至没有像往常那样问“你想继续吗?[是/否]“问题。它只是假设答案是“是的”

在其他Linux发行版上,情况也是如此。在Fedora上,您可能曾经使用过这种类型的包管理器命令:

yes | yum install fortune-mod

dnf包管理器已经取代了yum,并且dnf有自己的-y(假设是)选项。

dnf -y install fortune-mod

这同样适用于cp、fsck和rm。这些命令都有自己的-f(force)或-y(假设是)选项。

那么“是”似乎被降级为只处理脚本了吗?不完全是。这只老狗还有几招呢。

一些进一步的是的技巧

您可以将yes与seq生成的数字序列一起使用,以控制重复操作的循环。

这一行将生成的数字回显到终端窗口,然后调用sleep一秒钟。

您可以调用另一个命令或脚本,而不是简单地将数字回显到终端窗口。该命令或脚本甚至不需要使用数字,它们只用于启动循环的每个周期。

yes "$(seq 1 20)" | while read digit; do echo digit; sleep 1; done

如何在linux上使用yes命令

有时有一个大文件来测试是有用的。也许你想练习使用zip命令,或者你想有一个相当大的文件来测试FTP上传。

您可以使用yes快速生成大型文件。你所需要做的就是给它一个长的文本字符串,并将输出重定向到一个文件中。别搞错了,那些文件会迅速增长的。准备在几秒钟内按Ctrl+C。

yes long line of meaningless text for file padding > test.txt ls -lh test.txt wc test.txt

如何在linux上使用yes命令

这里生成的文件在用于研究本文的测试机器上花费了大约5秒钟。ls报告它的大小是557mb,wc告诉我们其中有1240万行。

我们可以通过在命令字符串中包含head来限制文件的大小。我们告诉它文件中要包含多少行。-50意味着头部只允许50条线穿过测试.txt文件。

yes long line of meaningless text for file padding | head -50 > test.txt

如何在linux上使用yes命令

只要有50行测试.txt文件,进程将停止。您不需要使用Ctrl+C,它会根据自己的意愿优雅地停止。

wc报告说,文件中正好有50行,400字,大小为2350字节。


即使它对于将响应输入到长时间运行的脚本(以及其他一些技巧)仍然很有用,yes命令也不会成为日常命令工具箱的一部分。但是当你真的需要它的时候,你会发现它本身就是简单的,而且有六行黄金代码。

  • 发表于 2021-04-03 13:30
  • 阅读 ( 166 )
  • 分类:互联网

你可能感兴趣的文章

如何在ubuntu linux中安装microsoft文本字体

... 不寻常的是,您会被提示同意Microsoft EULA(以下是如何理解EULA)。现在,这是一个令人毛骨悚然的地方:你可能对此有保留。尽管这些TrueType字体(不同于OpenType字体)已经免费提供,但您会注意到它们不是开源的。此外...

  • 发布于 2021-03-14 15:30
  • 阅读 ( 375 )

重置忘记的windows管理员密码的3种方法

...不要担心。有几种方法可以用来恢复它。我们将向您展示如何在Windows中重置管理员密码。 ...

  • 发布于 2021-03-15 03:48
  • 阅读 ( 841 )

如何在linux上安装和使用powershell

... 在本文中,我将向您展示如何在Linux上安装、运行和使用PowerShell! ...

  • 发布于 2021-03-16 02:34
  • 阅读 ( 307 )

如何在一个树莓圆周率主持自己的网站

...可以选择使用设备RAM进行临时读/写文件存储。当您决定如何使用非常小的web服务器时,您可能需要更改这一点。 ...

  • 发布于 2021-03-21 14:29
  • 阅读 ( 227 )

如何在一个小时内安装一台linux媒体服务器

为您的电视和电影收藏设计终极媒体服务器可能是一项挑战。你应该使用什么硬件,你应该安装什么操作系统,你应该运行什么样的软件? ...

  • 发布于 2021-03-21 20:50
  • 阅读 ( 323 )

windows10ssh与putty:是时候切换远程访问客户端了?

...亏了Windows PowerShell,您可能不再需要腻子了。让我们看看如何在windows10中设置SSH访问,以及新工具是否可以取代PuTTY。 ...

  • 发布于 2021-03-22 22:29
  • 阅读 ( 323 )

开始使用kali linux和raspberry pi进行道德黑客攻击

...,Kali Linux提供了扩展道德黑客技能所需的一切。下面是如何将Kali Linux加载到Raspberry Pi 3上的。 ...

  • 发布于 2021-03-24 05:10
  • 阅读 ( 393 )

如何在linux上管理ip地址:查找、设置和更改

... 如何查找您的ip地址和dns地址 ...

  • 发布于 2021-03-24 17:34
  • 阅读 ( 261 )

如何使用pydroid3在android上安装和编写python代码

... 无论您是Python编程新手还是专家,让我们来看看您如何在Android设备上充分发挥pydroid3的潜力。 ...

  • 发布于 2021-03-30 03:41
  • 阅读 ( 404 )

如何在ubuntu上安装ftp服务器

... 许多Linux服务器运行Ubuntu。那么,让我们看看如何在Ubuntu服务器上设置FTP服务器。 ...

  • 发布于 2021-03-30 13:11
  • 阅读 ( 311 )
jvc8636
jvc8636

0 篇文章

相关推荐