在 pacman 中,--refresh
和-y
是相同的选项。但它们之间的语音关系如何呢?有助记词吗?
作为比较:对于许多二进制文件来说,-f
是--force
.很明显“f”是如何从“force”派生出来的:)
答案1
据说有计算机科学中的两个难题。其中之一就是命名事物。这就是一个效果。
数据库同步功能最初是pacsync
在 1.23 中作为单独的命令添加的。该命令随后被合并到pacman
2.0 版本中,并pacman
获得了许多新选项,包括--sync
/ -S
。在内部,这仍然是在 a 中处理的pacsync.c
,刷新数据库的操作称为同步(sync
old 的子命令pacsync
,sync_synctree()
new 中的函数pacsync.c
)。现在我们已经有了一个主--sync
选项,那么我们如何处理同步数据库的子选项呢?我推测:
- 开发人员决定将其称为
--refresh
一个长选项,一个合理的名称, - 但在其他方面,通过将其视为第二个
--sync
选项来尊重代码中以同步命名的事物,因为这些事物是明智地命名 - 因此,正如通常所做的那样,当两个长选项具有相同的第一个字符时,移动到短选项的第二个字符
-y
。
作为支持这一点的一个因素,该组合将成为-Sy
“sync”的前两个字母。
选项处理的部分代码:
while((opt = getopt_long(argc, argv, "ARUQSTYr:vhscVfnoldpiuy", opts, &option_index))) {
if(opt < 0) {
break;
}
switch(opt) {
...
case 'y': pmo_s_sync = 1; break;
整件事发生在大约 15 年前(2002 年),我在搜索中找不到任何在线讨论,但我确信这就是发生的事情。