Karl: Bestandteile des Dateipfades

Guten Tag!

Fragen über Fragen zur Bezeichnung von Dateipfaden:

< 1 ><    2           ><  3  ><  4   ><  5     >
http://www.beispiel.de/ordner/ordner2/datei.html
     <       I                      ><  II >< III>
<             i                                 >
Kann mal bitte jemand den Pfad in seine Bestandteile aufdröseln?

"Gesamtding" = Pfad <i> (Oder endet der Pfad bei ordner2/?)
http:// = Protokoll <1>

ordner + ordner2 = ein Ordner/ Verzeichnis <3> und <4>
datei.html = Datei (oder Dateiname?) <5>
html = Dateityp/-endung <III>

Bitte mal die anderen Bestandteile benennen.

  1. hi,

    Fragen über Fragen zur Bezeichnung von Dateipfaden:

    < 1 ><    2           ><  3  ><  4   ><  5     >
    http://www.beispiel.de/ordner/ordner2/datei.html
         <       I                      ><  II >< III>
    <             i                                 >
    Kann mal bitte jemand den Pfad in seine Bestandteile aufdröseln?

    http://de.wikipedia.org/wiki/Uniform_Resource_Locator#Aufbau

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. http://de.wikipedia.org/wiki/Uniform_Resource_Locator#Aufbau

      Hi.

      Das ist schon mal hilfreich. Ist aber nicht alles zerlegt. Mich interessiert v. a. <I> und <II>.

      datei.html

      html ist klar, ist die Dateiendung. Aber was ist "datei"? Und was "datei.html"? Kann man deklaratorisch den Pfad inklusive der Datei und exklusiv der Datei auseinanderhalten? Ferner bin ich interessiert an einer Benennung des Pfades bezogen auf Rootdoc und bezogen auf das Betriebssystem. Oder kann man das nur explizit durch nähere Beschreibung, worauf sich der Pfad bezieht, klären?

      1. hi,

        datei.html

        html ist klar, ist die Dateiendung. Aber was ist "datei"? Und was "datei.html"? Kann man deklaratorisch den Pfad inklusive der Datei und exklusiv der Datei auseinanderhalten?

        Nein, da HTTP keine "Dateien" kennt,

        Ferner bin ich interessiert an einer Benennung des Pfades bezogen auf Rootdoc

        Wie meinen?

        Der Pfad ist ein Pfad, und fertig. Da gibt's kaum noch was zu benennen.

        und bezogen auf das Betriebssystem.

        HTTP hat kein Interesse an irgendwelchen Betriebsystemen.

        Oder kann man das nur explizit durch nähere Beschreibung, worauf sich der Pfad bezieht, klären?

        Du hast einen HTTP-URL angegeben - und dessen Aufbau ist im Wikipedia-Artikel erklärt.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Hi.

          Nein, da HTTP keine "Dateien" kennt,

          Bitte nicht auf die Goldwaage legen, und bitte nicht mein Beispiel mit der URl verabsolutieren. Bezogen auf http mag das so sein. In anderen Zusammenhängen nicht. Wenn es um einen Upload geht, ist der Zusammenhang das Dateisystem des Servers oder genauer, wenn es so genau jetzt sein muß, das Dateisystem des Rechners, auf dem der Server läuft.

          Wenn´s genehm ist, diskutieren wir mal basename().
          Beschreibung:Extrahiert den Namen einer Datei aus einer vollständigen Pfadangabe

          Beispiele aus dem Manual:
          $path = "/home/httpd/html/index.php";
          $file1 = basename($path);         // $file1 enthält den Wert "index.php"
          $file2 = basename ($path,".php"); // $file2 enthält den Wert "index"

          Wie kann das sein? $file1 und $file2 ist das Gleiche, der Dateiname?

          if ($file1 == $file2) echo "Ich bin´s, der olle Dateiname!";

          Korrekt? Ergibt true?

          Ferner bin ich interessiert an einer Benennung des Pfades bezogen auf Rootdoc

          Wie meinen?

          Der Pfad ist ein Pfad, und fertig. Da gibt's kaum noch was zu benennen.

          »»

          Eben doch. Wenn ich mir Konfigurationsvariablen zusammenbastele, möchte ich die semantisch korrekt benennen. Wenn ich in einem Kontext die Pfade auf Rootdoc beziehe, in einem anderem relativ zum Dateisystem, brauche ich sinnvolle Bezeichner, um mir keinen abzubrechen.

          Andernfalls bleibt mir nur eine Umschreibung wie

          $bilder_relativ_zu_htdocs = "bilder/";

          um es mal zu übertreiben.

          1. hi,

            Wenn´s genehm ist, diskutieren wir mal basename().
            Beschreibung:Extrahiert den Namen einer Datei aus einer vollständigen Pfadangabe

            Beispiele aus dem Manual:
            $path = "/home/httpd/html/index.php";
            $file1 = basename($path);         // $file1 enthält den Wert "index.php"
            $file2 = basename ($path,".php"); // $file2 enthält den Wert "index"

            Wie kann das sein? $file1 und $file2 ist das Gleiche, der Dateiname?

            Was soll die Frage, wie das sein kann?

            RTFM:

            string basename ( string $path [, string $suffix] )
            Diese Funktion extrahiert aus einer vollständigen Pfadangabe den Namen der Datei und gibt diesen zurück. Endet der Dateiname mit suffix, wird dieses Ende ebenfalls abgeschnitten.

            Works as designed.

            Eben doch. Wenn ich mir Konfigurationsvariablen zusammenbastele, möchte ich die semantisch korrekt benennen. Wenn ich in einem Kontext die Pfade auf Rootdoc beziehe, in einem anderem relativ zum Dateisystem, brauche ich sinnvolle Bezeichner, um mir keinen abzubrechen.

            Na dann such dir welche - $path_rel, $path_abs, ...

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. Wie kann das sein? $file1 und $file2 ist das Gleiche, der Dateiname?

              Was soll die Frage, wie das sein kann?

              Ob es nicht Sinn macht zwischen index und index.php zu unterscheiden.

              RTFM:

              string basename ( string $path [, string $suffix] )
              Diese Funktion extrahiert aus einer vollständigen Pfadangabe den Namen der Datei und gibt diesen zurück. Endet der Dateiname mit suffix, wird dieses Ende ebenfalls abgeschnitten.

              Offensichtlich enthält der Dateiname die Endung. Dann kann ich doch nicht behaupten

              basename --  Extrahiert den Namen einer Datei aus einer vollständigen Pfadangabe

              der Dateiname ohne das Suffix ist der Dateiname:)

              Eine richtige Beschreibung ist erst

              Diese Funktion extrahiert aus einer vollständigen Pfadangabe den Namen der Datei und gibt diesen zurück. Endet der Dateiname mit suffix, wird dieses Ende ebenfalls abgeschnitten.

              Works as designed.

              Das steht außer Frage:)

              Na dann such dir welche - $path_rel, $path_abs, ...

              gruß,
              wahsaga

              Ich hatte ja nur die Frage, ob es festgelegte Bezeichnungen gibt. Das scheint nicht so zu sein.

              1. Moin!

                Offensichtlich enthält der Dateiname die Endung. Dann kann ich doch nicht behaupten

                basename --  Extrahiert den Namen einer Datei aus einer vollständigen Pfadangabe

                der Dateiname ohne das Suffix ist der Dateiname:)

                Moderne Betriebssysteme trennen den Dateinamen nicht in "Endung" und "das davor" auf. Der gesamte String mit Punkt von vorn bis hinten ist der Dateiname.

                Und basename() ist auch keine Dateinamensfunktion, sondern eine reine Stringfunktion, d.h. der ihr übergebene "Pfad mit Dateinamen" wird keinesfalls auf Existenz im Dateisystem geprüft, sondern trennt lediglich an Zeichen, die in typischen Dateisystemen eine besondere Bedeutung haben, den String auf und ermitteln eben den "Dateinamen". Und optional entfernt es auch noch das letzte Stückchen des Namens, wenn dieser "passt".

                Aber wie gesagt: Reine Stringfunktion. Findet das erste Auftreten des Schrägstrichs von hinten und gibt alles danach zurück (so grob). Das muß aber keine existierende Datei sein, das kann auch ein Verzeichnisname sein.

                - Sven Rautenberg

                --
                "Love your nation - respect the others."
                1. Moin!

                  Offensichtlich enthält der Dateiname die Endung. Dann kann ich doch nicht behaupten

                  basename --  Extrahiert den Namen einer Datei aus einer vollständigen Pfadangabe

                  der Dateiname ohne das Suffix ist der Dateiname:)

                  Moderne Betriebssysteme trennen den Dateinamen nicht in "Endung" und "das davor" auf. Der gesamte String mit Punkt von vorn bis hinten ist der Dateiname.

                  Und basename() ist auch keine Dateinamensfunktion, sondern eine reine Stringfunktion, d.h. der ihr übergebene "Pfad mit Dateinamen" wird keinesfalls auf Existenz im Dateisystem geprüft, sondern trennt lediglich an Zeichen, die in typischen Dateisystemen eine besondere Bedeutung haben, den String auf und ermitteln eben den "Dateinamen". Und optional entfernt es auch noch das letzte Stückchen des Namens, wenn dieser "passt".

                  Aber wie gesagt: Reine Stringfunktion. Findet das erste Auftreten des Schrägstrichs von hinten und gibt alles danach zurück (so grob). Das muß aber keine existierende Datei sein, das kann auch ein Verzeichnisname sein.

                  Also im Prinzip

                  substr($path, strrpos($path, "/")+1) (mal abgesehen von der Möglichkeit, noch ein Suffix zu übergeben)

                  Mir ist schon klar, was Du schreibst. Das wußte ich auch schon. Aber findet denn keiner außer mir es sinnvoll, den Teil vor .endung zu benennen? Ich glaube, ich geb´s auf. Wenn es eine Bezeichnung gäbe, wäre die schon genannt worden. Ist aber seltsam, wenn es tatsächlich keine gibt. Immerhin wird das Suffix ja als Endung bezeichnet. Warum nicht auch der Teil zuvor?

                  1. Moin!

                    Mir ist schon klar, was Du schreibst. Das wußte ich auch schon. Aber findet denn keiner außer mir es sinnvoll, den Teil vor .endung zu benennen? Ich glaube, ich geb´s auf. Wenn es eine Bezeichnung gäbe, wäre die schon genannt worden. Ist aber seltsam, wenn es tatsächlich keine gibt. Immerhin wird das Suffix ja als Endung bezeichnet. Warum nicht auch der Teil zuvor?

                    Zu DOS-Zeiten, als noch das 8.3-System herrschte, waren die drei Zeichen hinten eben die Endung, und die 8 Zeichen vorne der Dateiname.

                    Zu derselben Zeit existierte aber beispielsweise auch noch der C64 - und dessen Floppy-Dateisystem kannte keine Endungen, dort waren die Dateinamen einfach komplette 16 Zeichen lang. Und es gab irgendwann danach auch Linux - das kennt ebenfalls keine explizite Dateiendung.

                    Trotzdem hat das 8.3-System und dieses ".EXT"-System irgendwie so abgefärbt, dass diese Dateiendungen heute auf allen Betriebssystemen zu finden ist - aber zum Glück aufgebohrt auf moderne Verhältnisse: Es sind, da ja alles der Dateiname ist, grundsätzlich beliebig lange und auch beliebig viele "Endungen" möglich. Nur ist das für die Betriebssystemfunktionen grundsätzlich erst einmal irrelevant.

                    - Sven Rautenberg

                    --
                    "Love your nation - respect the others."
      2. Hallo,

        http://de.wikipedia.org/wiki/Uniform_Resource_Locator#Aufbau

        Das ist schon mal hilfreich. Ist aber nicht alles zerlegt. Mich interessiert v. a. <I> und <II>.
        datei.html

        das weiter aufzusplitten, ist nicht sinnvoll, da die Interpretation dieses gesamten Teils [Pfad] und [Query] vollständig in der Verantwortung des Webservers liegt. Die Abbildung dieser Bestandteile auf Objekte des Dateisystems (etwa auf Verzeichnisse, Dateien, oder gar Dateiendungen) ist rein hypothetisch. Ebensowenig kannst du aus der Anschrift auf einem Brief auf topologische Gegebenheiten schließen, also beispielsweise ob die Empfängeradresse an einem Flussufer, am Südhang oder oben auf dem Berg liegt.

        Ferner bin ich interessiert an einer Benennung des Pfades bezogen auf Rootdoc und bezogen auf das Betriebssystem.

        Auch da hast du keine Chance. Der URL-Pfad _kann_ mit einem Datesystempfad korrelieren, das ist wohl auch oft so, aber es muss nicht so sein. Die URL könnte ebensogut auf eine Datenbankstruktur abgebildet oder von einem Script ausgewertet werden.

        Oder kann man das nur explizit durch nähere Beschreibung, worauf sich der Pfad bezieht, klären?

        Nein, nur indem man die Konfiguration des Servers in allen Einzelheiten kennt.

        So long,
         Martin

        --
        Solange der Nagellack nicht trocken ist,
        ist eine Frau praktisch wehrlos.
          (Burt Reynolds, US-Schauspieler)
      3. Hello out there!

        Das ist schon mal hilfreich. Ist aber nicht alles zerlegt.

        Hilft dir [RFC3986] weiter?

        Und siehe auch [RFC2606, </archiv/2007/6/t154636/#m1006602>]

        Mich interessiert v. a. <I> und <II>.

        Dort ist keine Trennung. Die Trennung ist nach der Authority (Domain, evtl. Port); danach ist alles bis '?' oder '#' der Path.

        datei.html
        html ist klar, ist die Dateiendung.

        Nein. Es gibt in HTTP keine Dateiendungen. Es gibt im Kontext HTTP keine Dateien, sondern Ressourcen. Ein '.' im Pfad ist ein Zeichen wie (fast) jedes andere.

        See ya up the road,
        Gunnar

        --
        „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
  2. Guten Tag!

    Fragen über Fragen zur Bezeichnung von Dateipfaden:

    Nun, ein Webmaster kann ab "/" Dateipfade verwenden, muss aber nicht. Selbst Dateinamen können mit einer geeigneten Webserver-Konfiguration verbogen werden wie virtuelle Verzeichnisse, kurzum:

    ein:

    http://example.com

    kann genausogut auf

    http://example.com/index.html

    zeigen wie auf

    https://example.com/cgi-bin/fuzzi.cgi

    --roro

    1. Nun, ein Webmaster kann ab "/" Dateipfade verwenden, muss aber nicht. Selbst Dateinamen können mit einer geeigneten Webserver-Konfiguration verbogen werden wie virtuelle Verzeichnisse

      Oje, ich habe eine URL doch nur als Beispiel gewählt. Hätte nicht gedacht, so mißverstanden werden zu können. Genauso gut hätte ich eine Windows- oder Linuxpfadangabe verwenden können.

      1. Moin!

        Nun, ein Webmaster kann ab "/" Dateipfade verwenden, muss aber nicht. Selbst Dateinamen können mit einer geeigneten Webserver-Konfiguration verbogen werden wie virtuelle Verzeichnisse

        Oje, ich habe eine URL doch nur als Beispiel gewählt. Hätte nicht gedacht, so mißverstanden werden zu können. Genauso gut hätte ich eine Windows- oder Linuxpfadangabe verwenden können.

        Eine URL ist eine URL. Die hat, wie dir verlinkt wurde, bestimmte Bestandteile, die man benannt hat.

        Ein Dateipfad in einem Betriebssystem ist etwas ganz anderes, hat folglich auch andere Bestandteile.

        Wenn du konkret etwas zu Dateipfaden wissen willst, nimm halt einfach keine URL als Beispiel, sondern einen Dateipfad.

        - Sven Rautenberg

        --
        "Love your nation - respect the others."