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 admin
på fil.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
.
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
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 )
Här hittar vi det första namnet som slutar på on i filen
$ name=$(grep 'on ' -m 1 resultat.txt)
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 )
Detta är bra att ha för kommandon som kräver indata från en fil.
$ paste <( echo "Anna" ) <( echo "kalle" )
Sidansvarig: Pontus Haglund
Senast uppdaterad: 2019-05-29