Omdøbning af den aktuelle mappe fra en skal – mulig?

Er det muligt at omdøbe den aktuelle arbejdsmappe fra en shell (Bash i mit særlige tilfælde)? Hvis jeg forsøger at gøre dette ligetil, ender jeg med en fejl:

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

Er der en anden måde at gøre dette uden at ændre den aktuelle mappe? Jeg er klar over, at jeg nemt kan opnå dette ved at skifte til den overordnede mappe, men jeg er nysgerrig efter, om dette er nødvendigt. Når alt kommer til alt, hvis jeg omdøber mappen fra en anden skal, kan jeg stadig oprette filer i den originale skal bagefter.

Svar

Ja, men du skal henvise til biblioteket ved navn, ikke ved hjælp af . notation. Du kan bruge en relativ sti, den skal bare slutte med noget andet end . eller ..:

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

Du kan bruge en absolut sti:

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

Tilsvarende rmdir . fungerer aldrig, men rmdir "$PWD" fungerer ikke.

Kommentarer

  • Perfekt … nøjagtigt det svar, jeg håbede på.
  • Det grundlæggende problem er, at du ' ikke har lov til at fjerne eller omdøbe det specielle ". " og .. " navne.

Svar

Som i @Gilles svar, men brug afstivningsudvidelse for kortfattethed:

 mv ../{test,test2}  

Svar

Og det afhænger af, hvordan du definerer “ændring af den aktuelle mappe ”.

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

gyder en subshell og ændrer den aktuelle mappe i subshell, men efterlader din primære shell, hvor den var.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *