Voiko nykyisen työhakemiston nimetä uudelleen komentotulkista (Bash minun tapauksessani)? Jos yritän tehdä tämän suoraviivaisella tavalla, päädyin virheeseen:
nathan@nathan-desktop:/tmp/test$ mv . test2 mv: cannot move ‘.’ to ‘test2’: Device or resource busy
Onko olemassa jokin toinen tapa tehdä tämä muuttamatta nykyistä hakemistoa? Ymmärrän, että pystyn saavuttamaan tämän helposti siirtymällä päähakemistoon, mutta olen utelias, jos se on tarpeen. Loppujen lopuksi, jos nimän hakemiston uudestaan uudesta kuoresta, voin silti luoda tiedostoja alkuperäisessä kuoressa jälkikäteen.
Vastaa
Kyllä, mutta sinun on viitattava hakemistoon nimen perusteella, ei käyttämällä .
notation. Voit käyttää suhteellista polkua, sen täytyy vain päättyä johonkin muuhun kuin .
tai ..
:
/tmp/test$ mv ../test ../test2 /tmp/test$ pwd /tmp/test /tmp/test$ pwd -P /tmp/test2
Voit käyttää absoluuttista polkua:
/tmp/test$ cd -P . /tmp/test2$ mv "$PWD" "${PWD%/*}/test3" /tmp/test2$
Vastaavasti rmdir .
ei koskaan toimi, mutta rmdir "$PWD"
toimii.
Kommentit
- Täydellinen … juuri sitä toivoa vastausta.
- Perusasia on, että ' ei sallita erityisen ". " ja .. " nimet.
Vastaa
Kuten @Gilles-vastauksessa, mutta käyttämällä aaltosulkeen laajennusta lyhyyyden vuoksi:
mv ../{test,test2}
vastaus
Ja se riippuu siitä, miten määrität ”nykyisen hakemiston muuttamisen” ”.
/tmp/test$ (cd .. && mv test test2) /tmp/test$ pwd /tmp/test /tmp/test$ pwd -P /tmp/test2
kutee alikuoren ja muuttaa nykyisen hakemiston alikuoressa, mutta jättää ensisijaisen kuoren sinne, missä se oli.