[Linux服务器] 关于Linux命令行风格的总结

244 0
Honkers 2025-4-21 16:25:48 | 显示全部楼层 |阅读模式

博客主页:https://tomcat.blog.csdn.net
博主昵称:农民工老王
主要领域:Java、Linux、K8S
期待大家的关注💖点赞👍收藏⭐留言💬

最近在工作中遇到有同事问我一个问题:tar -zxf 和 tar zxf 有什么区别,他们的作用是一样的吗,参数前到底是否需要加连字符-?

先说答案:tar -zxf 和 tar zxf 是不同参数风格的Linux命令,前者是Unix/Posix风格,后者BSD 风格。他们的作用是一样的,参数是否加连字符-都可以。

上面这个问题就牵涉到一个被很多人忽略的知识点——Linux命令的选项风格(也有程序员称之为参数风格)。本文在此讨论一下。

常见的Linux命令行风格有三种,即 Unix/Posix、BSD、GNU,除此之外还有一些难以被归类的风格。

Unix/Posix风格

也叫短选项风格,是最原始的风格,选项是以连字符-开头的单个字符,注意是一个字符,而不是一个单词。

如果选项后面不带参数,则被称之为模式选项。模式选项是可以组合在一起使用的。例如:如果-a和-l是模式选项,那么-al或-la就都正确。

如果选项需要带参数,则称之为参数选项。这些参数要紧接在这个选项后面,通常用空格隔开。

最初的Unix风格是在缓慢的ASR-33电传打字机上演变而来的,这使得简洁成为一种美德,因此是单字母选项。按住shift键需要额外的精力,因此偏爱小写,并使用-,而不是可能更合乎逻辑的+来启用选项。

GNU风格

也叫做长选项风格,选项使用两个连字符--开头的单词,如:ls --all。

如果选项需要带参数,则使用空格或者=将参数和选项分开。如:ls --sort time,ls --sort=time。

这种风格的出现是因为仅仅26个字母,即使算上大小写也只有52个,不够一些复杂的GNU程序使用。另外一点是相比于单字符的Unix/Posix风格,GNU风格更容易理解,因为出现的不再是缩写的字母。

BSD 风格

和POSIX/UNIX风格相比,其选项使用单个字符,且不带任何前缀。如ps a。如果是多个不带参数的选项,也可以组合在一起,如ps aux。

如果选项需要带参数,也同POSIX/UNIX风格一样,选项参数紧跟在这个选项后面,可以使用空格分开,也可以不用空格。如ps U root、ps Uroot的作用是一样的。

其他

上面三种风格是最常见的,绝大多数程序的命令是属于上述中的一种,甚至可以同时接受这三种风格的命令行,如ps ,tar,但除此之外,还有小部分命令的参数风格,不属于上面的任何一种。

比如java -version,像这样命令行,其选项通常以单个连字符-开头,后跟一个单词或字符来表示选项。有的程序员称之为X toolkit风格。其实这种概括并不是很准确,我通过查阅资料得知:X toolkit风格的命令行是指,在X窗口系统中使用X toolkit库进行解析和处理的命令行参数和选项的风格。
它首先过滤并处理某些设置显示效果的选项,如-display 和 -geometry,并将剩余的命令行参数传递给应用程序进行解析和处理。可见,X toolkit风格的重点是有一个过滤的流程。

万事万物都有例外,总有的软件供应商喜欢特立独行,像java - version这样风格的命令行,目前并无一个被大多数程序员认可的分类名称,你可以叫它X toolkit风格,也可以像我这样,直接称呼它为Java风格,谁让我对Java语言更熟悉呢。


如需转载,请注明本文的出处:农民工老王的CSDN博客https://blog.csdn.net/monarch91 。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Honkers

特级红客

关注
  • 3159
    主题
  • 36
    粉丝
  • 0
    关注
这家伙很懒,什么都没留下!

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行