All pastes #181078 Raw Edit

Mine

public shellscript v1 · immutable
#181078 ·published 2006-09-24 14:02 UTC
rendered paste body
#!/bin/sh## Hier kommt die Funktion usage(). Funktionen müssen VOR dem Hauptcode stehen.# Bash will nur wissen was es eben gibt. Code wird hier noch keiner ausgeführt!usage() {# Bitte erst main code lesen! (siehe unten)  echo "$0 [-d] [-r \"reg.ausdr\"] [directory]" >&2  echo "     -d  nur Verzeichnisse auflisten" >&2  echo "     -r  nur Verzeichnisse und Dateien, die durch reg. Ausdruck abgedeckt sind" >&2}## Hier kommt die Funktion baum(). Funktionen müssen VOR dem Hauptcode stehen.# Bash will nur wissen was es eben gibt. Code wird hier noch keiner ausgeführt!baum() # baum - fuer die graphische Baum-Ausgabe verantwortlich{# Bitte erst main code lesen! (siehe unten)   if [ ! -x "$1" ] ; then 	echo -e "-x\c ";  	exit;    fi                         cd $1      # Setzen der Positionsparameter mit allen Namen des Directories;   set -f    set "" `ls -a 2>/dev/null` || { echo -e "-r\c "; exit; }   shift   if [ $# -eq 2 ]; then  echo -e "-\c "; fi ; args="$*"; argus=""   if [ -n "$OPTION" ] # Abarbeiten der angegebenen Optionen    then      case $OPTION in         *d*) for i in $args              do                [ -d "$i" ] && argus="$argus $i"              done              args="$argus"              argus="";;      esac      case $OPTION in         *r*) for i in $args              do                if [ -d "$i" ] || case $i in                                    $ra) :;;                                      *) false;;                                  esac                then                   argus="$argus $i"                fi              done              args="$argus"              argus="";;      esac   fi   if [ -n "$args" ]   # Setzen der Positionsparameter mit den verbliebenen Dateien    then      set "" `ls -adF $args 2>/dev/null`    else      set ""   fi   shift  # Um ersten leeren Positionsparameter zu beseitigen   while [ -n "$2" ] # Ausgabe des graphischen Baumteils   do      if [ "$1" != "./" -a "$1" != "../" ]       then         echo "\n${striche}|----$1\c "         if [ -d "$1" ]; then (striche="${striche}|    "; baum $1 );  fi      fi      shift   done   if [ -n "$1" -a "$1" != "./" -a "$1" != "../" ]   then      if [ -d "$1" ]       then         echo -e "\n${striche}\`----$1\c "         striche="${striche}     "; baum $1       else         echo -e "\n${striche}\`----$1\n${striche}\c "      fi   fi}## MAIN CODE STARTtrap 'echo; exit' 0 1 2 3 15 # Trap wir ausgeführt wenn das Script ein signal 0,1,2,3 oder 15 erhält.## Hier die Auflistung:#trap -l# 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL# 5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE# 9) SIGKILL     10) SIGUSR1     11) SIGSEGV     12) SIGUSR2#13) SIGPIPE     14) SIGALRM     15) SIGTERM     16) SIGSTKFLT#17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP#21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU#25) SIGXFSZ     26) SIGVTALRM   27) SIGPROF     28) SIGWINCH#29) SIGIO       30) SIGPWR      31) SIGSYS      34) SIGRTMIN#35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3  38) SIGRTMIN+4#39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8##43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12#47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14#51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10#55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7  58) SIGRTMAX-6#59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2#63) SIGRTMAX-1  64) SIGRTMAXwhile getopts dr: opt       # Abarbeiten der angegebenen Optionendo   case $opt in ## hier werden die argumente wie z.b. -d und -r abgearbeitet bzw gefiltert.     d) OPTION="${OPTION}d";;  # $OPTION enthält hier z.b. "d"     r) OPTION="${OPTION}r";ra="$OPTARG";; # sollte die -r Option angegeben sein, wird der Suchausdruck mit an $ra rangehängt    \?) usage; exit 1;;   esac## Beispiel 1:#Aufruf: ./tree2.sh -r file#Inhalt der variable #$OPTION ist dann "r"#Inhalt von $ra ist dann "file"## Beispiel 1:#Aufruf: ./tree2.sh -d#Inhalt der variable#$OPTION ist dann "d"#Inhalt von $ra ist dann "NULL" bzw nix, leer, nada	   echo $OPTION $ra   exitdoneshift `expr $OPTIND - 1`dir=${1:-`pwd`}       # Bestimmen der Wurzel des auszugebenden Baumsif [ ! -d "$dir" ] ; then echo "$0: $dir ist kein Directory" >&2 ; exit 1 ; fiecho -e "$dir\c "baum $dir## MAIN CODE END