
私はUbuntu 22.04を実行しており、ファイル名にパイプ文字( "|")を含むファイルを生成したいと思います。 (実行するにはいくつかのレガシーコードが必要です。)特にLinux / Windows 11デュアルブートシステムの特定のドライブでこれを実行できない問題を特定して修正するにはどうすればよいですか?
コンピュータの特定のディレクトリにはこれらのファイルを正常に作成できますが、Windowsが読み取ることができるディスクドライブでは作成できないため、デュアルブートは問題だと思います(下記参照)。他の人が最初にOSをインストールしたので、彼らがどのような選択をしてこの問題に影響を与えたのかわかりません。
私が試したことは次のとおりです。次の試みは成功するので、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
。
ご協力ありがとうございます。
答え1
これは問題ではありませんどの使用しているDOS/Windows固有のファイルシステムみんな次の文字(各このMSページ)....
Unicode文字と拡張文字セット(128-255)の文字を含む、現在のコードページのすべての文字を名前として使用します。以下の状況を除いて:
次の予約文字:
- <未満
- >(より大きい)
- :(コロン)
- "(二重引用符)
- /(スラッシュ)
- \(バックスラッシュ)
- (垂直チューブまたはロッド)
- ? (疑問符)
- *(アスタリスク)
ファイルシステムに関係なく、このアイテムを引き出すことができる抽象化階層があるかどうか疑問です。しかし、私は明らかにMSの従業員ではないので、確信できません。私はすべてのWindowsファイルシステムがこの制限を実装すると考えており、これらのファイルシステムのLinux実装もこれらの制限に従うことが論理的であるようです。*hey|there
Linuxでファイルを作成してからWindowsを起動して実行しようとすると、fsck
とても残念です。 ;)