Felhasználói eszközök

Eszközök a webhelyen


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évre
  • tempfile → létrehoz egy random fájlt a /tmp-ben és visszaadja a nevét. Pl: TMP=`tempfile`; … $TMP … ; rm -f $TMP
  • mkdir -p → a teljes könyvtárstruktúrát létrehozza, ha nem létezik még
  • rm -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án
  • set +x → kikapcsolja, …
  • bash -x … → ilyen módban futtatja a parancsot
  • set -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