• No results found

Shell scripting

N/A
N/A
Protected

Academic year: 2021

Share "Shell scripting"

Copied!
21
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

Shell scripting

Van losse commando's naar een shell script

Ubuntu release party 2010 Ede

29 Mei

Marcel Nijenhof

marcel.nijenhof@nllgg.nl http://www.nllgg.nl

(2)

Shell Scripting?

(3)

Marcel Nijenhof

Nllgg

Voorzitter

10 Jaar bestuur

LPI Nederland

Bestuurslid

Examinator

Proxy

Medewerker

Unix beheer

(4)

Het script

(5)

Losse commando's

$ mv file1 file1_20100416

$ mv file2 file2_20100416

$ mv file3 file3_20100416

(6)

Het eerste script

#!/bin/sh

mv file1 file1_20100416

mv file2 file2_20100416

mv file2 file3_20100416

(7)

Waarom geen loop?

#!/bin/sh

for f in file1 file2 file3 do

mv "${f}" "${f}_20100416"

done

(8)

En een wildcard voor de files

#!/bin/sh

for f in file*

do

mv "${f}" "${f}_20100416"

done

(9)

Waarom de filenamen in het script?

#!/bin/sh

for f in "$@"

do

mv "${f}" "${f}_20100416"

done

(10)

Ook het achtervoegsel dynamisch

#!/bin/sh APPEND=$1 shift

for f in "$@"

do

mv "${f}" "${f}${APPEND}"

done

(11)

Maar ik wil hoofdletters

#!/bin/sh

for f in "$@"

do

mv "${f}" "${f^^}"

Done

Note: "${f^^}" is een bash versie 4 optie.

Voor bash 3 en posix:

$(echo "${f}" | tr "[a-z]" "[A-Z]")

(12)

De combinatie

#!/bin/sh

if [ "$1" = -a ] then

APPEND=$2 shift 2

else shift fi

for f in "$@"

do

if [ "${APPEND}" ] then

mv "${f}" "${f}${APPEND}"

else

mv "${f}" "${f^^}"

fi done

(13)

Getopts

...

while [ "$ARG" != "?" ] do

getopts :a:u case "$ARG" in

a)

APPEND=${OPTARG}

;;

u)

APPEND=""

;;

?) shift $((OPTIND-1)) break

;;

esac done ...

(14)

En nu alle opties

ren: [-X] [-H] [-V] [-n] [-i] [-lu] [-p <PRE>] [-a <APPEND>] [-s <SEARCH>]

[-r <REPLACE>] <file list>

-X: Debug -H: Help -V: Version

-n: Don't rename files only show how files are renamed -i: Interactive to prevent overwriting

-l: Change names to lower case -u: Change names to upper case

-p <PREPEND>: Prepand <PREPEND> to the file names -a <APPEND>: Append <APPEND> to the file names -s <SEARCH>: Search the string in the filename

-r <REPLACE>: Replace the search part in the filename <file list>: List of files to rename

Select only one of the options:

-l, -u, -p -a, -s Example

ren -s DATE -r 20100416 *.DATE

(15)

Algemene opbouw

Initialisatie

Getopts

Controle opties

Loop hernoemen files

Testen of het file bestaat

Nieuwe naam bepalen

Testen of naam gelijk is

Hernoemen

(16)

Controle op opties

if [ -z "${CMD}" ] then

echo "${CMD_ERROR}" >&2 exit 1

fi

if [ "${REPLACE}" -a "${CMD}" != SEARCH ] then

echo "ERROR: Replace is only valid with search" >&2 exit 1

fi

if [ "$#" -le 0 ] then

echo "ERROR: No file list" >&2 exit 1

fi

(17)

Nieuwe filenaam

case "${CMD}" in ...

;;

LOWER)

newfile="${file,,}"

;;

SEARCH)

newfile="${file/${SEARCH}/${REPLACE}}"

;;

*)

echo "ERROR: No such command: ${CMD}" >&2 exit 2

;;

esac

Note: "${file/${SEARCH}/${REPLACE}}" is een bash optie.

Voor posix: $(echo "${file}" | sed "s/${SEARCH}/${REPLACE}/")

(18)

Main loop

for file in "$@"

do

if [ -f "${file}" ] then

Nieuwe filenaam

[ "${file}" != "${newfile}" ] \ && ${SHOW} mv ${MV_ARGS} \ "${file}" "${newfile}"

else

echo "ERROR: File not found:

${file}" >&2 fi

done

(19)

Het volledige script

(20)

Vragen

(21)

Presentatie

Presentatie:

http://pion.xs4all.nl/lezingen/

ShellScripting2010.odp

ShellScripting2010.pdf

ren

ren-posix

Referenties

GERELATEERDE DOCUMENTEN

• De prijs per eenheid UMTS zal in Nederland lager worden dan in andere landen, omdat de lage opbrengst van de veiling leidt tot (relatief) lage constante kosten voor de

Wij willen verder opmerken dat de groothandelsmarkt voor gas een internationale markt is, waarvan de ontwikkelingen op zijn minst regionaal (in Europees verband) en in toenemende

Wetenschappers die recent een collectie van oude schelpen bestudeerden, waren verrast omdat ze niet enkel geen bewijs voor evolutie in de specimens vonden, maar wel duidelijk

Voor deze categorie is niet per afvalstof van bijlage IX deel A van RICHTLIJN (EU) 2018/2001 nagegaan welke ZZS aanwezig kunnen zijn. ILT vindt het noodzakelijk dat de ZZS

Tijdens het openbaar onderzoek kunnen er standpunten, opmerkingen of bezwaren over de aanvraag worden ingediend bij het college van burgemeester en

15 september 1998, inzake bovengenoemd onderwerp, delen wij u mede dat hierbij een 6&#34; hogedruk Ethyleen leiding is betrokken. 6&#34;

This squeezes the energy levels slightly, but the HOMO and LUMO states of core structures are still present in the CS structure because the shell structure by itself has a large

In de hoofdredactie van het Nieuw Archief voor Wiskunde is een wisseling van de wacht gaande; Ferdinand Verhulst treedt op 1 april aanstaande af en wordt opgevolgd door Jan van