Umbenennen des aktuellen Verzeichnisses von einer Shell – möglich?

Ist es möglich, das aktuelle Arbeitsverzeichnis innerhalb einer Shell umzubenennen (in meinem speziellen Fall Bash)? Wenn ich dies auf einfache Weise versuche, wird ein Fehler angezeigt:

 nathan@nathan-desktop:/tmp/test$ mv . test2 mv: cannot move ‘.’ to ‘test2’: Device or resource busy  

Gibt es eine andere Möglichkeit, dies zu tun, ohne das aktuelle Verzeichnis zu ändern? Mir ist klar, dass ich dies leicht erreichen kann, indem ich in das übergeordnete Verzeichnis wechsle, aber ich bin gespannt, ob dies erforderlich ist. Wenn ich das Verzeichnis von einer anderen Shell aus umbenenne, kann ich anschließend weiterhin Dateien in der ursprünglichen Shell erstellen.

Antwort

Ja, aber Sie müssen auf das Verzeichnis mit Namen verweisen, nicht mit . Notation. Sie können einen relativen Pfad verwenden, der nur mit etwas anderem als . oder .. enden muss:

/tmp/test$ mv ../test ../test2 /tmp/test$ pwd /tmp/test /tmp/test$ pwd -P /tmp/test2 

Sie können einen absoluten Pfad verwenden:

/tmp/test$ cd -P . /tmp/test2$ mv "$PWD" "${PWD%/*}/test3" /tmp/test2$ 

In ähnlicher Weise rmdir . funktioniert nie, aber rmdir "$PWD" funktioniert.

Kommentare

  • Perfekt … genau die Antwort, auf die ich gehofft hatte.
  • Das Grundproblem ist, dass Sie ' die spezielle ". " und .. " Namen.

Antwort

# div id = „1bfb23abeb“>

Antwort

Und es hängt davon ab, wie Sie „Ändern des aktuellen Verzeichnisses“ definieren ”.

/tmp/test$ (cd .. && mv test test2) /tmp/test$ pwd /tmp/test /tmp/test$ pwd -P /tmp/test2 

erzeugt eine Unterschale und ändert das aktuelle Verzeichnis in der Unterschale, lässt jedoch Ihre primäre Shell dort, wo sie war.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.