Leerzeichen im Namen

Ich habe, wie ich mein Eclipse-Projekt erstellt habe,
leider nicht darauf geachtet dass Leerzeichen
im Pfad nie gut sind.
Nun habe ich den Salat.
Bis jetzt habe ich es geschaft, mit einer (leerzeichenlosen) Verknüpfung
auf die Workspace zu zeigen, aber die obwohl ich über die Verknüpfung
Eclipse starte, setzt er alle anderen Pfade auf die den “richtigen”
Pfad. Der Salat ist jetzt, das er mir das Leerzeichen nicht durch ein "\ " ersetzt.
Ich hoffe ihr könnt mir helfen!
schildi48

welch ein Einsatzgebiet für Beispiele, schreibe doch um was für Pfade es geht,
wo möchtest du überhaupt etwas verändern, in einem Java-Programm, in Eclipse-Einstellungen, in Windows-Verknüpfungen?

richtiger und falscher Pfad, Leerzeichen und “”, überhaupt alles an sich unglaublich unklar

Sorry, ich habe vergessen zu sagen, dass
ich Linux-Benutzer bin.

also, bei mir schaut das ganze so aus:

/irgendein/pfad/ein ordnernamen mit leerzeichen/workspace
damit man unter linux dorthin navigieren kann, muss man ja folgendes eingeben:
cd /irgendein/pfad/ein ordnernamen\ mit\ leerzeichen/workspace
da eclipse die "\ " nicht einfügt, findet er die workspace nicht.
Eclipse startet zwar korrekt, aber er gibt an alle externen tools(PyLint, CDT, …) den pfad OHNE
"\ " weiter, und die finden meine workspace dann nicht.
nun wollte ich mir so helfen, und habe eine Verknüpfung namens workspace
in /irgendein/pfad/ gelegt.
ich starte also eclipse und gebe beim start /irgendein/pfad/workspace ein.
ich glaube, das problem sind die workspace-konfigurationen.
dort steht, denke ich, noch immer dieser pfad /irgendein/pfad/ein ordnernamen mit leerzeichen/workspace.
kann man den irgendwie gegen den neuen pfad ersetzen?
ich hoffe das war nun klarer,
schildi48

ich kenn mich jetzt mit linux nicht so aus aber…

Wie wäre es denn damit:
Bennen ein ordnernamen mit leerzeichen in einOrdnernamenOhneLeerzeichen um.

hm naja, selbst Schuld? Hat dir keiner gesagt, dass Leerzeichen in Datei- und Verzeichnisnamen nichts verloren haben?
Immer wieder diese Windows User, die es nicht anders gewöhnt sind :).
Windows ist so programmiert, dass es bei Dateioperationen Leerzeichen automatisch maskiert, und jedwede Windows-Anwendung bedient sich bei Windows, wenns mit Dateien zu tun hat. Das ist bei Linux nicht der Fall. Da gibt es im Moment keine Lösung und kein Workaround. Verzichte schlicht auf Leerzeichen.

Das ist Blödsinn. Weder Windows noch Linux „maskieren“ Leerzeichen automatisch. Auf der Kommandozeile müssen Leerzeichen (sowie andere Zeichen) in manchen Situationen maskiert werden. Auch unter Linux (bash und alle anderen einschlägigen Shells) kann man Leerzeichen in Pfaden auch „maskieren“, indem man den gesamten Pfad in doppelte Anführungszeichen setzt.
Das Maskieren von irgendwelchen Pfadbestandteilen hat ausschließlich etwas mit der Eingabe in das entsprechende Programm (Windows Explorer, Shell, beliebiges andere Programm, Java Quellcode…) zu tun. Wie das in Eclipse funktioniert, kann ich leider nicht sagen, aber die obere Aussage konnte ich so einfach nicht stehen lassen.

Ich denke das verschieben des Workspaces ist die mit Abstand naheliegendste Lösung.

[QUOTE=mla.rue;26962]hm naja, selbst Schuld? Hat dir keiner gesagt, dass Leerzeichen in Datei- und Verzeichnisnamen nichts verloren haben?
Immer wieder diese Windows User, die es nicht anders gewöhnt sind :).
Windows ist so programmiert, dass es bei Dateioperationen Leerzeichen automatisch maskiert, und jedwede Windows-Anwendung bedient sich bei Windows, wenns mit Dateien zu tun hat. Das ist bei Linux nicht der Fall. Da gibt es im Moment keine Lösung und kein Workaround. Verzichte schlicht auf Leerzeichen.[/QUOTE]

inhaltlich komme ich nicht ganz mit, aber allein die Kombination in einem Posting
‚immer diese Windows-User‘ + ‚Linux kaputuliert vor Leerzeichen, Windows kann es‘
ist eher peinlich für Linux :wink:
aber sicherlich auch nicht korrekt

dass Windows \ und / ‚kann‘, während Linux nur / ist freilich noch so ein Thema,
mehr als solche Pauschaulitäten kann ich im Moment nicht beitragen,
vielleicht durchsteige ich Posting #3 noch, vielleicht noch deutlicher werden, allein etwa \ und /

