[linux-l] dos2unix

Steffen Dettmer steffen at dett.de
Fr Mär 30 21:46:17 CEST 2007


* Volker Grabsch wrote on Fri, Mar 30, 2007 at 00:07 +0200:
> On Wed, Mar 28, 2007 at 11:02:06PM +0200, Steffen Dettmer wrote:
> > * Oliver Bandel wrote on Sat, Mar 24, 2007 at 15:43 +0100:
> > > > In der Praxis muss man aber ein \r nicht unbedingt erwarten, oder ;) ?
> > > 
> > > Sonderfälle unberücksichtigt zu lassen ist aber nicht die
> > > solideste Herangehensweise.
> > 
> > Wenn man ein Text mit einzelnem \r hat, hat man wohl keinen DOS-Text.
> 
> Du definierst Randfälle einfach als nichtexistent? Ist das ein
> schlechter Scherz?

Es gibt doch in DOS-Texten kein \r. Wenn es ein \r gibt, ist es kein
DOS-Text. Dann geht das nicht, klar.

> Natürlich hab ich keinen DOS-Text, sondern einen Unix-Text, der leider
> DOS-Zeilenenden bekommen hat. Und den will ich wieder zurückhaben,
> daher das Script.

Wenn das gemischt ist, kann man nicht mehr 100% sicher funktionieren,
klar. Könnte ja sein, dass Dein Text \r und \n gemischt hatte, dann \r
und \n hinzukamen. Da kann man den Ursprungstext natürlich nicht mehr
eindeutig rekonstruieren, klar :-)

> Oder willst du mir jetzt erklären, dass ein Shell-Script, das
> mitten in einer Zeile \r enthält, kein Shell-Script ist?

Genau! Und es sollte da auch keine binäre null enthalten. Und keine
Leerzeichen im Dateinamen. Jajaja, ich weiss, dass sowas in the wild
schon beobachtet wurde :)

> > Na ja, jedenfalls merke ich bei der Arbeit mit cygwin, dass das alles
> > ein grosses, leidiges Thema ist.
> 
> Ist bei MSYS genauso. Das einzige, was hilft: Zeilenenden so
> lassen, und unter Windows sich einen Editor holen, der nicht
> eigenmächtig konvertiert, sondern Unix-Zeilenenden liest und
> genauso wieder schreibt.
> 
> Genauso wie auch der vi Dateien mit DOS-Zeilenenden lesen
> kann und genauso wieder rausschreibt.

Du meinst also, mit unix-LFs zu arbeiten, ja? Ja, dass macht sich wohl
am besten, ja, bloss blöd, wenn man z.B. "aus Versehen" mit Devstudio
doch was ändert. Ich persönlich gucke eh immer cvs diff bevor ich
einchecke und kann ggf fix konvertieren, aber manch anderer vielleicht
nicht und dann haste den Salat im CVS (gut, *sowas* kann man bei uns
i.d.R nicht einchecken).

> > Richtig wäre wohl, überhaupt keine Ersetzung zu machen.
> > Interessanterweise gehen Unix-LFs bei den Windows-Compilern z.B. auch;
> > z.B. CL.EXE von MS Developer Studio. Der Editor zeigt die Files sogar
> > an. Bloss ändern sollte man sie nicht: neue Zeilen sind dann mit
> > DOS-LFs, die restlichen (alten) mit Unix-LFs, da sind wir alle ganz
> > stolz auf dieses Verhalten ;)
> 
> Es gibt wohl auch andere Editoren, die diesen Mist verzapfen.
> Habe ebenfalls so einen Kandidaten, muss mal fragen, welchen
> Editor er benutzt. Lässt sich aber alles mit einem sauberen
> 
>     sed 's/\r$//'
> 
> beheben.

im vim geht strg-v strg-m bzw. strg-q strg-m (windoofs, wo man das ja
meist braucht ;)).

oki,

Steffen

-- 
Dieses Schreiben wurde maschinell erstellt,
es trägt daher weder Unterschrift noch Siegel.





Mehr Informationen über die Mailingliste linux-l