bash
SHELL script alapok
script fájl elejére:
#!/bin/bash #!/usr/bin/perl
egyébként az aktuálisan futó shellben fut
"Magic" változók
$?→ 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 pidje
if then else fi
if [ ... ]; then ... fi
(SPACE számít a [] között!!)
feltételek
[ -z arg ]→ true, ha arg üres[ a -eq b ]-lt, -gt, -eq, -ne=→ string összehasonlítás! [ … ] && [ … ] || [ … ]→ és, vagy, negáció
Példák
[ -z "$1" ] && echo "Adj meg parametert" if [ ! -z "$1" ] && grep "^$1:" /etc/passwd; then echo "Hello World!" fi
subshell mikor indul?
`ez a fajta futtatás`( echo 1; echo 2 )ez pipe-olható./valami.sh- pipe-olásnál is!
ez nem indít subshellt, csak include-olja
. valami.sh- másképp:
source valami.sh
File olvasás
read L; → L változóba olvas egy sort a stdin-rõl, 0-val tér vissza, ha OK
Fájlok, könyvtárak
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 ad
""set"" parancs
set -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ódot
sed
sed 's/what/for/g'
- ?* → non-greedy * (alk. +-ra is).
- alapból greedy operátort alkalmaz..
Példák
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);}'
SHELL Függvények
valami() {függvény kódja... ; return 0}
Billentyűparancsok
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
Job management
jobs -> minden processzhez index bg [index] fg [index] CTRL-Z
SCREEN
- CTRL-a,? → help
- CTRL-a,a → legutóbbi ablak
- CTRL-a,BACKSPACE → köv. ablak
- CTRL-a,c → create
- CTRL-a,d → detach
- CTRL-a,[ → COPY mód, scrollozni lehet, esc a kilépés
Paraméterek:
- screen -d → detach all
- screen -R → reattach
AWK++
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 } '
GREP
- -v negált
- -i case-insensitive
Példa programok
#!/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
bash.txt · Utolsó módosítás: 2018/10/03 13:31 szerkesztette: 127.0.0.1
