[转] linux中 参数命令 -- 和 - 的区别

在 Linux 的 shell 中,我们把 - 和 -- 加上一个字符(字符串)叫做命令行参数。
主流的有下面几种风格Unix 风格参数

前面加单破折线 -BSD 风格参数
前面不加破折线GNU 风格参数
前面加双破折线Unix 风格参数

Unix风格的参数

一个减号,然后一个参数就是一个字母。
Unix风格的参数是从贝尔实验室开发的AT&T Unix系统上原有的命令继承下来的。比如

ps -A
ls -l
rm -fr /
git commit -am "xxx"

那么,为什么有的 - 后面跟一个字母,有的跟两个字母呢?
其实很简单,一个字母就是一个参数,两个字母就是两个参数。
最后那个 git -am 其实是 -a -m 两个参数。
一般你可以分开写,也可以合起来写。

GNU风格的参数

GNU 风格就是两个减号 -- 加参数,一般后边的参数是跟上一个单词或短语。
比如

npm install lodash --save
npm install express --save-dev
tsc --init
ps --no-headers

咦?为什么有些双减号和单减号混合了?
其实在这种模式中,双减号后面就是一个参数,单减号在这里就是一个连字符的作用,就是为了把两个单词隔开,为了美观。
为啥不用空格隔开呢,道理大家都懂得。其实 -- 后面仍然是一个参数。
比如 no-headers 的 意思就是不显示header,这是一个参数。
你也可以理解为 -- 后面的单词是单减号 - 字母的全称。比如 ls -a 和 ls --all 意思是一样的。-h 往往对应 --help 。-v(-V) 对应 --version。但是也有一些非主流的例外。

BSD 风格的参数

伯克利软件发行版(Berkeley software distribution,BSD)是加州大学伯克利分校开发的一个Unix版本。
它和AT&TUnix系统有许多细小的不同,这也导致了多年的Unix争论。
说实话,这种我用的不是很多。这种参数和第一种很像,就是不用带 减号 -。比如ps aux

tar cjvf what.tar.bz2 .

其实 aux 是三个参数。cjvf是四个参数(也可以用 UNIX 风格,前面加个单减号)。
所以不熟悉的话就man一下或者--help(这个--help基本上都有的)。一切以具体的程序和文档为准。

来源: https://www.zhihu.com/question/267095526/answer/319488831

posted @ 2018-10-15 18:27  bingo彬哥  阅读(2213)  评论(0编辑  收藏  举报
本站总访问量