Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Terminalbruk

 Terminalbruk

Slides from a course on terminal usage I held at the Iterate Tech Evening 2009-10-13

Stein Magnus Jodal

May 05, 2012
Tweet

More Decks by Stein Magnus Jodal

Other Decks in Programming

Transcript

  1. Mål for kvelden Kurere terminalskrekk. Å få et ekstra verktøy

    i verktøykassa. Å få et grunnlag for videre utforskning og læring.
  2. Agenda 16:30 Pizza 16:45 Introduksjon 16:50 Komme i gang 17:00

    Grunnleggende filhåndtering 17:20 Tilgangskontroll 17:45 Søk etter filer 18:00 Søk etter innhold (med regexp) 18:20 Kombinering av kommandoer 18:30 Eksekvering 18:45 Prosesskontroll 18:55 Spørsmål
  3. Hvorfor terminal? Tilgjengelighet Et kraftig verktøy Mer effektivt enn pek

    og klikk Ofte nødvendig for deployment Enkelt å dokumentere fremgangsmåte
  4. Hva er en "terminal"? Programmet du kjører på din maskin

    Terminal i Mac OS X PuTTY i Windows Kommandogrensesnittet til maskinen Terminalen kjører et "shell"
  5. Hva er et "shell"? Programmet som tolker kommandoene dine Finnes

    ulike varianter Mye felles funksjonalitet "bash" er det mest vanlige
  6. Komme i gang De fleste kommandoer støtter "--help" som argument

    De fleste kommandoer har mer dokumentasjon i "man <kommando>" Oppgave: Logg inn på login.iterate.no med SSH Finn enlinjersbeskrivelsen til kommandoen "cat"
  7. Grunnleggende filhåndtering Path ls (-l, -a, -h, -d) (~, ..,

    /etc, ./etc) pwd Kataloger mkdir (-p) Filer cat less Felles mv cp (-r, -v) rm (-r, -f, -v)
  8. Grunnleggende filhåndtering Oppgave: Bruk kommandoen "pwd" til å finne arbeidskatalogen

    din. Lag mappen "terminalkurs" på hjemmeområdet ditt. Bytt navn på mappen fra "terminalkurs" til "public_html". Gå inn i mappen. List innholdet i mappen.
  9. Tilgangskontroll Alle filer/kataloger har en eier, en gruppe og rettigheter

    Rettigheter gis til eier, gruppe og røkla Rettigheter gis for å lese (r), skrive (w) eller eksekvere (x) Fire viktige kommandoer: chown: endrer bruker (og evt. gruppe) chgrp: endrer gruppe chmod: endrer rettigheter ls -l: viser alle tilgangsdetaljer
  10. Tilgangskontroll Rettigheter angis ofte som bitmasker til "chmod": "750" eller

    "rwxr-x---" gir: Eier: lese, skrive, og eksekvering (4 + 2 + 1 = 7) Gruppe: Lese og eksekvering (4 + 0 + 1 = 5) Røkla: Ingen tilgang (0 + 0 + 0 = 0) "755" er vanlig på kataloger lesbare for alle "644" er vanlig på filer lesbare for alle "777" er aldri rett løsning
  11. Tilgangskontroll "chmod" støtter også følgende: u+rw: Lese- og skrivetilgang til

    eier (user) g+rx: Lese og eksekvering for gruppe o-rwx: Ingen tilganger til røkla (others) a+r: Lesetilgang til eier, gruppe og røkla Se "man chmod" for mer detaljer.
  12. Søk etter filer Oppgave: Bruk kommandoen "find" til å liste

    alle filer i "/etc" som har "ldap" i filnavnet sitt.
  13. Søk i innhold (med regexp) "grep" returnerer linjer som matcher

    en streng "egrep" returnerer linjer som matcher en regexp Regexp, eller RE, eller regular expressions er "regulære uttrykk" som bl.a. er nyttige for å matche mønstre i innhold Eksempel på regexp: "\d?" matcher null eller ett heltall. "\s+" matcher ett eller flere tegn. "\w*" matcher null eller flere ord. "[0-2]{3,4}" matcher tre eller fire siffer med verdi 0, 1 eller 2 "(a|b)*b" matcher en streng med vilkårlig antall "a" og "b" som slutter på "b" (aaaab, b, babababab, men ikke abba)
  14. Søk i innhold (med regexp) Oppgaver: Finn alle linjer i

    "/etc/services" som inneholder "http" Finn hvilke filer under "/etc/init.d" som inneholder "http"
  15. Kombinering av kommandoer Output (stdout) fra en kommando kan brukes

    som input (stdin) til neste ved hjelp av pipe ("|"): curl http://www.iterate.no/ | grep integrasjon | tee result. txt find . -type d | xargs chmod a+x Stdout kan redirectes til en fil: echo "hello, world" > hello.txt Stdout kan appendes til en fil: echo "hello, world" >> hello.txt
  16. Kombinering av kommandoer Semikolon kjører en rekke kommandoer sekvensielt: cd

    /etc; ls; cd /home; ls Dobbel ampersand kjører en rekke kommandoer sekvensielt, men kun dersom forrige kommando avsluttet uten feil: cd /etc && ls && cd /home && ls cd /finnes/ikke && ls && cd /home && ls
  17. Eksekvering En fil som er eksekverbar kan kjøres i shellet

    med ". /filnavn" Dersom det er et script fremfor et binært program må filen ha en "shebang"-deklarasjon på første linje. "shebang"-linjen forteller hvordan filen skal eksekveres. Eksempel: #! /bin/bash #! /usr/bin/env python Oppgave: Lag "helloworld.sh" og kjør den som "./helloworld.sh"
  18. Prosesskontroll ps: Lister kjørende prosesser, prøv "ps auf" og "ps

    auxf" top/htop: Lister kjørende prosesser interaktivt kill <pid>: Avslutter prosessen med prosess-ID <pid> killall <navn>: Avslutter alle prosesser med navn <navn> pkill <pid/navn/etc>: Avslutter prosesser basert på diverse kill -9 <pid>: Avslutter prosessen øyeblikkelig Program kan kjøres i bakgrunnen ved å kjøre "program &" Program som allerede kjører kan flyttes til bakgrunnen ved å trykke CTRL+Z Program som er i bakgrunnen kan hentes frem med "fg"
  19. Prosesskontroll Kommandoen "screen" kan brukes til å ha program kjørende

    selv om du logger ut av terminalen. Trykk CTRL+A+D for å koble fra screenen (deattach). Neste gang du kobler til maskinen kan du koble til screenen og programmet igjen med "screen -r" (reattach).