OnkelDave hat geschrieben:@ Chrisbra und Meillo
Hab euch beiden erstmal zu meinen persöhnlichen shellgöttern aufgestuft!
Bitte nicht. Ich bin allergisch diesbezüglich.
Also im Ernst, durch eure Mühen konnt ich es zusammenbasteln
Das freut mich sehr.
(man hätte die beiden printf-befehle, glaube ich, auch zusammenfassen können, aber so ist etwas übersichtlicher für mich)
Nicht die kürzeste oder die performanteste Lösung ist die beste, sondern die einfachste, klarste und allgemeinste -- jedenfalls meiner Meinung nach. Somit sollte deine Aussage sich nicht wie eine Entschuldigung anhören; sie sollte sich stattdessen wie eine bewusste Entscheidung anhören. Dabei muss unsere Meinung nicht deiner Meinung entsprechen.
Allerdings gibt es meist gute Gründe weshalb erfahrene Programmierer bestimmte Dinge so tun wie sie sie tun. Was mir bei deinem Code auffällt: Newline-Zeichen sollten möglichst am Ende der Zeile stehen die sie beenden, und nicht am Anfang der nächsten. Ich möchte sagen folglich, fehlt am Ende deiner Ausgabe das Newline-Zeichen.
Logisch einfacher wird's wenn du jede Ausgabezeile mit einer Codezeile generierst die dann auch ein Newline-Zeichen am Ende enthält:
Code: Alles auswählen
echo "Gesamt:"
printf "Dateien\tGroesse\tVerzeichnis\n"
printf "%s\t%s\n" "$(find "$1" -type f | wc -l)" "$(du -sh "$1")"
Wenn du doch lieber zwei Zeilen hast, dann so (mit den Zeilenabschlüssen am Ende der Zeilen):
Code: Alles auswählen
echo "Gesamt:"
printf "Dateien\tGroesse\tVerzeichnis\n"
printf "%s\t" "$(find "$1" -type f | wc -l)"
printf "%s\n" "$(du -sh "$1")"
(Zudem: In der ersten Zeile fehlt das zweite Argument. Oder das `%s' ist zu viel.)
Verstehe die Anmerkungen als Tipps.