Redenumirea directorului curent dintr-un shell – posibil?

Este posibil să redenumiți directorul de lucru curent dintr-un shell (Bash în cazul meu particular)? Dacă încerc să fac acest lucru în mod simplu, ajung la o eroare:

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

Există o altă modalitate de a face acest lucru fără a schimba directorul curent? Îmi dau seama că pot realiza cu ușurință acest lucru trecând la directorul părinte, dar sunt curios dacă este necesar. La urma urmei, dacă redenumesc directorul dintr-un alt shell, pot crea fișiere în shell-ul original după aceea.

Răspuns

Da, dar trebuie să vă referiți la director după nume, nu utilizând . notare. Puteți utiliza o cale relativă, trebuie doar să se termine cu altceva decât . sau ..:

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

Puteți utiliza o cale absolută:

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

În mod similar, rmdir . nu va funcționa vreodată, dar rmdir "$PWD" da.

Comentarii

  • Perfect … exact răspunsul la care speram.
  • Problema de bază este că ' nu aveți voie să eliminați sau să redenumiți ". " și .. " nume.

Răspuns

La fel ca în răspunsul @Gilles, dar folosind extindere pentru concizie:

 mv ../{test,test2}  

Răspuns

Și depinde de modul în care definiți „schimbarea directorului curent ”.

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

generează un subshell și schimbă directorul curent din subshell, dar lasă shell-ul principal acolo unde era.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *