Hyppää sisältöön

Welcome to our weekly research support coffee hour on Zoom! Click here for more information.

Warning!

Puhti scratch disk is becoming very full (80+ % ) resulting in performance degradation. Everybody is advised to only keep actively processed data on scratch, all other data should be deleted, transferred to host institute or stored in Lumi-O. No new quota will be granted. Click here for a tool for examining your disk usage.

Linuxin käyttö komentoriviltä

Tiedostot ja hakemistot Linuxissa

Linux-koneiden tiedostojärjestelmät perustuvat hierarkkiseen hakemistopuuhun. On olemassa yksi juurihakemisto, johon voit viitata vinoviivalla (/). Kaikki tiedostot ja hakemistot sijaitsevat tämän hakemiston alihakemistoissa, joten jokaisella tiedostolla on yksilöllinen yhdistelmä nimeä ja hakemistopolkua. Myös käyttäjän antamat komennot suoritetaan siinä hakemistossa, jossa käyttäjä sillä hetkellä on. Tätä kutsutaan nykyiseksi työhakemistoksi.

Yleensä sinun ei tarvitse tietää tarkkoja hakemistopolkuja työskennellessäsi CSC:n ympäristössä. Riittää, että tunnet tiedostojen sijainnit käyttäjän omilla levyalueilla. On kuitenkin hyvä muistaa, että monia CSC:n ympäristön levyalueita voidaan käyttää useilta palvelimilta käsin (esimerkiksi käyttäjän kotihakemistoa), kun taas jotkin alueet ovat palvelinkohtaisia. Jaettujen levyalueiden tapauksessa tietyn tiedoston polku voi olla eri palvelimilla erilainen.

Linux-komentojen rakenne

Kun pääteyhteys CSC:hen, esimerkiksi Puhtiin, on avattu, etäpalvelinta käytetään Linux-komennoilla. Komennon perusrakenne on:

command -options argument1 argument2 ...

Komento suoritetaan painamalla Enter-näppäintä. Valintojen ja argumenttien nimet ja toiminnot riippuvat Linux-komennosta. Monissa tapauksissa komennon voi suorittaa ilman valintoja tai argumentteja. Valinnoilla muokataan komennon toimintaa. Argumenteilla määritellään tiedostot, hakemistot ja arvot, joita käytetään syöteparametreina, sekä se, mihin tuloste kirjoitetaan.

Esimerkiksi komentoa ls voidaan käyttää sellaisenaan tai useilla valinnoilla ja argumenteilla. Pelkkä komento ls listaa hakemiston sisällön aakkosjärjestyksessä. Komennon tulostetta voi muokata esimerkiksi valinnalla -t. Tällä valinnalla hakemiston sisältö järjestetään tiedoston iän mukaan (aikaleima). Jos argumenttia ei anneta, ls tulostaa nykyisen työhakemiston sisällön. Antamalla argumentin ls-komennolle käyttäjä voi määritellä hakemiston, jonka sisältö listataan. Esimerkiksi komento

ls -t /scratch/project_2979797

listaa hakemiston /scratch/project_2979797 sisällön. Jos komennossa, argumenteissa tai valinnoissa on virheitä, komentoa ei suoriteta, kun Enter-näppäintä painetaan. Sen sijaan näytölle tulostetaan virheilmoitus. Siksi komennossa olevat virheet eivät useinkaan aiheuta suuria ongelmia. Ongelmia voi kuitenkin syntyä käytettäessä määrittelemättömiä shell-muuttujia. Komentojen tuloste vaihtelee komennosta toiseen, mutta monissa tapauksissa tulosteen puuttuminen tarkoittaa, että komento suoritettiin onnistuneesti.

Useimmilla Linux-komennoilla on oma manuaalisivunsa, jota voi tarkastella man-komennolla. Esimerkiksi ls-komennon manuaalisivu näytetään komennolla

man ls

Manuaalisivut voivat olla hyvin yksityiskohtaisia ja teknisiä. Usein sinun ei kuitenkaan tarvitse lukea ja ymmärtää kaikkia niissä annettuja yksityiskohtia, vaan voit vain tarkistaa, mitä komentorivivalintoja kyseiselle komennolle on saatavilla, valita itseäsi kiinnostavat ja alkaa kokeilla tai käyttää niitä käytännössä.

Linux-komentoja on tuhansia, mutta useimpia niistä ei tarvitse osata päästäkseen alkuun. Alla esittelemme yleisimmin käytetyt komennot. Voit myös käyttää komentoa apropos sopivan komennon löytämiseen. apropos listaa ne Linux-komennot, joiden lyhyt kuvausrivi vastaa komentoriviargumenttina annettua tekstiä. Jos esimerkiksi haluat etsiä komentoja, jotka käsittelevät pdf-tiedostoja, voit kirjoittaa

apropos pdf

Huomaa, että apropos-komennon tulostama lista sisältää vain Linux-komentoja, ei ohjelmien nimiä. Siksi yllä oleva esimerkkikomento tuottaisi listan, jossa on monia pdf-muunnoskomentoja, mutta ei pdf-katseluohjelmia kuten acroread tai evince.

Hakemistojen käytön peruskomennot

Alla oleva taulukko listaa komennot, joita käytetään yleisimmin hakemistohierarkiassa liikkumiseen ja sen hallintaan. Alla on myös joitakin esimerkkejä hakemistoihin liittyvistä komennoista.

Name Argument Description
cd directory Vaihda nykyinen työhakemisto
ls directory Listaa hakemiston sisältö
pwd Tulosta nykyisen työhakemiston hakemistopolku
mkdir directory Luo uusi hakemisto
rmdir directory Poista hakemisto

Kun kirjaudut CSC:n palvelimelle, siirryt kotihakemistoosi. Voit tarkistaa sijaintisi eli nykyisen työhakemiston polun komennolla pwd (lyhenne sanoista Print current Working Directory). Kotihakemistosi sijaintia ei kuitenkaan tarvitse muistaa (katso cd-komento).

Hakemiston sisältö voidaan listata ls-komennolla. Pelkkä ls-komento listaa vain nykyisen hakemistosi tiedostojen ja hakemistojen nimet. Saat enemmän tietoa tiedostoista ja hakemistoista komennolla ls -la. Valinta -l tuottaa pitkän hakemistolistauksen, joka sisältää nimen lisäksi myös tietoa tiedostojen ja hakemistojen käyttöoikeuksista, koosta ja muokkausajasta. Valinta -a määrittää, että kaikki tiedostot listataan, mukaan lukien piilotiedostot, joiden nimi alkaa pisteellä (.). Alla on esimerkkituloste komennolle ls -la:

$ ls -la
total 26914
drwx------+ 3  kkayttaj csc         10 Dec 22 09:12 .
drwxr-xr-x  20 root     root         0 Dec 22 09:12 ..
drwx------+ 42 kkayttaj csc        472 Dec 22 09:07 ..
-rwxr-x---+ 1  kkayttaj csc       1648 Dec 22 09:01 .cshrc
-rw-------+ 1  kkayttaj csc         93 Dec 22 09:01 .my.cnf
-rw-------+ 1  kkayttaj csc         48 Dec 22 09:05 Test.txt
-rw-------+ 1  kkayttaj csc     878849 Jan 19 2009  input.table
drwxr-xr-x+ 2  kkayttaj csc          2 Dec 22 09:11 project1
-rw-------+ 1  kkayttaj csc   26432051 Dec 22 09:08 results.out
-rw-------+ 1  kkayttaj csc         25 Mar 27 2009  sample.data
-rw-------+ 1  kkayttaj csc         49 Mar 27 2009  test.txt

Ensimmäinen tulosterivi total 26914 kertoo, että hakemiston tiedostojen kokonaiskoko on 26914 kB. Listassa ensimmäinen merkki kertoo, onko kohde tiedosto (-) vai hakemisto (d). Seuraavat yhdeksän merkkiä näyttävät tiedostojen käyttöoikeudet (katso lisätietoja chmod-komennosta). Seuraavat sarakkeet näyttävät kohteeseen osoittavien linkkien määrän, omistajan, käyttäjäryhmän, koon tavuina, muokkausajan sekä tiedoston tai hakemiston nimen.

Oletuksena tiedostot esitetään aakkosjärjestyksessä. Voit järjestää tulokset muokkausajan mukaan valinnalla -t tai koon mukaan valinnalla -S (huomaa: iso S, ei pieni s). Kaksi muuta usein käytettyä valintaa ovat -h (human-readable), joka tulostaa suurten tiedostojen koot megatavuina tai gigatavuina, sekä -r, joka tarkoittaa käänteistä lajittelujärjestystä. Esimerkiksi komento

ls -ltrh

on erittäin kätevä, kun haluat tarkistaa, mitä tiedostoja on äskettäin muokattu tai luotu. Komennot ls ja pwd eivät muuta tiedostoja millään tavalla, joten voit käyttää niitä aina, kun haluat tietää missä olet ja mitä tiedostoja nykyinen hakemistosi sisältää.

Komento cd directory_name siirtää sinut nykyisestä hakemistosta määrittelemääsi hakemistoon. Esimerkiksi käyttäjä kkayttaj voisi siirtyä paikalliseen väliaikaishakemistoonsa komennolla

cd /local_scratch/kkayttaj

tai

cd $TMPDIR

Jälkimmäisessä komennossa kohdehakemiston määrittämiseen käytetään automaattisesti määriteltyä ympäristömuuttujaa $TMPDIR, joka sisältää tarkan hakemistopolun.

Uusia hakemistoja voidaan luoda komennolla mkdir directory_name. Esimerkiksi komento:

mkdir project1 

luo uuden hakemiston nimeltä project1. Voit käyttää ls-komentoa tarkistaaksesi, että hakemisto luotiin. Nyt voit siirtyä tähän hakemistoon komennolla

cd project1 

Voit palata project1-hakemistosta takaisin komennolla

cd .. 

Huomaa välilyönti cd:n ja pisteiden välissä komennossa. Yhdellä pisteellä (.) ja kahdella pisteellä (..) on Linuxissa erityinen merkitys. Yksi piste (.) tarkoittaa nykyistä hakemistoa ja kaksi pistettä (..) tarkoittaa hakemistoa, joka on yhden tason ylempänä hakemistopuussa eli hakemistoa, jossa nykyinen hakemisto sijaitsee. cd-komennon suorittaminen ilman argumentteja siirtää sinut aina takaisin kotihakemistoosi riippumatta siitä, missä olet hakemistopuussa. Tyhjä hakemisto voidaan poistaa komennolla rmdir directory_name. Esimerkiksi:

rmdir project1

Tiedostojen peruskomennot

Perustasolla Linux-järjestelmän tiedosto on vain tavujono, jossa yksi tavu koostuu kahdeksasta bitistä. Niin sanotut tekstitiedostot sisältävät vain tavuja, jotka voidaan tulkita tekstimerkeiksi ASCII-koodauksen sääntöjen mukaisesti. Siksi nämä tiedostot voidaan ajatella tekstiriveistä koostuviksi. Niin sanotuissa binääritiedostoissa käytetään myös muita kuin ASCII-tavuja, eikä niitä voi eikä ole tarkoitus muuntaa luettavaksi tekstiksi. Tyypillisiä binääritiedostojen esimerkkejä ovat käännetyt ohjelmat, kuvat tai pakatut tiedostot. Tavallisesti käyttäjät työskentelevät enimmäkseen tekstitiedostojen kanssa, ja myös tämän oppaan esimerkeissä oletetaan yleensä, että tiedostot sisältävät jonkinlaista tekstidataa: kirjaimia tai numeroita.

Jokaisella tiedostolla on nimi. Nimi voi periaatteessa olla mikä tahansa merkkien yhdistelmä. Useilla merkeillä on kuitenkin erityinen merkitys, esimerkiksi ?, * ja #, ks. alla, ja siksi näiden merkkien käyttäminen tiedostonimissä voi aiheuttaa ongelmia. Suosittelemme, että käytät tiedosto- ja hakemistonimissä vain tavallisia kirjaimia (pieniä tai isoja), numeroita, pisteitä (.), yhdysmerkkejä (-) tai alaviivoja (_). Myös välilyöntien käyttö tiedostonimissä voi aiheuttaa ongelmia. Suosittelemme, että välilyönnit korvataan alaviivoilla, esimerkiksi new_file.txt eikä new file.txt. Huomaa, että Linux erottaa isot ja pienet kirjaimet: pieniä ja isoja kirjaimia ei pidetä samoina toisin kuin Windows-tietokoneissa, ja esimerkiksi nimet New_File.txt ja new_file.txt viittaavat eri tiedostoihin.

Linuxissa tiedostonimipäätteiden, kuten .doc tai .txt, käyttö ei ole pakollista. Useimmat Linux-työkalut eivät vaadi päätteen määrittämistä. Pitkällä aikavälillä järjestelmällisten nimeämiskäytäntöjen käyttö, mukaan lukien havainnolliset tiedostonimipäätteet, helpottaa kuitenkin tiedostojen hallintaa.

Tiedostojen käsittelykomennot:

Name Argument Description
cat file_names Tulosta määritetyn tiedoston tai tiedostojen sisältö vakiotulosteeseen (näytöllesi)
chmod file_names Muuta tiedoston käyttöoikeuksia
cp file_name1
file_name2
Kopioi tiedoston sisältö uuteen tiedostoon tai uuteen sijaintiin
grep search_string
file_name
Poimi tiedostosta rivit, jotka sisältävät tietyn merkkijonon
head file_name Tulosta tiedoston ensimmäiset rivit vakiotulosteeseen (näytöllesi)
tail file_name Näytä tiedoston viimeiset rivit
less file_name Näytä tiedoston sisältö yksi näytöllinen kerrallaan
more file_name Näytä tiedoston sisältö yksi näytöllinen kerrallaan
ln file_name
link_name
Luo linkki tiedostoon
mv file_name1
file_name2
Nimeä tiedosto uudelleen tai siirrä se toiseen sijaintiin
rm file_names Poista tiedostoja

Voit tarkastella tekstitiedostojen sisältöä komennoilla cat, more ja less. Näitä komentoja on turvallista käyttää, koska ne eivät muuta tiedostoja millään tavalla. Voisit esimerkiksi lukea kotihakemistosi .bashrc-tiedoston komennoilla

cat .bashrc
more .bashrc
less .bashrc 

Komento cat (lyhenne sanasta concatenate) tulostaa määritetyn tiedoston tai tiedostojen sisällön vakiotulosteeseen, mikä oletuksena tarkoittaa näyttöäsi. Sivutusohjelmat less ja more ovat usein hyödyllisempiä työkaluja tekstitiedostojen tutkimiseen, koska niiden avulla käyttäjä voi nähdä tiedoston sisällön yksi näytöllinen kerrallaan. Molemmissa ohjelmissa, more ja less, voit siirtyä eteenpäin rivi kerrallaan painamalla Enter-näppäintä tai näytöllisen kerrallaan painamalla välilyöntiä. Voit poistua tiedoston esikatselusta painamalla q.

Sivutusohjelma less on kehittyneempi kuin more. Esimerkiksi less voi selata tekstiä myös taaksepäin joko rivi kerrallaan painamalla k tai näytöllisen kerrallaan painamalla b. Voit myös etsiä tekstimerkkijonoa dokumentista käyttämällä kauttaviivaa (/). Jos haluat esimerkiksi paikantaa merkkijonon ABC less-ohjelmassa avatussa tiedostossa, kirjoita /ABC ja paina sitten Enter. Itse asiassa man-komento käyttää less-ohjelmaa sivuttimenaan.

Komentoja head ja tail voidaan käyttää tiedoston ensimmäisten ja viimeisten rivien näyttämiseen. Oletuksena nämä komennot tulostavat 10 riviä, mutta voit muuttaa tätä antamalla tulostettavien rivien määrän head- tai tail-komennon argumenttina. Jos haluat esimerkiksi tarkistaa tiedoston run1.log viimeiset 30 riviä, anna komento

tail -30 run1.log 

Tiedostojen kopiointi uuteen tiedostoon tai toiseen hakemistoon tehdään komennolla cp (copy). Alta löydät kaksi esimerkkiä kopiointikomennoista:

cp output.dat output_copy.dat
cp output1.dat output2.dat results/

Ensimmäinen komento tekee tiedostosta output.dat kopion uuteen tiedostoon nimeltä output_copy.dat. Toisessa esimerkissä tiedostot output1.dat ja output2.dat kopioidaan olemassa olevaan hakemistoon nimeltä results. Komentoa mv (move) käytetään tiedoston uudelleennimeämiseen tai siirtämiseen toiseen sijaintiin. Esimerkiksi:

mv output.dat output_copy.dat
mv output1.dat output2.dat results/ 

loisi samat uudet tiedostot kuin cp-esimerkkikomennot. mv-komennon tapauksessa alkuperäiset tiedostot output.dat, output1.dat ja output2.dat kuitenkin poistuisivat nykyisestä työhakemistosta.

Tiedostoja poistetaan komennolla rm filename. Oletuksena tiedosto poistetaan heti. Jos haluat ensin vahvistaa tiedoston poistamisen, voit lisätä komentoon parametrin: rm -i. Jos haluat tehdä tästä toiminnasta pysyvän, voit asettaa aliaksen .bashrc-tiedostoosi:

alias rm="rm -i"

Huomaa, että muokattuasi .bashrc-tiedostoa sinun täytyy käyttää komentoa source ~/.bashrc tai avata uusi shell. Tämän jälkeen rm-komento pyytää käyttäjää aina vahvistamaan, että tiedosto todella halutaan poistaa:

$ rm output_copy.dat
rm: remove output_copy.dat (yes/no)?

Voit vastata y (yes) tai n (no). Huomaa, että tämä vahvistusvaihe ei välttämättä ole käytössä paikallisessa Linux-ympäristössäsi tai tällä hetkellä Puhdissa. Voit ohittaa vahvistuskyselyn valinnalla -f, joka tulee sanasta force. Tätä valintaa kannattaa kuitenkin käyttää varoen, sillä rm poistaa tiedoston heti ja pysyvästi!

Erikoismerkit

Joillakin merkeillä on Linuxissa erityisiä toimintoja. Seuraavissa kappaleissa esittelemme merkit, joita käytetään vakiosyötteen ja -tulosteen uudelleenohjaukseen tai niin sanottuina jokerimerkkeinä.

Muuttujan nimen ilmaisimena toimivaa $-merkkiä, kommenttien lisäämiseen käytettävää #-merkkiä sekä erilaisia lainausmerkkejä käsitellään myöhemmin Linux-skriptausta käsittelevässä luvussa.

Yleisesti käytetyt erikoismerkit

Character Function
$ Ilmaisee shell- tai ympäristömuuttujan
| Ohjaa vakiotulosteen seuraavan komennon vakiosyötteeseen
# Aloittaa kommentin
& Suorittaa prosessin taustalla
? Vastaa yhtä merkkiä
* Vastaa mitä tahansa merkkijonoa (myös tyhjää merkkijonoa)
> Tulosteen uudelleenohjausoperaattori
< Syötteen uudelleenohjausoperaattori
>> Tulosteen uudelleenohjausoperaattori (tiedoston loppuun lisäämiseen)
\ Ohita seuraavan merkin mahdollinen erikoistoiminto

Jokerimerkit

Linuxissa kysymysmerkkiä (?) ja tähteä (*) käytetään niin sanottuina jokerimerkkeinä. Niitä voidaan käyttää määrittelemään argumentteja, jotka vastaavat monia tiedostoja tai hakemistoja. Kun ne annetaan komennon argumentteina, merkki ? tulkitaan merkityksessä mikä tahansa yksittäinen merkki ja merkki * merkityksessä mikä tahansa merkkijono. Esimerkiksi

ls test?.input 

tuottaisi listan tiedostoista, joiden nimi alkaa merkkijonolla test ja päättyy merkkijonoon .input ja joiden välissä on täsmälleen yksi merkki. Siten tiedostot nimeltä testA.input ja test4.input listattaisiin, mutta tiedostonimet kuten test10.input tai testOld.input ohitettaisiin. Sen sijaan komento

ls test*.input 

listaisi kaikki yllä mainitut tiedostot, koska * vastaa mitä tahansa merkkijonoa. Tässä ainoat rajoitukset olisivat, että nimen on alettava merkkijonolla test ja päätyttävä merkkijonoon .input.

Vakiosyötteen ja -tulosteen uudelleenohjaus

Merkkejä pienempi kuin (<), suurempi kuin (>), >> ja putki (|) käytetään vakiosyötteen ja -tulosteen hallintaan. Pienempi kuin -merkki (<) ohjaa komennon lukemaan dataa <-merkin jälkeen määritellystä tiedostosta näppäimistön sijaan.

Suurempi kuin -merkki (>) ohjaisi komennon tulosteen uuteen tiedostoon näytön (vakiotulosteen) sijasta. Esimerkiksi komento

ls test*.input > input_files

tuottaisi uuden tiedoston nimeltä input_files, joka sisältäisi niiden tiedostojen nimet, jotka alkavat merkkijonolla test ja päättyvät merkkijonoon .input. Kahden suurempi kuin -merkin käyttö ilman välilyöntiä niiden välissä (>>) lisäisi komennon tulokset olemassa olevan tiedoston loppuun tai, jos tiedostoa ei vielä ole, ohjaisi tulosteen uuteen tiedostoon annetulla tiedostonimellä.

Putkimerkki (|) ohjaa komennon tulosteen seuraavan komennon syötteeksi. Tällä tavoin voit yhdistää useita Linux-komentoja komentoketjuksi. Jos esimerkiksi tiedostolistauksesi ei mahdu yhdelle näytölle, voit ohjata sen less-ohjelmaan, jotta voit selata sitä yksi näytöllinen kerrallaan. Tällainen uudelleenohjaus voidaan tehdä näin:

ls -l | less

Toisena esimerkkinä voisimme käyttää grep-komentoa ls-komennon tulosteen jälkikäsittelijänä ja poimia esimerkiksi ne tiedostot, jotka on luotu 14. elokuuta:

ls -l | grep "Aug 14"

Lisää harjoitusta

Suosittelemme, että etsit verkosta esimerkkejä Linux-komentojen käytännön käytöstä. Saatavilla on paljon aineistoa, joka näyttää, miten Linuxin mukana tulevia työkaluja käytetään tehokkaasti, jotta voit säästää aikaa ja tuottaa siistejä tuloksia nopeammin.

Omien aliasten määrittely on yksi tapa nopeuttaa työskentelyä, ja sitä suositellaan. Joskus voi kuitenkin tulla nimikonflikteja, jolloin jotkin komennot saattavat käyttäytyä odottamattomasti. Meillä on työkalu nimeltä csc-env, joka näyttää, miten ympäristösi eroaa oletusympäristöstä. Lisätietoja saat tästä dokumentaatiosivusta.

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta