ubuntuusers.de

HELP: bash-Schellscript, ausgabe aller Dateien im Directory

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

helpme20

Anmeldungsdatum:
28. April 2010

Beiträge: Zähle...

HELP: bash-Schellscript, ausgabe aller Dateien im Directory

Ein Shell-Skript dient zur Automatisierung von Vorgängen, die aus vielen Kommandos bestehen. Unter Linux ist es verbreitet, den Kommandozeileninterpreter (Shell) "bash" zu verwenden. Die bash ist gewöhnlich das Programm, das unsere eingetippten Kommandos ausführt.

Wie schreibe ich ein bash-Shellscript, welches im aktuellen Directory für alle Dateien ausgibt, ob die Datei ein Verzeichnis ist oder nicht und welche Zugriffsrechte darauf bestehen.

Hinweise: echo zur Ausgabe von Texten, man test, if [ Bedingung ], man bash (Suchen nach dem if-Befehl mit /elif).

Ich möchte ein Shellskript mit den Namen exercise.sh ablegen.

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

Hat jemand eine Ahnung was ich in dem Shell-Skript schreiben muss??? Helft mir bitte...

Vielen Dank!

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Hi helpme20,

willkommen auf dem Forum !

Das was Du da schreibst ist noch etwas diffus ...
Was willst Du denn mit der Liste machen ? - soll sie weiter verarbeitet werden ?

Wenn Du nur Hinweise haben möchtest wo Du Dich einlesen kannst,
dann hilft Dir sicherlich dies erstmal weiter: http://ubuntuusers.de/user/track/#Scripten

Ansonsten müsstest Du etwas konkreter werden.

LG,

track

p.s.: Wenn Du hier Code oder Text posten willst, der nicht "zurechtformatiert" werden soll, brauchst Du dafür einen "Codeblock", Knöpfchen

Ungültiges Makro

Dieses Makro ist nicht verfügbar

oben.

helpme20

(Themenstarter)

Anmeldungsdatum:
28. April 2010

Beiträge: 8

Ich möchte ein Shell-Skript (.sh) das mir folgende Informationen ausgibt, wenn es ausgeführt wird.

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 /

Das System soll es selbst über das Shell-Skrip erkennen, dann ausführen und das oben ausgeben...

Kannst du mir helfen? Kennst du evtl. die Befehle hierfür?

Bearbeitet von redknight:

Fullquote entfernt, weil unnötig. Bitte verzichte zukünftig auf Komplettformatierung deines Textes und benutz Codeblöcke

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Ich mag mich nicht anschreien lassen. Auch nicht im richtigen Leben.

Wenn Du nicht genauer sagen magst was Du möchtest kann ich Dir nicht weiter helfen.
(und will es auch nicht)

track

helpme20

(Themenstarter)

Anmeldungsdatum:
28. April 2010

Beiträge: 8

Wieso anschreien? Wie kommst du jetzt auf sowas...? Das ist nicht meine Art, und falls du dich von mir irgendwie angegriffen fühlst, sorry, aber ich versteh echt nicht wie du jetzt auf sowas kommst..., egal...

Ich hätte sehr gerne gewusst, was ich in einem Shell-Script schreiben muss, um folgende Ausgabe zu erhalten:

Bsp.:

exercise.sh ist eine normale Datei /
Zugriffsrechte: rw-r--r-- /
Documents ist ein Verzeichnis /
Zugriffsrechte: rwxr-xr-x /

Das Shell-Skript soll ausgeben, um was für eine Datei es sich handelt, normale Datei oder Verzeichnis, wie oben beschrieben, zudem sollen auch die Zugriffsrechte ausgegeben werden.

Bearbeitet von redknight:

And again

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Möchtest Du eine Liste aller Dateien bekommen, ähnlich wie bei einem ls -l im Terminal ?
(Nur dann anders formatiert ?)

Und wird die Liste noch irgendwie weiter verarbeitet, oder soll sie nur angezeigt werden ?

track

Vain

Avatar von Vain

Anmeldungsdatum:
12. April 2008

Beiträge: 2510

helpme20 schrieb:

Wieso anschreien? Wie kommst du jetzt auf sowas...?

Es geht darum, dass du in fetten Buchstaben schreibst/schriebst, was immer etwas aggressiv wirkt. 😉

Da sich die Problemstellung wie eine Übungsaufgabe liest (weswegen du wahrscheinlich nicht einfach ls benutzen kannst, oder?), mag ich dir jetzt nicht den Spaß verderben und sie für dich lösen. ☺ Trotzdem ein paar Anreize:

So kannst du über alle Dateien im aktuellen Verzeichnis iterieren:

1
2
3
4
for i in *
do
	echo Name der Datei: "$i"
done

So könntest du testen, ob eine Datei ausführbar oder lesbar ist:

1
2
3
4
5
6
7
8
9
if [ -x "/pfad/zur/Datei" ]
then
	echo Datei existiert und ist ausführbar.
fi

if [ -r "/pfad/zur/Datei" ]
then
	echo Datei existiert und ist lesbar.
fi

Grundlegende Infos zum Skripten hat track ganz oben schon verlinkt. Wenn du also überhaupt keine Ahnung hast, was los ist, dann fang am besten damit an, dich dort mal einzulesen. Ansonsten hast du selbst schon gepostet, wo noch nützliche Informationen stehen (man test, man bash, ...).

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

... und eine ziemlich saubere Methode um die Rechtemaske abzufragen ist der Befehl stat:

stat -c %A   "$i"

(um in dem Beispiel von vain zu bleiben)

In der Rechtemaske bezeichnet der erste Buchstabe immer die "Dateiart", wie hier beschrieben: http://wiki.ubuntuusers.de/Rechte#Rechte-in-symbolischer-Darstellung
wobei vor allem "-" für gewöhnliche Dateien, "d" für Verzeichnisse und "l" (klein L) für Links vorkommen.

