Linux-Befehle, Shell-Skripte und AWK: Praxisleitfaden

Informatik5,33 KB

Linux-Befehle, Shell-Skripte und AWK-Programme

In diesem Leitfaden lernst du wichtige Linux-Befehle kennen, schreibst eigene Shell-Skripte und nutzt AWK-Programme zur Verarbeitung von Textdaten.

1. Verzeichnisinhalte mit ls anzeigen

Mit dem Befehl ls werden Dateien und Verzeichnisse aufgelistet. Die Option -l zeigt eine ausführliche Liste:

ls -l

Alle Dateien im Verzeichnis /root/examen anzeigen:

ls -q -m /root/examen

2. Berechtigungen filtern

Mit ls -l | grep ^drwxr-x werden nur Verzeichnisse mit den Rechten drwxr-x angezeigt.

3. Standardpfad und Shell-Skripte

Der Befehl export PATH=/usr/local/bin:/bin:/usr/bin:. legt die Suchpfade fest. Das aktuelle Verzeichnis (.) wird am Ende angehängt.

Ein Skript zum Kopieren einer Datei prüft zunächst, ob zwei Argumente übergeben wurden:

#!/bin/bash
clear
if test -f $1
then
  if test -d $2
then
    ls $2 | grep -w $1
    if test $? -eq 0
    then
      echo "$1 existiert bereits im Verzeichnis $2\n"
    else
      cp $1 $2
    fi
  else
    echo "Verzeichnis nicht gültig\n"
    exit
  fi
else
  echo "Datei nicht gültig\n"
  exit
fi

Bevorzugt wird die Ausführung mit der Shell bash.

4. Body-Mass-Index mit AWK berechnen

Mit einem AWK-Programm lässt sich der BMI aus der Datei prsnas.dat berechnen. Der BMI wird als Gewicht / (Größe)2 ermittelt. Normalgewicht liegt zwischen 18,5 und 24,99.

BEGIN { FS="#"; OFS="\t" }
{
  bmi = $2 / ($3 * $3)
  if (bmi >= 18.5 && bmi <= 24.99)
    printf "%s\t%2.2f\n", $1, bmi
}

Ausführung: awk -f listado_imc prsnas.dat

5. Befehle im Verzeichnis /usr/bin ausführen

Liegt ein Befehl wie ls im Verzeichnis /usr/bin, kann er durch den Pfad direkt aufgerufen werden. Ist das aktuelle Verzeichnis (.) im PATH enthalten, werden Befehle aus dem Arbeitsverzeichnis gefunden.

6. Dateien suchen und löschen

Leere reguläre Dateien, deren Namen mit a beginnen, werden im Verzeichnis /root/examen gesucht und ohne Rückfrage gelöscht:

find /root/a* -name -size 0 -type f -exec rm -f {} \;

7. Wörter mit Vokal filtern

Aus der Datei palabras.txt werden alle Wörter extrahiert, die mit einem Vokal beginnen oder enden (Groß- oder Kleinschreibung). Das Ergebnis wird in words.txt gespeichert:

grep -i -E "^[aeiou]|[aeiou]$" palabras.txt > words.txt

8. Alias für eine detaillierte Dateiliste

Mit einem Alias lässt sich die Ausgabe von ls -al verkürzen:

alias liste="date +%d%n%t; ls -al"

9. Reguläre Dateien zählen

Die Anzahl der regulären Dateien im aktuellen Verzeichnis ermittelt man mit:

ls -l | grep ^- | wc -l

10. Notenauswertung mit AWK

Die Datei notas_curso enthält Name, Nachname und drei Noten, getrennt durch Kommas. Das AWK-Programm listado_aprobados zeigt alle Studierenden mit einem Notendurchschnitt von mindestens 4,0 an:

BEGIN { FS=","; OFS="\t" }
{
  prom = ($3 + $4 + $5) / 3
  if (prom >= 4.0)
    printf "%s\t%s\t%1.1f\n", $2, $1, prom
}

Ausführung: awk -f listado_aprobados notas_curso

11. Verlauf in der Bash optimieren

Mit den Variablen HISTTIMEFORMAT und HISTCONTROL werden Zeitstempel angezeigt und doppelte Einträge entfernt. Die Einstellungen werden in der Datei .bash_profile des Benutzers gespeichert:

export HISTTIMEFORMAT="%F %T "
export HISTCONTROL=erasedups

12. Zeilen mit Zeilennummern anzeigen

Ein Skript mostrar_lineas gibt alle nicht leeren Zeilen einer Datei mit Zeilennummer aus:

#!/bin/bash
clear
echo "Archivo: $1"
i=1
while read lin
do
  if test ! -z "$lin"
  then
    echo -e "$i\t$lin"
    i=$(expr $i + 1 | bc)
  fi
done < $1

13. Netzwerk-Konnektivität prüfen

Ein Unternehmen mit drei Filialen benötigt ein Skript tstip, das alle 5 Minuten die Erreichbarkeit der Filialen per Ping prüft. Die Ergebnisse werden in tstip_sucursales.log gespeichert. Die IP-Adressen stehen zeilenweise in einer Datei, die als Argument übergeben wird:

#!/bin/bash
clear
while true
do
  for ip in $(cat $1)
  do
    echo "+--------------------------------+" >> tstip_sucursales.log
    date +"%d-%m-%Y %T" >> tstip_sucursales.log
    ping -c 3 $ip >> tstip_sucursales.log
  done
  sleep 300
done

Herunterladen

PDF Word HTML