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.