Kochbuch für die Konsole

Aus Siduction Wiki DE
Wechseln zu: Navigation, Suche

Übersicht über das Konsolen-Tutorial

Vorbemerkung

Hier beginnt eine Sammlung von Scripten, die in Kurzform die Möglichkeiten der Shellprogrammierung andeuten.

Ausgeben der menschlichen Benutzer

#! /bin/bash
cut -f1,3 -d: /etc/passwd | grep "[a-z]" >/tmp/get_users.tmp
mapfile -t </tmp/get_users.tmp LINES
COUNT=${#LINES[@]}
IX=0
echo $COUNT ${LINES[0]}
while [ $IX -lt $COUNT ] ; do
  X=${LINES[$IX]}
  USER=${X%:*}
  ID=${X#*:}
  if [ "$ID" -ge 200 ] ; then
    echo "$USER: $ID"
  fi
  IX=$(expr $IX + 1)
done
  • mit cut werden Spalten aus einer Datei ausgeschnitten: Trennzeichen ':', es interessieren nur Spalte 1 und 3
  • mit grep werden die Leerzeilen ausgefiltert.
  • Probier aus: cut -f1,3 -d: /etc/passwd | grep "[a-z]"
  • mapfile liest eine Datei und legt die Zeilen in dem bezeichneten Array (hier LINES) ab.
  • In der Schleife werden die einzelnen Zeilen der Datei bearbeitet
  • Die Zeile enthält <benutzer>:<id>. Diese Info wird aufgespalten
  • Es werden nur die Benutzer ausgegeben, deren User-ID >= 200 ist
  • Mit expr wird der nächste Index berechnet: bisheriger Index + 1

Prüfen, ob der voreingestellt Browser der Chromium ist

#! /bin/bash
BROWSER=x-www-browser
LINK=/usr/bin/$BROWSER
while [ True ] ; do
  LINK=$(readlink $LINK)
  test -z "$LINK" && break
  BROWSER=$LINK
done
BLOCKED_BROWSER=chromium
if [ $(expr $BROWSER : ".*$BLOCKED_BROWSER" ) != 0  ] ; then
  test -x /usr/bin/midori && BROWSER=/usr/bin/midori
  test -x /usr/bin/iceweasel && BROWSER=/usr/bin/iceweasel
  if [ $(expr $BROWSER : ".*$BLOCKED_BROWSER") != 0 ] ; then
    xmessage "$BLOCKED_BROWSER has a bug. No alternatives found. Install another ..."
  fi
fi 
  • x-www-brower ist ein symbolischer Link
  • die symbolischen Links werden bis zur realen Datei "verfolgt"
  • mit "expr STRING : REXPR" wird überprüft, ob der String einem regulären Ausdruck entspricht. Wichtig: Die Übereinstimmung muss ab dem String-Anfang beginnen ("anchored expression"). Deshalb beginnt der reg. Ausdruck mit ".*" (beliebig viele Zeichen am Anfang)
  • Es werden Alternativ-Browser gesucht: iceweasel oder midori Ist keiner vorhanden, erfolgt eine Fehlermeldung ("xmessage ...")