저는 Ubuntu 22.04를 실행 중이고 파일 이름에 파이프 문자("|")가 포함된 파일을 생성하고 싶습니다. (실행하려면 일부 레거시 코드가 필요합니다.) 특히 Linux/Windows11 이중 부팅 시스템의 특정 드라이브에서 이 작업을 수행하지 못하게 하는 문제점을 식별하고 수정하려면 어떻게 해야 합니까?
내 컴퓨터의 특정 디렉터리에는 이러한 파일을 성공적으로 생성할 수 있지만 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 페이지) ....
유니코드 문자와 확장 문자 집합(128-255)의 문자를 포함하여 현재 코드 페이지의 모든 문자를 이름으로 사용합니다.다음 상황을 제외하고:
다음 예약 문자:
- < 미만
- > (보다 큼)
- :(콜론)
- "(큰따옴표)
- /(슬래시)
- \(백슬래시)
- (수직 튜브 또는 막대)
- ? (물음표)
- *(별표)
파일 시스템에 관계없이 이 항목을 끌어낼 수 있는 추상화 계층이 있는지 의심스럽습니다. 하지만 저는 분명 MS 직원이 아니므로 확신할 수 없습니다. 나는 모든 Windows 파일 시스템이 이 제한 사항을 구현한다고 생각하며 이러한 파일 시스템의 Linux 구현도 이러한 제한 사항을 따르는 것이 논리적인 것 같습니다. *hey|there
Linux에서 파일을 만든 다음 Windows를 부팅하고 실행하려고 하면 fsck
매우 실망스러울 것이라고 생각합니다 . ;)