Und Du könntest ja z.B. den betreffenden Buchstaben mit Hilfe von sed (→ http://www.tty1.net/sed-tutorium/sed-tutorium.html )
in die passende Prosa umsetzen lassen ...

Aber damit haben wir Dir jetzt schon alle Bausteine auf einem Tablett angereicht. 😉

track

helpme20

(Themenstarter)

Anmeldungsdatum:
28. April 2010

Beiträge: 8

Ich habe es fett gemacht, damit man meinen Text nicht übersehen kann, ich bin neu hier. Es schafft eine schnelle Übersicht!

Bearbeitet von redknight:

Erneut Fullquote und Fettdruck entfernt.

redknight Team-Icon

Moderator & Supporter
Avatar von redknight

Anmeldungsdatum:
30. Oktober 2008

Beiträge: 21846

Wohnort: Lorchhausen im schönen Rheingau

Ich fordere dich nun erneut auf, auf unnötige Formatierungen und Fullquotes zu verzichten. Das gebieten die Netiquette allgemein und die Forenregeln im speziellen.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17620

Wohnort: Berlin

Sieht sehr nach einer Hausaufgabe aus, mit klarer Eingrenzung was erlaubt/erwartet/empfohlen wird:

  • echo zur Ausgabe von Texten,

  • man test,

  • if [ Bedingung ],

  • man bash (Suchen nach dem if-Befehl mit /elif).

Also nicht "eine richtige Scriptsprache verwenden" ☺ - huhu. (Insiderwitz.)

Wie schreibe ich ein bash-Shellscript, welches im aktuellen Directory für alle Dateien ausgibt, ob die Datei ein Verzeichnis ist oder nicht und welche Zugriffsrechte darauf bestehen.

Tja - das sind ja 3 Aufgaben in einer:

  • alle Dateien ausgeben (also nicht deren Inhalt, sondern den Namen usw.)

  • ist eine Datei ein Verzeichnis?

  • welche Zugriffsrechte gibt es.

Wo hast Du denn Schwierigkeiten, und was kannst Du alleine?

helpme20

(Themenstarter)

Anmeldungsdatum:
28. April 2010

Beiträge: 8

Ich tu es mir in der Shell-Programmierung schwer, es ist NEULAND. Wäre toll, wenn du evtl. eine passende Lösung für diese Aufgabe hast. ☺

user unknown schrieb:

Sieht sehr nach einer Hausaufgabe aus, mit klarer Eingrenzung was erlaubt/erwartet/empfohlen wird:

  • echo zur Ausgabe von Texten,

  • man test,

  • if [ Bedingung ],

  • man bash (Suchen nach dem if-Befehl mit /elif).

Also nicht "eine richtige Scriptsprache verwenden" ☺ - huhu. (Insiderwitz.)

Wie schreibe ich ein bash-Shellscript, welches im aktuellen Directory für alle Dateien ausgibt, ob die Datei ein Verzeichnis ist oder nicht und welche Zugriffsrechte darauf bestehen.

Tja - das sind ja 3 Aufgaben in einer:

  • alle Dateien ausgeben (also nicht deren Inhalt, sondern den Namen usw.)

  • ist eine Datei ein Verzeichnis?

  • welche Zugriffsrechte gibt es.

Wo hast Du denn Schwierigkeiten, und was kannst Du alleine?

helpme20

(Themenstarter)

Anmeldungsdatum:
28. April 2010

Beiträge: 8

Hey, danke, kannst du mir sagen, wie ich das jetzt einbinde? Muss ich eine Datei erstellen im Verzeichnis, damit dann erkannt wird ob es eine Datei ist oder nicht? wie soll ich diese bennen und wie ist die endung (.c oder .sh)...

ist der code zu der aufgabe überhaupt korrekt? ich habe echt schwierigkeite mit dieser aufgabe... ☹

Bearbeitet von jug:

Immer wieder TOFU

helpme20

(Themenstarter)

Anmeldungsdatum:
28. April 2010

Beiträge: 8

Hallo ich habe leider immer noch das Problem, dass ich diese Aufgabe nicht alleine lösen kann, Shell-Programmierung ist für mich NEULAND. Ich bin ein absoluter NEULING in der Programmierung... Kannst du mir diese Aufgabe nicht lösen, es ist wirklich nur diese Aufgabe, es folgt danach evtl. noch ein kleiner Aufbau, für dich scheint es sich leicht anzuhören, für mich ist es echt blöd. ☺

Hier habe ich es noch einmal in dem Forum etwas formeller geschrieben: http://forum.ubuntuusers.de/topic/aufgabe-loesen/

Please help me! ☺

Bearbeitet von jug:

Schon wieder TOFU

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Du schmierst uns hier Mus um den Bart, aber hast selber noch nicht eine Zeile Code selber geschrieben.

Was soll das ? Wir helfen ja gerne, aber ein Dienstleistungskombinat zur Erledigung fremder Aufgaben sind wir ja nun nicht.
Ganz oben hatte ich Dir einen Link gegeben, wo Du Dich einlesen kannst.

Hier gebe ich Dir noch einmal ganz konkret meine Links:

* Einführung auf deutsch:   von der TFH Berlin, den Linux-Services oder im Wiki für Anfänger

Ich erwarte, dass Du anhand einer dieser Anleitungen selber anfängst Dein Skript zu schreiben. Wenn Du deine ersten 5 Zeilen eigenen Code fertig hast, sehen wir mal weiter. Genügend ganz konkrete Tips haben wir Dir ja oben schon gegeben. Nun bist Du an der Reihe.

LG,

track

Antworten |