So mounten Sie eine Partition mit Leerzeichen im Pfad

9

Ich habe eine Partition erstellt und wollte diese Partition in dieses Verzeichnis einbinden /home/max/VirtualBox VMs

Ich habe diese Zeile in fstab geschrieben:

/ dev / sda4 / home / max / VirtualBox \ VMs ext4 ist standardmäßig 0 0

aber es gibt diesen Fehler

[mntent]: Zeile 16 in / etc / fstab ist schlecht

Ich weiß, dass ich diesen Fehler erhalte, weil zwischen 'virtualBox VMs' Platz ist.

Ist es möglich, in dieses Verzeichnis zu mounten?

[max @ localhost VirtualBox-VMs] $ pwd
/ home / max / VirtualBox-VMs
max
quelle
Sind Sie sicher erstellt dir genau wie inficared in fstab. Ich sah einen Tippfehler in Frage
Yurij73
Ja, es wurde erstellt
max

Antworten:

2

Verwenden Sie Anführungszeichen.

/ dev / sda4 "/ home / max / VirtualBox VMs" ext4 ist standardmäßig 0 0

Justin
quelle
1
Es funktioniert nicht Ich habe all diese Dinge ausprobiert "/ home / max / VirtualBox VMs", /home/max/VirtualBox\ VMs/ home / max / "VirtualBox VMs" nichts funktioniert.
Max
3
Sie können versuchen, \ 040 anstelle der Leerzeichen zu verwenden. nach dem Internet funktioniert das fantastisch; Ich habe es gerade auf Arch 3.7 Kernel ausprobiert und es will jedoch nicht für mich funktionieren.
Justin
großartig ... es funktioniert jetzt gut ... aber was bedeutet \ 040?
Max
1
Das \ ist ein Escape-Zeichen und 040 ist der ASCII-Code für Leerzeichen. Jetzt möchte ich wissen, warum es bei mir nicht funktioniert: /
Justin
1
Das ist interessant. Sogar das ArchWiki sagt in fstab # Dateipfad Leerzeichen , \040die funktionieren sollten. Funktioniert der Anführungszeichenansatz für Sie?
Dennis
17

fstab hat eine eigene Syntax. Um Leerzeichen als Teil eines Verzeichnisnamens zu verwenden, müssen Sie den Codepunkt als nullgefüllte dreistellige Oktalzahl angeben , der ein Backslash (Escape-Zeichen) vorangestellt ist.

In ASCII ist der Codepunkt des Leerzeichens 32 oder 40 in Oktal, sodass Sie Folgendes verwenden können:

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

Beachten Sie, dass Codepunkte zwar auch für andere Zeichen unterstützt werden, die Unterstützung jedoch eher unzuverlässig ist. Auf meinem Computer können Sie schreiben \127statt W, aber nicht \070 statt 8...

Dennis
quelle
0

In der Frage sagen Sie, der Name ist

/ home / max / VirtualVM Box

zeigen Sie in Ihrem Beispiel

/ home / max / VirtualBox \ VM

Es sollte sein

/ home / max / VirtualVM \ Box

gleich sein. Es sollte auch Anführungszeichen enthalten.

Everett
quelle
Entschuldigung, das war aus Versehen, ich habe meine Frage aktualisiert
max
0

Ich konvertiere den gesamten Pfad in einen Codepunkt mit einer Bash-Funktion:

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")
Jahid
quelle