我爱它,因为它是垃圾

有关Mac OS X Finder的一个引人入胜的论点。

它始于Jonathan'Wolf'Rentzsch闪亮的新博客, where he classifies the following Mac OS X Finder behavior as a bug:

Finder X, unlike Finder 9, allows the user to overwrite a folder with a file and vice-versa你可以重现这个:

  • 创建一个名为“test”的新文件夹
  • 在其他地方,创建一个名为“test”的文件
  • 将文件“test”拖到文件夹“test”的容器中。
  • Finder X will warn “A newer item named “test” already exists in this locationDo you want to replace it with the older one you are moving?” with [Stop] [Replace] buttons.

Finder 9正确地根本不允许这个动作That is, it would put up a “stop” alert with one unconditional button: [OK].

I accidentally deleted a folder filled with configuration files due to this bug, that在Mac OS 9下无法发生The folder was called “EOGenerator”, and I was attempting to put the binary, “eogenerator”, next to its configuration folderI became momentarily confused at the warning dialog, but reacted just in time to realize the mistake I had made. Fortunately, I have backups…

Bill Bumgarner回过头来

我不明白Why is this a bug? You wanted to stick something into a container where that container already contained something of the same name为什么要用一个文件夹或一个带文件的文件替换文件夹,用一个同名文件替换一个文件夹(反之亦然)呢?

Rentzsch深入回应,作为他最底层的更新原帖它完全值得阅读,但这里的摘录时间太长了Rentzsch的论点是:

  • The classic Mac OS Finder wouldn’t allow you to replace a same-named file with a folder, or vice-versa; it only allowed you to replace files with files, and folders with folders.

  • With a basic understanding of Mac OS file system programming, it is easy to see that this was not a technical shortcoming of the old Finder, but instead a very deliberate design decision; the Finder had to go out of its way to prevent these actions.

  • 由于旧Finder的限制是故意的,因此只能有两种解释:

    1. there were good UI-design reasons for these restrictions; or
    2. 旧Finder的设计师是愚蠢的,过度保护的,或两者兼而有之。

Rentzsch投票给“a”Bumgarner的评论表明他投票支持“b”。

我看到了双方至少,我不得不同意Bumgarner的观点,即“bug”并不是描述问题的准确词汇两个Finder都表现得与设计完全一致对我来说,“虫子”暗示着一个错误。

但我也赞同Rentzsch,在旧Finder中用文件夹替换文件(或反之亦然)的限制是一个很好的决定。

I believe the reason the old Finder forbids these replacements is that there is a very high likelihood that such actions are mistakes我在电脑前花了很多时间,多年来我一直在移动和复制很多文件但是,当我想用​​文件替换同名文件夹时,我记不起单个事件,反之亦然也许我有,而且我已经忘记了这种情况,但至少它是很少做的事情因此,由于很少这样做,旧的Finder要求您手动执行这两个步骤并不是一个重大的烦恼:捣毁(或移动)原始项目,然后移动要替换原始项目的项目。

(我的猜测是这种情况很少发生,你们大多数人都没有注意到它。)

The fact that the Finder allows you to replace same-named files with files, or folders with folders, is a shortcut这个想法是人们需要定期做的事情,并且在单个动作中执行这两个步骤(摆脱原始步骤,移动替换项目)会很方便。

If you really do want to replace a folder with a file, it’s not unreasonable to feel that the old Finder’s restriction is wasting a small amount of your time — that you know what you’re doing, and you want the same shortcut the Finder allows for replacing files with files因此,Bumgarner认为OS X Finder允许这样做是正确的。

我认为问题在于,如果这样的行为是错误的(就像Rentzsch遇到的那样),那就是灾难性的Yes, you get warned and need to explicitly allow the replacement by clicking a “Replace” button; but after you permit the Finder to replace the original item, it is走了- 未移至垃圾箱,但不可撤销地删除。

如果您调用撤消,Finder会将替换项目移回其先前的位置,但是它不会带回已删除的项目(不可否认,OS X Finder中的Undo工作总体上比旧的Finder有了很大的改进,但它对你没有帮助。)

所以我的论点是,无论你在当前的OS X Finder允许这样的文件夹换文件或者反之亦然的替换,你可以在一生中保存多少总时间,它将决不如果因为无意中只允许一次而被搞砸,那么你就会失去时间。

但是,如果你购买我的论点,它会得出另一个结论:旧的Finder甚至错误,甚至允许用文件替换文件,或者用文件夹替换文件夹尽管此类操作比使用文件夹或带有文件的文件夹替换文件更常见,但操作的破坏性后果太严重而无法允许。

Rentzsch得出了类似的结论(反驳了我们这些认为OS X Finder存在严重缺陷的人的错误理论,总是希望它的行为与旧的Finder完全相同):

让我把它提升一个档次。我认为用文件夹和带文件的文件替换文件夹 -在Finder 9中允许- 也不应该被允许喜欢打字取代选择, 它是非常危险的便利我相信用户应该被迫明确地删除原件并将替换件放在原来的先前位置。

好老奥斯卡

While the logic behind Rentzsch’s suggestion seems reasonable, I can’t quite bring myself to endorse it — mainly because I frequently use the Finder’s “replace a file with a same-named file” shortcut, and I’d miss it if it were gone.

