如何在Linux上使用yes命令

如何在Linux上使用yes命令 2

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

是的命令

command是Linux和其他类Unix操作系统(如macOS)中最简单的命令之一。简单来说,我们的意思是简单使用它的初始实现。在System 7 Unix中发布并由Ken Thompson编写的原始版本的源代码仅为六行代码。

但是不要把它写成一个简单的小命令。它可以用于一些有趣和有用的方式。

是的是什么?

在没有任何命令行参数的情况下使用 命令的行为就像你输入“y”并再次点击Enter,一遍又一遍(和反复)。很快。它会继续这样做,直到你按Ctrl + C来中断它。

在终端窗口中输出yes

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

是的是的

在终端窗口中输出yes yes

是的,你喜欢什么

从终止窗口中的一行文本输出“width =”646“height =”382“src =”/ pagespeed_static / 1.JiBnMqyl6S.gif“onload =”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);“onerror = “this.onerror = NULL; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(本);

但有什么用呢?

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

这听起来很熟悉吗?你开始一个漫长的过程运行并离开它,让它运行。当您返回计算机时,该过程根本没有完成。在你缺席的情况下,它会问你一个问题并坐着等待“是”或“否”回复。

如果您事先知道您的所有答案都是肯定的(“是”或“是”)或否定(“否”或“否”)您可以使用 为您提供这些回复。然后,您的漫长过程将无人值守地完成 为流程提出的任何问题提供答案。

使用yes和Scripts

查看以下Bash shell脚本。 (我们需要想象这是一个更大的脚本的一部分,需要相当长的时间才能运行。)

#!/斌/庆典

#…
#在一些长脚本的中间
#获取用户的响应
#…

echo“你很乐意继续吗?(y,n)”
读输入

#我们得到了输入值吗?
if(“$ input”==“”);然后

   echo“用户没有输入任何内容”

#是y还是是?
elif((“$ input”==“y”))|| ((“$ input”==“是”));然后

   echo“积极响应:$ input”

#将其他任何东西视为否定回应
其他

   回声“消极反应:$输入”

科幻

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

  • “是”或“y”表示肯定响应。
  • 任何其他输入都被视为否定响应。
  • 没有输入文本按Enter键什么都不做。

要对此进行测试,请将脚本复制到文件并将其另存为 long_script.sh。使用 CHMOD 使其可执行。

chmod + x long_script.sh

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

./long_script.sh

在终端窗口中输出long_script.sh“width =”646“height =”382“src =”/ pagespeed_static / 1.JiBnMqyl6S.gif“onload =”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);“onerror =”this。的onerror = NULL; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(本);

要得到 提供我们对脚本问题的响应,管道输出 到脚本。

是的| ./long_script.sh

在终端窗口中输入yes到long_script.sh“width =”646“height =”122“src =”/ pagespeed_static / 1.JiBnMqyl6S.gif“onload =”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);“onerror =”this .onerror = NULL; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(本);

有些脚本的要求更严格,只接受完整的“是”字作为积极的回应。您可以提供“是”作为参数 , 如下:

是的,是的./long_script.sh

在终端窗口中输入yes yes到long_script.sh“width =”646“height =”122“src =”/ pagespeed_static / 1.JiBnMqyl6S.gif“onload =”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);“onerror =” this.onerror = NULL; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(本);

没有思考它就不要说是

您需要确定您要输入脚本或程序的输入肯定会为您提供您期望的结果。为了能够做出决定,您必须知道问题以及您的回答应该是什么。

脚本,命令或程序中的逻辑可能与您的期望不符。在我们的示例脚本中,问题可能是“你想停止吗? (y,n)。“如果是这种情况,那么否定回应将允许脚本继续进行。

在轻轻地管道之前,您必须熟悉脚本,命令或程序 进去。

使用yes命令

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

我们来看看Ubuntu包经理 apt-get的 举个例子。要安装应用程序而不必在安装过程中按“y”, 本来可以使用如下:

是的| sudo apt-get install fortune-mod

在终端窗口中输入yes到apt-get“width =”646“height =”57“src =”/ pagespeed_static / 1.JiBnMqyl6S.gif“onload =”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);“onerror =”this .onerror = NULL; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(本);

使用相同的结果可以实现 -y (假设是)选项 apt-get的

sudo apt-get -y install fortune-mod

在终端窗口中使用apt-get和假设是选项“width =”646“height =”382“src =”/ pagespeed_static / 1.JiBnMqyl6S.gif“onload =”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);“onerror =“this.onerror = NULL; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(本);

你会看到的 apt-get的 他甚至没有问过“你想继续吗? (是/否)“问题。它只是假设答案是“是的”。

在其他Linux发行版上,情况是一样的。在Fedora上,你会一次使用这种类型的包管理器命令:

是的|百胜安装算命MOD

DNF 包经理已经取代了 百胜DNF 有它自己的 -y (假设是)选项。

dnf -y install fortune-mod

这同样适用于 CPfsck的,和 R M。这些命令都有自己的命令 -F (强制)或 -y (假设是)选项。

它似乎也是如此 已被降级为仅使用脚本?不完全的。老狗还有一些技巧。

还有一些是诡计

您可以使用 用一系列数字生成 以次 控制重复动作的循环。

这个单行将生成的数字回显到终端窗口然后调用 睡觉 一秒钟

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

是的“$(seq 1 20)”|读数字;回声数字;睡1; DONE

是一行调节终端窗口中的循环“width =”644“height =”307“src =”/ pagespeed_static / 1.JiBnMqyl6S.gif“onload =”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);“onerror =” this.onerror = NULL; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(本);

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

您可以使用快速生成大文件 。您需要做的就是为它提供一长串文本,并将输出重定向到文件中。不犯错误;那些文件会迅速增长。准备好在几秒钟内按Ctrl + C.

是文件填充> test.txt的无意义文本的长行
ls -lh test.txt
wc test.txt

使用yes ia终端窗口生成测试文件“width =”646“height =”212“src =”/ pagespeed_static / 1.JiBnMqyl6S.gif“onload =”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);“onerror =”this.onerror = NULL; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(本);

这里生成的文件在用于研究本文的测试机器上花了大约五秒钟。 LS 据报道它的大小为557 Mb 厕所 告诉我们它有1240万行。

我们可以通过包含来限制文件的大小 在我们的命令字符串中我们告诉它要在文件中包含多少行。该 -50 手段 将只允许50行通过 的test.txt 文件。

是文件填充的无意义文本的长行|头-50> test.txt

使用head来限制文件的大小ia终端窗口“width =”646“height =”167“src =”/ pagespeed_static / 1.JiBnMqyl6S.gif“onload =”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);“onerror = “this.onerror = NULL; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(本);

一旦有50行 的test.txt 文件,进程将停止。您不需要使用Ctrl + C.它根据自己的意志优雅地停下来。

厕所 报告说文件中只有50行,400个单词,大小为2350字节。

尽管将响应反馈到长时间运行的脚本(以及其他一些技巧)中仍然很有用,但是 命令不会成为日常命令工具包的一部分。但是当你确实需要它时,你会发现它本身就是简单的 – 而且总共有六行黄金代码。

本文机器自动生成,不保证语句完整通顺和表达准确,亦不对内容真实有效性负责,请读者知悉。