当我这样做时 -CD ..
相反cd ..
它给了我错误说 -
CD: command not found
为什么是终端linux 命令时区分大小写吗?我的意思是您应该能够使用“全大写”或“全小写”字符执行命令。
我知道这是由于某种原因,但我只是好奇。
答案1
归根结底,这是 Unix 的创建者在四十多年前做出的任意选择。他们本可以像十年后 MS-DOS 的创建者那样选择不区分大小写,但这也有其缺点。
它在 *ix 文化中根深蒂固,现在无法改变。这eppesuig 提出的区分大小写的文件系统问题只是其中的一部分。 macOS 系统 —哪些是基于 Unix 的— 通常具有不区分大小写(但保留大小写)的文件系统,因此在此类系统上,shell 外部的命令实际上是不区分大小写的。但,内置函数喜欢cd
保持区分大小写。
即使使用不区分大小写的文件系统,事情的历史也会违背你的意愿,侯赛因。如果我ls
在 Mac 上打字,我会得到一个彩色目录列表。如果我LS
改为键入,/bin/ls
仍然会运行,但列表不会着色,因为添加-C
标志的别名区分大小写。
最好习惯一下。如果可以的话,学着去喜欢它。
答案2
这不是“终端”问题,而是文件系统功能。 shell 应如何在(始终区分大小写)文件系统上查找命令?
答案3
我使用和尊重的技术系统几乎完全区分大小写:无论是操作系统还是编程语言或其他任何东西。
我现在能想到的例外是 HTML 标签和 SQL 的一些实现以及 Ada 编程语言。
即使在这些情况下,我认为实际上也有强烈的倾向以小写形式编写 HTML 标签,并以大写形式编写 SQL 查询语义(参数大写)。 (如果我错了,请纠正我。)对于 Ada,如果您键入小写的过程名称,Emacs 模式将会纠正您,尽管这在编译时并不重要。因此,即使存在不区分大小写的情况,人们似乎也认为这是一个坏主意。
原因是区分大小写可以让你获得更强的表达能力。不仅在数量上——CD
是一,而且CD
, Cd
, cD
, 和cd
是四——更重要的是,你可以明智地使用大小写来表达目的、强调等;此外,在编程时,您还将增强可读性。
直观上看,很明显你没有读hi
和HI
同样的方式!
但是,举一个计算机世界的例子,在编程语言 Ada(20 世纪 80 年代)中,过程代码块的第一行可能如下所示:
procedure body P(SCB : in out Semaphore_Control_Block) is
如您所见,过程和参数名称都是大写的,数据类型也是大写的,其他所有内容都是小写的。另请注意,“全部大写”参数名称告诉我们它是一个缩写词。现在,将其与
procedure body p(scb : in out semaphore_control_block) is
这是可能的,因为 Ada 不区分大小写(或者确切地说,编译器会将其更改为我的第一个示例中的方式,但当然不会更改您的代码)。或者,怎么样:
PROCedure body P(Scb : IN Out semaphore_CONTROL_BLOCK) iS
我知道这有点荒谬;但有人会愚蠢到那样写(好吧,也许不是)。要点是,区分大小写的系统不仅会迫使人们保持一致,而且还会受到它的帮助(可读性)并利用它来发挥自己的优势(上面的缩写示例)。
答案4
“大写/小写”大小写的概念可以(并且确实是)特定于语言环境的事物,与任何其他设计复杂性一样,它应该尽可能靠近应用程序堆栈中的使用点,而不是成为应用程序堆栈的一部分。核。
区分大小写的环境允许将其包装到不区分大小写的环境中,但反之则不然。