Diese Frage hat hier bereits eine Antwort:
Ich programmiere, mit dem ich einige Dateien ausgegeben habe, habe die Abkürzung "~" (Verzeichnis) anscheinend nicht sehr gut verstanden und einige Tricks gemacht, die mich verwirrt haben.
Anstatt die Dateien dort abzulegen, wo ich sie erwarten würde (/ home / me), hat es einen Ordner mit dem Namen "~" in seinem Unterverzeichnis erstellt. (irgendein Programm / ~)
drwxr-xr-x 3 me users 4096 Jan 30 09:34 ~
Wenn ich eine CD einlege, komme ich zurück zu / home / me
Ist das nur ein Hardlink? Ich stelle mir vor, wenn ich versuche, es zu löschen, wird mein privater Ordner gelöscht. Wie kann ich es sicher entfernen und nicht alles löschen?
rm -i
wenn Sie unsicher sind, und fragen Sie nach, ob Sie dies können (in diesem Sinne - danke, dass Sie zuvor gefragt haben, anstatt zu löschen und nach einer Wiederherstellung zu fragen!).Antworten:
Es sollte kein fester Link sein, da Ordner meines Wissens nur durch root fest verbunden werden können und dies aufgrund von Systemeinschränkungen möglicherweise auch dann nicht möglich ist. Um sicherzugehen, versuchen Sie Folgendes (verwechseln Sie \ nicht mit /):
(Sie müssen das ~ maskieren, sonst interpretiert die Shell es als "Unlink $ HOME").
Beachten Sie, dass durch das Aufheben der Verknüpfung der Link entfernt wird, auch wenn es sich um eine reguläre Datei handelt (jedoch nicht, wenn es sich um ein Verzeichnis handelt).
Wenn es sich um ein Verzeichnis handelt, gehen Sie wie folgt vor:
Entkomme wieder der Tilde. Sie möchten rm -Ri ausführen, damit Sie vor jedem Entfernen dazu aufgefordert werden, falls Sie vergessen, der Tilde zu entkommen, und versehentlich Ihr Heimatverzeichnis entfernen.
quelle
rm -Ri /path/to/the/tilde/\~
/whatever/path/~
und~
als$HOME
. Die Shell wird nur so interpretiert,~
als$HOME
wäre sie das erste Zeichen eines Pfades und sollte niemals erweitert werden\~
. Der Befehl sollte Sie nur fragenrm: remove directory ‘/home/me/Code/junk/~’?
und Sie sollten mit Ja antworten und das ist alles. Wenn es sich in Ihre absteigend$HOME
, es ist etwas anderes passiert. Wenn ja,ls -id $HOME /home/me/Code/junk/~'
Die Tilde-Erweiterung wird nur von der Shell ausgeführt, wenn ein Wort mit beginnt
~
. Innerhalb oder am Ende eines Wortes gibt es keine spezielle Behandlung von~
. Dies gilt auch für viele Shells (bash, zsh, pdksh, tcsh, dash, jsh, sash). Es gibt auch einige Shells, die die Tilde-Expansion nicht kennen (sh (Bourne-Shell), ash)Wenn Sie es also schließen oder stattdessen einen Pfad verwenden
~
, wird nichts erweitert. Es spielt keine Rolle, ob es sich um einen relativen oder einen absoluten Pfad handelt, es muss nur etwas vorher sein~
.quelle