Benutzer-Werkzeuge

Webseiten-Werkzeuge


os4_unix_sh

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

os4_unix_sh [2016-04-12 22:50:01] – Externe Bearbeitung 127.0.0.1os4_unix_sh [2019-08-28 09:53:46] (aktuell) manfred
Zeile 1: Zeile 1:
 +                                         sh
 +  
 +  
 +   BACK ..
 +  
 +   nuetzliche SCRIPT-Routinen
 +   ==========================
 +  
 +  
 +  
 +   #------------------------------------------------------------------------------
 +   #
 +  
 +   In diesem Script schaltet man mit Hilfe von Variablen Kommandos ein, oder aus:
 +  
 +  
 +  
 +   #!/bin/sh
 +  
 +   SCHALTER="YES"
 +   #SCHALTER="NO"
 +  
 +  
 +  
 +   case $SCHALTER in
 +   [Yy][Ee][Ss])
 +           echo "YES Yes yes"
 +           ;;
 +   *)
 +           echo "kein 'YES' oder 'Yes' oder 'yes'"
 +           ;;
 +   esac
 +  
 +  
 +  
 +   case $SCHALTER in
 +   [Nn][Oo] | '')
 +           echo "'NO' oder 'No' oder 'no' oder 'nichts'"
 +           ;;
 +   *)
 +           echo "nicht leer, aber auch kein 'No'"
 +           ;;
 +   esac
 +  
 +   #------------------------------------------------------------------------------
 +   #
 +  
 +  
 +   AUSSCHNEIDEN von Zeichen:
 +   -------------------------
 +   Es soll das Zeichen [a] aus der Datei [textgatei.txt] ausgeschnitten werden:
 +  
 +   cat textdatei.txt | tr -d "a"
 +  
 +   Am besten mal ausprobieren, es ist ein interessantes Verhalten.
 +  
 +  
 +  
 +  
 +   ERSETZEN von Zeichen (die Anzahl der Zeichen wird nicht veraendert):
 +   --------------------------------------------------------------------
 +   Es soll das Zeichen [a] gegen das Zeichen [n] in der
 +   Datei [textgatei.txt] ausgetauscht werden:
 +  
 +   cat textdatei.txt | tr -s "a" "n"
 +  
 +   Am besten mal ausprobieren, es ist ein interessantes Verhalten.
 +  
 +  
 +  
 +  
 +   Konvertieren einer "*.csv"-Datei in "*.html"-Datei:
 +   --------------------------------------------------
 +  
 +   Aufgerufen wird das Script (csv2html.sh) wie folgt:
 +   # csv2html.sh  adressen.csv  >  adressen.html
 +  
 +   #------------------------------------------------------------------------------
 +   #
 +  
 +   #!/bin/sh
 +  
 +   #IFS=","
 +   IFS=";"
 +   #IFS="|"
 +  
 +   echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//DE">'
 +   echo ''
 +   echo '<HTML>'
 +   echo '<HEAD>'
 +   echo '<META NAME="GENERATOR" CONTENT="vi (FreeBSD)">'
 +   echo '<META NAME="CHANGEDBY" CONTENT="script">'
 +   echo '</HEAD>'
 +   echo '<STYLE><!--'
 +   echo 'BODY { font-family: "Helvetica"; font-size: 2 }'
 +   echo '--></STYLE>'
 +   echo '<BODY TEXT="#000000" BGCOLOR="#ffffff">'
 +   echo ''
 +   echo '<TABLE FRAME=VOID CELLSPACING=0 COLS=39 RULES=GROUPS BORDER=1>'
 +   echo ''
 +   echo '<TBODY>'
 +   echo ''
 +  
 +  
 +   ### hier werden die Zeilen einzeln eingelesen:
 +   cat $1 | (while read DATENZEILE
 +   do
 +  
 +       ### Zeilenanfang (HTML-Tabelle)
 +       echo "<TR>"
 +  
 +       ### die Spalten dieser Zeile werden hier geschrieben (HTML-Tabelle)
 +       for DATENZELLE in $DATENZEILE
 +       {
 +           if [ x$( echo "$DATENZELLE" | grep "@" ) != x ]
 +           then
 +                   echo "<TD ALIGN=LEFT><a href=\"mailtö$DATENZELLE\">$DATENZELLE</a></TD>"
 +           else
 +                   echo "<TD ALIGN=LEFT>$DATENZELLE</TD>"
 +           fi
 +       }
 +  
 +       ### Zeilenende (HTML-Tabelle)
 +       echo "</TR>"
 +   done)
 +  
 +   echo '</TBODY>'
 +   echo '</BODY>'
 +   echo '</HTML>'
 +  
 +   #------------------------------------------------------------------------------
 +   #
 +  
 +   Dieses Script findet den Port der eine bestimmte Datei installiert!
 +   -------------------------------------------------------------------
 +  
 +           Sie bekommen ein Programm nicht zum laufen oder es funktioniert eine
 +           Funktion nicht und sie haben durch die Ausgabe auf den Schirm oder
 +           in der Logdatei nur sehen koennen das eine bestimmte Datei nicht
 +           aufgerufen werden kann. Da "locate" diese Datei auch nicht findet ist
 +           sie mit Sicherheit auch nicht installiert. Jetzt muesste man wissen
 +           welcher Port installiert werden muss um das Problem zu beheben...
 +           Man kann es mit "% cd /usr/ports/ && make search key=Pretty.pm"
 +           versuchen, aber (bei mir) hat es nicht funktioniert.
 +           Da jeder Port eine Liste aller zu installierenden Dateien enthaelt
 +           kann dieses Script diese Listen nach dem gewuenschten Begriff/Datei
 +           durchsuchen. Wird zum Beispiel die Datei "Pretty.pm" gesucht, dann
 +           starten Sie das Script sö
 +  
 +           % find-file-in-ports.sh  Pretty.pm
 +  
 +           Jetzt kann das schon mal eine halbe Stunde dauern aber man muss nicht
 +           selber suchen wie ein wilder.    ;-)
 +           Die Ausgabe kann dann so aussehen:
 +  
 +           /usr/ports/lang/perl5/pkg-plist: lib/perl5/%%PERL_VER%%/CGI/Pretty.pm
 +           /usr/ports/www/p5-CGI.pm/pkg-plist: lib/perl5/site_perl/%%PERL_VER%%/CGI/Pretty.pm
 +           /usr/ports/x11-toolkits/p5-Tk/pkg-plist: lib/perl5/site_perl/%%PERL_VER%%/%%PERL_ARCH%%/Tk/Pretty.pm
 +  
 +           Das heisst, diese Datei wird von drei Ports installiert:
 +           - /usr/ports/lang/perl5/
 +           - /usr/ports/www/p5-CGI.pm/
 +           - /usr/ports/x11-toolkits/p5-Tk/
 +  
 +   #!/bin/sh
 +   ###############################################################################
 +   #
 +   #   find-file-in-ports.sh
 +   ###############################################################################
 +   #
 +   #
 +   if [ x$1 != x ]
 +   then
 +   #
 +   find /usr/ports/ -name pkg-plist | (while read plistfile
 +   do
 +           echo -n "$plistfile: "
 +           grep -i $1 $plistfile
 +           echo ""
 +   done) | grep "$1"
 +   else
 +           echo "Bitte den Suchbegriff als Parameter uebergeben!"
 +   fi
 +  
 +   #------------------------------------------------------------------------------
 +   #
 +  
 +   Wenn man eine Datei sucht in der etwas bestimmtes steht, aber man weiss nicht
 +   wo die Datei ist, dann kann man mit "grep -ri [Suchbegriff] *" suchen.
 +   Problematisch wird es bei sehr grossen und tiefen Verzeichnisbaemen, dann kann
 +   es schon mal vorkommen das grep aussteigt.
 +   In soeinem Fall hilft das folgende Script:
 +  
 +  
 +  
 +   #!/bin/sh
 +  
 +   ###############################################################################
 +   #
 +   # suchen.sh [pfad] [Suchbegriff]
 +   ###############################################################################
 +   #
 +  
 +   if [ x != x$2 ]
 +   then
 +    if [ x != x$1 ]
 +    then
 +  
 +           echo "suche in $1 nach $2 ..."
 +           find $1 -type f | ( while read spamfile ; do
 +           echo -n "$spamfile:   "
 +           cat $spamfile | grep -i $2
 +           echo ""
 +           done) | grep -i $2
 +    else
 +           echo "Sie haben die Parameter vergessen!"
 +           echo "suche.sh  [pfad]  [Suchbegriff]"
 +    fi
 +  
 +   else
 +           echo "Sie haben die Parameter nicht vollstaendig angegeben!"
 +           echo "suche.sh  [pfad]  [Suchbegriff]"
 +   fi
 +  
 +   #------------------------------------------------------------------------------
 +   #
 +  
 +  
 +   #!/bin/sh
 +   #
 +   ###############################################################################
 +   #
 +   # Dieses Script gibt den Inhalt einer TEXTDATEI neu organisiert aus.
 +   # Das Trennzeichen dafuer wird mit "IFS" definiert,
 +   # es kann auch ein Zeilenumbruch sein.
 +   #
 +   # z.B.::
 +   #
 +   #IFS="
 +   #"
 +   ###############################################################################
 +   #
 +   # Eine moegliche Beispieltextdatei:
 +   #------ Beispiel "text.txt" Beginn --------------------------------------------
 +   #Name: Mustermann
 +   #Telefon(privat): 0123-9876543
 +   #Telefon(Arbeit): 0321-6789543
 +   #Telefon(mobil): 0177-5678934
 +   #Adresse: Glatte-Strasse 3
 +   #Ort: Musterhausen
 +   #^
 +   #
 +   #Name: Schulz
 +   #
 +   #
 +   #Telefon: keines
 +   #
 +   #Adresse: Glatte-Strasse 45
 +   #Ort: Musterhausen
 +   #
 +   #^
 +   #Name: Rudi
 +   #
 +   #Telefon: 0163-3456789
 +   #Adresse: Glatte-Strasse 345
 +   #Ort: Musterhausen
 +   #
 +   #------ Beispiel "text.txt" Ende ----------------------------------------------
 +   ###############################################################################
 +   #
 +  
 +   IFS="^"
 +   TEXTDATEI="text.txt"
 +  
 +  
 +   for RECORD in `cat $TEXTDATEI`
 +   do
 +  
 +      DATA1=`echo "$RECORD" | grep "Name"`
 +      DATA2=`echo "$RECORD" | grep "Telefon"`
 +  
 +      echo "==================="
 +      echo "$DATA1  $DATA2"
 +      echo "-------------------"
 +  
 +   done
 +  
 +  
 +     [IMG]