![パスにスペースがあるパーティションをマウントする方法](https://rvso.com/image/1345293/%E3%83%91%E3%82%B9%E3%81%AB%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%81%8C%E3%81%82%E3%82%8B%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E3%83%9E%E3%82%A6%E3%83%B3%E3%83%88%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.png)
パーティションを1つ作成し、そのパーティションをこのディレクトリにマウントしたいと考えました/home/max/VirtualBox VMs
fstab に次の行を書きました:
/dev/sda4 /home/max/VirtualBox\ VMs ext4 デフォルト 0 0
しかし、このエラーが発生します
[mntent]: /etc/fstab の 16 行目が不正です
このエラーは、「virtualBox VM」の間にスペースがあるために発生していることがわかっています。
そのディレクトリにマウントすることは可能ですか?
[max@localhost VirtualBox VMs]$ pwd /home/max/VirtualBox VMs
答え1
引用符を使用してください。
/dev/sda4 "/home/max/VirtualBox VMs" ext4 デフォルト 0 0
答え2
答え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 のパーティション上のホーム ディレクトリにコピーしました (ハード ドライブを変更したばかりでした)。
私はデニスの解決策に従いましたが、それでも問題がありました。私が遭遇した問題は、古いシステムパスと新しいシステムパスの両方に、私の解決策で置き換えるスペースが含まれていたことです。全て;を含むスペースを含むパス\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
...