在命令行中输入命令,有时候用一个中划线 -(短选项),有时候用两个 --(长选项),它们之间有什么区别吗?
短选项(Short Options)
短选项用一个单独的字母作为标志,通常也是一个选项英语的缩写。例如:
-
-a表示所有(all) -
-c表示命令(command) -
-f表示文件(file) -
-V表示版本(version)
多个短选项可以连写,如ls -a -l 可以写成 ls -al,而 git -am 也等价于 git -a -m
长选项(Long Options)
单独字母的数量毕竟有限,会不够用,而且表达的意思不够明确,于是就有了长选项--,后面可以跟一串单词,如 --version、--all。参数可以放在后面用空格隔开,也可以使用 =,如 --file foo.bar 等价于 --file=foo.bar,短选项和长选项可以表达相同的意思,例如:
npm install express --save
npm install express -S
其他用法
有时候会看到 - 或者 -- 独立存在,即后面没有紧跟着单词或字母,是为了分隔 [选项] 和 [参数],例如:
wget -O - https://www.baidu.com/
这里的 - 代表输出到 stdout 。
有时是为了给前一个程序的选项或参数里的程序传参数,比如:
pm2 start a.js -- --port 80
这里 -- 后面的参数其实是传给 a.js 的,而不是给 pm2 的。 -- 代表后面的参数不解析,最常见的场景是在 npm scripts 中进行设置:
"start": "egg-scripts start"
那当你执行下面的命令时:
npm start -s -- --workers=1
第一个 -s 是 npm 本身的参数,代表静默,后面的 workers 参数不解析,直接传递进去,相当于执行:
egg-scripts start --workers=1