Ergebnis 1 bis 3 von 3
  1. #1
    Boskop
    Themenstarter

    Registriert
    12.2009
    Ort
    Sowas hab ich nich
    Alter
    19
    Beiträge
    204

    Terminal Ordner mit *.xcodeproj Datei anzeigen

    Hey,

    Ich bin gerade dabei ein kleines Script zu verbessern, das ich mal geschrieben hatte. Und zwar möchte ich eine Auswahl von XCode Projekten angezeigt bekommen. Meine Projekte sind nach dem Schema gespeichert:
    Code:
    ~/Documents/Projekte/$Projektname/$Projektname.xcodeproj
    Ich möchte in dem Programm eine Auswahl angezeigt bekommen, etwas so:
    Code:
    Verfügbare Projekte:
    1. Tetribble
    2. BlurWindow
    3. Würfel
    Um das zu realisieren habe ich mich mal mit dem find Befehl auseinander gesetzt. So weit bin ich gekommen:
    Code:
    #!/bin/sh
    cd Projekte
    x=0
    find . -type d -name '*' -exec x=$x+1; if [ -e "{}/*.xcodeproj" ] then echo "$x {}" fi \;
    Aber irgendwie will überhaupt nichts funktionieren. Die Nummerierung funktioniert nicht, genausowenig wie das if (was außerhalb von find komischerweise funktioniert) auch werden alle Unterverzeichnisse durchsucht obwohl ich nur in der 1. Verzeichnisebene bleiben möchte.

    Wäre echt nett, wenn mir da jemand helfen könnte
    iPhone 3GS 16GB
    MacBook Pro 13" (Mid '09)

  2. #2
    Charlamowsky Avatar von Rastafari
    Registriert
    03.2005
    Beiträge
    12.966
    Code:
    fldr="./././Projekte";
    # Zielordner definieren
    
    IFS=$'\n';
    # Shellinterne Trennzeichen "Space" und "Tab"
    # deaktivieren. Diese kommen häufig in Dateinamen
    # vor und stören beim folgenden Kommando.
    
    list=(  $(find -x "$fldr" -type f -depth 2 -iname '*.xcodeproj' 2>/dev/null)  );
    # Nach den Projektdateien suchen.
    # Im Zielordner und in allen direkten Unterordnern
    # (Suchtiefe 2)
    # Die als einzelne Zeilen präsentierten Ergebnisse werden
    # in Einzelworte getrennt, da das gesamte Kommando nicht
    # in Anführungszeichen gekapselt ist. Da jetzt aber nur noch das
    # Trennzeichen "newline" aktiv ist, wird nur noch dort getrennt
    # und jede volle Ergebniszeile wird zu einem einzelnen "Word".
    # (Spaces werden als normale Zeichen erkannt und splitten den Text nicht mehr)
    #
    # Das Resultat (die einzelnen Zeilen) werden als
    # Elemente der Array-Variablen "list[]" zugewiesen.
    # Schema:  name=( "X1" "X2" "X3" "X4" "Xn" )
    
    IFS=$' \t\n';
    # Feldtrenner Standardeinstellung wiederherstellen.
    # "Space-Tab-Newline" (Der Standard für "Whitespace")
    
    for ((x=0;x<${#list[*]};x++));
    do 
    # for ((...;...;...))
    # Zählschleife starten. Details:
    #
    # for ((x=0;...;...))
    # Erster Durchlauf mit Startwert für x=0
    #
    # for ((...;x<${#list[*]};...))
    # Schleifeninhalt ausführen, solange x kleiner als
    # die Anzahl der Elemente in der oben definierten
    # Feldvariable "list[]" bleibt. Feldvariablen werden
    # indiziert ab Element 0, "x" dient also gleichzeitig
    # als Zeiger auf das richtige Element.
    #
    # for ((...;...;x++))
    # Nach jedem Scheifendurchlauf "x" um eins erhöhen
    
      list[x]="$( dirname "${list[x]}" )";
    # Für Element "x" des Feldes "list[]" den abschliessenden
    # Dateinamen entfernen.
      list[x]="$( basename "${list[x]}" )";
    # Für Element "x" des Feldes "list[]" den Pfad
    # bis zum letzten Slash entfernen.
    # Ergebnis beider Aktionen: Der nackte Ordnername
    
    done;
    # Zählschleife schliessen
    
    select item in "${list[@]}";
    do
    # Numeriertes Auswahlmenü zeigen (select...)
    # Die Elemente des Menüs sind alle Elemente von list[]
    # separiert durch Leerzeichen. Das eigentlich ausgeführte
    # Kommando lautet also beispielsweise:
    # select item in "Projekt 1" "Projekt 2" "Projekt 3"; do
    # Details zu "select" unter "man bash"
    
      echo $REPLY "$item";
      # "$REPLY" enthält die bei "select" eingegebene Antwort (die Zahl)
      # "$item" wurde der Inhalt des dazugehörigen Elements zugewiesen
     
    done;
    # "select" abschliessen
    Geändert von Rastafari (17.08.2010 um 14:25 Uhr)

  3. #3
    Boskop
    Themenstarter

    Registriert
    12.2009
    Ort
    Sowas hab ich nich
    Alter
    19
    Beiträge
    204
    Okay...das sieht schon komplizierter aus! Vielen dank, aber meinst du, du könntest es noch ein wenig erläutern?
    iPhone 3GS 16GB
    MacBook Pro 13" (Mid '09)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •