ubuntuusers.de

.cache ./.cache

Status: Gelöst | Ubuntu-Version: Ubuntu 12.04 (Precise Pangolin)
Antworten |

fir

Anmeldungsdatum:
29. Februar 2008

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

UbLinTux

Anmeldungsdatum:
7. Dezember 2011

Beiträge: 122

.cache

ist die Kurzschreibweise von

./.cache

Eigenlich ist

./datei

korrekt, kann aber wohl aus Gründen der Bequemlichkeit weg gelassen werden.

fir

(Themenstarter)

Anmeldungsdatum:
29. Februar 2008

Beiträge: 1760

Wohnort: Bergisch Gladbach

Danke

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13174

UbLinTux schrieb:

.cache

ist die Kurzschreibweise von

./.cache

Das hängt wohl vom Kontext ab. Wenn es sich um einen Pfadnamen handelt, dann zeigen beide auf dasselbe Objekt im Dateisystem.

Eigenlich ist

./datei

korrekt, kann aber wohl aus Gründen der Bequemlichkeit weg gelassen werden.

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

Das_Wort

Anmeldungsdatum:
23. Dezember 2009

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 alias einrichten.

Ein Beispiel:

alias diplomarbeit="lowriter ~/Uni/Diplomarbeit.odt"

diplomarbeit ist dann ein alternativer Befehl mit dem du LibreOffice-Programm Writer (deshalb das lo) starten kann, dieses öffnet dabei dann die Datei 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?

tobi81

Anmeldungsdatum:
9. Juni 2010

Beiträge: 234

Wohnort: 127.0.0.1

Das Wort schrieb:

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.

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/..

Das_Wort

Anmeldungsdatum:
23. Dezember 2009

Beiträge: 5269

Wohnort: /dev/null

tobi81 schrieb:

Das Wort schrieb:

[…]

Psst! Ich wollte ein Erklärungsmodell nehmen, damit es nicht zu kompliziert wird. Aber danke für die Erklärung ☺

Viele Grüße

UbLinTux

Anmeldungsdatum:
7. Dezember 2011

Beiträge: 122

rklm schrieb:

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

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.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13174

Das Wort schrieb:

Dateien / Ordner mit Punkt

.cache

ist ein versteckter Ordner. Bei Unix und Linux werden alle Dateien mit einem Punkt vorne versteckt.

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 ls (Namen mit führendem Punkt werden nur mit Option "-a" oder "-A" angezeigt).

Das scheint komisch zu sein wenn man von Windows kommt. Allerdings sind dies zwei unterschiedliche Ansätze: [...]

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.

Der Punkt ohne Datei/Ordner

[...] Soweit so gut oder?

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.

UbLinTux schrieb:

(Bitte keine Fullquotes!)

Korrigiere mich, wenn ich falsch liege, aber ein Punkt ist doch eine Referenz auf das aktuelle Verzeichnis

Der Punkt ist, wie schon von tobi81 angemerkt, ein Hardlink 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.

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

Kinch

Anmeldungsdatum:
6. Oktober 2007

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'?

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Kinch schrieb:

Also ich finde schon, dass './datei' korrekter ist als 'datei'. ...

😀 Jetzt glossiert's ...

Überhaupt: das wichtigste am ganzen System ist in diesem Fall /sys/class/../../../../../../bin/./.././dev/./././././././null !
(Da haben wir wenigstens ein Ziel für solche Ideen !)

😀 😀

track

UbLinTux

Anmeldungsdatum:
7. Dezember 2011

Beiträge: 122

Ist ja gut, ich habs verstanden.

Antworten |