小墨の博客

梦想需要付诸行动,否则只能是梦

关于命令行参数几种风格的介绍(Unix、GNU、BSD、X toolkit、DOS)

linux命令行格式简介

常见的几种命令行参数风格

参数风格使用情况前导符号参数名备注来源
GNU风格
双破折线(--)字符串

通过等号(=)空格( )赋值

du --max-depth=1 等价于 du --max-depth 1

GNU计划&Linux内核的Linux系统

Unix / POSIX风格

(原始)


单破折线(-)

单个字符,多个字符表示多个参数的拼接

模式选项:选项后不带参数,可以组合在一起使用。例如-a和-b是模式选项,那么-ab或-ba作用相同

如果选项后带参数,这些参数要紧接在其后,也可用空格分开

通过空格( )赋值或直接连接

du -d 1 等价于 du -d1

tar -xzvf 等价于 tar -x -z -v -f

贝尔实验室开发的AT&T Unix系统

BSD风格

使用相对较少

单个字符,不带任何前缀,如 ps a

多个不带参数的选项,可以组合在一起,如 ps aux

ps U root 等价于 ps Uroot

加州大学伯克利分校开发的一个Unix系统

X toolkit风格

不应在新程序中使用单破折线(-)字符串,如 java -version

通过空格( )赋值

find -name *.txt


【解析】原始的X toolkit风格是由X toolkit进行解析,它首先过滤并处理某些选项(如-geometry和-display)然后再把过滤后的命令行传递给应用程序逻辑进行解析。


【说明】这种风格即不能和古典的POSIX/UNIX风格兼容,也不能和GNU风格兼容,所以不应该在新程序中使用,除非遵循老式的X约定看起来价值很高。


 【备注】不确定将find、java命令归类为X toolkit风格是否正确,因为它们不属于X软件,但风格确实很像。java在某些高版本中,也支持了GUN风格的命令行


DOS风格Windows系统左斜线(/)单个字符,多个字符表示多个参数的拼接

直接连接,如果选项带参数,则选项参数紧跟在选项后边,不使用空格分开。

mycommand /C /D 等价于 mycommand /C/D

mycommand /CP/D




以下是从 man ps 输出中截取出来的一段话

       This version of ps accepts several kinds of options:

       1   UNIX options, which may be grouped and must be preceded by a dash.
       2   BSD options, which may be grouped and must not be used with a dash.
       3   GNU long options, which are preceded by two dashes.


细节

Unix/Linux 下各种命令的参数,都是以 - (后面跟单字符参数,比如 -r) 或者 -- (后面紧跟多字符参数,比如 --recursive)来表示。 在所有参数后面是文件名或者目录。大多情况下(文件名第一个字符不是 -)这样是没有任何问题的,但是如果文件名第一个字符是 - 时(比如 -myfile),命令就无法区分此时 -myfile 到底是文件名还是参数名。此时解决方法就是用 -- 来表示命令参数结束了,后面哪怕是以 - 开头的字符串,也被当成文件名处理。

比如 rm -r -- -mydir 就会递归的(-r)删除 -mydir 这个目录。

 

当然,还有其它各种各样的风格,只是不是太常见,所以不再介绍,实际遇到的时候,需要根据手册或者帮助文档查看其选项的格式和含义。需要注意的是,这些风格之间只是“风格”不同,实际使用中并不限制使用,比如上述 ps 命令,由于一些历史原因,就可以接收POSIX/UNIX风格、GNU风格、BSD风格的参数,互相并不冲突。就像武林中的高手一样,可以使用多个门派的武功。但是建议加入到较流行的门派中,毕竟使用的人多的门派,相对来说,比较容易和其它人交流。如GNU风格、POSIX/UNIX风格,且建议同时支持这两种风格(即长命令选项、短命令选项)。如果已有的流行风格已经可以满足使用需求了,不建议再开宗立派了,门派多了,沟通和交流的成本就高了。毕竟我们不是真正的“武林”,不需要分出一个胜负,需要的是更友好地交流。


-----------------------------------

参考文章:

linux命令行格式简介:https://ispacesoft.com/49236.html

linux中三种风格Unix、BSD、GNU的ps的参数说明:https://blog.51cto.com/u_6353447/5872555

不同的命令行风格:https://blog.csdn.net/dancen/article/details/126244907

【Linux】命令行参数前 的「-」和「--」解释与用法:https://blog.csdn.net/weixin_44441131/article/details/117921133

linux命令详解:ps:https://www.cnblogs.com/llbai/p/16625191.html



张小弟之家

本文链接:
文章标题:

本站文章除注明转载/出处外,均为原创,若要转载请务必注明出处。转载后请将转载链接通过邮件告知我站,谢谢合作。本站邮箱:admin@only4.work

尊重他人劳动成果,共创和谐网络环境。点击版权声明查看本站相关条款。

    发表评论:

    搜索
    本文二维码
    标签列表
    站点信息
    • 文章总数:511
    • 页面总数:20
    • 分类总数:92
    • 标签总数:208
    • 评论总数:62
    • 浏览总数:231783

    | | |
    | |  Z-Blog PHP