Probleme mit rm in csh

Kashrlyyk

Grünschnabel
Ich habe in einem Verzeichnis eine Datei mit der Bezeichnung ^?. Diese Datei wollte ich loeschen "rm ^?". Das Ergebnis war das alle anderen Dateien des Verzeichnisses geloescht wurden und die Datei noch immer da ist. Gibt es besondere Argumente von rm in csh?

Wenn ich in vim die Backspace-Taste druecke, schreibt vim, statt den Buchstaben zu loeschen, ^?. Koennte es damit zu tun haben?
 
Zuerst einmal: das Verhalten der Backspace-Taste liegt daran, dass Du ein falsches Terminal eingestellt hast. Ein "stty erase ^?" (wobei Du für ^? einfach die Backspace-Taste drückst) sollte das in Ordnung bringen.

Des weiteren ist meine Vermutung, dass die Datei ^? nicht für die zwei Zeichen ^ und ? steht, sondern für ein Zeichen ^? (nämlich das Backspace-Zeichen). Versuche doch mal, die Datei mit "rm Ctrl-V Backspace" zu löschen. Das Ctrl-V schützt das nachfolgende Zeichen vor der Auswertung mit der Shell.

rm hat unter der csh sicher keine anderen Argumente als unter anderen Shells wie der bash, aber wenn in Deinem Argument Platzhalter verwendet werden, wertet die Shell diese zuerst aus, bevor sie an rm weitergeleitet werden.
 
Ich habe die Datei in BASH geloescht bekommen, da war die Datei nicht mehr mit ^? bezeichnet, sondern nur mit ?.

Unter csh hatte ^? wohl die Bedeutung von *, da selbst das umbenennen der Datei nur im Umbenennen des Ordners im Vezeichnis endete.

Das mit der Backspace Taste probier ich gleich mal aus.
 
Ich bin kein csh-Spezialist, aber ich hatte mir fast gedacht, dass ^? soviel heisst wie "nicht ?" und somit "nicht Dateiname-mit-nur-einem-Buchstaben", das könnte erklären, was Du mit rm ^? beschrieben hast. Ich habe es aber in meiner csh nicht nachvollziehen können.

Übrigens hat die csh nicht unbedingt ein gutes Ansehen, sie soll wohl ziemlich fehlerträchtig sein...
 
stty zeigt mir an: erase = ^?

Warum aber dann Umbenennen der Datei den Ordner umbenennt, verstehe ich trotzdem nicht.

Und csh muss ich benutzen, da das Programm fuer csh geschrieben wurde und in bash nicht laeuft.
 
Zurück