带有空格的 Bash 命令(git config 或 git-config?)

带有空格的 Bash 命令(git config 或 git-config?)

如果这看起来很简单,请原谅我,但我两天前才开始学习 Unix。

基本上,我被告知,当在终端中输入命令时,它需要采用以下形式:

[command name][space][-options][space][arguments]

现在我刚刚开始考虑使用 git,并且遇到了以下问题:

git config --global core.editor "notepad.exe -wl1"

那么在这种情况下是git config命令吗?当中间有一个空格时,它如何工作? Unix 不会感到困惑并认为这config是一个选择吗?

而且,让事情更加混乱的是,我经常看到一个名为 的命令git-config。这和 一样吗git config

我发现这真的很令人困惑,在精确语法非常重要的事情中,这些事情没有得到明确的解释。

答案1

这是一个很好的起点,但是“一般来说”需要强调的是。对于实用命令,阅读man utility什么是正确语法的页面。

有一个The Open Group 的指导方针值得一读。然而有实施的一致性程度各不相同。某些实现允许人们打破这一约定,但人们应该尝试注意它,因为它既更安全,通常也更便携(当您在另一个具有不同实现的系统上时)。


当您查看git许多不属于标准实用程序包的其他工具时,您必须了解其完成方式。指某东西的用途命令不是唯一的git,而且也存在于其他人中,例如pactl/ pacmdamixer正如所指出的@穆维西尔大多数 SCM 工具都使用这种基于命令的 git 设计,从旧的开始sccs

program [options] [command] [arguments]

这里通常options是面向program自身,arguments面向command……。

这是划分扩展子集的好方法主程序/suite/tool-kit 在域内工作。

domain -verbose DO_THIS -with_file filename.txt
domain -verbose DO_THAT -with_file filename.txt

对于某些人来说,它也作为一个简短的选项给出,并遵循指导方针例如fdisk -l <device>Entervs. fdisk <device>Enter, lEnter


当您执行例如时,git config ...它不是 shell,而是git它本身解释该config命令。使用更多的是指定为 git 的git-config简短方式config命令。尝试例如man git-config。它本身通常不被识别为命令。


为此git也有点多复杂的。由于它是一个工具包 -> 套件,就像属于许多很多命令一样git- 使用基于命令的实现是很自然的。这是开发者自己选择的设计git

git DO_THIS

更远。由于它包含大量命令,因此他们将命令分为几组,其中两个主要分类为管道和瓷器。另请参阅:Git 中“瓷器”一词的含义是什么?。手册页有一个从 开始的有序分组GIT COMMANDS

此外,还可以通过配置文件自定义某些命令的功能。举个例子。您可以通过查看提交之间的差异git diff。该命令可以在您的.gitconfig.您可以指定要使用哪个 diff 程序以及如何调用它。


为了方便地访问各种命令的帮助,还可以说:

git help command

所以,为您的命令git help commit提供帮助。gitcommit


我猜如果您将其git视为命令行套件,甚至是菜单驱动的命令环境,它可能会有所帮助。与可以单击的 GUI 应用程序一样File->Open->[Some file],命令驱动套件也可以具有suite open <file>.

答案2

git是命令。它git-*根据第一个参数的内容“多路复用”到各种其他命令,例如git config ...运行git-config

相关内容