Unix-opas, luku 7 Tiedostot ja hakemistot:

Hakemiston luominen ja poistaminen - mkdir, mv ja rmdir

Vaikka Unixissa hakemistot ovat tiedostoja ja näkyvät esim. ls-komennolla saatavissa tiedostolistoissa, niitä ei luoda, käsitellä ja poisteta samalla tavalla kuin normaaleja tiedostoja. Sen sijaan käytetään erityisiä komentoja, jotka on tarkoitettu nimenomaan hakemistojen käsittelyyn.

Hakemiston luominen: mkdir

Hakemisto luodaan komennolla mkdir (make directory). Argumenttina annetaan se nimi, joka luotavalle hakemistolle halutaan.

Esimerkiksi

mkdir Harjoitustyot

perustaa hakemiston nimeltä Harjoitustyot työhakemistoon. Nimi siis tulkitaan suhteellisena suhteessa senhetkiseen työhakemistoon.

Hakemiston voi perustaa myös muualle kun työhakemistoon. Esimerkiksi

mkdir Harjoitustyot/C-kurssi

perustaa äsken luodulle Harjoitustyot-hakemistolle alihakemiston nimeltä C-kurssi. Saman olisi voinut tehdä siten, että ensin siirtyy Harjoitustyot-hakemistoon komennolla cd Harjoitustyot ja antaa sitten komennon mkdir C-kurssi.

Tiedoston siirto hakemistosta toiseen: mv

Edellä mv-komennon kuvauksessa jo kerrottiin, että sillä voi myös siirtää tiedoston hakemistosta toiseen. Tässä annetaan vain muutama lisäesimerkki.

Jos haluat siirtää tiedoston nimeltä docu edellisessä luvussa luotuun Harjoitustyot-hakemistoon, niin kirjoita

mv docu Harjoitustyot/

Jos taas haluaisitkin muuttaa docu-tiedoston nimeksi c-docu ja samalla siirtää sen Harjoitustyot-hakemiston C-kurssi-alihakemistoon, kirjoittaisit

mv docu Harjoitustyot/C-kurssi/c-docu

Hakemiston nimen muuttaminen: mv

Myös hakemiston nimeä voi muuttaa mv-komennolla, sillä kyseiset komennot voivat olla paitsi tavallisia tiedostonnimiä myös hakemistonnimiä.

Esimerkiksi jos halutaan muuttaa hakemiston nimi Harjoitustyot lyhyemmäksi nimeksi Harjtyot, voidaan - kun työhakemistona on se hakemisto, jonka alihakemisto uudelleennimettävä hakemisto on - kirjoittaa vain

mv Harjoitustyot Harjtyot

Tämän jälkeen uudelleennimetyn hakemiston tiedostot ja mahdolliset alihakemistot löytyvät uuden nimen kautta.

Toinen esimerkki: halutaan siirtää hakemiston Harjoitustyöt alihakemisto C-kurssi suoraan työhakemiston alihakemistoksi. Tällöin kirjoitetaan

mv Harjoitustyot/C-kurssi C-kurssi

On kuitenkin huomattava, että jos mv-komennon ensimmäinen argumentti on hakemistonnimi, niin sen toiminta riippuu siitä, onko toinen argumentti olemassaolevan hakemiston nimi. Jos on, niin

mv a b

siirtää a:n hakemiston b alihakemistoksi (nimellä b). Mutta jos b-nimistä hakemistoa ei ole, niin kyseinen komento vain muuttaa a:n nimen b:ksi säilyttäen sen samalla hakemistotasolla, jolla se ennestään on.

Hakemiston poistaminen: rmdir

Hakemistoja voi myös poistaa, mutta normaalisti vasta kun ne ovat tyhjiä, ts. niistä on poistettu kaikki tiedostot ja alihakemistot. Komento on rmdir (remove directory). Argumenttina annetaan hakemiston nimi.

Jos sinulla on hakemisto Pascal ja sen tiedostot samoin kuin itse hakemisto ovat tarpeettomia, tuhoa ensin tiedostot hakemistosta rm-komennolla ja sitten itse hakemisto rmdir-komennolla:

rm Pascal/*
rmdir Pascal
Tämä edellyttää, että hakemisto Pascal ei sisällä alihakemistoja, sillä niiden poistaminen ei onnistu rm:llä. Jos siis poistettava hakemisto X sisältää alihakemistoja, pitää ensin poistaa X:n kustakin alihakemistosta kaikki tiedostot (rm:llä), sitten nämä hakemistot (rmdir:llä), sitten X:n itsensä sisältämät tiedostot (rm:llä) ja vasta lopuksi itse X (rmdir:llä).

On kyllä olemassa rm-komennon valitsin -r, joka mahdollistaa komennon kohdistamisen hakemistoihinkin, vieläpä rekursiivisesti, jolloin se poistaa myös sen hakemistot alihakemistoineen jne. ja niiden kaikki hakemistot. Sellainen komento voi tehdä paljon tuhoa, jos käyttäjä on vähänkään huolimaton!