Göm menyn

TDP001 Handhavande av datormiljö

Terminalkommandon v36


Nu är det fredag och här kommer nästa terminalmail! Denna vecka är det inga uppgifter att lösa. Nya uppgifter kommer nästa vecka.

Användare, grupper och rättigheter

På ett linux-baserat operativsystem finns det flera användare som alla tillhör en eller flera grupper. Du kan med kommandot groups ta reda på vilka grupper just du är medlem i. Alla filer på filsystemet har en ägare och en grupptillhörighet. De har även en uppsättning rättigheter. Med väljaren -l till ls kan man se massor av spännande information om filer. Nedan följer ett kort utdrag av min hemkatalog på undervisningsdomänen:
   $ ls -l
   -rwxr-xr-x 1 ponha45 ida  15045 aug 19 15:58 a.out
   drwxr-xr-x 2 ponha45 ida   1024 jan 20  2015 Desktop
   -rw-r--r-- 1 ponha45 ida   1265 feb 20  2015 Direction.cc
   -rw-r--r-- 1 ponha45 ida    492 feb 20  2015 Direction.h
Kolumnerna betyder filernas rättighetsuppsättning, ägare, grupp, filstorlek, senast ändrad och till slut filnamn. Låt oss studera rättighetskolumnen lite tydligare. Det första tecknet är d för att visa att det är en katalog och - för en vanlig fil. Därefer kommer tre uppsättningar av vardera tre tecken. Första uppsättningen är rättigheter för filens ägare, därefter följer gruppens rättigheter och till slut övriga. Varje uppsättning visar om man får läsa (r), skriva till (w) eller köra/visa innehåll (om katalog) (x) filen. Här listas några kommandon för hantering av ägare och rättigheter:
kommando	Betyder			Beskrivning
chmod		Change Mode		Ändrar rättigheter. 
chown		Change owner		Byt ägare på en fil
chgrp		Change Group		Byt grupp på fil
Några exempel:
  $ chmod ug+x fil.py
låter användaren (u) och gruppmedlemmar (g) köra filen fil.py
  $ chmod u=rwx fil.py
Ändra filrättighet till att ENDAST ägaren får läsa,skriva och köra filen
  $ chown ponha45:admin fil.py
Sätt ägare till ponha45 och grupp till adminfil.py

Rättigheter kan även sättas med ett oktalt tal. r motsvarar värdet 4, w är värt 2 och x är 1. Sedan kan man addera de bitar man vill ha för att få hela rättigheten. Exempelvis motsvarar 765 uppsättningen rwxrw-r-x.

Läs mer om rättigheter i manualsidorna för chmod

Variabler i terminalen

I det första mailet skrev jag att terminalen styrs av ett fullständigt programmeringsspråk. Där har vi såklart tillgång till variabler. Precis som i python kan vi skapa en variabel när vi känner för det med en enkel tilldelning. Dock måste vi använda ett $-tecken för att komma åt ett värde:
  $ X=hejsan
  $ echo $X
Om man vill kan man använda klammerparenteser för att vara lite tydligare. Detta kan vara bra för att lägga till tecken direkt efter variabelns värde:
  $ namn=Eric
  $ echo "Denna sak är ${namn}s"
Om jag här hade utelämnat klammerparenteserna skulle terminalen sökt efter en variabel som heter namns som såklart inte finns.

Variabler kan man hantera på väldigt spännande sätt. Exempelvis kan man lätt ta bort ett suffix från ett ord med %-tecknet:

  $ file='test.py'
  $ echo ${file%.py} # skriver ut test

Du kan läsa mer om variabler under rubriken "Parameter substitution" i manualsidorna för dash.

Process- och kommandosubstitution

Förra veckan visade vi hur man kan skicka resultatet av ett kommando som indata till ett annat. Här kommer vi presentera två andra sätt att göra detta.

Med kommandosubstitution ersätts ett helt kommando med dess resultat (nästan som ett normalt funktionsanrop). Man innesluter kommandot man vill ha resultatet av på formatet $( kommando )

  $ name=$(grep 'on ' -m 1 resultat.txt)
Här hittar vi det första namnet som slutar på on i filen resultat.txt och sparar raden i variabeln name.

Processsubstitution skapar en temporär fil innehållandes utskriften från ett kommando. Skrivs på formatet <( kommando )

  $ paste <( echo "Anna" ) <( echo "kalle" )
Detta är bra att ha för kommandon som kräver indata från en fil.

Detta avslutar denna veckans terminalinformation.


Sidansvarig: Pontus Haglund
Senast uppdaterad: 2019-05-29