De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

LPI 1.05 Marcel Nijenhof. Agenda ● Customize and use the shell environment ● Customize or write simple scripts ● SQL data management.

Verwante presentaties


Presentatie over: "LPI 1.05 Marcel Nijenhof. Agenda ● Customize and use the shell environment ● Customize or write simple scripts ● SQL data management."— Transcript van de presentatie:

1 LPI 1.05 Marcel Nijenhof

2 Agenda ● Customize and use the shell environment ● Customize or write simple scripts ● SQL data management

3 ● Customize and use the shell environment ● Omgaan met variabele ● Export/set/unset ● Aliasen en functies ● Meerdere commando's op een regel

4 Omgaan met variabele ● Waarde geven ● VAR=test ● export VAR ● Export VAR=test ● Gebruik ● b.v – echo $VAR – Echo ${VAR}

5 Gevorderd gebruik ● Op passen met einde ● VAR=mijn echo ${VAR}test echo $VARtest ● Manipulaties tijdens gebruik ● echo ${NIET:-niet} NIET=wel echo ${NIET:-nietl} ● Veel meer mogelijk

6 export ● Waarom exporteren ● Maak het “test_script”: #!/bin/sh echo ${test_var} ●./test_script ● test_var=Yep./test_script ● export test_var./test_script

7 Welke variabele zijn er? ● Geporteerde variabele ● env – HOME=/home/marceln – SHELL=/bin/sh –... ● Alle variabele & functies ● set

8 set & status shell ● Aanpassen gedrag shell via set ● Debuging: set -x ● Stoppen met fouten: set -e ● Niet uitvoeren: set -n ● Gebruik van vi editing command line: set -o vi ● Globbing uit setten: set -o noglob ● Nog veel meer

9 Variabele & functies verwijderen ● unset VAR ● unset function ● Login scripten ● Functies en aliases

10 Login & Opstarten shell & afsluiten ● Inloggen ● /etc/profile ● ~/.bash_profile ● ~/.profile ● Opstarten ● ~/.bashrc ● Uit loggen ● ~/.bash_logout

11 aliases ● Een verwijzing na een commando ● alias ll='ls -latr' – ll --> ls -latr – ll *txt --> ls -latr *txt ● Aliases hebben geen eigen logica ● Vervaning van alias door de string van de alias ● Goed bruikbaar: – voor vaak gebruikte opties – Lange commando's

12 functions ● Functies zijn ● stukjes shell code – Bevatten logica (shell script) ● Hebben een argument lijst ● Je kunt aliases door functies vervangen ● Andere afhandeling argumenten ● Anders om kan niet

13 Voorbeeld ll functie ● Alias ● alias ll='ls -latr' ● Functie ll ● ll() { ls -latr “$@” } ● Zie het verschil in het afhandelen van de argumenten

14 Voorbeeld functie argumenten ● E() { echo ARGS: $# echo LIST: $@ echo 0: $0 echo 1: $1 echo 2: $2 } ● B.v. E a b c d e

15 Meerdere commando's ● Serie van commando's ● echo 1; echo 2; echo 3 ● Bij goed resultaat (return 0) tweede commando ● true && echo Ja false && echo ja ● Bij fout resultaat (return != ) tweede commando ● true || echo Ja false || echo ja

16 Customize or write simple scripts ● Inleiding ● Voorbeeld scripts met argument lijsten ● For loop ● While loop ● If then else fi ● Case statement ● Password generator ● Shoot your self in the foot

17 Inleiding shell scripting ● Shell scripten zijn de lijm van een unix systeem ● Opstart scripten ● Batch jobs ● Automatisering van reeksen van commando's ● Eenvoudige cgi scripten

18 Shell script 1 ● #!/bin/sh echo ARGS: $# echo LIST: $@ set -x echo 0: $0 echo 1: $1 echo 2: $2

19 Shell script 2 ● #!/bin/sh echo ARGS: $# echo LIST: $@ for i in $(seq 1 $#) do echo ARG $i: $1 shift echo LIST: $@ done ● Note: $(seq 1 $#) = `seq 1 $#` = 1 2.. $#

20 Shell script 3 ● #!/bin/sh echo ARGS: $# echo LIST: $@ I=1 while [ "$1" ] do echo ARG $i: $1 i=$(($i+1)) shift done

21 Shell script 4 ● #!/bin/sh echo ARGS: $# echo LIST: $@ I=1 for a in $@ do echo ARG $i: $a i=$(($i+1)) ● done

22 Shell script 5 ● I=1 for a in $@ do if [ $i != 5 ] then echo ARG $i: $a else echo Bestaat niet fi i=$(($i+1)) done

23 Shell script 6 I=1 for a in $@ do case $a in a|b) echo $i: a of b ;; c|d|e) echo $i: c of d of e ;; f*|g*) echo $i: f\* of g\*: $a ;; *) echo $i: arg: $a ;; esac i=$(($i+1)) done

24 Wachtwoord generator #!/bin/sh S="ABC...XYZabc...xyz0123456789+-=_%" SL=$(echo $S | wc -c) LEN=8 if [ $1 ] then LEN=$1 fi for i in $(seq 1 $LEN) do PW=$PW${S:$(($RANDOM%$SL+1)):1} done echo ${PW}

25 Shoot in your foot? ● #!/bin/sh echo start kill -1 $$ echo end ● Maar in dit geval raak je wel meer! http://www.thealmightyguru.com/Humor/Docs/ShootYourselfInTheFoot.html

26 SQL data management ● Inleiding sql ● Extensies ● sqlite3 ● Sql ● drop/create table/create index ● insert ● select ● update ● delete

27 Inleiding sql ● Diverse database engines ● Opensource – Sqlite – Mysql – Postgres ● Commercieel – Oracle – Sybase – Microsoft SQL Server ● Een taal voor alle databases

28 SQL & Extensies ● Sql is een iso standaard ● Alle databases supporten min of meer de standaard ● Alle databases kennen hun eigen extensies – Triggers – Functies ● Lpi kijkt alleen na de basis sql commando's ● Database onafhankelijk

29 Opensource databases ● Sqlite3 ● Filebased database (Geen server) ● Command line access interface ● Opstarten ● sqlite3 ● Voorbeelden zijn gemaakt met sqlite3 ● Werken ook in mysql ● Vermoedelijk ook in postgresql/oracle/sybase

30 drop/create tables ● drop table nl; drop table p; ● Zeker er van zijn dat de tabellen niet bestaan ● create table nl (i int, s varchar(255)); create table p (i int, p char(1), f varchar(255)); ● Creeer de nieuwe tabellen ● create index nl_idx on nl (i); create index p_idx on p (i); ● Creëer indexen om het zoeken te versnellen

31 Insert (nl) ● insert into nl values (1, "een"); insert into nl values (2, "twee"); insert into nl values (3, "drie"); insert into nl values (4, "vier"); insert into nl values (5, "vijf"); insert into nl values (8, "acht"); insert into nl values (11, "elf");

32 Insert (p) ● insert into p values (2, "y", "2"); insert into p values (3, "y", "3"); insert into p values (4, "n", "2^2"); insert into p values (5, "y", "5"); insert into p values (6, "n", "2*3"); insert into p values (7, "y", "7"); insert into p values (8, "n", "2^3"); insert into p values (9, "n", "3^2"); insert into p values (10, "n", "2*5");

33 select ● select * from nl; ● Laat alle elementen van nl zien ● select * from nl order by s; ● Laat alle elementen van nl gezien geordend op s ● select * from nl where i < 3; ● Laat alle elementen kleiner dan 3 zien

34 Select join ● select * from nl, p where p.i <4 and nl.i<3; ● Kruis product!: 1|een|2|y|2 1|een|3|y|3 2|twee|2|y|2 2|twee|3|y|3 ● In het algemeen niet zinnig

35 Join met conditie ● select nl.i, nl.s, p.p, p.f from nl JOIN p where nl.i = p.i; ● 2|twee|y|2 3|drie|y|3 4|vier|n|2^2 5|vijf|y|5 8|acht|n|2^3 ● Bij het getal staat nu de juiste factorisering. ● Waarde die niet gevonden worden in p ontbreken!

36 Left join ● select nl.i, nl.s, p.p, p.f from nl LEFT JOIN p on nl.i = p.i; ● 1|een|| 2|twee|y|2 3|drie|y|3 4|vier|n|2^2 5|vijf|y|5 8|acht|n|2^3 11|elf|| ● Ontbrekende waarde in p opgevuld met lege waarde (NULL).

37 Select met groep functie ● select p, count(p) from p group by p; ● Telt het aantal keer dat p voorkomt ● N|5 y|4 ● Ook met b.v. Sum, max, avg

38 Update/delete ● update nl set s="eight" where i=8; ● Maakt colum s van de rij met i=8 “eight” ● Zonder where statement worden alle rijen geupdate met deze waarde ● delete from nl where i=2; ● Verwijderd alle rijen uit nl waar i=2 ● Zonder where worden alle rijen verwijderd ● truncate table nl – Niet sqlite3

39 Vragen


Download ppt "LPI 1.05 Marcel Nijenhof. Agenda ● Customize and use the shell environment ● Customize or write simple scripts ● SQL data management."

Verwante presentaties


Ads door Google