Linux 区分大小写和不区分大小写并且总是不方便?

ano*_*932 8 linux unix ubuntu

我正在使用 Ubuntu 10,我很快发现它在不方便时区分大小写(例如在终端中使用 tab 自动完成文件路径时),但在使用 MV 和 CP 命令时也不区分大小写(也很不方便)尝试使用不同大小写复制文件名时)。

本质上,我需要这个命令才能工作,但它没有。

cp ./filename.txt ./FileName.txt
Run Code Online (Sandbox Code Playgroud)

我只是结束了filename.txt

在此处输入图片说明

如何在同一目录中获取具有不同大小写但名称相同的相同文件?

编辑:Maerics 在下面的评论帮助我记住了我实际上是在运行 NTFS 的 Windows 共享驱动器上开发的,它不区分大小写。这就是为什么即使 CP 和 MV 不会产生错误,文件也不会被复制(或者更有可能被复制,但 Windows 替换了已经存在的文件)。

小智 11

您可以通过将以下行添加到 bash 中启用不区分大小写的文件名完成$HOME/.inputrc

set completion-ignore-case On
Run Code Online (Sandbox Code Playgroud)

关于文件名:这取决于文件系统。在 Linux 文件系统上,应该没有问题。在其他文件系统上,可以使用 mount 命令的选项控制行为。有关mount(8)可安装选项的更多信息,请参阅手册页。


jll*_*gre 6

NTFS 1和 VFAT 不区分大小写,它们只是保留大小写。这意味着如果您创建一个名为FileName.txt的文件,文件系统将保留大小写混合的名称,但您可以使用相同字母的任何大小写组合访问该文件,例如FILENAME.TXT,filename.txtfileNAME.txt。这解释了在同一目录中不能有两个拼写相同但大小写不同的文件。

SMB 导出的文件系统必须实现此行为,以免混淆 Windows 客户端。

ZFS 可以配置为使用该casesensitivity=mixed属性以这种方式运行。

1 从技术上讲,NTFS 区分大小写,但这种类型的操作系统挂载文件系统几乎总是配置为隐藏此底层功能并仅保留大小写。然而,Windows 可以通过修改此注册键来启用区分大小写,HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\dword:ObCaseInsensitiveLinux 可以根据ignore_casewindows_names挂载选项以各种行为挂载这些文件系统。

  • NTFS 绝对*是*区分大小写的。但是,Win32 不区分大小写,因此出于实际原因,大多数人认为 NTFS 也不区分大小写。 (3认同)