Linux shell命令帮助格式详解

前言

linux shell命令通常可以通过-h--help来打印帮助说明,或者通过man命令来查看帮助,有时候我们也会给自己的程序写简单的帮助说明,其实帮助说明格式是有规律可循的

帮助示例

下面是git reset命令的帮助说明,通过man git-reset可以查看

git reset [-q] [<tree-ish>] [--] <paths>...
git reset (--patch | -p) [<tree-ish>] [--] [<paths>...]
git reset [--soft | --mixed | --hard | --merge | --keep] [-q] [<commit>]

对于命令和参数大致有如下几种类型

  • 没有任何修饰符参数 : 原生参数
  • <>  : 占位参数
  • []  : 可选组合
  • ()  : 必选组合
  • |   : 互斥参数
  • ... : 可重复指定前一个参数
  • --  : 标记后续参数类型

下面来一一介绍

参数类型解读

原生参数

说明文档里的字符即为命令需要使用的字符,比如以上命令的

git reset

这种参数在使用时必需指定,且和说明文档里的一致

占位参数

表示方式: <>

和原生参数类似,都是必需指定的,只不过占位参数的实际字符是在使用时指定的,同时为了方便阅读会用一个描述词汇来表示,并以<>包围,比如

<paths>

表示路径,使用时可以指定为具体的路径,而paths只是起一个说明作用,有些帮助说明里也会用大写来表示占位参数,比如将以上参数说明写成PATHS

可选组合

表示方式:  []

括号里的参数为可选参数,比如usage第二个里面的[-q] ,则-q为可选参数

可选项和占位参数也可以同时使用,如

[<commit>]

表示该参数可以指定某次提交,也可以不指定

必选组合

表示方式:  ()

括号里的参数必需指定,通常里面会是一些互斥参数,比如

(--patch | -p)

表示--patch-p这两个参数必需指定一个

互斥参数

表示方式:  |

互斥参数一般都在()[]里,表示该参数只能指定其中一个,比如

[--mixed | --soft | --hard | --merge | --keep]

重复参数

表示方式: ...

表示前一个参数可以被指定多个,比如

<paths>...

<paths>是一个占位参数,使用时必需指定为路径,...并表示可以指定多个路径。重复参数的一个典型使用场景就是移动文件,将多个文件移动到一个目录下,比如如下命令

git mv [<options>] <source>... <destination>

我们可以这样使用

git mv -f a.cpp b.py dir

此时options对应为-f参数,source对应为a.cpp b.py,destination对应为dir

标记后续参数类型

表示方式: --

表示后续参数的某种类型,比如这里如果使用如下命令

git reset -p -- xx

对比第一个命令,这里的xx对应的应该是<paths>参数,当我们指定--之后,则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|<type>|--textconv) <object>

该命令参数由四个部分,其中gitcat-file为原生参数,()里的为可选组合, <object>为占位参数

组合又由6部分组成,为互斥关系

-t [--allow-unknown-type]
-s [--allow-unknown-type]
-e
-p
<type>
--textconv

因此该命令的帮助说明可以拆分如下

git cat-file -t <object>
git cat-file -t --allow-unknown-type <object>
git cat-file -s <object>
git cat-file -s --allow-unknown-type <object>
git cat-file -e <object>
git cat-file -p <object>
git cat-file <type> <object>
git cat-file --textconv <object>

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

时间: 2017-01-23

linux 详解useradd 命令基本用法