我决定不是Rentzsch和Bumgarner都错了,但他们是都对Bumgarner is right that the OS X Finder is correct to treat all “dragging one item to replace another same-named item” actions the same way; the old Finder’s behavior was inconsistent (albeit well-intentioned)Rentzsch是正确的,Finder不应该让你只需更换它就可以销毁一件物品。

我相信有一个解决方案应该让每个人,Rentzsch和Bumgarner都非常高兴:Finder应将替换的项目移动到废纸篓。

垃圾桶是原版Macintosh中最大和最好的创意之一垃圾桶的概念简单,强大且明显是的,实际删除一个文件变成了一个多步骤的过程,很大程度上惹恼了twitchy-fingered的DOS和Unix命令行骑师但近20年后,所有计算机现在都附带了一个类似垃圾的界面,用于删除文件Why? Because the time lost by having to first move files to the Trash (or Recycling Bin, or what-have-you) and then invoke a separate “Empty Trash” command — as opposed to the way commands like “rm” and “del” nuke files instantly — is insignificant compared to how much time you will lose if you delete something important accidentally.

Macintosh Trash几乎完全解决了人们不小心擦除文件的问题,这个问题如果你已经足够老了,就会在缺少垃圾隐喻的系统上猖獗。

但是,当您使用Finder时,Finder不会使用垃圾箱更换一个文件,从来没有在确认对话框中允许替换后,原始项目消失,删除,核对Finder应该做的是将原始项目移动到废纸篓,然后将替换项移动到新位置确认对话框应该用于指示如果单击“替换”按钮将会发生什么(对话框也应足够智能,在适当的时候使用“file”和“folder”,而不是懒惰的catch-all“item”;例如“年纪大了文件名为'test'已存在于此位置...“,而不是”较旧的项目名为'test'......“。)

该解决方案解决了这两个问题It preserves the ability to replace one item with another in one action但它不会导致文件的不可撤销删除原始坐在垃圾桶中,Finder应该相对容易,使其成为完全可撤销的动作。

别名问题

我的提议可以解决的唯一复杂因素是别名解析Mac OS别名非常聪明 - 它们通过唯一文件引用ID而非硬编码路径跟踪它们指向的项目的主要方法这意味着如果您创建指向名为“test”的文件的别名,然后将原始文件移动到同一卷上的其他文件夹,则别名仍指向该文件但是,如果别名无法以这种方式解析(例如,如果原始文件不再存在),则别名经理然后将使用路径尝试在同一位置查找同名的另一个项目。

So, as it stands today in both the OS 9 and OS X Finders, if you replace a file named “test” with another file named “test”, an alias that used to point to the original will now point to the replacement, because after the Alias Manager fails to find the original by file reference, it will find the new replacement by path name.

根据我的建议,将替换的项目移动到废纸篓而不是删除,这会产生问题指向原始项目的别名将解析为指向“废纸篓”中的原始项目,而不是原始位置中的替换项目如果你先清空垃圾箱,那就不会有问题了,但垃圾箱的重点是你可以把物品放在里面我认为这可以通过向Alias Manager添加一些智能来解决,这样如果别名的目标在垃圾箱中原始位置有一个较新的项目,它可以将别名重新分配给新项目。

此外,在写完上述内容之后,我发现别名解析规则可能会被用来质疑OS X Finder允许的文件夹替换文件以机智:

  1. 创建一个名为“test”的文件假设它是Preview拥有的GIF文件。
  2. 创建一个指向“测试”的别名别名的图标看起来像预览GIF文件。
  3. 将名为“test”的文件夹拖到与原始“test”文件相同的位置告诉Finder可以更换它。
  4. 请注意,在步骤2中创建的别名仍然看起来像预览文档但是如果你打开它,你会看到它现在指向名为“test”的文件夹,它取代了名为“test”的文件。

这显然是错误的至少,你必须考虑这是一个装饰性的bug,因为别名的图标不会改变以代表它的新目标但也有人认为,这表明OS X Finder工程师没有彻底考虑允许文件被文件夹替换的衍生物。

为什么不?

虽然别名决议打嗝,但在我看来,这是解决这个问题的一个明显的办法很明显,它让我想知道为什么Finder并不总是像这样工作。

一个原因可能是我错过了一些明显的原因,为什么我的建议实际上是行不通的不会是第一次。

然而,我能想到的另一个原因是,直到最近,磁盘空间还是一种稀缺商品最初的Macintosh是软盘为主,所以磁盘上的每个字节都是宝贵的房地产磁盘空间非常稀缺,直到90年代中期,许多磁盘被填充到接近容量并不罕见因此,在没有删除原件的情况下,通常没有空间用另一个文件替换If the Finder would have tried moving the original to the Trash first, in many cases you would have had to empty the Trash immediately just to make room for the replacement, which would have defeated the whole point of my suggestion, not to mention deleting any other files which happened to be sitting in the Trash at the time.

这不是今天的问题大多数人都有足够的磁盘空间我想我们可以使用一些磁盘空间来使文件替换非破坏性。

以前: 还没死
下一个: 别名