script fájl elejére:
#!/bin/bash #!/usr/bin/perl
egyébként az aktuálisan futó shellben fut
$? → visszatérési érték$# → paraméterek száma$@ → for valami in $@; do … done #az összes parancssori argumentumon végigmegy$$ → az aktuálisan futó parancs pidje$! → utolsó háttérben futó parancs pidjeif [ ... ]; then ... fi
(SPACE számít a [] között!!)
[ -z arg ] → true, ha arg üres[ a -eq b ]-lt, -gt, -eq, -ne= → string összehasonlítás! [ … ] && [ … ] || [ … ] → és, vagy, negáció[ -z "$1" ] && echo "Adj meg parametert" if [ ! -z "$1" ] && grep "^$1:" /etc/passwd; then echo "Hello World!" fi
`ez a fajta futtatás`( echo 1; echo 2 ) ez pipe-olható ./valami.sh. valami.shsource valami.sh
read L; → L változóba olvas egy sort a stdin-rõl, 0-val tér vissza, ha OK
dirname → kiírja a paraméterben megadott fájl könyvtárnevét (ahogy meghívták)basename → ugyanez a fájlnévretempfile → létrehoz egy random fájlt a /tmp-ben és visszaadja a nevét. Pl: TMP=`tempfile`; … $TMP … ; rm -f $TMPmkdir -p → a teljes könyvtárstruktúrát létrehozza, ha nem létezik mégrm -f → ha létezik, akkor töröl, hibakódot nem adset -x → bekapcsolja, hogy minden végrehajtott parancsot kiír helyettesítés utánset +x → kikapcsolja, …bash -x … → ilyen módban futtatja a parancsotset -e → mód: ha egy parancs visszatérési értéke hamis, leállítja a parancs futását.set +e → kikapcsolja ezt a módotsed 's/what/for/g'
cat /etc/passwd | sed 's/\([^:]\+\):x:[0-9]\+:[0-9]\+:\([^:]*\).*$/\1 \2/' cut -f1,5 -d: /etc/passwd cut -c (karakterszám alapján) cat /etc/passwd | awk 'BEGIN{FS=":";} {printf("%s %s\n",$1,$5);}'
valami() {függvény kódja... ; return 0}
CTRL C -> TERM signal CTRL D -> stream vége (EOF) CTRL \ -> QUIT signal CTRL Z -> STOP CTRL S -> Scroll Lock, fagyasztja a terminált, Q-val felold CTRL R -> Elõzõ parancsok között keres
jobs -> minden processzhez index bg [index] fg [index] CTRL-Z
Paraméterek:
cat /etc/passwd | awk 'BEGIN{FS=":";} {printf("%s %s\n",$1,$5);}'
Ne tedd:
#!/bin/awk
De:
#!/bin/bash cat fn | awk ' BEGIN{ FS=":" } { print $1 } '
#!/bin/bash if [ "`pidof -x $0 | wc -w `" -gt 1 ]; then echo "Futok" fi
#!/bin/bash for i in $(seq 15);do echo $i; done
#!/bin/bash [ -z "$1" ] && echo "Adj meg parametert" if [ ! -z "$1" ] && grep -q "^$1:" /etc/passwd; then echo "Hello World!" fi
#!/bin/bash cat /etc/passwd | while read L; do T_USER=`echo $L | cut -f1 -d:` T_NAME=`echo $L | cut -f5 -d:` echo $T_USER $T_NAME $a done echo $T_USER # ez nem ír ki semmit, mert forkol a while a pipe-olások miatt