加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

GNU 命令标准的实践运用

发布时间:2021-05-23 02:48:05 所属栏目:教程 来源:互联网
导读:当我们在开发 FinSH 时,我们了解到,在编写命令行应用程序之前,你需要熟悉 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 的选项解析非常灵活。它可以根据空格或等号作为定界符来区分一个选项和一个参数,或者仅仅通过提取选项本身并假设后面的内容是参数(换句话说,完全没有定界符)。

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!