ubuntuusers.de

HELP: bash-Schellscript, ausgabe aller Dateien im Directory

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

Antiqua Team-Icon

Avatar von Antiqua

Anmeldungsdatum:
30. Dezember 2008

Beiträge: 4534

@helpme20

lies dir bitte folgendes durch: Shell/Bash-Skripting-Guide für Anfänger
da dürfte erstmal alles wichtige für den Anfang drinnstehen.

Aber trotzdem in Kurzform: (ja, mir ist gerade langweillig 😉)

Du öffnest ein Terminal. Du befindest dich dann darin automatisch in deinem home-Verzeichnis. Alles folgende in den grauen Kästchen ist als Eingabe in das Terminal gedacht.

  • jetzt legst du dir am besten einen Ordner an:

    mkdir Scripte
  • du wechselst in den neuen Ordner;

    cd Scripte
  • da legst du jetzt eine neue Datei schon mit passendem Shebang an, ich nenne sie mal uebung_01:

    echo "#! /bin/bash" > uebung_01
  • und machst die ausführbar:

    chmod +x uebung_01
  • nun kannst du die bis auf den Shebang leere Datei mit gedit öffnen und bearbeiten:

    gedit uebung_01
  • wenn du fertig bist, speicherst du und beendest dann gedit.

  • dann startest du das neue bash-Script:

    ./uebung_01

sei vorsichtig mit Befehlen in deinem Script, lies dir am besten von jedem verwendeten Befehl zuerst die man-Page durch. Die man-Page der bash ( man bash ) ist zwar elend lange, aber auch sehr informativ. Die Bedienung des so genannten Pagers, der die man-Pages darstellt, steht auch im Wikiartikel zu man.

Auch google ist gut für die Recherche. Allgemeine Links zu bash-Script-Informationen haben dir andere Benutzer (z.B. track in seinem ersten Posting und grade eben 😉) auch schon gegeben.

Viel Spaß nach.


PS: das mit dem möglichsten vermeiden sogenannter Fullquotes hat dir ja redknight schon nahegelegt. Es macht das Forum einfach besser lesbar, wenn nicht immer der ganze Text des Vorposters mitkopiert wird.


PSPS: fast alles unterstrichene in meinem Posting sind links 😉

kopf-basher

Anmeldungsdatum:
10. April 2010

Beiträge: 110

nur mal so als tip, helpme20, wenn du in Zukunft in die Lösung deiner Probleme nur halb so viel Zeit stecken würdest, wie in den Versuch deine Probleme von anderen lösen zu lassen, wärst du mit Sicherheit von grossem Erfolg gekrönt. 😉

Noch ein paar Tipps zur Benutzung dieses Forums:

  1. Wenn deine Eingaben mehr als einmal von einem Moderator verändert wurden, ändere deinen Schreibstil.

  2. Doppelpost sind schlecht. Doppelpost von der selben Person sind grausam.

  3. Dieses Forum hilft bei der Lösung von Problemen, nicht aber bei deinen Hausaufgaben.

  4. Wenn dir jemand dazu rät eine gewisse Website zu besuchen, um dir bei deinem Problem zu helfen, lies dir die Seite zumindest durch, bevor du weiterfragst

und noch ein Tipp für Linux generell: wer nur fragt und nicht selbst probiert wird unter Linux nicht weit kommen. schreib doch einfach mal ein einfaches bash skript nach und führ es aus (zum Beispiel ein 'hallo Welt' Skript). Die Bash kann echt Spass machen, man muss sich aber mit ihr, wie mit vielen anderen Dingen, auseinandersetzen.

P.S. Wenn man sich schon in einem anderen Forum über dich beschwert, mach in einem anderen nicht den selben Fehler nochmal.

Bearbeitet von redknight:

Listenstruktur angepasst *scnr*

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Die Aufgabenstellung ist übrigens eine Übungsaufgabe zur aktuellen Vorlesung "Linux-Programmierung" der SRH (FH) Heidelberg:
http://wwwfh.fh-heidelberg.de/homeister/linux06/linux_prg_dh_skript06.html (dass es sowas gibt ?!)

Ich finde es interessant, wie ähnlich die Reaktionen von ganz verschiedenen Foren darauf sind: http://c-plusplus.de/forum/viewtopic-var-t-is-263502.html und http://forum.ubuntuusers.de/topic/aufgabe-loesen/

helpme20: ich wäre neugierig, was Du "in Real Life" für ein Mensch bist. Denn die Idee, mit einer Übungsaufgabe so auf die Foren zu plautzen ist ja schon lustig.

LG,

track

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Jetzt ist Pfingsten vorbei, das Semester auch schon fast, draußen ist schönes Wetter und mich sticht der Hafer.

Also genau die richtige Zeit, hier mal eine Musterlösung zu veröffentlichen. Ein wenig Sarkasmus ?
Nun ja, bei dem hier gebotenen Programm vielleicht verständlich. ☺


Nehmen wir also das Handwerkszeug, das wir schon ganz ganz oben vorgeschlagen haben:

  1. eine for- Schleife um die Dateien abzuklappern:

    for f in ./.* ./*; do
  2. eine stat- Abfrage um für jede Datei die Rechtemaske abzurufen, passend formatiert:

    	stat -c "${f#*/}  ist ein/%A" "$f" | \
  3. einen sed- Filter um die Dateiart-Kennung aus der Rechtemaske in Prosa umzuwandeln:

    	sed 's/\/-/e normale Datei\//;s/\/d/ Verzeichnis\//;s/\/l/ Link\//;s/\//\nZugriffsrechte: /;'
  4. fertig.

    	done

Und dann noch alles schön hintereinander in den Editor getippt, und fertig ist das Skript:

#!/bin/bash

# Ein Shell-Skript dient zur Automatisierung von Vorgängen, die aus vielen Kommandos bestehen. 
echo	"Oh ja, das ist interssant."				> /dev/null
# Unter Linux ist es verbreitet, den Kommandozeileninterpreter (Shell) "bash" zu verwenden. 
# Die bash ist gewöhnlich das Programm, das unsere eingetippten Kommandos ausführt.
echo	"Ist das das da oben ?"					> /dev/null

# Schreiben Sie ein bash-Shellscript, 
echo	"Schreiben oder schreiben lassen ?"			> /dev/null
# welches im aktuellen Directory für alle Dateien ausgibt, ob die Datei ein Verzeichnis ist oder nicht 
# und welche Zugriffsrechte darauf bestehen. 
for f in ./.* ./*; do
	stat -c "${f#*/}  ist ein/%A" "$f" | \
	sed 's/\/-/e normale Datei\//;s/\/d/ Verzeichnis\//;s/\/l/ Link\//;s/\//\nZugriffsrechte: /;'
	done

# Hinweise: echo zur Ausgabe von Texten, man test, if [ Bedingung ], man bash (Suchen nach dem if-Befehl mit /elif).
echo	"Ich glaub, die muss ich mir mal ansehen."		> /dev/null

# Legen Sie Ihr Shellsckript unter ~/exercises/10/exercise.sh ab.
mkdir -p ~/exercises/10
[ -f ~/exercises/10/exercise.sh ] || cp "$0" ~/exercises/10/exercise.sh

# Die Ausgabe soll entsprechend dem folgenden Beispiel aussehen:
#   exercise.sh ist eine normale Datei
#   Zugriffsrechte: rw-r--r--
#   Documents ist ein Verzeichnis
#   Zugriffsrechte: rwxr-xr-x
echo	"Na, das klappt schon. Schöne Grüße von <track>  ;-)"	> /dev/null

Übrigens bin ich ein netter Mensch. Das Skript kopiert sich zwar selbst in den verlangten Ordner, aber wenn jemand seine Hausaufgaben vorher schon gemacht hat und dort bereits ein gleichnamiges Skript vorhanden ist, wird das natürlich nicht übergebügelt. Der Fleiß wird schließlich geachtet. 😀

Liebe Grüße und einen schönen Sommer,

track

exercise.sh (1.4 KiB)
Download exercise.sh
Antworten |