Was ist ^M?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
MoonKid
Beiträge: 513
Registriert: 12.03.2012 22:36:43

Was ist ^M?

Beitrag von MoonKid » 22.06.2016 20:56:22

git diff zeigt mir seit neustem ^M in einer tex-Datei an.

Das Grundproblem von unterschiedlicher Kodierung der Zeilenumbrüche in Windows und Unix ist mir klar. Allerdings weiß ich nicht für welches von beiden das ^M steht?

Was mich noch mehr wundert, ist dass ich gar kein Windows verwende und die Datei definitiv nur mit vim und evtl. auch kate editiert wurde.

owl102

Re: Was ist ^M?

Beitrag von owl102 » 22.06.2016 21:08:02

^M ist Strg-M ist '\r' ist "return". Windows-Zeilenenden bestehen aus return+linefeed, Unix-Zeilenenden aus linefeed.

Also: Die Datei ist mit Windows-Zeilenenden abgespeichert worden, warum auch immer. (Kate ist durchaus dazu in der Lage, dies zu tun.)

gugus
Beiträge: 376
Registriert: 04.09.2002 17:41:17
Wohnort: da wo ich zu Hause bin

Re: Was ist ^M?

Beitrag von gugus » 22.06.2016 21:10:13

ctrl M ist ein Carriage return (CR) - entspricht einem Character 13 dez oder 0x0D hex

ctrl J ist ein line feed entspricht Char 10 dez oder 0x0A hex

Benutzeravatar
Meillo
Moderator
Beiträge: 8781
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Was ist ^M?

Beitrag von Meillo » 22.06.2016 23:30:30

MoonKid hat geschrieben:git diff zeigt mir seit neustem ^M in einer tex-Datei an.
Nirgends steht, dass das ^M an jedem Zeilenende steht und die Datei damit Windows-Zeilenumbrueche hat. Diff koennte das ^M auch einfach deshalb anzeigen, weil's jemand *eingegeben* hat. 8O

*scnr*
Use ed once in a while!

uname
Beiträge: 12043
Registriert: 03.06.2008 09:33:02

Re: Was ist ^M?

Beitrag von uname » 23.06.2016 08:35:24

Du kannst die Zeichen recht einfach per sed, vim oder tr wieder loswerden. Ich habe mal schell ein paar Links rausgesucht:

sed:
http://www.cyberciti.biz/faq/sed-remove ... -appleosx/

vim und tr:
http://www.server-wissen.de/linux-debia ... entfernen/
http://blog.ingo-reschke.de/?p=24

Bin mir bei der Vim-Methode gerade nicht sicher. Wie ist die genaue Syntax?

Scheint wohl noch etliche andere Lösungen zu geben:
http://stackoverflow.com/questions/8111 ... ned-in-vim

MoonKid
Beiträge: 513
Registriert: 12.03.2012 22:36:43

Re: Was ist ^M?

Beitrag von MoonKid » 23.06.2016 09:45:30

Dank erstmal für die Erklärungen. git zeigt mir hier also Unix-Zeilenenden an?
Aber warum? Das hat es früher nie getan. In der Datei dürften sich auch keine Windows-Zeilenenden befinden.

juffed zeigt übrigens hinter jeder Zeile CRLF (also Windows?). Jetzt bin ich völlig verwirrt.

Wenn ich eine frische Datei mit vim anlege, ist dort nur LF (Unix).
Editiere ich aber die alte text Datei mit vim wird immer ein CRLF eingefügt.

Ich versuche zu verstehen, warum mir das auf einmal angezeigt wird.

Wie ich das ändern kann, ist mir klar. git selbst bietet hier vielfältige Möglichkeiten an, Windows-Unix-Misch-Umgebungen adäquat zu behandeln. Aber bei mir ist nix gemischt.

owl102

Re: Was ist ^M?

Beitrag von owl102 » 23.06.2016 10:03:21

MoonKid hat geschrieben:Dank erstmal für die Erklärungen. git zeigt mir hier also Unix-Zeilenenden an?
Nein, es zeigt Windows-Zeilenenden an.

Vielleicht hast du mal die Zeilenenden verstellt, als du die Datei in kate geöffnet hattest? (Unter "Extras" => "Zeilenenden")
Zuletzt geändert von owl102 am 23.06.2016 17:03:36, insgesamt 1-mal geändert.

MoonKid
Beiträge: 513
Registriert: 12.03.2012 22:36:43

Re: Was ist ^M?

Beitrag von MoonKid » 23.06.2016 11:37:53

Mhm... Ich dachte eher, es hätte vielleicht was mit Versionsunterschieden (git, vim, whatever) zwischen Ubuntu Trusty und Siduction (Debian unstable) zu tun. (btw: Dieser Paralellbetrieb ist nicht als Dauerzustand geplant! :mrgreen: )

Habs jetzt mit tr bereinigt (danke für den Link!) und werde es mal beobachten.

uname
Beiträge: 12043
Registriert: 03.06.2008 09:33:02

Re: Was ist ^M?

Beitrag von uname » 23.06.2016 13:48:33

... zwischen Ubuntu Trusty und Siduction (Debian unstable) zu tun.
Wenn dann lag es bestimmt an Ubuntu. Ist doch fast wie Windows ;-) Siduction (Debian unstable) glaube ich nicht. Viel zu stabil und zuverlässig und zu weit von Windows weg. Vielleicht lag es irgendwie an der Datenübertragung zwischen den Systemen. Hostest du dein Git unter Windows?

MoonKid
Beiträge: 513
Registriert: 12.03.2012 22:36:43

Re: Was ist ^M?

Beitrag von MoonKid » 23.06.2016 14:59:33

Hoste mein git gar nicht. Hab das nur lokal in .git drin.
Die Daten zwischen beiden Rechnern werden per Unison gesynct.

uname
Beiträge: 12043
Registriert: 03.06.2008 09:33:02

Re: Was ist ^M?

Beitrag von uname » 23.06.2016 15:25:12

Na dann wäre nur noch die Frage auf welcher Seite sie zuerst kaputt waren.

Antworten