Das Ding ist doch, dass Linux bei Leerzeichen den Eingabestring in verschiedene Argumente aufteilt. Da ist Windows keinen Ticken besser und es wäre auch schlimm wenn es anders wäre. Wenn ich meine Skripte mit 3 Argumenten starte und 2 Optionen will ich nicht jedes Leerzeichen extra als ein solches Kennzeichnen müssen. Windows baut sich seine Ordnerstrings im Explorer halt gerne selbst und versteckt dies ganz gut vor dem Benutzer. Sieht man an dem Mischmasch von “Eigene Dokumente” vs “Document and Settings” je nach Anzeige. Oder “Program Files” statt “Programme”. Völliger Blödsinn den Windows da abzieht.

Wenn man es dem OS nicht beigebracht hat (durch reinprogrammieren) wie dann, Magie etwa?
Lange Reden kurzer Sinn:
Windows kann von sich aus (auch die Kommandozeile) mit Leerzeichen in Dateinamen umgehen.
Linux kann das nicht immer. Eine SHell kann das, die andere braucht Anführungszeichen, eine andere will wiederum maskieren, ein Dateimanager kann das, ein anderer kann das nicht. Warum auch immer (Magie wohl, wenn man es nicht einprogrammiert hat…)
Eines ist klar, jedem ITler sollte klar sein: auf Leerzeichen verzichten und sich nicht wundern, wenns sonst Probleme gibt.

@cmrudolph spiel mal mit paar Betriebssystemen und gucks dir mal genau an, wenn ich z.b. unter openSUSE kate, kwrite oder gedit starte, benutzt es immer einen anderen Dateimanager zum speichern/laden. Aber egal welchen Texteditor ich unter Windows nutze, der “FileChooser” ist immer der Gleiche. Warum wohl. Weil unter Windows diese “Funktionalität” von allen Anwendungen geerbt wird, während unter Linux viele Anwendungen ihr eigenes Süppchen kochen, oder auf die zig mitgelieferten Dateimanager zurückgreifen, von denen einige automatisch maskieren und andere nicht. Linux-Eclipse nutzt offensichtlich nichts, was mit Leerzeichen umgehen kann, unter Windows hat Eclipse aber keine Probleme mit Leerzeichen, ist wohl auch nur Magie dann.

@mla.rue : Das ist doch genau das, was ich geschrieben habe: es ist nicht vom Betriebssystem, sondern von der Anwendung abhängig, ob und wie Dateinamen maskiert werden müssen.
Windows bietet in der Windows API einen Dateiauswahldialog an, und den nutzen native Anwendungen der Einfachheit (und Einheitlichkeit) halber nun einmal. Dadurch ist das Verhalten bei den meisten Anwendungen identisch. Bei Java-Anwendungen sieht es auch unter Windows anders aus, da gibt es auch verschiedene Dateiauswahldialoge.

Die Leerzeichenproblematik ist eine historisch gewachsene Geschichte.

Die ganz alten FAT Dateisysteme zum Beispiel konnten nur mit Dateien arbeiten, die dem 8.3 Namensschema folgten (8 Buchstaben, dann ein Punkt, dann die Endung). Andere Dateisysteme hatten ähnliche Beschränkungen.
Leerzeichen waren da Verschwendung und wurden deshalb nie angewendet.

Dazu kommt die Tatsache, dass fast alle Kommandozeilenprogramme das Leerzeichen als Trenner zwischen 2 Argumenten interpretieren. Keine Leerzeichen in den Pfaden zu vergeben war daher einfacher wenn man sie nutzen wollte. Darauf wiederum verließen sich die Entwickler dann und gingen entsprechend davon aus, dass in einem Dateinamen (und damit im Ordnernamen, falls vorhanden) kein Leerzeichen vorkommt.

Nun kam Microsoft und brachte Windows raus. Die Kommandozeile war da nicht mehr dauerhaft notwendig, die Dateisysteme konnten mit langen Namen und Pfaden umgehen. Pfade mit Leerzeichen konnten nun also verwendet werden, da die Probleme seltener auftreten würden. Fast alles in Windows kann schließlich ohne Kommandozeile ausgeführt werden. Dementsprechend konnte Microsoft dann auch intern “besser” arbeiten. (Wodurch Windows eben mit Leerzeichen umgehen kann). Die offensichtlichen Vorteile von Leerzeichen (für den einfachen Anwender) in Pfaden spreche ich mal nicht weiter an.

In Unix hat sich das jedenfalls nicht so entwickelt. Zwar kamen auch hier grafische Oberflächen, die Konsole ist aber immer noch der Hauptbestandteil des Betriebssystems. Dementsprechend wurden wohl hier auch die internen Routinen nie entsprechend angepasst.

Heißt:
Windows “maskiert” nichts, sondern kann einfach damit arbeiten. Das Leerzeichen ist hier ein Zeichen im Namen, das erwartet und erwünscht ist.
In Linux ist das genau umgekehrt.

Warum hat Eclipse nun unter Linux Probleme und unter Windows nicht?

