📜  如何在 Linux 中构建自己的命令?

📅  最后修改于: 2022-05-13 01:57:03.782000             🧑  作者: Mango

如何在 Linux 中构建自己的命令?

Linux 是使用最广泛的开源操作系统之一,它同时支持 GUI 和 CLI。自 1991 年 9 月 17 日由 Linus Torvalds 首次发布以来,它已在世界各地广泛使用。它以其命令行操作而广为人知。我们一直在 Linux 中使用多个命令,例如 date 命令、mkdir 命令等等。您可以从 Linux 命令中了解更多信息。

Linux中的日期命令

我们在 Linux 中使用了数以千计的命令,但我们从未想过要创建我们的命令。构建你的命令可以是一种非常有趣和有趣的学习和试验你的知识的方式。在构建新事物时,您会遇到许多新概念,并且您将学习许多新事物。

在这里,我们将为 Linux 发行版构建一个新命令,该命令在任何 Linux 发行版中都不存在。我们将构建一个实时命令,用于在终端连续显示时间,而不会干扰我们的终端执行其他任务。让我们来看看它。

Linux中的实时日期命令

要构建这样的东西,我们需要很好地了解 Linux 命令及其属性,以及如何将 Linux 知识与脚本集成。要了解我们可以使用的命令的所有属性,请使用 man 命令

Linux 中的 man 命令

更进一步,有一个名为echo的命令,用于在屏幕上显示输出。有关 echo 命令的基本用法和示例,请单击此处。除了基础之外,此命令还可用于显示其他命令的输出。例如,

Linux 中的 echo 命令

在此示例中,您可以观察到,当我们在双引号(“date”)中运行 date 命令时,echo 将其作为字符串并打印出来,但是当我们在反引号(“`date`”)中运行它时,它给出了date 命令的输出。所以我们也可以使用 echo 来显示其他命令的输出。

我们已经熟悉 echo 命令的属性,例如-n、-e 等。如果没有,那么请点击上面的链接,阅读文章了解 echo 命令的详细使用。现在,如果我们只想使用 date 命令显示时间,我们可以使用“date +%T” 。有关更多详细信息,您可以使用man命令。

现在我们知道,在下一行打印的echo命令中,我们使用\n ,退格\b等。要使用这些属性,我们使用-e并在同一行打印输出,我们使用-n 。假设我们需要在同一行打印时间,但我们不想显示秒,我们可以使用echo -n -e “`date +%T` \b\b\b”

在 Linux 中使用 n 和 e 选项回显

在这个例子中,我们可以看到,当我们只使用 -n 属性时,输出被打印在同一行,当我们使用 \b 和 -n 时,它只是将它打印为一个字符串。当我们只使用 -e 时,输出在下一行。但是当我们将 -n 和 -e 与 \b 一起使用时,秒数是不可见的。简单来说,最后三位数字,即“:12”没有打印出来。

现在我们需要思考,我们如何使用这些技能,让每个时间日期也应该用秒来打印。如果我们以某种方式让它连续运行,那么每一秒我们都会得到一个新的时间,同时,由于我们使用的退格 (\b) 它将被删除。为了让它连续运行这个命令,我们需要使用脚本,现在我们将把我们的 Linux 知识与脚本结合起来。

对于使用脚本运行的任何命令,都遵循非常基本的语法。我们只需要将命令写入文件并保存即可。要运行该文件中存在的所有这些命令,我们只需要编写存在命令的“bash file_name”。例如,

在这个例子中,我们可以看到在左侧我们创建了一个名为 script 的文件,我们在其中给出了一些命令。在终端中,当我们运行“bash script”时,我们可以观察到所有写入文件的命令都被执行了。请注意,在此示例中,我将文件名指定为“脚本”,但您可以随意指定。

现在,如果我们希望每秒打印一次日期,我们需要在循环下运行它。脚本中循环的语法非常简单。例如,

在上面的示例中,您可以看到在 bash 脚本中使用 while 循环是多么简单。您只需要在命令之前添加do并且在命令结束时写入关键字。由于我们没有给出任何限制,因此它将无限运行,直到您的所有资源耗尽。您可以在下图中看到,运行脚本后,它会不断打印 f1.txt 文件中写入的语句。为了阻止它,我们使用CTRL + C

现在让我们看看如果我们使用这个概念来构建新的时间命令会发生什么。如果我们将我们创建的命令放在 while 循环中,让我们看看会发生什么,

在这里,我们可以观察到我们可以看到运行时的时间,秒数每秒都在变化,但主要问题是我们无法使用终端执行其他任务。它只是显示时间,如果我们想运行其他命令,我们需要停止这个脚本。

为了解决这个问题,我们必须将命令放在后台,以便脚本在后台运行,我们可以使用终端执行其他命令。要将任何任务置于后台,我们在命令末尾使用“&” 。例如,

在上图中,当我们运行“gedit abhi”时,您可以观察到它正在使用我们的终端,在我们终止它之前,我们无法在终端中运行任何其他命令。当我们在命令后使用&时,您可以在下图中观察到 gedit 在后台运行并且我们的终端是免费的。我们也可以自由地使用我们的终端来执行其他命令,同时 gedit 也在运行。

现在,这就是在后台运行任何东西的“&”概念。现在我们需要将它实现到我们的新命令中,以便我们可以使它更加高效。正如我上面所讨论的,我们知道在脚本中使用循环。现在我们只需要在“done”关键字后面加上“&”,让它在后台运行。现在如果我们添加它,让我们看看它是如何工作的,

现在您可以看到,它运行良好,我们也可以使用我们的终端。在下图中,您可以看到我们的 live-time 也在运行,我们也可以运行其他命令。在这里,我使用了“bash liveate”命令,但您可以使用任何名称(例如 live-time)或任何您想要的名称保存文件。我使用 livedate 是因为我使用 date 命令来构建这个实时实时命令。

生活指挥