Ich arbeite in einer UNIX-Umgebung und habe festgestellt, dass sich in meinem Arbeitsverzeichnis, das kilometerweit von meinem UNIX-Zuhause entfernt ist, ein befindet ~
.
Jetzt, in der Vergangenheit, habe ich rm -rf ~
mein Arbeitsverzeichnis gelöscht und musste die IT einbeziehen.
Ich möchte es nicht noch einmal tun. Gleichzeitig möchte ich wissen
Warum wird
~
in meinem Arbeitsverzeichnis erstellt? Ist es ein fehlerhafter Fingerabdruck beim Speichern (:w!
aber was passiert:w~
? !!)Vor dem Einchecken gibt es ein Skript, das nach zusätzlichen Dateien oder Ordnern sucht, die p4 nicht kennt. Daher kann dies
~
zu einem Problem führen. Wie kann ich also das~
aus meinem Arbeitsverzeichnis entfernen und gleichzeitig mein Zuhause nicht löschen?
Ich habe einen Sicherungsbefehl namens del
, den ich anstelle von verwende rm -rf
. Es werden nur Dinge an einem temporären Ort abgelegt. Ich könnte das gebrauchen und das loswerden ~
. Aber ich bin mehr daran interessiert zu wissen, warum dies passiert und wie ich es entfernen kann.
/home/yourUserName/~
um auf das aufgerufene Verzeichnis zuzugreifen~
.Antworten:
Entweder zitiere es:
Oder referenzieren Sie es durch einen Pfad anstelle eines Basisnamens:
Beachten Sie, dass dies, obwohl es sich um einen komisch aussehenden Einzelzeichennamen handelt, konzeptionell nicht anders ist, als wenn Sie eine Datei mit dem Namen "
SOME$PATH
doing" erstellt hättenUnd versucht, es zu entfernen, indem Sie tun:
( Achtung: Die Variable
SOME$PATH
wird im vorliegenden Beispiel nicht in Anführungszeichen gesetzt. Normalerweise wird sie in Anführungszeichen gesetzt.'SOME$PATH'
)In beiden Fällen erweitert die Shell den von Ihnen angegebenen Namen, und Sie müssen dies verhindern.
Außerdem: Nicht
rm -rf
zum Entfernen einer Datei verwenden! Der gesamte Zweck vonrm -r
besteht darin, anzugeben, dassrm
es in Ordnung ist, Verzeichnisse zu entfernen. Wenn Sie nicht versehentlich ganze Verzeichnisse entfernen möchten, während Sie versuchen, Dateien zu entfernen, sollten Sie dies nicht für gewöhnlich tun-r
!quelle
:w~
in vim hat eine Datei namens erstellt~
.rm ~
zurückgekehrtcannot remove /home/seth it is a directory
.rm "~"
habe die Datei entfernt . Nur um zu unterstreichen , vergehen Sie nicht-rf
automatisch .kill -9
Standardeinstellung, die ich gesehen habe.rm -i $FOO
die Variable aus Gründen des Beispiels absichtlich nicht zitiert, aber dennoch: Das Zeigen eines Shell-Beispiels mitrm
und einer nicht zitierten Variablen als Argument ist SEHR SCHLECHT , ähm, sorry, unabhängig vom Kontext. Ich bin sicher, das kann sogar bewiesen werden :) Ich füge noch eine Anmerkung hinzu - aber vielleicht könntest du das Beispiel ein wenig ändern?SOME/bin:/usr/bin
irgendwo in ihrem Dateisystem. :)Die Tilde
ls ~
listet, wenn sie alleine im Kontext von verwendet wird, Ihr Heimatverzeichnis als ~ auf und ist eine Verknüpfung zu Ihrem Heimatverzeichnis. Wenn Sie dies getan haben, werdenls ~brown
Sie den Inhalt von Browns Heimatverzeichnis auflisten.VIM erstellt, sofern nicht anders angegeben, eine Sicherungskopie einer geänderten Datei: myFile myFile ~.
Dieses Verhalten ist gut, da es eine Sicherungskopie erstellt. Wenn Sie es jedoch nicht möchten, fügen Sie Ihrer .vimrc-Datei Folgendes hinzu: Legen Sie keine Sicherungskopie fest (auf die ich gerade zugegriffen habe
vi ~/.vimrc
).Und natürlich, wie andere gesagt haben, wenn Sie eine Datei mit dem Namen ~ haben, dann entkommen Sie dem Zeichen einfach als \ ~
quelle
Dies kann durch Tippfehler geschehen. Wenn Ihre
TERM=xterm
Konfiguration meiner ähnelt, sendet praktisch jede Funktionstaste auf Ihrer Tastatur Escape-Sequenzen wie ...Mehr als die Hälfte der Ausgabe von
infocmp -1
Contained~
Tilde entweicht auf meinem Computer - und ich verstehe nicht, was die meisten von ihnen tun. Ich weiß, dasszsh
zumindest der entkommene Teil der Zeichenfolge in den meisten Fällen tatsächlich gegessen wird - und nur die~
Tilde übrig bleibt .Wenn Sie zum Beispiel
echo
dann<space>
dann tippenF6
und<return>
drucken ...Die tatsächlich gesendete Escape-Sequenz lautet ...
Interessanterweise gibt es noch andere dieser Escape-Sequenzen, die
>
Zeichen enthalten .Dies sind häufig verwendete Escape-Zeichenfolgen - Zurücksetzen und Initialisieren. Es ist nicht schwer vorstellbar, dass eine heruntergefallene Tastatur oder ein Knopfdruck, wenn eine interaktive Shell auf die Eingabe wartet, zu zufällig abgeschnittenen
~
Dateien in Ihrem gesamten Dateisystem führen kann. Zumindest taucht es gelegentlich bei mir auf.quelle