Geçerli dizini bir kabuktan yeniden adlandırma - mümkün mü?


24

Geçerli çalışma dizinini bir kabuğun içinden yeniden adlandırmak mümkün müdür (benim durumumda Bash)? Bunu basit bir şekilde yapmaya çalışırsam, bir hata ile bitirdim:

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

Geçerli dizini değiştirmeden bunu yapmanın başka bir yolu var mı? Üst dizine geçerek bunu kolayca başarabileceğimin farkındayım, ancak bunun gerekli olup olmadığını merak ediyorum. Sonuçta, dizini başka bir kabuktan yeniden adlandırırsam, daha sonra orijinal kabukta dosyalar oluşturabilirim.

Yanıtlar:


41

Evet, ancak .notasyonu kullanarak isme göre dizine başvurmanız gerekir . Göreceli bir yol kullanabilirsiniz, sadece .veya dışında bir şeyle bitmesi gerekir ..:

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

Mutlak bir yol kullanabilirsiniz:

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

Benzer şekilde, rmdir .hiç çalışmaz, ama çalışır rmdir "$PWD".


Mükemmel ... tam olarak umduğum cevabı.
Nathan Osman

5
Temel sorun, "" özelini kaldırmanıza veya yeniden adlandırmanıza izin verilmemesidir. ve ".." isimleri.
Barmar


1

Bu, “geçerli dizini değiştirmeyi” nasıl tanımladığınıza da bağlıdır.

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

bir alt kabuk ortaya çıkar ve alt dizindeki geçerli dizini değiştirir, ancak birincil kabuğunuzu olduğu yere bırakır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.