Verständnisfrage: Dateiname

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
mullers

Verständnisfrage: Dateiname

Beitrag von mullers » 31.05.2006 11:49:08

Hi,

gestern habe ich eine Datei umbenannt, etwa so:

Code: Alles auswählen

mv henry.tex henry's.tex
Nicht auf der Konsole, sondern im Xemacs. Die war dann einfach weg. Ich konnte zwar sehen, dass da ein offener Prozess war namens henry's.tex, aber die Datei habe ich nicht mehr erwischt. Nicht schlimm, war gesichert.
Aber was habe ich da gemacht? Was löst denn so ein Hochkomma im Dateinamen aus?

Gruss
henry

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Beitrag von Spasswolf » 31.05.2006 12:06:11

Wenn du ein Dateinamen mit Hochkomma haben willst musst du einen Backslash vor dem Hochkomma setzen:

Code: Alles auswählen

mv henry.tex henry\'s.tex
Das ' scheint ein Shellkommando zu sein.

Benutzeravatar
Aresius
Beiträge: 65
Registriert: 25.07.2004 17:22:09
Wohnort: Heidelberg

Beitrag von Aresius » 31.05.2006 12:58:29

Spasswolf hat geschrieben:Das ' scheint ein Shellkommando zu sein.
:lol: Jo, der Anfang eines in single-quotes eingeschlossenen String :wink:

Womit aber das Problem noch nicht geklärt wäre... da ich aber kein Emacs verwende kann ich da auch nix produktives beitragen :oops:

Gruß :)
- Es gewinnt immer der, der den vorletzen Fehler macht -

Benutzeravatar
bodo99
Beiträge: 60
Registriert: 12.05.2003 11:53:13
Wohnort: Bamberg

Beitrag von bodo99 » 31.05.2006 13:00:09

Spasswolf hat geschrieben: Wenn du ein Dateinamen mit Hochkomma haben willst musst du einen Backslash vor dem Hochkomma setzen:

Code: Alles auswählen

mv henry.tex henry\'s.tex
Das ' scheint ein Shellkommando zu sein.
Also das mit dem Backslash stimmt ersteinmal. Das ' ist aber kein Shellkommando, es hat einfach eine besondere Bedeutung unter Unix. Begriffe bzw Befehle die innerhalb von zwei ' stehen, werden als String behandelt (und im Fall eines Befehles, nicht ausgeführt). Wenn man ein nicht mit Backslash entwertetes ' verwendet, erwartet das Betriebssystem einfach ein zweites ', welches das Ende des Strings kennzeichnet. Weiter ist das nichts. Vllt ein kleines Beispiel:

Code: Alles auswählen

export BLA=fasel
[bodo99@bonecrusher bodo99]$ export BLA=fasel
[bodo99@bonecrusher bodo99]$ echo $BLA
fasel
[bodo99@bonecrusher bodo99]$ echo "$BLA"
fasel
[bodo99@bonecrusher bodo99]$ echo '$BLA'
$BLA
Wie dies verdeutlicht, werden alle Sonderbedeutungen und Befehle innerhalb der einfachen Hochkommata entwertet. In diesem Fall zB das $ Zeichen. Wüdest Du beim letzten Beispiel das schließende Hochkomme weglassen, wird eine neue Zeile geöffnet und die Shell wartet so lang, bis man das schließende Hochkomma eingibt.

mullers

Beitrag von mullers » 31.05.2006 15:51:58

Wüdest Du beim letzten Beispiel das schließende Hochkomme weglassen, wird eine neue Zeile geöffnet und die Shell wartet so lang, bis man das schließende Hochkomma eingibt.
Ja, und da ich das innerhalb Xemacs gemacht habe, wurde da ein Prozess aufgemacht, den ich dann unachtsam gekillt habe. Damit war die Datei weg. Wenn ich das auf der Konsole gemacht hätte, hätte ich gesehen, dass da die Shell auf etwas wartet.

Vielen Dank allen. Wiedermal was dazugelernt. :smile:
Gruesse
henry

Antworten