Tiedostonhallintaa
Seuraavassa luetellaan joitakin usein tarvittuja komentoja. Yhteistä näille on, että kukin niistä pyrkii tekemään jonkin rajatun asian ja tekemään sen hyvin. Monimutkaisempia tuloksia saa aikaan yhdistelemällä yksinkertaisia komentoja.
Aloitetaan tiedostojärjestelmän ja tiedostojen käsittelyyn käytettävillä komennoilla ja ohjelmilla.
Työhakemisto: pwd
ja cd
Komentorivillä käyttäjällä on aina jokin hakemisto niin kutsuttuna työhakemistona. Työhakemisto on se tiedostojärjestelmän hakemisto, johon annetut komennot kohdistuvat ja josta käsiteltäviä tiedostoja etsitään, ellei käyttäjä erikseen toisin määrää.
Usein sanotaan, että "käyttäjä on hakemistossa xyz", ja sillä tarkoitetaan, että hänen sen hetkisenä työhakemistona on hakemisto xyz.
pwd
tulostaa nykyisen työhakemiston absoluuttisen polun.cd
vaihtaa työhakemistoksi pyydettyyn hakemistoon.- Hakemisto voidaan antaa
cd
-komennolle:- absoluuttisena juuresta alkaen (
/
-merkillä alkaen):/usr/share
- suhteellisena nykyisen työhakemiston suhteen:
Documents
,../../usr
- absoluuttisena juuresta alkaen (
- Erikoishakemistonimet:
.
ja..
:.
on "tämä hakemisto". Esim./home/./pesasa
on sama kuin/home/pesasa
..
yksi hakemisto juuren suuntaan. "Isä hakemisto"
pwd ja cd (kokeillaan)
pesasa@box:~ $ pwd
/home/pesasa
pesasa@box:~ $ cd /etc/cups
pesasa@box:/etc/cups $ pwd
/etc/cups
pesasa@box:/etc/cups $ cd ..
pesasa@box:/etc $ pwd
/etc
pesasa@box:/etc $ cd .
pesasa@box:/etc $ pwd
/etc
Huomaa, miten kehotteessa näkyvä työhakemisto muuttuu, kun käyttäjä vaihtaa hakemistoa.
Tiedostojen listaus: ls
Pyydetyn hakemiston sisällön voi tulostaals
-komennolla.
Oletuksena, ellei muuta määrätä, tulostetaan nykyisen työhakemiston sisältö.
ls Documents
- Documents -hakemiston sisältö
ls -l
- Työhakemiston sisältö pitkässä tulostusmuodossa. (long) (tiedoston tyyppi, oikeudet, kovien linkkien määrä, omistaja, ryhmä, tiedoston koko, muutosaika, nimi)
ls -a
- Työhakemiston sisältö, mukaan lukien pisteellä alkavat piilotiedostot. (all) (Pisteellä alkavat tiedostot piilotetaan yleensä.)
ls -lh
- Työhakemiston sisältö pitkässä muodossa ja tiedostojen koot "ihmisen luettavassa muodossa". (human-readable) Tiedostojen kokoja ei näytetä tavuina vaan kilo-, mega- tai gigatavuina, jos järkevämpää.
Esimerkkitulosteita:
pesasa@box:~ $ ls Documents/
Awesome-Tux.svg komentoja.md Kurssi.txt penguin.png uusihakemisto
pesasa@box:~ $ cd Documents/
pesasa@box:~/Documents $ ls -l
yhteensä 72
-rw-rw-r-- 1 pesasa pesasa 11220 syys 11 18:52 Awesome-Tux.svg
-rw-rw-r-- 1 pesasa pesasa 13469 syys 11 18:51 komentoja.md
-rw-rw-r-- 1 pesasa pesasa 0 syys 11 18:50 Kurssi.txt
-rw-rw-r-- 1 pesasa pesasa 40049 syys 11 18:52 penguin.png
drwxrwxr-x 2 pesasa pesasa 4096 syys 11 18:50 uusihakemisto
pesasa@box:~/Documents $ ls -a
. .. Awesome-Tux.svg komentoja.md Kurssi.txt penguin.png uusihakemisto
pesasa@box:~/Documents $ ls -lh
yhteensä 72K
-rw-rw-r-- 1 pesasa pesasa 11K syys 11 18:52 Awesome-Tux.svg
-rw-rw-r-- 1 pesasa pesasa 14K syys 11 18:51 komentoja.md
-rw-rw-r-- 1 pesasa pesasa 0 syys 11 18:50 Kurssi.txt
-rw-rw-r-- 1 pesasa pesasa 40K syys 11 18:52 penguin.png
drwxrwxr-x 2 pesasa pesasa 4,0K syys 11 18:50 uusihakemisto
ls (kokeillaan)
- Montako piilotiedostoa kotihakemistossasi on? Moniko niistä on hakemisto?
- Mikä on tiedoston
/bin/bash
koko tavuina? Entä ihmisen luettavassa muodossa? - Mikä on tiedoston
/etc/profile
muutosaika?
Tiedoston luonti: touch
Tyhjän tiedoston (ei sisältöä, koko 0 tavua) voi luoda komennolla touch
.
pesasa@box:~ $ touch testi.txt
pesasa@box:~ $ ls -l testi.txt
-rw-rw-r-- 1 pesasa pesasa 0 maali 5 15:45 testi.txt
Jos kyseinen tiedosto on jo olemassa, sitä ei muuteta, mutta sen muokkauspäivämäärä päivitetään vastaamaan kyseistä hetkeä. (Tai jotain muuta annettua aikaa)
Hakemiston luonti: mkdir
mkdir
luo uuden hakemiston (make directory).
pesasa@box:~ $ mkdir Documents/uusihakemisto
pesasa@box:~ $ mkdir /tmp/toinenhakemisto
Lisävalitsimella -p
(parent) komennon saa luomaan polusta mahdollisesti puuttuvat hakemistot.
pesasa@box:~ $ mkdir -p Documents/joku/monen/puuttuvan/hakemiston/takana/oleva
Tiedostojen järjestely: cp
ja mv
Komentorivillä tiedostoja kopioidaan komennolla cp
(copy) ja siirretään
komennolla mv
(move). Tutustutaan näiden käyttöön muutamalla erilaisella esimerkillä.
Kopioi tiedoston /etc/passwd
nykyisen työhakemiston alla olevaan hakemistoon Documents
:
pesasa@box:~ $ cp /etc/passwd Documents/
Kopio tiedoston /etc/passwd
nykyisen työhakemiston alla olevan Documents
-hakemiston sisältä
löytyvään uusihakemisto
-nimiseen hakemistoon uudelle nimelle salasanat
:
pesasa@box:~ $ cp /etc/passwd Documents/uusihakemisto/salasanat
Kopioi tiedoston /etc/passwd
nykyiseen työhakemistoon:
pesasa@box:~ $ cp /etc/passwd .
Siirtää mykyisessä työhakemistossa olevan tiedoston passwd
työhakemiston alla olevaan Documents
-hakemistoon
nimellä passut.txt
:
pesasa@box:~ $ mv passwd Documents/passut.txt
Siirtää passut.txt
-nimisen tiedoston työhakemiston alla olevasta Documents
-hakemistosta työhakemistoon:
pesasa@box:~ $ mv mv Documents/passut.txt .
Useampia tiedostoja voidaan myös kopioida tai siirtää kerralla, jos viimeisenä parametrina, eli kopioinnin tai siirron kohteena, on hakemisto:
pesasa@box:~ $ cp /etc/hosts /proc/cpuinfo Documents/uusihakemisto/
Kokeile edellä esiteltyjä komentoja.
Hakemiston kopiointi
Jos halutaan kopioida kokonainen hakemisto sen sisältämine tiedostoineen, pitää kopiointi tehdä rekursiivisesti. (Rekursio)
Kopioi hakemisto /usr/share/doc/wget
sisältöineen työhakemistoon (.
)
pesasa@box:~ $ cp -r /usr/share/doc/wget .
Muuten sama, mutta -a
tarkoittaa "archive", eli kopiointi pyrkii säilyttämään tiedostojen oikeudet,
omistajuudet ja aikaleimat samoina. (Hyödyllisimmillään root-oikeuksilla kopioitaessa, sillä
tavallisella käyttäjällä ei ole oikeutta asettaa tiedostojen omistajuuksia.)
pesasa@box:~ $ cp -a /usr/share/doc/wget .
Tiedostojen poisto: rm
ja rmdir
Tiedosto poistetaan komennolla rm
(remove) ja tyhjä hakemosto poistetaan
komennolla rmdir
(remove directory).
Muista olla varovainen!
pesasa@box:~ $ rm passut.txt
pesasa@box:~ $ rmdir Documents/toinenhakemisto
Hakemiston voi poistaa myös rm
-komennolla käyttämällä lisävalitsinta -r
(recursive).
Tämä poistaa hakemiston ja kaiken sen sisällön. Varo!
pesasa@box:~ $ rm -r Documents/uusihakemisto
Poistokomentojen kanssa ei voi koskaan olla liian varovainen. Usein hyvä tapa onkin ennen
poistoa suorittaa vastaava komentorivi korvaamalla rm
-komento ls
-komennolla, jolloin
saa nähtäväkseen, luettelon poistettavista tiedostoista. Jos tiedostot ovat oikeat, voi edellisen
komennon hakea takaisin komentohistoriasta ja vaihtaa tilalle rm
-komennon.
Tiedostolinkit: ln
ln
-komennolla luodaan tiedostojärjestelmään linkkejä ja symbolisia linkkejä.
- Linkki
- Levylle on fyysisesti tallennettu vain yksi tiedosto, mutta sillä voi tiedostojärjestelmässä olla useampi nimi, jotka sijaitsevat eri paikoissa hakemistopuuta.
- Symbolinen linkki
- "vain" viittaus johonkin toiseen, "oikeaan" tiedostoon.
pesasa$box:~ $ ls -l /etc/printcap
lrwxrwxrwx 1 root root 22 Sep 24 21:30 /etc/printcap -> /var/run/cups/printcap
Luodaan työhakemistoon symbolinen linkki, jonka nimi on copyright
ja joka viittaa
tiedostoon /usr/share/doc/emacs/copyright
pesasa$box:~ $ ln -s /usr/share/doc/emacs/copyright
pesasa$box:~ $ ls -l copyright
lrwxrwxrwx 1 pesasa pesasa 30 maali 5 16:24 copyright -> /usr/share/doc/emacs/copyright
Luodaan Documents
-hakemistoon symbolinen linkki, jonka nimi on oikeudet ja joka viittaa
tiedostoon /usr/share/doc/emacs/copyright
.
pesasa$box:~ $ ln -s /usr/share/doc/emacs/copyright Documents/oikeudet
pesasa$box:~ $ ls -l Documents/oikeudet
lrwxrwxrwx 1 pesasa pesasa 30 maali 5 16:27 copyright -> /usr/share/doc/emacs/copyright
Symbolista linkkiä voi käyttää useimpiin tarkoituksiin aivan samoin kuin varsinaista tiedostoakin. Tiedoston luku-, kirjoitus- ja suoritusoikeuksiin koskevat alkuperäisen tiedoston oikeudet.
Tiedostoja verkosta: wget
Komentorivillä tiedostoja voi noutaa verkosta ohjelmalla nimeltä wget
.
Haetaan kuva osoitteesta http://petrit.net/Linux-kurssi/images/penguin.png komennolla:
wget http://petrit.net/Linux-kurssi/images/penguin.png
pesasa@box:~ $ wget http://petrit.net/Linux-kurssi/images/penguin.png
--2016-09-11 19:31:03-- http://petrit.net/Linux-kurssi/images/penguin.png
Selvitetään osoitetta petrit.net (petrit.net)... 85.17.21.177
Yhdistetään palvelimeen petrit.net (petrit.net)|85.17.21.177|:80... yhdistetty.
HTTP-pyyntö lähetetty, odotetaan vastausta... 200 OK
Pituus: 14493 (14K) [image/png]
Tallennetaan kohteeseen ”penguin.png”
penguin.png 100%[==================================>] 14,15K --.-KB/s in 0,03s
2016-09-11 19:31:03 (422 KB/s) - ”penguin.png” tallennettu [14493/14493]
Nimen, jolla tiedosto tallennetaan, voi valita valitsimella -O
(iso O-kirjain).
wget -O Documents/Tux.svg http://petrit.net/Linux-kurssi/images/Awesome-Tux.svg
pesasa@box:~ $ wget -O Documents/linux.html http://petrit.net/Linux-kurssi/images/Awesome-Tux.svg
--2016-09-11 19:35:34-- http://petrit.net/Linux-kurssi/images/Awesome-Tux.svg
Selvitetään osoitetta petrit.net (petrit.net)... 85.17.21.177
Yhdistetään palvelimeen petrit.net (petrit.net)|85.17.21.177|:80... yhdistetty.
HTTP-pyyntö lähetetty, odotetaan vastausta... 200 OK
Pituus: 1761180 (1,7M) [text/html]
Tallennetaan kohteeseen ”Documents/Tux.svg”
Documents/Tux.svg 100%[==================================>] 1,68M 2,89MB/s in 0,6s
2016-09-11 19:35:37 (2,89 MB/s) - ”Documents/Tux.svg” tallennettu [1761180/1761180]