站长网 教程 GNU 命令标准的实践运用

GNU 命令标准的实践运用

当我们在开发 FinSH 时,我们了解到,在编写命令行应用程序之前,你需要熟悉 GNU 命令行标准。这个标准实践的框架有助于给界面带入熟悉感,这有助于开发人员在使用时感到舒适和高效。 一个完整的 GNU 命令主要由四个部分组成。 命令名(可执行文件):命令

当我们在开发 FinSH 时,我们了解到,在编写命令行应用程序之前,你需要熟悉 GNU 命令行标准。这个标准实践的框架有助于给界面带入熟悉感,这有助于开发人员在使用时感到舒适和高效。

一个完整的 GNU 命令主要由四个部分组成。

命令名(可执行文件):命令行程序的名称;

子命令:命令程序的子函数名称。

选项:子命令函数的配置选项。

参数:子命令函数配置选项的相应参数。

你可以在任何命令中看到这一点。以 Git 为例:

gitreset–hard HEAD~1

这一点可以分解为:

可执行的命令是 git,子命令是 reset,使用的选项是 –head,参数是 HEAD~1。

再举个例子:

systemctl enable –now firewalld

可执行的命令是 systemctl,子命令是 enable,选项是 –now,参数是 firewalld。

想象一下,你想用 RT-Thread 编写一个符合 GNU 标准的命令行程序。FinSH 拥有你所需要的一切,并且会按照预期运行你的代码。更棒的是,你可以依靠这种合规性,让你可以自信地移植你最喜欢的 Linux 程序。

编写一个优雅的命令行程序

下面是一个 RT-Thread 运行命令的例子,RT-Thread 开发人员每天都在使用这个命令:

usage:env.py package[-h][–force-update][–update][–list][–wizard]

                      [–upgrade][–printenv]

 

optional arguments:

  -h,–help      show this help message andexit

  –force-update  force update and clean packages, install or remove the

                  packages by your settings in menuconfig

  –update        update packages, install or remove the packages by your

                  settings in menuconfig

  –list          list target packages

  –wizard        create a newpackagewith wizard

  –upgrade       upgrade local packages listand ENV scripts fromgit repo

  –printenv      print environmental variables to check

正如你所看到的那样,它看起来很熟悉,行为就像你可能已经在 Linux 或 BSD 上运行的大多数 POSIX 应用程序一样。当使用不正确或不充分的语法时,它会提供帮助,它支持长选项和短选项。这种通用的用户界面对于任何使用过 Unix 终端的人来说都是熟悉的。

选项种类

选项的种类很多,按长短可分为两大类。

短选项:由一个连字符加一个字母组成,如 pkgs -h 中的 -h 选项。

长选项:由两个连字符加上单词或字母组成,例如,scons- –target-mdk5 中的 –target 选项。

你可以把这些选项分为三类,由它们是否有参数来决定。

没有参数:该选项后面不能有参数。

参数必选:选项后面必须有参数。

参数可选:选项后可以有参数,但不是必需的。

正如你对大多数 Linux 命令的期望,FinSH 的选项解析非常灵活。它可以根据空格或等号作为定界符来区分一个选项和一个参数,或者仅仅通过提取选项本身并假设后面的内容是参数(换句话说,完全没有定界符)。

本文来自网络,不代表站长网立场,转载请注明出处:https://www.tzzz.com.cn/html/video/2021/0523/4254.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部