Weil Eclipse mit Java arbeitet und mit Java Bordmitteln die Pfade verarbeitet.
Java wiederum arbeitet mit den nativen Methoden. Die Problematik liegt daher in der Art und Weise wie Linux damit umgeht.

TLDR; Die Kommandozeile darf nicht als Referenz dafür verwendet werden ob Leerzeichen erlaubt sind oder nicht. Es ist die Art und Weise wie das Betriebssystem mit Pfaden umgeht.

[QUOTE=Sonecc]Heißt:
Windows “maskiert” nichts, sondern kann einfach damit arbeiten. Das Leerzeichen ist hier ein Zeichen im Namen, das erwartet und erwünscht ist.
In Linux ist das genau umgekehrt.

Warum hat Eclipse nun unter Linux Probleme und unter Windows nicht?

Weil Eclipse mit Java arbeitet und mit Java Bordmitteln die Pfade verarbeitet.
Java wiederum arbeitet mit den nativen Methoden. Die Problematik liegt daher in der Art und Weise wie Linux damit umgeht.[/QUOTE]

Das ist einfach falsch. Sowohl Windows als auch Linux können mit weitestgehend beliebigen Dateinamen umgehen (Windows hat da ein paar künstliche Einschränkungen), die das Dateisystem unterstützt. Man muss den Betriebssystemfunktionen aber schon den korrekten Dateinamen übergeben, damit die etwas damit anfangen können. Und der Dateiname kommt nun einmal von der Anwendung. Wie diese den Dateinamen erzeugt, ist dann dessen Sache. Und genau an dieser Stelle kommt ggf. Maskierung zum Einsatz.

Edit: das Problem des TO lässt sich wahrscheinlich ganz einfach dadurch lösen, dass der Pfad in doppelte Anführungszeichen gesetzt wird.

@Sonnec: Windows pfuscht da aber massiv. Wer sich diese Aufteilung in “sichtbar” und “unsichtbar” gedacht hat gehört gevierteilt.

Hach, manchmal vermisse ich den Danke Button. Und um meinen Senf dazuzugeben, Linux kann genauso gut mit Leerzeichen umgehen. Gibt es wo einen Fehler liegt das eher am Entwickler als wie am OS.

Hab ja nix gegenteiliges behauptet. Anzeige und interne Verarbeitung sind in Windows 2 unterschiedliche Dinge.

@cmrudolph : Wenn du meinst

@Sonecc : Ich wollte auch nur nochmal darauf hinweisen :wink:

Und der Punkt:

[QUOTE=Sonecc]
Nun kam Microsoft und brachte Windows raus. Die Kommandozeile war da nicht mehr dauerhaft notwendig, die Dateisysteme konnten mit langen Namen und Pfaden umgehen. Pfade mit Leerzeichen konnten nun also verwendet werden, da die Probleme seltener auftreten würden. Fast alles in Windows kann schließlich ohne Kommandozeile ausgeführt werden. [/QUOTE]

würde ich eher umschreiben in:

Alles was man mit der Kommandozeile machen kann, kann man mit Windows nicht.

ich werde probieren,
die workspace zu verschieben.

@mla.rue
den FileManager kannst du in jeder halbwegs normalen
Graphischen Oberfläche einstellen xfce -> Standardprogramme
90% der Programme übernehmen den dann auch.
und auch windows gibt dir nicht jedes mal den seben FileChooser.
Mal kommt einer mit adressleiste, mal ohne. Ich bin zwar kein Windows-Entwickler,
aber ich nehme mal an, das es hier verschiedene Gruppen von File-Managern gibt, die der
Entwickler auswählen kann.
Unter Linux kann der User seinen Lieblings-Manage aussuchen und viele Programme übernahmen den dann
auch.

Welche Vorteile wären das gegenüber dem Unterstrich?

Das mein Vater (zum Beispiel) nicht zu erklären ist, warum er nicht „Meine Bilder“ nutzen kann, sondern „Meine_Bilder“ nutzen und sich dabei die Finger verrenken muss.
Desweiteren ist auch in der allgemeinen deutschen Sprache die Verwendung von Unterstrichen als Worttrennung eher eine Seltenheit. Sätze_wie_diese_wären_dann_doch_recht_befremdlich_wie_ich_finde.
Der einfache Anwender hat dadurch also folgende (IMO immer noch offensichtliche) Vorteile:
[ol]
[li]Namensgebung entspricht dem Sprachgebrauch
[/li][li]Es muss keine neue Norm angelernt werden
[/li][li]Namensgebung ist logisch und (relativ) unreglementiert (für den einfachen Anwender)
[/li][li]Der Lesefluss wird nicht gestört
[/li][li]Der Weg der Finger ist einfacher und kürzer
[/li][/ol]

Diese Punkte insgesamt senken den Aufwand zur Gewöhnung an die Nutzung eines PCs. Der einfache („dumme“) Anwender muss nicht nachdenken, wenn er einen Ordner erstellt sondern kann ganz einfach und stupide seinen Gewohnheiten nachgehen.