Programm zur Semigrafischen Darstellung der Directory-Baumstruktur

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von m_f_5, 08.01.2009.

  1. m_f_5

    m_f_5 Grünschnabel

    Dabei seit:
    08.01.2009
    Beiträge:
    1
    Zustimmungen:
    0
    Guten Tag =)

    Ich such seit Tagen für die folgende Aufgaben, die wir an der FH lösen sollen eine Lösung. Da keiner meiner Komilitonen eine Ahnung hat bzw kein wirkliches Wissen über Unix/Shell besitzt um diese Aufgabe zulösen frage ich(wir) euch nach Ansätzen um diese Aufgabe zulösen. Viel lieber wär mir(uns) eine komplett Lösung(die nicht zu 100% richtig sein muss).

    Huh

    Hier die Aufgabe:

    Es soll ein Shell-Programm entwickelt werden, das beim Aufruf die Baumstruktur des angegebenen Directories ausgibt. (ähnlich, wie das DOS-Kommando "tree")

    Name des Programms: baum

    Aufruf: baum [pfad]
    a) ohne Parameter:
    Ausgangspunkt ist das aktuelle Directory
    b) mit Parameter "pfad":
    Ausgangspunkt ist das durch "pfad" definierte Directory

    Beispiel:
    $baum $HOME
    /home/unix1010 (* Ausgangs-Directory *)
    |--team1 (* Ebene 1 *)
    | |-- spezi (* Ebene 2 *)
    | |-- java
    | | |--lbis (* Ebene 3 *)
    | | |--exe
    | |--cpp
    | |--c_prog
    | | |--lbis
    | | |--exe
    | | | |-old (* Ebene 4 *)
    |--team2
    | |
    usw.

    Hinweise
    - Die Aufgabe kann z.B. durch rekursiven Aufruf eines Unterprogramms oder durch Anwendung des Kommandos ls -R gelöst werden.
    - Mit Hilfen des Kommandos cut können einzelne Teile aus einer Zeile entnommen werden.
    - Die in dem Beispiel enthaltenen Kommantare (*...*) werden nicht ausgegeben.

    Zudem dürfen wir nur Unix-Standardbefehle benutzen und auch keine eigenen in C programmieren. Die Programme find und set dürfen wir auch nicht benutzen. Eingabefehler sollen auch noch so wiet wie möglich abgefangen werden =P

    Wir würden uns über jede Hilfe freuen. :)
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. maxix

    maxix Eroberer

    Dabei seit:
    16.03.2006
    Beiträge:
    74
    Zustimmungen:
    0
    Vielleicht hiflt euch dies:

    Code:
    #!/bin/bash
    # tree.sh
    
    #  Written by Rick Boivie. Used with permission.
    #  This is a revised and simplified version of a script
    #  by Jordi Sanfeliu (and patched by Ian Kjos).
    #  This script replaces the earlier version used in
    #  previous releases of the Advanced Bash Scripting 
    # Guide.
    
    # ==> Comments added by the author of this document.
    
    
    search () {
    for dir in `echo *`
    #  ==> `echo *` lists all the files in current working directory,
    #+ ==> without line breaks.
    #  ==> Similar effect to for dir in *
    #  ==> but "dir in `echo *`" will not handle filenames with blanks.
    do
      if [ -d "$dir" ] ; then # ==> If it is a directory (-d)...
      zz=0                    # ==> Temp variable, keeping track of directory level.
      while [ $zz != $1 ]     # Keep track of inner nested loop.
        do
          echo -n "| "        # ==> Display vertical connector symbol,
                              # ==> with 2 spaces & no line feed in order to indent.
          zz=`expr $zz + 1`   # ==> Increment zz.
        done
    
        if [ -L "$dir" ] ; then # ==> If directory is a symbolic link...
          echo "+---$dir" `ls -l $dir | sed 's/^.*'$dir' //'`
          # ==> Display horiz. connector and list directory name, but...
          # ==> delete date/time part of long listing.
        else
          echo "+---$dir"       # ==> Display horizontal connector symbol...
          # ==> and print directory name.
          numdirs=`expr $numdirs + 1` # ==> Increment directory count.
          if cd "$dir" ; then # ==> If can move to subdirectory...
            search `expr $1 + 1` # with recursion ;-)
            # ==> Function calls itself.
            cd ..
          fi
        fi
      fi
    done
    }
    
    if [ $# != 0 ] ; then
      cd $1 # move to indicated directory.
      #else # stay in current directory
    fi
    
    echo "Initial directory = `pwd`"
    numdirs=0
    
    search 0
    echo "Total directories = $numdirs"
    
    exit 0
    
    
    
     
  4. #3 Bâshgob, 08.01.2009
    Bâshgob

    Bâshgob freies Radikal

    Dabei seit:
    29.07.2004
    Beiträge:
    2.334
    Zustimmungen:
    0
    Ort:
    Hannover
Thema:

Programm zur Semigrafischen Darstellung der Directory-Baumstruktur

Die Seite wird geladen...

Programm zur Semigrafischen Darstellung der Directory-Baumstruktur - Ähnliche Themen

  1. Programm zur Semigrafischen Darstellung der Directory-Baumstruktur

    Programm zur Semigrafischen Darstellung der Directory-Baumstruktur: Guten Tag =) Ich such seit Tagen für die folgende Aufgaben, die wir an der FH lösen sollen eine Lösung. Da keiner meiner Komilitonen eine...
  2. Welche Distri für Programming from the Ground Up

    Welche Distri für Programming from the Ground Up: Hallo! Ich möchter gerne das Buch Programming from the Ground Up durcharbeiten. savannah_nongnu_org/projects/pgubook/ Da geht es um Programmieren...
  3. Externes Programm mit Script ausführen?

    Externes Programm mit Script ausführen?: Hallo, ich würde gern ein Script zum klonen von festplatten schreiben z.B. mit dem Programm Mondo Rescue. Ist es möglich externen Programmen...
  4. Jetbrains gibt JVM-Programmiersprache Kotlin 1.0 frei

    Jetbrains gibt JVM-Programmiersprache Kotlin 1.0 frei: Jetbrains, Entwickler der freien Entwicklungsumgebung für Java, Grails und einige andere Programmiersprachen IntelliJ IDEA, hat die selbst...
  5. Programm der Chemnitzer Linux-Tage 2016 steht

    Programm der Chemnitzer Linux-Tage 2016 steht: Am Wochenende des 19. und 20. März steht Chemnitz, oder genauer gesagt die TU Chemnitz, wieder ganz im Zeichen des Tux. Nun haben die...