我正在运行Ubuntu22.04,并希望创建一个文件,文件名中包含管道字符(“AC.26”)。(运行一些遗留代码是必要的。)具体来说,如何识别和纠正在Linux/Windows11 11双引导系统的某些驱动器上阻止我这样做的缺陷?
我认为双引导是一个问题,因为我可以在我的机器上的某些目录中成功地创建这样的文件,但不能创建Windows可以读取的磁盘驱动器上的文件(见下文)。其他人最初安装了操作系统,所以我不知道他们做出了哪些选择会影响到这个问题。
这是我试过的。下面的尝试奏效了,因此我们知道Linux并没有提出根本的反对意见:
xname@blackbox:~$ cd ~
xname@blackbox:~$ touch "|"
xname@blackbox:~$ ls -l "|"
-rw-rw-r-- 1 xname xname 0 Feb 9 10:17 '|'同样,如果我位于/media目录或/media/xname目录中,则可以成功地触摸该文件。
xname@blackbox:/media/xname$ cd /media
xname@blackbox:/media$ sudo touch "|"
xname@blackbox:/media$ cd /media/xname
xname@blackbox:/media/xname$ sudo touch "|"
xname@blackbox:/media/xname$ ls -l
total 12
-rw-rw-r-- 1 xname xname 0 Feb 9 11:35 '|'
drwxrwxrwx 1 xname xname 8192 Feb 8 17:25 cdisk
drwxrwxrwx 1 xname xname 4096 Feb 9 11:30 ddisk您可以看到上面对ddisk的权限。当我最初得到机器时,它的父目录有一个ACL,但是我使用setfacl -b ddisk删除了它,然后重新启动。
触摸尝试在ddisk (和cdisk)中失败:
xname@blackbox:/media/xname$ cd /media/xname/ddisk
xname@blackbox:/media/xname/ddisk$ touch "this_works_fine"
xname@blackbox:/media/xname/ddisk$ touch "|"
touch: setting times of '|': No such file or directory
xname@blackbox:/media/xname/ddisk$ sudo touch "|"
touch: setting times of '|': No such file or directory也许findmnt命令的部分输出会有帮助:
TARGET SOURCE FSTYPE OPTIONS
/ /dev/nvme0n1p5 ext4 rw,relatime,er
├─/media/xname/ddisk /dev/nvme1n1p2 fuseblk rw,nosuid,node
└─/media/xname/cdisk /dev/nvme0n1p3 fuseblk rw,nosuid,node这是mount | grep media的输出
/dev/nvme0n1p3 on /media/xname/cdisk type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096,uhelper=udisks2)
/dev/nvme1n1p2 on /media/xname/ddisk type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096,uhelper=udisks2)有关这台机器的另一个令人费解的事情可能是相关的:当我登录时,有人要求我为一个不是xname的帐户提供密码。我不知道xname是从哪里来的。
谢谢你的帮助。
发布于 2023-02-10 01:04:42
您使用哪个DOS/Windows特定的文件系统并不重要;它们都禁止下列字符(每个这个MS页面) .
对名称使用当前代码页中的任何字符,包括Unicode字符和扩展字符集(128-255)中的字符,except用于以下内容:
下列保留字符:
我怀疑是否存在一个抽象层来提取这些信息,而不管文件系统如何,但我显然不是MS员工,也不确定。我猜想所有的Windows文件系统都实现了这个限制,而这些linux实现似乎只符合这些限制。我可以想象,如果您成功地在Linux上创建了*hey|there文件,然后引导窗口并运行一个fsck,那么它会非常不爽。;)
https://unix.stackexchange.com/questions/734969
复制相似问题