linux 详解useradd 命令基本用法 概要: 在 Linux 中 useradd 是个很基本的命令,但是使用起来却很不直观.以至于在 Ubuntu 中居然添加了一个 adduser 命令来简化添加用户的操作.本文主要描述笔者在学习使用 useradd 命令时的一些测试结果. 说明:本文中的所有试验都是在 Ubuntu14.04 上完成. 功能 在Linux中 useradd 命令用来创建或更新用户信息. useradd 命令属于比较难用的命令 (low level utility for

Linux监视进程之ps命令详解

本文参考<UNIX/Linux系统管理技术手册>. 操作系统:Debian8.5 仅仅以下常用的三种组合命令的解释,更加齐全的命令请自行ps --help all 查看. 一.ps -ef 输出展示: UID PID PPID C STIME TTY TIME CMD root 1 0 0 2016 ? 00:00:28 /lib/systemd/systemd --system --deserialize 15 root 2 0 0 2016 ? 00:00:00 [kthreadd] ro

php在linux中可能用到的命令(推荐)

如下所示: php -i | grep php.ini    查找php.ini的位置 php-cgi -b 127.0.0.1:9000 &  查看php-cgi进程 以上这篇php在linux中可能用到的命令(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

linux指令man page之rm,mv详解

linux指令man page之rm,mv详解   man rm NAME rm - 移除文件档案或者目录 SYNOPSIS rmdir [OPTION]... FILE... OPTIONS -f, --force 忽略不存在的文件,不显示提示信息 -i, --interactive 移除前询问 -r, -R, --recursive 递归移除目录及其包含的文件 --help 显示帮助信息 --version 显示版本信息   man mv NAME mv - 移动(重命名)文件 SYNOPS

详解Linux命令修改文件的三个时间

Linux命令如何修改文件的三个时间 本文主要对stat和touch两个命令进行讲解. 如何查看一个文件的元数据呢?可以使用stat命令. File: 'ceshi1'  文件所在路径 Size: 4096       Blocks: 8 文件占据的磁盘块          IO Block: 4096   directory 文件类型 Device: 801h/2049d  文件所在的设备名 Inode: 378  文件索引节点号        Links: 4 被硬链接的次数 Access:

linux touch,chattr指令详解及用法

 linux touch,chattr指令详解 man touch NAME touch - 更改文件的时间戳 SYNOPSIS touch [OPTION]... FILE... DESCRIPTION 更新文件的atime和mtime为现在的时间 -a 仅修文件被取用的时间 -c, --no-create 文件不存在是不建立新的档案 -d, --date=STRING 使用STRING的设定而不使用现在的时间 -m 仅修改文件内容变更的时间 -t STAMP 使用[[CC]YY]MMDDhh

Linux shell tr 命令详解

Linux shell tr 命令详解 1. 用途 tr,translate的简写,主要用于压缩重复字符,删除文件中的控制字符以及进行字符转换操作. 2. 语法 tr [OPTION]... SET1 [SET2] 3. 参数 3.1 -s 压缩重复字符 -s: squeeze-repeats,用SET1指定的字符来替换对应的重复字符 (replace each input sequence of  a  repeated  character  that  is listed in SET1

Linux C字符串替换函数实例详解

Linux C字符串替换函数实例详解 最近学习linux 的基础编程知识,字符串替换函数,在网上找下资料,觉得这篇文章写的不错,记录下来,和大家分享一下: 实例代码: #include <stdio.h> #include <string.h> #include <stdlib.h> /** * * @author: cnscn@163.com * @reference: lovesnow1314@http://community.csdn.net/Expert/Top

浅谈Linux 脚本 sh 和 ./ 的区别

如果.不在PATH里面,要执行当前目录下的可执行文件,使用全路径: ./executable-file PATH是环境变量,如果将当前目录"./"添加到环境变量中,那么也可以不用"./",直接输入当前目录下有可执行权限的可执行文件就可以运行了 如果要执行一个sh脚本,不管那个脚本有没有可执行权限,都可以使用: sh [file] 这时file是作为参数传给sh的,如果file不在当前目录下,也需要使用全路径. 全路径有绝对路径和相对路径两种../和../开头的都是相

浅谈Linux配置定时,使用crontab -e与直接编辑/etc/crontab的区别

Linux配置定时任务,大家都知道使用crontab这个系统功能,但有时候我们需要区分用户执行,下面就直接说一下2种方法的区别: 方法1: 使用命令 crontab -e 然后直接编辑定时脚本. 这样执行以后,属于用户自定义的,会被写到 /var/spool/cron 目录下,生成一个和用户名一致的文件,文件内容就是我们编辑的定时脚本. 如: [root@localhost cron.d]# cd /var/spool/cron [root@localhost cron]# ll 总用量 4 -

浅谈Linux文件目录介绍及文件颜色区别

本文主要介绍的是关于Linux文件目录介绍及文件颜色区别的相关内容,具体如下. 文件颜色代表含义 蓝色表示目录: 绿色表示可执行文件: 红色表示压缩文件: 浅蓝色表示链接文件: 白色表示其他文件: 黄色是设备文件,包括block, char, fifo. 常见目录解释 Linux各种发行版的目录结构基本一致,各个目录简单介绍如下: 目录 描述 / 根目录 /bin 做为基础系统所需要的最基础的命令就是放在这里.比如 ls.cp.mkdir等命令:功能和/usr/bin类似,这个目录中的文件都是可

浅谈CI脚本异常退出问题定位

背景 在CI脚本中,使用类似如下脚本进行项目编译的计时,但在执行过程中,有时会出现CI脚本(命名为ci.sh)未完全执行的情况: #!/bin/bash -e sleep_time=$1 start_time=`date "+%s"` # do sth, this sleep would simulate project compilation sleep $sleep_time end_time=`date "+%s"` process_time=`expr \(

浅谈Linux下通过find命令进行rm文件删除的小技巧

我们经常会通过find命令进行批量操作,如:批量删除旧文件.批量修改.基于时间的文件统计.基于文件大小的文件统计等,在这些操作当中,由于rm删除操作会导致目录结构变化,如果要通过find结合rm的操作写成脚本,就会遇到一些麻烦,本文通过一个例子为大家进行介绍. 系统环境: SUSE Linux Enterprise Server 11 或 Red Hat Enterprise Linux 问题症状: 客户现场有一个自动化的脚本,有以下的find语句,每天运行以删除某个目录下7天以前的文件或目录,

浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释

摘抄自:ABS_GUIDE 下载地址:http://www.tldp.org/LDP/abs/abs-guide.pdf linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参数列表.如"$*"用「"」括起来的情况.以"$1 $2 - $n&q

浅谈linux几种定时函数的使用

在程序开发过程中,我们时不时要用到一些定时器,通常如果时间精度要求不高,可以使用sleep,uslepp函数让进程睡眠一段时间来实现定时, 前者单位为秒(s),后者为微妙(us):但有时候我们又不想让进程睡眠阻塞在哪儿,我们需要进程正常执行,当到达规定的时间时再去执行相应的操作, 在linux下面我们一般使用alarm函数跟setitimer函数来实现定时功能: 下面对这两个函数进行详细分析: (1)alarm函数 alarm也称为闹钟函数,它可以在进程中设置一个定时器,当定时器指定的时间到时,

浅谈Linux中ldconfig和ldd的用法

ldd 查看程序依赖库 ldd 作用:用来查看程式运行所需的共享库,常用来解决程式因缺少某个库文件而不能运行的一些问题. 示例:查看test程序运行所依赖的库: /opt/app/todeav1/test$ldd test libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000039a7e00000) libm.so.6 => /lib64/libm.so.6 (0x0000003996400000) libgcc_s.so.1 => /

浅谈linux中的whoami与 who指令

whoami 功能说明: 显示用户名称 语法: whoami 补充说明: 显示自身的用户名称,本指令相当于执行  id -un 指令 whoami 与 who am i的区别 who这个命令重点在用来查看当前有那些用户登录到了本台机器上 who -m的作用和who am i的作用是一样的 who am i显示的是实际用户的用户名,即用户登陆的时候的用户ID.此命令相当于who -m whoami显示的是有效用户ID ,是当前操作用户的用户名 命令实践: [test@test~]$ whoami 

浅谈Linux C语言动态库及静态库

假设在math目录下已编辑好add.c sub.c div.c mul.c func_point.c文件,func_point.c为包含main()的源文件! 动态库的制作: 方法一: gcc -c -fPIC add.c sub.c div.c mul.c //-c表示生成.o目标文件,-f后加一些编译选项,PIC表示与位置无关 gcc -shared -o libmymath.so add.o sub.o mul.o div.o//创建共享库mymath,添加add.o,sub.o,mul.