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

Lar*_*ars 6 command-line git whitespace

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

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

[command name][space][-options][space][arguments]
Run Code Online (Sandbox Code Playgroud)

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

git config --global core.editor "notepad.exe -wl1"
Run Code Online (Sandbox Code Playgroud)

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

也只是为了让事情更加混乱,我经常看到一个名为git-config. 这和 一样git config吗?

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

Run*_*ium 6

这是一个很好的起点,但需要强调“一般”。对于实用程序命令,阅读man utility页面以了解正确的语法总是一个好主意。

有一个在公开组指导方针,可以是值得一读。然而,有不同的符合实现是如何的水平。一些实现允许人们打破这个约定,但人们应该注意它,因为它更安全,通常更便携(当你在另一个具有不同实现的系统上的那一天。)


当您查看git一些不属于标准实用程序包的其他工具时,您必须了解它的完成方式。使用的命令是不是唯一的git,但在其他人一样也发现pactl/ pacmdamixer等等。正如所指出的@mouviciel被大多数SCM工具使用的git的这个基于命令行的设计,从旧的sccs

program [options] [command] [arguments]
Run Code Online (Sandbox Code Playgroud)

这里通常options面向program自身,arguments面向command.

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

domain -verbose DO_THIS -with_file filename.txt
domain -verbose DO_THAT -with_file filename.txt
Run Code Online (Sandbox Code Playgroud)

对于某些人来说,它也被作为一个简短的选项给出,并因此遵守诸如vs. , 之类的准则fdisk -l <device>Enterfdisk <device>EnterlEnter


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


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

混帐做_这个

更远。由于它拥有很多命令,他们将命令分成了几个组,其中两个主要分类为Plumbing 和 Porcelain。另请参阅:Git 中的术语“瓷器”是什么意思?. 手册页有一个从 开始的有序分组GIT COMMANDS

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


为了使各种命令的帮助易于访问,还可以说:

git help command
Run Code Online (Sandbox Code Playgroud)

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


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


Ign*_*ams 5

git是命令。它git-*根据第一个参数是什么“多路复用”到各种其他命令,例如git config ...run git-config