linux git命令如何简写,Linux系统命令行终端命令语法格式和Git命令语法格式(最详细解释,关键词:Ubuntu,Terminal,Gtibash,Git,Github)...

1.问题背景

最近博主我在学习Git命令的使用,作为程序员的我们,每次使用Linux或者Git命令时,肯定想知道每一条命令的具体写法的语法规则,因为一旦我们了解了语法规则,在阅读Linux教程和别人的Linux命令时能更好的理解这些命令。所以我在网上整理出了这篇最全面的Linux系统命令行终端命令语法格式。

首先我们需要知道,任何操作系统Windows,Linux,Mac上的Gitbash的Git命令都是是基于Linux的,所以我们把Linux的系统命令行终端命令语法格式掌握了,在GitBash中使用Git命令和阅读Git命令也会更顺畅,下面我将全面且详细地给予介绍。

2.Linux终端的组成

(1)行提示符(又称:命令提示符)

红框圈住的就是 Linux 系统的命令提示符。那么,这个提示符的含义是什么呢?

9d9a7b4300a73751f8e3845cc938e761.png

redlee:显示的是当前的登录用户,笔者现在使用的是jedlee用户登录。

@:分隔符号,没有特殊含义。

JedsLaptop:当前系统的简写主机名(完整主机名是 JedsLaptop.localdomain)。

MinGW64:Minimalist GNUfor Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。

~/desktop/gitdifftest:其中~代表当前用户的用户根目录,比如博主我在Windows系统中使用GitBash时,我登录该Windows系统的用户叫做jedlee.JEDSLAPTOP,那么~就是Windows的C盘的C:\Users\jedlee.JEDSLAPTOP目录,因为一个Windows系统会有多个用户,所以所有的用户文件夹都存取在C:\Users\目录中,jedlee.JEDSLAPTOP是其中的一个用户,C:\Users\目录就会有jedlee.JEDSLAPTOP这样一个文件夹。而作为一个整体的~/desktop/gitdifftest则代表GitBash目前处于~/desktop/gitdifftest这一个文件夹中,所以的操作都限定在这个~/desktop/gitdifftest文件夹内,如果想要对这个文件夹外的文件进行操作,就得使用cd等命令来变更当前的文件夹。

$:命令提示符,Linux 用这个符号标识登录的用户权限等级。如果是超级用户,提示符就是 #;如果是普通用户,提示符就是 $。

(2)Linux命令语法格式

用户进入命令行界面时,可以看到一个Shell提示符(管理员为#,普通用户为$),提示符标识命令行的开始,用户可以在它后面输入任何命令及其选项和参数。

输入命令必须遵循一定的语法规则:

命令行中输入的第1项必须是一个命令的名称,从第2项开始是命令的选项(Option)或参数(Arguments),各项之间必须由空格或TAB制表符隔开。

有的命令不带任何选项和参数。

Linux命令行严格区分大小写,命令、选项和参数都是如此。

Linux命令语法格式格式如下:

提示符 命令 [ [选项] [选项的参数] ]... [--] [位置参数]...

如果你不了解下面命令中[],<>等符号的含义,可以先阅读下Linux帮助文档命令语法公式格式详解,因为Linux的命令使用文档的命令语法格式就是按照其中的命令行界面描述语言来定义的。

实际命令举例:下图红框圈住的是Gitbash中git commit提交修改的一段命令:

c3658aa6be7e44faddeb6dcc1a6fb38c.png

如上图所示:$是提示符;git commit是命令;--message是选项;"First Commit"是选项的参数。

为什么"First Commit"要加双引号?

因为"First Commit"的意义是:本次git commit提交后的作为一个新的Git版本节点的描述就是"First Commit",这段描述可以帮助项目团队的成员了解到这个Git版本节点做出了哪些修改。因此我们在编写这段描述时可能会用到空格,比如"First Commit"的两个单词之间用到了空格来分割开2个单词。因为如果我们不用空格,那么GItBash会把First Commit后面的Commit当做额外多出来的参数,因为Git命令之间的选项和参数是可以用空格作为分隔符的呀。所以我们在"First Commit"之间加双引号就是告诉Git,"First Commit"是一个完整的参数,不能够被拆分开。

(A)选项

选项是包括一个或多个字母的代码,前面有一个“-”或"–"连字符,主要用于改变命令执行动作的类型。

Linux 的选项又分为短格式选项(-l)和长格式选项(–all)。短格式选项是英文的简写,用一个减号调用,例如ls -a;而长格式选项是英文完整单词,一般用两个减号调用,例如ls --all。

一般情况下,短格式选项是长格式选项的缩写,也就是一个短格式选项会有对应的长格式选项。当然也有例外,比如 ls 命令的短格式选项 -l 就没有对应的长格式选项。所以具体的命令选项可以通过后面我们要学习的帮助命令来进行査询。

(B)参数(指选项的参数和位置参数)

参数是命令的操作对象,一般文件、目录、用户和进程等可以作为参数被命令操作。

但是为什么下图中 ls 命令可以省略参数?那是因为有默认参数。命令一般都需要加入参数,用于指定命令操作的对象是谁。如果可以省略参数,则一般都有默认参数,不带参数的 ls 命令只能列出当前目录下的文件和目录,而使用参数可列出指定目录或文件中的文件和目录。例如:

b6e54a9c258a130eafc26a0320fd7df2.png

(C)选项和参数连用的规则与注意事项

短选项“-”可以以“堆叠”,意思三个选项-a -b -c可以写成-abc,并且他们作用等价。

短选项可以在零~多个空格后指定参数,并且他们作用等价。-a file等价于-afile等价于-a(多个空格)file。

短选项堆叠且在一个或多空格后指定参数的歧义性:不带空格指定参数的命令-afile存在歧义。因为无法判断-afile是多个堆叠的短选项-a -f -i -l -e,还是选项-a带有参数file。而Linux碰到这种歧义命令的判定方案是:仅当提供了对选项的描述时,这些符号才会被解释为带参数的选项(其实博主也不懂这句话具体啥意思,它的英文原文对这个歧义的解决方案就是这么模糊的描述。所以只能看有没有这种歧义的实例来做测试,才能给出具体的定义)。

长选项可以在一个或多个空格或等于符号=后指定参数:如--input=ARG等价于--input ARG等价于--input(多个空格)ARG。

短选项和长选项在一个或多空格后指定参数的歧义性:-a file和--input ARG存在歧义。因为无法判断file和ARG分别是短选项-a和长选项--input的选项的参数还是位置参数。而Linux碰到这种歧义命令的判定方案是:在使用模式中,只有在提供了该选项的描述时,才会将其解释为选项和选项的参数。否则,它将被解释为选项和位置参数。(其实博主也不懂这句话具体啥意思,它的英文原文对这个歧义的解决方案就是这么模糊的描述。所以只能看有没有这种歧义的实例来做测试,才能给出具体的定义)。

针对第3点和第5点提到的歧义性,作为程序员的我们,最好的解决方案是:规范书写命令来避免歧义。(1)书写带参数的短选项命令时,最好写成-a(一个或多个空格)file来避免歧义;(2)书写带参数的长选项命令时,最好写成--input=ARG来避免歧义。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值