Nykyisen hakemiston uudelleennimeäminen kuoresta – mahdollista?

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.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *