在 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

[转] linux中 参数命令 -- 和 - 的区别的更多相关文章

  1. linux中查找命令find、locate、whereis、which、type区别

    linux中查找命令find.locate.whereis.which.type区别 1. find Java代码 find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件.与查询数据库(/ ...

  2. linux中touch命令参数修改文件的时间戳(转)

    linux中touch命令参数不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件,以下是linux中touch命令参数的使用方法: touch [-acm][-r ...

  3. linux 中解析命令行参数(getopt_long用法)

    linux 中解析命令行参数(getopt_long用法) http://www.educity.cn/linux/518242.html 详细解析命令行的getopt_long()函数 http:/ ...

  4. linux中touch命令参数修改文件的时间戳(转载)

    转自:http://os.51cto.com/art/200908/144237.htm linux中touch命令参数不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存 ...

  5. Linux中mpstat命令参数详解

    Linux中mpstat命令参数详解 mpstat 是 Multiprocessor Statistics的缩写,是实时系统监控工具.其报告与CPU的一些统计信息,这些信息存放在 /proc/stat ...

  6. Linux中exec命令相关

    Linux中exec命令相关 exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息. b ...

  7. Linux中date命令的各种实用方法--转载

    在linux环境中,不管是编程还是其他维护,时间是必不可少的,也经常会用到时间的运算,自己也曾经为时间的各种表示方法和如何修改时间而困惑,熟练运用date命令来表示自己想要表示的时间,肯定可以给自己的 ...

  8. 13 Basic Cat Command Examples in Linux(转) Linux中cat命令的13中基本用法

    Cat (串联) 命令是Linux/Unix开源系统中比较常用的一个命令.我们可以通过Cat命令创建一个或多个文件,查看文件内容,串联文件并将内容输出到终端设备或新的文件当中,这篇文章我们将会以实例的 ...

  9. linux中grep命令的使用

    转载:http://blog.csdn.net/universsky/article/details/8866402 linux中grep命令的使用 grep (global search regul ...

随机推荐

  1. HDU1195 双向BFS(或BFS)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1195 , 双向BFS或者直接BFS也可以过. 其实这道题只是单向BFS就可以过的,但是为了练算法,所以 ...

  2. [VC]vc中socket编程步骤

    sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW): 基于TCP的socket编程是采用的流式套接字.在这个 ...

  3. 模块化Java简介

    什么是模块化?   模块化是个一般概念,这一概念也适用于软件开发,可以让软件按模块单独开发,各模块通常都用一个标准化的接口来进行通信.实际上,除了规模大小有区别外,面向对象语言中对象之间的关注点分离与 ...

  4. Airflow 调度基础

    1. Airflow Airflow是一个调度.监控工作流的平台.用于将一个工作流制定为一组任务的有向无环图(DAG),并指派到一组计算节点上,根据相互之间的依赖关系,有序执行. 2. 安装 pip安 ...

  5. AngularJs学习笔记-组件生命周期

    组件生命周期 (1)组件生命周期钩子 constructor:组件创建时被创建 ngOnChanges: 父组件修改或初始化子组件的输入属性时被调用,如果子组件没有输入属性,则永远不会被调用,它的首次 ...

  6. JS MarcoTasks MicroTasks

    JS MarcoTasks MicroTasks 在JS的event loop中,有两种任务队列microtasks和macrotasks microtasks process.nextTick Pr ...

  7. ZR#317.【18 提高 2】A(计算几何 二分)

    题意 Sol 非常好的一道题,幸亏这场比赛我没打,不然我估计要死在这个题上qwq 到不是说有多难,关键是细节太多了,我和wcz口胡了一下我的思路,然后他写了一晚上没调出来qwq 解法挺套路的,先提出一 ...

  8. Linux入门-第八周

    1.用shell脚本实现自动登录机器 #!/usr/bin/expectset ip 192.168.2.192set user rootset password rootspawn ssh $use ...

  9. goaccess分析access.log

    接上一篇,开始学习goaccess使用~ 源码安装完成后,我的goaccess的配置文件goaccess.conf位于/usr/local/etc/ /usr/local/etc/goaccess/g ...

  10. Ajax基础知识梳理

    Ajax用一句话来说就是无须刷新页面即可从服务器取得数据.注意,虽然Ajax翻译过来叫异步JavaScript与XML,但是获得的数据不一定是XML数据,现在服务器端返回的都是JSON格式的文件. 完 ...