Am Samstag, 27. Dezember 2003 19:09 schrieb Andreas Winkelmann: Danke Andreas! Ich bin mit dieser mkisofs-Syntax schon langsam am verzweifeln.
BTW mkisofs will mit o.a. Syntax " = " und nicht "=", aber diese Kleinigkeit war schnell rausgefunden. In der Datei darf also vor und nach dem = kein Leerzeichen sein.
Dann musst Du das "->" durch " -> " ersetzen.
Danke, da hatte ich im Mail was verwechselt, genau das meinte ich, dass ich das gemacht hatte.
# ls -lA --time-style=iso --quoting-style=escape|gawk '{if(FNR!=1) {line=substr($0,56);if(0==gsub(" -> ","=",line)){line=line "=" line};print line}}'
Check das bitte mal mit der 56 bzw. 57 in Deinen Verzecihnissen.
Mit 56 hat es gepasst.
Der Ansatz "ls --quoting-style=escape" ist für mkisofs nicht wirklich brauchbar. Ein bin\ bla=/bin in einer Datei "graftpointslist.txt" funktioniert zwar mit einer Syntax
mkisofs -v -f -allow-lowercase -r -J -l -hide-rr-moved -V test -o /burn/testimage -graft-points -path-list graftpointslist.txt
im Gegensatz zu bin bla=/bin aber das Verzeichnis auf der CD nennt sich dann 'bin\ bla' inkl. Backslash.
Nach dem = habe ich noch gar keine Verzeichnisse mit Leerzeichen geschafft, auch nicht mit "\ ", mit " gequotet gibt es ebenfalls immer Fehlermeldungen.
Irgendwie muß man doch bei mkisofs -graft-points -path-list Dateien bzw. Verzeichnisse mit Leerzeichen quoten können. Die Manpage ist da sehr spartanisch:
-graft-points Allow to use graft points for filenames. If this option is used, all filenames are checked for graft points. The filename is divided at the first unescaped equal sign. All occurrences of '\\' and '=' characters must be escaped with '\\' if -graft-points has been specified.
Wenn ich das richtig verstehe, geht es hier nur um \ und = als Bestandteil des Dateinamens. Es wird aber nichts darüber ausgesagt, wie Namen mit Leerzeichen zu quoten sind. Man könnte fast glauben, dass gar nicht zu quoten ist. (The filename is divided at the first unescaped equal sign). Ich ende bei Leerzeichen immer bei einer Meldung ähnlich 'Invalid node - /test\ mit\ blank'
Kenne mich mit mkisofs auch nicht aus. Evtl müssen die Dateinamen dann in " " oder ' ' sein?
Beides schon probiert. Ergebnis ist immer wieder "Invalid node". Die Tücke ist, dass man mkisofs -graft-points -path-list sehr selten _unbedingt_ im konkreten Einzelfall anwenden muß. In einem Script kann man aber schwer vorhersehen, was da so alles an Blanks und Sonderzeichen kommen wird. Welche Möglichkeiten Dateinamen mit Leerzeichen zu quoten gibt es noch? {} habe ich auch schon probiert. Vorgabe ist, dass alle zu brennenden Verzeichnisse bzw. Dateien in einem "Brennverzeichnis" entweder als Link oder als "Originaldatei" vorhanden sind. Mkisofs gerät manchmal in eine Endlosschleife, die man in der Regel mit -graft-points übergeht. Ich hatte zumindest noch nie Probleme mit -graft-points, während ich zb /etc als Link nicht brennen konnte. Nun lassen sich _alle_ Graftpoints nicht in _1_ Variable schreiben, sozusagen die Ausgabe o.a. ls-pipe in 1 Zeile. Das hatte ich schon mit einer Schleife gelöst. Aber vielleicht hast du noch eine Idee wie man das ohne -pathlist lösen könnte. Gegeben ist zb folgendes Verzeichnis zu brennen: ls -lA --time-style=iso | gawk '{if(FNR!=1) {line=substr($0,56);if(0==gsub(" -> ","=",line)){line=line "=" line};print line}}' brennlog.txt=brennlog.txt public_html=/home/ab/public_html test mit Leerzeichen=/test mit blank Anstatt die obigen 3 Zeilen in eine Datei zu schreiben und -pathlist zu verwenden könnte man auch folgendes machen: brenn_name1="brennlog.txt" orginal_name1="brennlog.txt" brenn_name2="public_html" orginal_name2="/home/ab/public_html" brenn_name3="test mit Leerzeichen" orginal_name2="/test mit blank" verkürzt ohne andere Optionen: mkisofs -graft-points "$brenn_name1"="$orginal_name1" \ "$brenn_name2"="$orginal_name2" \ "$brenn_name3"="$orginal_name3" Das funktioniert nicht: GRAFTPOINTS="$brenn_name1=$orginal_name1 $brenn_name2=$orginal_name2 \ $brenn_name3=$orginal_name3" mkisofs -graft-points "$GRAFTPOINTS" inkl. der von mir getesteten Varianten mit unterschiedl. Quoten der Variable. Das = darf nicht in der Variable sein, sondern muß in der Zeile von mkisofs stehen. Da nun im Skript nicht vorhersehbar ist, wieviel Verzeichnisse gerade gerbannt werden sollen und das = nicht in einer Variable stehen darf, sehe ich mich hier in einer Sackgasse. Aber vielleicht hast du noch irgendwelche Ideen. Vielleicht kennt irgendwer noch eine weiter mkisofs-Option. Leider konnte ich im Debugging-Modus von k3b die Datei nicht entdecken, die für -pathlist verwendet wird. Im angegeben Pfad ist sie nicht. Al