Daten kopieren/ Verschiedene Dateiträgerformate



  • nman schrieb:

    Was ist dann der Grund dass bei Linux Programmen kaum bis gar nie Pfade mit Spaces verwendet werden?
    

    Moment, was meinst du denn hiermit eigentlich genau? Wo sollen denn Pfade mit Leerzeichen nicht oder schon verwendet werden? Sorry, ich stehe offensichtlich gerade sehr auf der Leitung. 🙂

    z.B. Default-Namen für diverse Verzeichnisse (Install Pfade etc.).
    Auf Windows hast du z.B. schonmal vom System aus Pfade wie
    `c:\Program Files

    c:\Program Files (x86)

    c:\Windows\Downloaded Installations

    c:\Windows\Offline Web Pages

    etc.`

    Und bei ThirdParty Programmen gibt's auch sehr häufig Pfade mit Leerzeichen. Natürlich gibt's auch hier Ausnahme, das dumme DDK mag z.B. keine Leerzeichen im Pfad (ist mittlerweile möglicherweise gefixt, das Win2000 DDK mochte auf jeden Fall keine).

    Bei Linux Programmen ist mir das noch nicht untergekommen. Mag natürlich auch daran liegen dass ich selbst kaum mit Linux arbeite 😉


  • Mod

    Der Hauptgrund gegen Leerzeichen sind meines Wissens nach tatsächlich schlecht geschriebene Shellscripte. Es ist durchaus schwierig, es immer überall korrekt zu machen, eben weil der inkorrekte Weg schneller und einfacher ist. Gleichzeitig sind Scripte sehr verbreitet; bei fast jeder Art von Software werkelt an der einen oder anderen Stelle irgendwo ein Script. Daher sind auch manchmal "professionelle" Produkte von inkorrekt programmierten Scripten betroffen.

    Bei Windows hingegen käme niemals jemand auf die Idee, Batchdateien irgendwie ernsthaft einzusetzen, weil die Windowsshell scheiße eher bescheiden ist. Die expandiert ja nicht einmal Wildspaces in Dateinamen!



  • SeppJ schrieb:

    Bei Windows hingegen käme niemals jemand auf die Idee, Batchdateien irgendwie ernsthaft einzusetzen, weil die Windowsshell scheiße eher bescheiden ist. Die expandiert ja nicht einmal Wildspaces in Dateinamen!

    Verstehe nicht ganz worauf du mit dem letzten Satz hinaus willst.
    😕



  • hustbaer schrieb:

    Auf Windows hast du z.B. schonmal vom System aus Pfade wie
    […]

    Ach so. Das gibt es bei unixoiden Betriebssystemen durchaus auch. Nur eben nicht für das Basissystem. Diverse Desktop-Environments und GUI-Tools verwenden aber schon immer wieder Leerzeichen in irgendwelchen Pfaden. Unter OSX, was ja auch nur ein Unix ist, sind Leerzeichen auch in Systempfaden anzutreffen ("~/Library/Application Support" uä.).

    Irgendwelche Tools, die sich nach /opt installieren verwenden auch oft Leerzeichen im Pfad. Der große Unterschied ist vmtl. dass unter GNU/Linux die Standardpfade durch den FHS geregelt sind und es nicht so wichtig ist, dass Enduser mit den Ordnernamen irgendwas anfangen können. (Nicht dass sie das bei irgendeiner Plattform _wirklich_ könnten, aber bei "Program Files" uä. war das wohl zumindest der Gedanke.


  • Mod

    hustbaer schrieb:

    SeppJ schrieb:

    Bei Windows hingegen käme niemals jemand auf die Idee, Batchdateien irgendwie ernsthaft einzusetzen, weil die Windowsshell scheiße eher bescheiden ist. Die expandiert ja nicht einmal Wildspaces in Dateinamen!

    Verstehe nicht ganz worauf du mit dem letzten Satz hinaus willst.
    😕

    Dass man die Windowsshell vergessen kann, weil sie keine ausreichende Funktionalität für komplexe Scripte bietet. Daher sieht man nie Scripte in Windowsanwendungen*. Ich habe eines der gravierendsten Features aufgezählt, das fehlt. Ich hätte auch mangelnde Unterstützung für Piping nennen können oder vieles anderes, aber ich wollte mich kurz fassen. Was wohl nach hinten los ging, weil ich nun viel mehr schreibe als sonst nötig gewesen wäre.

    *: Wenn sie verbreitet wären, gäbe es sicherlich ebenfalls irgendwelche häufig vorkommenden Fehler, über die sich die Nutzer ärgern würden und auf das System anstatt auf den Programmierer schieben würden.



  • SeppJ schrieb:

    Bei Windows hingegen käme niemals jemand auf die Idee, Batchdateien irgendwie ernsthaft einzusetzen

    Ich wünschte, dem wäre so. Leider sind Batchdateien durchaus verbreitet. In vielen Fällen ist das auch okay, weil die Aufgaben trivial sind (%PATH% anpassen vor dem Aufruf einer Anwendung oder so). Aber es gibt trotzdem zu viele nichttriviale Batchskripte in freier Wildbahn.

    SeppJ schrieb:

    Die expandiert ja nicht einmal Wildspaces in Dateinamen!

    Was sind denn Wildspaces?

    SeppJ schrieb:

    *: Wenn sie verbreitet wären, gäbe es sicherlich ebenfalls irgendwelche häufig vorkommenden Fehler, über die sich die Nutzer ärgern würden und auf das System anstatt auf den Programmierer schieben würden.

    Gibt es auch genug. Z.B., daß Batchdateien standardmäßig nicht mit Unicode umgehen können. Man könnte das beheben durch Aufruf von chcp , aber natürlich macht das keiner.

    (Remember, nobody actually likes batch programming. You merely tolerate it. Für ernsthaftes Shell-Skripting gibt es ja Powershell.)



  • SeppJ schrieb:

    Ich habe eines der gravierendsten Features aufgezählt, das fehlt. Ich hätte auch mangelnde Unterstützung für Piping nennen können oder vieles anderes, aber ich wollte mich kurz fassen. Was wohl nach hinten los ging, weil ich nun viel mehr schreibe als sonst nötig gewesen wäre.

    Ich finde es ehrlich gesagt fürchterlich dass das Globbing unter Linux von der Shell gemacht wird. Daher hatte ich nachgefragt.

    Klar, wenn das System mit Commandlinelängen im mehrstelligen Megabytebereich umgehen kann ist es vermutlich "OK", aber schön ist mMn. was anderes.
    U.a. weil sich dadurch so komische Effekte ergeben können wie dass ein Programm einen Dateinamen für nen Switch hält -- bloss weil der User meinte ein File namens "--blub" anlegen zu müssen.

    Davon abgesehen kann die Windows Shell natürlich Files auflisten. Nur halt nicht so "komfortabel" wie andere Shells.

    Was nicht heissen soll dass ich die Windows Shell besonders toll oder auch nur "OK" finde. Die ist schon slimm. Nur kann sie viel mehr als die meisten Leute wissen.


  • Mod

    hustbaer schrieb:

    SeppJ schrieb:

    Ich habe eines der gravierendsten Features aufgezählt, das fehlt. Ich hätte auch mangelnde Unterstützung für Piping nennen können oder vieles anderes, aber ich wollte mich kurz fassen. Was wohl nach hinten los ging, weil ich nun viel mehr schreibe als sonst nötig gewesen wäre.

    Ich finde es ehrlich gesagt fürchterlich dass das Globbing unter Linux von der Shell gemacht wird. Daher hatte ich nachgefragt.

    Ok. Ich hätte nicht gedacht, dass wir so krass unterschiedliche Meinungen hätten, was eine vernünftige Shell ausmacht und was nicht. 😮 Du musst der erste Mensch sein, dem ich begegne, der dieses "Feature" der Windowsshell gut findet. Daher befand ich es nicht für nötig zu erklären, dass ich den Mangel an Globbing für einen großen Negativpunkt halte. Ich dachte, das sähe jeder so, ohne dass eine Erklärung nötig wäre.



  • SeppJ schrieb:

    Ok. Ich hätte nicht gedacht, dass wir so krass unterschiedliche Meinungen hätten, was eine vernünftige Shell ausmacht und was nicht. 😮 Du musst der erste Mensch sein, dem ich begegne, der dieses "Feature" der Windowsshell gut findet.

    Kannst mich als zweiten einreihen. Ich halte das für genauso gefährlich wie den impliziten DLL-Suchpfad oder das nicht erforderliche "./" unter Windows.



  • audacia schrieb:

    genauso gefährlich wie den impliziten DLL-Suchpfad

    Welchen Teil?
    Current directory oder "application directory"?

    Den "current directory" Teil finde ich nämlich auch total bekloppt.
    Vor allem auch dass das "current directory" selbst mit SafeDllSearchMode=on noch vor dem PATH durchsucht wird. Waaaaaaaaah 😮

    "application directory" finde ich dagegen OK.



  • hustbaer schrieb:

    Welchen Teil?

    Wie du beschrieben hast.



  • Ich setze inzwischen in meine Anwendungen inzwischen auch immer an möglichst früher Stelle sowas rein:

    SetDllDirectory(""); // Current-Directory aus Suchpfad entfernen
    SetSearchPathMode(BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE|BASE_SEARCH_PATH_PERMANENT); // Safe-Search Reihenfolge aktivieren und für Prozess-Lebensdauer fixieren.
    

    ...lieber wäre mir aber eigentlich wenn das der Standard wäre, und alte Apps ggf. dann eben erst mit "Kompatbilitätsmodus"-Einstellungen laufen müssten 😉


Anmelden zum Antworten