Hallo,
in einem Wiki habe ich folgende Schreibweisen gefunden.
.cache ./.cache
Was ist da der Unterschied und wo findet man ./.cache?
Die Befehle
mkdir ./.cache und mkdir .cache
erzeugen z.B. denselben Ordner.
Gruß
Fir
Anmeldungsdatum: Beiträge: 1760 Wohnort: Bergisch Gladbach |
Hallo, in einem Wiki habe ich folgende Schreibweisen gefunden. .cache ./.cache Was ist da der Unterschied und wo findet man ./.cache? Die Befehle mkdir ./.cache und mkdir .cache erzeugen z.B. denselben Ordner. Gruß Fir |
Anmeldungsdatum: Beiträge: 122 |
.cache ist die Kurzschreibweise von ./.cache Eigenlich ist ./datei korrekt, kann aber wohl aus Gründen der Bequemlichkeit weg gelassen werden. |
(Themenstarter)
Anmeldungsdatum: Beiträge: 1760 Wohnort: Bergisch Gladbach |
Danke |
Projektleitung
Anmeldungsdatum: Beiträge: 13174 |
.cache Das hängt wohl vom Kontext ab. Wenn es sich um einen Pfadnamen handelt, dann zeigen beide auf dasselbe Objekt im Dateisystem.
Wieso soll das korrekt sein? Bzw. wieso soll das korrekter als ohne "./" sein? Warum ist nicht z.B. "$PWD/datei" noch korrekter? Oder gar "$(pwd)/datei"? Mit anderen Worten: beide sind gleich korrekt. Der einzige Grund, tatsächlich "./" voran zu stellen, wird bei Pfadnamen sichtbar, die mit einem Minus anfangen. Typischerweise erkennen Programme Optionen am führenden Minus und der String "-foo" wird als Option erkannt; wenn man dies vermeiden will, muss man i.d.R. "./-foo" verwenden. Bei manchen Programmen kann man das Ende der Optionen auch mit "–" anzeigen, so dass danach "-foo" korrekt als Dateiname erkannt wird. Ciao robert |
Anmeldungsdatum: Beiträge: 5269 Wohnort: /dev/null |
Dateien / Ordner mit Punkt .cache ist ein versteckter Ordner. Bei Unix und Linux werden alle Dateien mit einem Punkt vorne versteckt. Das scheint komisch zu sein wenn man von Windows kommt. Allerdings sind dies zwei unterschiedliche Ansätze: Windows: Die Dateien werden versteckt damit man sie "nicht" findet. Dennoch kann man sie leicht finden, nur halt nicht so einfach. Das nennt man "Security through obscurity", also Sicherheit durch Obskurität. Das meint Sicherheit durch Unklarheit oder Verdunkelung. Bei Unix/Linux: Die Dateien werden verborgen. Es ist auch ganz leicht diese wieder anzuzeigen. In den grafischen Dateimanagern meistens mit Strg + H , das h steht für engl. "hide" also verstecken bzw. besser: verbergen. Das verbergen macht man aber nur um Dateien nicht zu sehen damit diese nicht im Weg sind. Alle Konfigurationsdateien in deinem Heimverzeichnis sind verborgen, denn diese brauchst du im normalen Betrieb nicht, nur wenn du eine Einstellung verändern möchtest. Aber wenn du etwa ein Dokument in LibreOffice öffnen willst, dann würden die Konfigurationsdateien nur stören. Und wenn man etwas verstecken möchte unter Linux/Unix bzw. den Zugang zur Information verhindern, dann verschlüsselt man es. Denn selbst wenn die Information gefunden ist kann man nicht viel damit anfangen. Der Punkt ohne Datei/Ordner In einer Shell wie etwa der Bash gibt es sog. aliase. Also eine Alternativbezeichnung. Eigene Aliase kann man mit dem Programm Ein Beispiel: alias diplomarbeit="lowriter ~/Uni/Diplomarbeit.odt"
Allerdings gibt es auch Aliase die der Benutzer nicht verändern kann. Diese stehen aber nicht für einen bestimmte Befehl oder Ort, sondern ändern sich immer. So auch der Punkt. Dieser steht immer für das aktuelle Verzeichnis. Wenn ich zum Beispiel gerade im Ordner ~/Videos bin und eine Datei aus ~/Downloads verschieben will dann mache ich dies mit folgendem Befehl: mv ~/Downloads/tolle_Katze_verfolgt_Laserpointer.mp4 . Dann befindet sich das Video der katze in ~/Videos/tolle_Katze_verfolgt_Laserpointer.mp4, weil du ja den Punkt gesetzt hast und du gerade in ~/Videos warst. Bist du in ~/Bilder dann würde sich das Video der Katze im Bilderordner befinden. Aber was ist mit ./. ? Nun angenommen du möchtest das Video der Katze in den Unterordner Katzenvideos verschieben dann geht das folgendermaßen: mv ~/Downloads/tolle_Katze_verfolgt_Laserpointer.mp4 ./Katzenvideos/ Die Tilde Wie du gesehen hast gibt es da noch die Tilde. Diese bedeutet immer "Home-Verzeichnes des ausführenden Benutzers". Wenn also Thomas einen Ordner erstellt findet er den bei mkdir ~/Ordnername unter /home/thomas/Ordnername. das heißt man spart sich die Eingabe von /home/thomas/. Wenn Carla das selbe macht, heißt die Tilde /home/carla/ Soweit so gut oder? |
Anmeldungsdatum: Beiträge: 234 Wohnort: 127.0.0.1 |
Ich widerspreche Dir ja ungern, aber . und auch .. sind keine Aliase, sondern Hardlinks, die entsprechend in jedem Verzeichnis gesetzt werden. Einfach überprüfen kann man das mit einem ls -ai Ein Verzeichnis ist übrigens nichts weiter als eine Auflistung von Dateinamen mit zugehörigen Inodes. So zeigt also beispielsweise ein Eintrag für /home/user/ auf den gleichen Inode, wie /home/user/test/.. |
Anmeldungsdatum: Beiträge: 5269 Wohnort: /dev/null |
|
Anmeldungsdatum: Beiträge: 122 |
Korrigiere mich, wenn ich falsch liege, aber ein Punkt ist doch eine Referenz auf das aktuelle Verzeichnis und ./datei wäre somit die "korrekte" Pfadangabe für Eine Datei, welche sich im gleichen Verzeichnis befindet wie das, in welchem man sich gerade aufhält. Nur datei ohne ./ kann schon deshalb nicht die "offiziell korrekte" Schreibweise sein, weil das aus den von dir genannten Gründen nicht immer funktioniert, sondern allenfalls eine Kurzschreibweise. Aber du hast recht, ich hätte "korrekt" in Anführungszeichen setzen sollen. |
Projektleitung
Anmeldungsdatum: Beiträge: 13174 |
Das stimmt so nicht. Zum einen, kann ".cache" nicht nur ein Ordner sein sondern ein beliebiges Objekt im Dateisystem (Datei, Named Pipe, Unix Domain Socket...). Zum anderen ist das "Verstecken" nicht eine Eigenschaft von Unix oder Linux, sondern liegt an der Implementierung von ein paar Programmen, im Wesentlichen der Shell (beim Globben werden Namen mit führendem Punk nicht durch "*" eingeschlossen) und
Du wirfst da einige Begriffe durcheinander. Verstecken und Verbergen ist wohl das gleiche. Verschlüsseln hat nichts mit Verstecken zu tun sondern mit Zugriffsschutz. Und Windows und Unixe sind da nicht so unterschiedlich: beide haben Mechanismen, mit denen man bestimmte Objekte im Dateisystem von der regulären Auflistung ausnehmen kann. Ich finde Deine negative Darstellung von Windows in diesem Zusammenhang völlig fehl am Platz. Nicht alles, was unter Windows existiert, ist schlecht.
Hm... Der Punkt ist ein gültiger Name im Dateisystem (siehe Anmerkung von tobi81), während die Tilde ein reines Shell-Feature ist. Die Tilde ist eine Bequemlichkeitsfeature (d.h., sie erspart einem das Tippen eines langen Pfades oder von $HOME), während der Punk unabdingbar nötig ist (ohne kann man z.B. die Rechte des aktuellen Verzeichnisses nicht ändern etc.). Bei Systemaufrufen wird der Punkt nicht benötigt (s.u.), denn alle nicht absoluten Pfade (also Pfade, die nicht mit "/" beginnen) werden relativ zum aktuellen Verzeichnis des Prozesses interpretiert. (Bitte keine Fullquotes!)
Der Punkt ist, wie schon von tobi81 angemerkt, ein Hardlink auf das aktuelle Verzeichnis.
Der Begriff ist einfach fehl am Platz. Alle Schreibweisen, die ich aufgelistet habe, sind gleich korrekt und bezeichnen dasselbe Objekt im Dateisystem. In manchen Situationen ist es hilfreich "./" oder den ganzen absoluten Pfad voran zu stellen. Aber der Syscall open() wird mit allen Angaben dasselbe Objekt öffnen. Insofern sind alle gleich korrekt. Ciao robert |
Anmeldungsdatum: Beiträge: 1261 |
Also ich finde schon, dass './datei' korrekter ist als 'datei'. Ebenso wie '././datei" korrekter ist als './datei'. Natürlich ist './././datei' noch dreimal korrekt als 'datei'. Man könnte versucht sein anzunehmen, dass "/home/user/datei", das Korrekteste ist. Stimmt aber nicht, denn '/./home/user/datei' ist noch einen Zacken korrekter. Die wirklich entscheidende Frage ist allerdings, ob '/../home/user/datei' korrekter ist als '/./home/user/datei'. Und überhaupt, was ist mit '/.././home/../home/./user/../../home/./user/../user/./../user/./datei'? |
![]() Anmeldungsdatum: Beiträge: 7174 Wohnort: Wolfen (S-A) |
|
Anmeldungsdatum: Beiträge: 122 |
Ist ja gut, ich habs verstanden. |