Shell-help格式详解
前言
linux shell命令通常可以通过-h或--help来打印帮助说明,或者通过man命令来查看帮助,有时候我们也会给自己的程序写简单的帮助说明,其实帮助说明格式是有规律可循的
帮助示例
下面是git reset命令的帮助说明,通过man git-reset可以查看
git reset [-q] [] [--] ...
git reset (--patch | -p) [] [--] [...]
git reset [--soft | --mixed | --hard | --merge | --keep] [-q] []
对于命令和参数大致有如下几种类型
没有任何修饰符参数 : 原生参数
<> : 占位参数
[] : 可选组合
() : 必选组合
| : 互斥参数
... : 可重复指定前一个参数
-- : 标记后续参数类型
下面来一一介绍
参数类型解读
原生参数
说明文档里的字符即为命令需要使用的字符,比如以上命令的
git reset
这种参数在使用时必需指定,且和说明文档里的一致
占位参数
表示方式: <>
和原生参数类似,都是必需指定的,只不过占位参数的实际字符是在使用时指定的,同时为了方便阅读会用一个描述词汇来表示,并以<>包围,比如
表示路径,使用时可以指定为具体的路径,而paths只是起一个说明作用,有些帮助说明里也会用大写来表示占位参数,比如将以上参数说明写成PATHS
可选组合
表示方式: []
括号里的参数为可选参数,比如usage第二个里面的[-q] ,则-q为可选参数
可选项和占位参数也可以同时使用,如
[]
表示该参数可以指定某次提交,也可以不指定
必选组合
表示方式: ()
括号里的参数必需指定,通常里面会是一些互斥参数,比如
(--patch | -p)
表示--patch和-p这两个参数必需指定一个
互斥参数
表示方式: |
互斥参数一般都在()和[]里,表示该参数只能指定其中一个,比如
[--mixed | --soft | --hard | --merge | --keep]
重复参数
表示方式: ...
表示前一个参数可以被指定多个,比如
...
是一个占位参数,使用时必需指定为路径,...并表示可以指定多个路径。重复参数的一个典型使用场景就是移动文件,将多个文件移动到一个目录下,比如如下命令
git mv [] ...
我们可以这样使用
git mv -f a.cpp b.py dir
此时options对应为-f参数,source对应为a.cpp b.py,destination对应为dir
标记后续参数类型
表示方式: --
表示后续参数的某种类型,比如这里如果使用如下命令
git reset -p -- xx
对比第一个命令,这里的xx对应的应该是参数,当我们指定--之后,则git会认为xx就是一个路径,那怕它是特殊符号或者路径并不存在。这是shell命令的一个通用方式,比如我们有一个文件名为-h,如果想删除这个文件,执行
rm -h
肯定是无法删除的,因为这时-h会被认为是rm的一个参数选项,应该使用
rm -- -h
这时shell会将-h解释为一个文件名传递给rm命令
解读实战
最后来解释一个比较复杂的帮助说明
git cat-file (-t [--allow-unknown-type]|-s [--allow-unknown-type]|-e|-p||--textconv)
该命令参数由四个部分,其中git和cat-file为原生参数,()里的为可选组合, 为占位参数
组合又由6部分组成,为互斥关系
-t [--allow-unknown-type]
-s [--allow-unknown-type]
-e
-p
--textconv
因此该命令的帮助说明可以拆分如下
git cat-file -t
git cat-file -t --allow-unknown-type
git cat-file -s
git cat-file -s --allow-unknown-type
git cat-file -e
git cat-file -p
git cat-file
git cat-file --textconv
Shell-help格式详解的更多相关文章
- Linux Shell系列教程之(八)Shell printf命令详解
本文是Linux Shell系列教程的第(八)篇,更多shell教程请看:Linux Shell系列教程 在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell p ...
- java分享第十五天(log4j 格式详解)
log4j 格式详解 log4j.rootLogger=日志级别,appender1, appender2, -. 日志级别:ALL<DEBUG<INFO<WARN<ERRO ...
- shell字符串操作详解
shell字符串操作详解的相关资料. 1.shell变量声明的判断 表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DE ...
- php 序列化(serialize)格式详解
1.前言 PHP (从 PHP 3.05 开始)为保存对象提供了一组序列化和反序列化的函数:serialize.unserialize.不过在 PHP 手册中对这两个函数的说明仅限于如何使用,而对序列 ...
- Java字节码(.class文件)格式详解(一)
原文链接:http://www.blogjava.net/DLevin/archive/2011/09/05/358033.html 小介:去年在读<深入解析JVM>的时候写的,记得当时还 ...
- [Spark内核] 第36课:TaskScheduler内幕天机解密:Spark shell案例运行日志详解、TaskScheduler和SchedulerBackend、FIFO与FAIR、Task运行时本地性算法详解等
本課主題 通过 Spark-shell 窥探程序运行时的状况 TaskScheduler 与 SchedulerBackend 之间的关系 FIFO 与 FAIR 两种调度模式彻底解密 Task 数据 ...
- PNG,JPEG,BMP,JIF图片格式详解及其对比
原文地址:http://blog.csdn.net/u012611878/article/details/52215985 图片格式详解 不知道大家有没有注意过网页里,手机里,平板里的图片,事实上,图 ...
- binlog之四:mysql中binlog_format模式与配置详解,binlog的日志格式详解
mysql复制主要有三种方式:基于SQL语句的复制(statement-based replication, SBR),基于行的复制(row-based replication, RBR),混合模式复 ...
- 以太网帧格式、IP数据报格式、TCP段格式+UDP段格式 详解
转载:http://www.cnblogs.com/lifan3a/articles/6649970.html 以太网帧格式.IP数据报格式.TCP段格式+UDP段格式 详解 1.ISO开放系统有 ...
- FLV视频封装格式详解
FLV视频封装格式详解 分类: FFMpeg编解码 2012-04-04 21:13 1378人阅读 评论(2) 收藏 举报 flvheaderaudiovideocodecfile 目录(?)[-] ...
随机推荐
- Window系统 安装TFLearn
1. 确保成功安装了tensorflow 2. 查看当前tensorflow下的库文件,判断是否已经安装了h5py,scipy:conda list 3. 若没有安装,安装h5py,scipy.我的电 ...
- 【转载】JSP 获取真实IP地址的代码
JSP 获取真实IP地址的代码 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的. 但是在通过了 Apache,Squid ...
- 一些$LCT$的瓜皮题目
一些瓜皮 放几个比较优(she)秀(pi)的\(LCT\)题. 老惯例,每一题代码因为一些未知原因消失了(如果要的话私我好了,虽然会咕咕咕). 嘴巴\(AC\)真香! [SP16580] QTREE7 ...
- BZOJ3829 [Poi2014]FarmCraft 【树形dp】
题目链接 BZOJ3829 题解 设\(f[i]\)为从\(i\)父亲进入\(i\)之前开始计时,\(i\)的子树中最晚装好的时间 同时记\(siz[i]\)为节点\(i\)子树大小的两倍,即为从父亲 ...
- 【bzoj3751】 Hnoi2014—画框
http://www.lydsy.com/JudgeOnline/problem.php?id=3571 (题目链接) 题意 给出一个$2*N$个点的二分图,$N*N$条边,连接$i$和$j$的边有两 ...
- Effective C++ 条款08:别让异常逃离析构函数
1.别让异常逃离析构函数的原因 <Effective C++>第三版中条款08建议不要在析构函数中抛出异常,原因是C++异常机制不能同时处理两个或两个以上的异常.多个异常同时存在的情况下, ...
- 解题:ZJOI 2013 K大数查询
题面 树套树,权值线段树套序列线段树,每次在在权值线段树上的每棵子树上做区间加,查询的时候左右子树二分 本来想两个都动态开点的,这样能体现树套树在线的优越性.但是常数太大惹,所以外层直接固定建树了QA ...
- 统计学习方法:CART算法
作者:桂. 时间:2017-05-13 14:19:14 链接:http://www.cnblogs.com/xingshansi/p/6847334.html . 前言 内容主要是CART算法的学 ...
- Linux服务器修改文件句柄数和用户最大进程数限制
1.临时修改的方法:ulimit -HSn 102400此方法当前会话有效 2.永久修改方法(修改单个进程打开的最大句柄数)修改vi /etc/security/limits.conf,在后面添加一下 ...
- Hystrix的回退和zuul的回退总结
1.Hystrix的回退: Ribbon: Feign: zuul的回退: