Bruk av linux
Her har vi en samling med tips for nybegynnere ved bruk av terminalen i linux. Dette er ment som en guide for de som trenger det og er ganske nye i bruk av ubuntu og andre linuxbaserte operativsystemer. Her finnes også en del nyttige lenker til andre deler av hjelpesidene hvor ting står forklart litt mer i detalj.
Samling av linuxkommandoer
Her er en samling av kommandoer som blir gått gjennom på denne siden og noen ekstra vanlige kommandoer. Denne burde kun brukes som oppslagsverk hvis du glemmer hva en kommando heter. Er du ny linuxbruker kan det være lurt å hoppe til neste avsnitt.
Kommando | Nøkkelord | Beskrivelse |
ls | list (directory content) | viser innholdet i mappen du står i |
cd | change directory | endre hvilken mappe du står i |
cp fra_fil til_fil | copy | kopierer en fil fra et sted til et annet |
mv fra_fil til_fil | move | flytter en fil fra et sted til et annet |
mkdir mappenavn | make directory | lag en ny mappe |
rm filnavn | remove | slett fil (rm -d for å slette en mappe) |
pwd | print working directory | viser sti til mappen du står i |
chmod | change mode | endre rettighetene til en fil/mappe (se man chmod) |
chgrp gruppenavn filnavn | change group | endre gruppen til en fil/mappe |
man kommando | manual | viser manualsidene til kommandoen (q for å avslutte) |
ssh "brukernavn"@"Servernavn" | secure shell | Åpner en Secure Shell tilkobling til serveren |
touch "filnavn" | Lager en fil med navn "filnavn" |
Finn flere kommandoer på Linux Shortcuts and Commands.
Navigering i terminal
For å åpne en terminal i ubuntu må du trykke Ctrl + Alt + T
, terminalen ser slik ut:
Når du åpner terminalen er standardplasseringen du er på hjemmeområdet ditt. For å se hvor du er kan du bruke kommandoen pwd
som står for print working directory.
Når du gjør dette får du opp noe slik:
Hjemmeområdet ditt burde ligge under
/home/shome(a,d,b,...)/"første bokstav i brukernavn"/"brukernavn"
som du kan se av eksempelet over.
Hvor du er i filsystemet ditt står også på venstre-siden i terminalen før $
-tegnet. I eksempelet over ser du at det står karius:~$
. Dette betyr at jeg sitter på maskinen som heter karius
, og er i mappen ~
. Tegnet ~
er en peker til home
mappen din.
Dersom du vil se hva du har i den mappen du er i kan du bruke kommandoen ls
.
Denne kommandoen har mange tillegsalternativer. Dersom du skriver ls -l
får du også opp lese og skriverettigheter for mappene og filene som ligger i mappen du er i, og dersom du bruker alternativet ls -a
får du opp skjulte filer og mapper. Disse begynner med punktum (.
) foran navnet sitt. Du kan også bruke flere options samtidig. Dette gjør du ved å skrive de etter hverandre slik ls -l -a
eller ved å skrive det slik ls -la
. Under ser du hvordan de forskjellige alternativene fungerer og hva de gjør med output til skjerm.
Du kan så navigere mellom mapper ved å skrive cd "stien til dit du vil
. Hvis jeg for eksempel har lyst til å navigere meg til home
mappen min, kan jeg skrive cd ~
eller bare cd
. Du navigeres til home
mappa di hvis du ikke spesifiserer hvilken mappe du vil til. Dersom du skal til en mappe som ligger der du er nå kan du bare skrive cd "mappenavn"
. Dersom den mappen du skal til har en undermappe du egentlig vil til kan du bare skrive stien direkte dit cd "mappenavn1"/"mappenavn2"
. Du kan også navigere til skjulte mapper ved bruk av cd. Dette gjøres på helt vanlig måte, men husk punktumet i starten av navnet. Dersom jeg har en mappe .test
som ligger der jeg er nå kan jeg bare skrive cd .test
. Dersom du har lyst til å gå en mappe tilbake kan du bruke ..
pekeren som er lagt i alle mapper automatisk. Dette er en peker til mappen som ligger over den du er i akkurat nå. Så dersom jeg er i ~/introkurs
og vil til ~/
så trenger jeg bare å skrive cd ..
.
Under er noen eksempler på bruk av cd
.
Opprette mapper
Kommandoen cd ../..
kan virke litt mystisk, men siden ..
betyr "mappen over meg" betyr dette bare at du vil flytte deg til "mappen over den mappen som er over den du er i". Altså i dette tilfellet er dette home
.
Du kan også opprette mapper fra terminalvinduet, dette gjøres med kommandoen mkdir
. Dersom du ikke spesifiserer noen sti der du vil ha mappen din, legges den der du er nå. Dersom du har lyst til å legge den et annet sted kan du gjøre det ved å skrive inn hele filstien. Hvis jeg for eksempel har lyst til å lage en ny mappe på hjemmeområdet mitt skriver jeg da mkdir ~/"mappenavn"
eller mkdir /home/shomed/c/chrijak/"mappenavn"
. Dette er fordi ~
betyr home. Dersom du har lyst til å opprette flere mapper samtidig kan du bare skille de med mellomrom slik; mkdir ~/test1 test2 /home/shomed/c/chrijak/test3
da vil jeg opprette tre nye mapper som heter test1
, test2
og test3
. Både test1
og test3
vil havne i hjemmeområdet mitt, mens test2
vil havne der jeg var når jeg kjørte kommandoen.
Under ser du noen eksempler på hvordan mkdir
kommandoen kan brukes.
Her ser du at mappen jeg lagde ved å skrive mkdir .test
har blitt opprettet som en skjult mappe og kan kun sees dersom du bruker -a
som alternativ på ls
kommandoen. At det er en skjult mappe påvirker heller ikke lese og skrive-rettighetene til mappen eller fila.
Kopiere/flytte filer og mapper
Nå når du vet litt hvordan å navigere i filsystemet kan det være greit å vite hvordan du flytter og kopierer filer og mapper fra terminal. Kommandoen for flytting av filer er mv
og kommandoen for kopi er cp
. Disse fungerer stort sett på samme måte. Dersom du legger ved alternativet -r
på dem vil de kopiere/flytte rekursivt og kan derfor også kopiere/flytte mapper også. Strukturen du skriver inn kommandoer på er slik(med et eksempel).
mv -[option] [filename] [path] mv -r test /home/Documents cp -[option] [filename] [path] cp -r test /home/Documents
Dersom test er en fil vil den bare bli flyttet/kopiert inn i /home/Documents/
. Hvis det allerede ligger en fil i /home/Documents/
som heter test vil du skrive over denne filen med den nye. Hvis du ikke vil at dette skal skje finnes det forskjellige alternativer for å bestemme hvilken oppførsel du ønsker når det allerede ligger en fil med det navnet der. Du kan finne de forskjellige alternativene ved å skrive man mv
eller man cp
. Da får du opp en beskrivelse av hvordan kommandoen fungerer. Dette kan du gjøre med de fleste kommandoer i linux.
Dersom test er en mappe vil hele mappen legges over i /home/Documents/
som forventet, men dersom det allerede ligger en mappe i /home/Documents/
som heter test vil mv
kommandoen stoppe deg og gi beskjed om at mappen allerede eksisterer, mens cp
vil legge alle filene fra den mappen du vil flytte, inn i mappen som allerede lå der.
Lese og skriverettigheter
Du kan endre lese og skriverettigheter på filer og mapper i terminalen ved å bruke kommandoen chmod
. Denne tar inn tre tallverdier og et mappe/filnavn.
De tre tallverdiene står for user
, group
og others
og bestemmer hvem som har lov til å gjøre hva med filen. Disse kommer i rekkefølge slik at det første tallet forteller hva user
kan gjøre med filen, det andre group
osv. user
er som standard den som opprettet filen. Hver av rettighetene man kan ha på en fil er representert med et tall. Du kan se hva de forskjellige alternativene er i tabellen under.
execute | write | read |
1 | 2 | 4 |
Dette betyr altså at 3 er execute and write, 7 er execute, read og write. Et eksempel på hvordan man endrer filrettighetene under.
chmod 754 "filnavn"
Her vil da du selv få read, write og execute, mens de du er i group med vil få read og execute, mens alle andre vil få read. Det finnes også en annen måte som kanskje er litt mer forståelig og lett å huske. Da er det bokstaver for de forskjellige gruppene og bokstaver for hvilke rettigheter som skal gis. De forskjellige klassene er gitt i tabellen under.
Referanse | Klasse | Beskrivelse |
u | user | Eieren av filen |
g | group | Brukere som er medlem av filens gruppe |
o | others | Alle som ikke er påvirket av de to før |
a | all | Alle de tre nevnt over |
De forskjellige rettighetene er også satt opp på samme måte.
Referanse | Rettighet | Beskrivelse |
x | execute | Kjøre filen som et program |
r | read | Lese innholdet i fila |
w | write | Skrive til fila |
Med denne metoden er det da veldig enkelt. For å legge til en av de forskjellige rettighetene for en klasse skriver vi
chmod "Klasse"+"Rettighet" "filnavn"
På samme måte kan vi også fjerne en rettighet fra en klasse ved å skrive
chmod "Klasse"-"Rettighet" "filnavn"
Vi kan se på et eksempel som gir samme resultat som tidligere.
chmod u+rwx,g+rx,o+r "filnavn"
Her er de forskjellige endringene kommaseparert. Dersom vi for eksempel bare hadde skrevet
chmod u+rwx "filnavn"
vil kun rettighetene for eieren av fila bli endret, mens resten vil være som før. Dersom en klasse allerede har en rettighet du prøver å legge til skjer ingenting. Funksjonen chmod
skiller lite på om du endrer lese og skriverettigheter på filer eller mapper. Derfor kan du endre alle filnavn
til mappenavn
.
Umask
Dersom du sitter med et prosjekt og jobber sammen med noen andre på de samme filene kan det være greit at lese og skriverettighetene du ønsker at nye mapper og filer skal ha, kommer riktig uten å måtte sette de for hver eneste fil du oppretter. Det er dette umask
er til for. Denne er tilknyttet en session og ikke brukeren. Det vil si at når du åpner en ny terminal vil umask
automatisk bli satt igjen til standarden. umask
fungerer ganske likt som chmod. Dersom du bare skriver kommandoen umask
får du opp et firesifret tall. Dette er da først et tall som er for noen spesielle rettigheter, vi kommer til å anta at denne er satt til 0 hele veien. Noe den også burde være hos deg med mindre du vet hva den gjør. De andre representerer som tidligere henholdsvis user
, group
og others
.
Umask fungerer på den måten at tallverdiene trekkes fra et tall. Mapper har som standard 777 og filer har 666. Så hvis du nå setter umask 0022 "mappenavn"
vil user
få lese, skrive og kjørerettigheter, mens group
og others
vil få kun lese og kjørerettigheter. Hvis du derimot gjør det tilsvarende med en fil vil det være det samme bortsett fra at ingen får kjørerettigheter på fila. Den beste måten å tenkte på umask tallet på er å kun se på de tre siste sifferene(antar at det første er 0) og tenke på det som tallet gitt i chmod
minus umask
. Under er en tabell som viser de ekvivalente alternativene på umask
og chmod
på mapper. Trekk fra en fra alle siffrene i chmod for å få en tabell for filer.
umask | chmod (mapper) | beskrivelse |
0000 | chmod 777 | alle får lov til å gjøre alt med mappen |
0222 | chmod 555 | alle får kun lese og kjøre mappen |
0333 | chmod 444 | alle får kun lese mappen |
0444 | chmod 333 | alle får kun skrive til og kjøre mappen |
0555 | chmod 222 | alle får kun skrive til mappen |
0666 | chmod 111 | alle får kun kjøre mappen |
På samme måte som chmod
har også umask
en symbolrepresentasjon for alle de forskjellige rettighetene og klassene. Her fungerer det helt likt som for chmod. Det betyr at dersom du setter umask
som i eksempelet under vil vi få samme resultat som hvis vi kjørte chmod
eksempelet over som før.
chmod u+rwx,g+rx,o+r "filnavn" umask u+rwx,g+rx,o+r
Så når du bruker tallrepresentasjon for lese og skriverettigheter trekkes umask fra enten 666 eller 777, mens symbolrepresentasjonen spesifiserer hvilke rettigheter fila skal ha når den blir opprettet. Det kan også spesifiseres hvilke rettigheter de forskjellige klassene ikke skal ha ved å bruke -
istedet for +
.
Manual for kommandoer(man)
Etter at du har lært deg en del kommandoer går man ikke lenger rundt og prøver å huske nøyaktig hva man skulle skrive eller hvilke alternativer som finnes til kommandoer. Noen ganger er det også slik at man vil finne ut hvordan en kommando oppfører seg i litt spesielle tilfeller eller rett og slett hvordan input skal gis. Hvis du vet hvilken kommando du skal bruke, bare ikke hvordan, kan du bruke man "kommando"
uten "". Da får du opp manualsiden for kommandoen.
Hvis jeg for eksempel er interessert i å finne ut mer om cp
kommandoen for å kopiere filer og mapper skriver jeg bare
man cp
og da får jeg opp noe slik:
Her ser du først hva kommandoen gjør og så får du opp hvordan du skal gi input og hvilke alternativer du kan sette på den. Det er litt en egen kunst å kunne lese og forstå manualsidene i linux, så det kan være lurt å gjøre dette mye i starten slik at du etterhvert kan finne svarene der fort.
Secure shell(ssh)
Skal du gjøre store beregninger eller lignende kan det være en god idè å bruke beregningsserveren på matteland. Denne heter markov, men først må du kunne logge på. Til dette bruker vi ssh
som oppretter en kryptert forbindelse mellom maskinen du sitter på og beregningsserveren. Herfra kan du gjøre alt du vil og enda litt til.
Du logger inn ved å kjøre terminalkommandoen
ssh BRUKERNAVN@markov.math.ntnu.no
der BRUKERNAVN er NTNU-brukernavnet ditt.
Når du har lyst til å logge ut kan du bare skrive exit
for å logge ut av serveren. Husk på at hvilken maskin du sitter logget inn på står på venstre side i terminalen. Har du beregninger som skal stå i lang tid kan det være greit om de kjører uten at du trenger å sitte innlogget med terminalen oppe. Derfor er det anbefalt å bruke screen
. Hvordan screen
fungerer kan du lese mer om her.
Når du har noe som står over lengre tid og kjører kan det være greit at de som bare skal gjøre litt også har litt kapasitet. Husk, du er ikke den eneste som bruker markov
. Hvis du driver med parallellprogrammering eller lignende kan det være god skikk å bruke htop
for å se hvor mye beregningskraft du kan bruke. I tillegg er det greit å bruke en funksjon som heter nice
. Nice er et mål på hvor grådig du er med prossessorkraften. Når du starter et nytt program er det bare å gjøre som før, men skrive nice først. Hvis du for eksempel har lyst til å starte matlab og kjøre et script skriver du
nice matlab -nodesktop
Grunnen til at -nodesktop
alternativet blir satt er at dersom du vil bruke grafikk og lignende må det sendes over nettverket, noe som tar enormt mye tid.
Mosh står for "Mobile Shell" og er et alternativ til SSH.
Fordelen med Mosh i forhold til SSH er at den greier å holde tilkoblingen oppe på tross av forandringer i IP-adresse eller tap av nettverkstilkobling. Mosh bruker SSH for autentisering og dermed fungerer de to svært likt for brukeren. For å kjøre mosh
er det bare å bruke det akkurat som ssh
men såklart bytte ut ssh
med mosh
. I windows og til OSX finnes det flere mosh-clienter som kan brukes.