Hus*_*oli 14 shell user-interface
当我这样做 -CD ..而不是cd ..
它给我错误说 -
CD: command not found
Run Code Online (Sandbox Code Playgroud)
为什么在涉及 linux 命令时终端区分大小写?我的意思是您应该能够使用“全部大写”或“全部小写”字符执行命令。
我知道这是由于某种原因,但我只是好奇。
War*_*ung 43
最终,这是 Unix 的创造者在 40 多年前做出的任意选择。他们本可以像十年后 MS-DOS 的创建者那样选择不区分大小写,但这也有其缺点。
它深深植根于 *ix 文化中,现在无法改变。eppesuig 提出的区分大小写的文件系统问题只是其中的一部分。基于 Unix 的macOS 系统通常具有不区分大小写(但保留大小写)的文件系统,因此在 shell 外部的此类系统命令实际上是不区分大小写的。但是,像cd这样的内置函数仍然区分大小写。
即使使用不区分大小写的文件系统,事物的历史也会违背你的意愿,侯赛因。如果我ls在 Mac 上打字,我会得到一个彩色的目录列表。如果我LS改为键入,/bin/ls仍会运行,但列表不会着色,因为添加-C标志的别名区分大小写。
最好习惯了。如果可以,请学会喜欢它。
小智 9
这不是“终端”问题,而是文件系统功能。shell 应该如何在(总是区分大小写的)文件系统上查找您的命令?
我使用和尊重的技术系统几乎完全区分大小写:无论是操作系统还是编程语言或其他任何东西。
我现在能想到的例外是 HTML 标签和 SQL 的一些实现,以及 Ada 编程语言。
即使在这些情况下,我认为实际编写小写 HTML 标记和大写 SQL 查询语义(并且参数大写)的强烈倾向。(如果我错了,请纠正我。)对于 Ada,例如,如果您键入小写的过程名称,Emacs 模式将纠正您,尽管这在编译时无关紧要。因此,即使不区分大小写,人们似乎也同意这是一个坏主意。
原因是您可以通过区分大小写获得更多的表达能力。不仅在数量上 -CD是一,而且CD, Cd, cD, 和cd是四 - 但更重要的是,您可以明智地使用大写和小写来表达目的,重点等;此外,在编程时,您将增强可读性。
直观地说,很显然,你不读hi,并HI以同样的方式!
但是,举一个计算机世界的例子,在编程语言 Ada(来自 1980 年代)中,过程代码块的第一行可能如下所示:
procedure body P(SCB : in out Semaphore_Control_Block) is
Run Code Online (Sandbox Code Playgroud)
如您所见,过程和参数名称都大写,数据类型也是如此,其他所有内容都是小写的。另请注意,“全部大写”参数名称告诉我们它是首字母缩写词。现在,将其与
procedure body p(scb : in out semaphore_control_block) is
Run Code Online (Sandbox Code Playgroud)
这是可能的,因为 Ada 不区分大小写(或者,确切地说,编译器会将其更改为我第一个示例中的方式,但当然不会更改您的代码)。或者,怎么样:
PROCedure body P(Scb : IN Out semaphore_CONTROL_BLOCK) iS
Run Code Online (Sandbox Code Playgroud)
我知道这有点荒谬;但是有人会愚蠢到这样写(好吧,也许不是)。重点是,区分大小写的系统不仅会迫使人们保持一致,他们还会从中受益(可读性)并将其用于自己的优势(上面的首字母缩略词示例)。