경로에 공백이 있는 파티션을 마운트하는 방법

경로에 공백이 있는 파티션을 마운트하는 방법

하나의 파티션을 생성했고 해당 파티션을 이 디렉터리에 마운트하고 싶었습니다./home/max/VirtualBox VMs

fstab에 다음 줄을 썼습니다.

/dev/sda4 /home/max/VirtualBox\ VM ext4 기본값 0 0

하지만 이 오류가 발생합니다

[mntent]: /etc/fstab의 16번째 줄이 잘못되었습니다.

'virtualBox VM' 사이의 공간 때문에 이 오류가 발생한다는 것을 알고 있습니다.

해당 디렉토리에 마운트할 수 있습니까?

[max@localhost VirtualBox VM]$ pwd
/home/max/VirtualBox VM

답변1

따옴표를 사용하세요.

/dev/sda4 "/home/max/VirtualBox VM" ext4 기본값 0 0

답변2

fstab자체 구문이 있습니다. 디렉토리 이름의 일부로 공백을 사용하려면 공백을 지정해야 합니다.코드 포인트백슬래시(이스케이프 문자)가 앞에 오는 0으로 채워진 3자리 8진수입니다.

~ 안에아스키, 공백 문자의 코드 포인트는 8진수로 32 또는 40이므로 다음을 사용할 수 있습니다.

/dev/sda4               /home/max/VirtualBox\040VMs  ext4    defaults        0 0

코드 포인트는 다른 문자에도 지원되지만 지원은 다소 불안정합니다. 내 컴퓨터에서는 \127대신 쓸 수 W있지만~ 아니다 \070대신에 8...

답변3

Bash 함수를 사용하여 전체 경로를 코드 포인트로 변환합니다.

fstab_path(){
    local path=$1
    local s=
    local c=
    for i in $(seq 1 ${#path})
    do
        c=${path:i-1:1}
        s="$s"$(printf '\\0%o' "'$c")
    done
    echo "$s"  >/dev/stdout
}

path="path with spaces tabs etc.."
fpath=$(fstab_path "$path")

답변4

나는 같은 문제가 있었지만 약간의 변형이 있었습니다.btrfsVirtual Box가 포함된 하위 볼륨을 ext4 파티션의 홈 디렉토리에 추가했습니다(방금 하드 드라이브를 변경했습니다).

Dennis의 솔루션을 따랐지만 여전히 문제가 있습니다. 내가 직면한 문제는 이전 시스템 경로와 새 시스템 경로 모두 내 솔루션이 대체해야 할 공간이 포함되어 있다는 것입니다.모두공백이 포함된 경로 \040; 다음과 같이 보일 것입니다 :

  • /dev/sda1이전 시스템의 btrfs임
  • /dev/sdb1새로운 시스템의
  • path/with space하위 볼륨 마운트/home/<user>/VirtualBox VMs
  • 최종 /etc/fstab:
...
/dev/sdb1 /home ext4 defaults 0 0
/dev/sda1 /home/<user>/VirtualBox\040VMs btrfs defaults,subvol=path/with\040space 0 0
...

관련 정보