![Как смонтировать раздел с пробелами в пути](https://rvso.com/image/1345293/%D0%9A%D0%B0%D0%BA%20%D1%81%D0%BC%D0%BE%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%20%D1%81%20%D0%BF%D1%80%D0%BE%D0%B1%D0%B5%D0%BB%D0%B0%D0%BC%D0%B8%20%D0%B2%20%D0%BF%D1%83%D1%82%D0%B8.png)
Я создал один раздел и хотел смонтировать его в этот каталог./home/max/VirtualBox VMs
Я прописал эту строку в fstab:
/dev/sda4 /home/max/VirtualBox\ Виртуальные машины ext4 по умолчанию 0 0
но он выдает эту ошибку
[mntent]: строка 16 в /etc/fstab неверна
Я знаю, что получаю эту ошибку из-за пробела между «virtualBox VMs»
Возможно ли подключиться к этому каталогу?
[макс@localhost VirtualBox VM]$ pwd /home/max/Виртуальные машины VirtualBox
решение1
Используйте кавычки.
/dev/sda4 "/home/max/VirtualBox VMs" ext4 по умолчанию 0 0
решение2
fstabимеет свой собственный синтаксис. Чтобы использовать пробелы как часть имени каталога, вы должны указать егокодовая точкакак дополненное нулями 3-значное восьмеричное число, которому предшествует обратная косая черта (экранирующий символ).
ВASCII, код символа пробела равен 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
У меня была та же проблема, но с небольшим изменением: креплениеbtrfsподтом, содержащий Virtual Box, в мой домашний каталог на разделе ext4 (я только что сменил жесткие диски).
Я последовал решению Денниса, но все еще имел проблемы. Проблема, с которой я столкнулся, заключалась в том, что и старый, и новый системные пути содержали пробел, моим решением было заменитьвсепути, содержащие пробелы с \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
...