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.