Seite 1 von 1

Praxisaufgabe Betriebssysteme

Verfasst: 18. Nov 2017, 14:58
von Bnjmn249
guten Tag
ich studiere im ersten Semester und habe eine Hausaufgabe in Betriebssysteme,die mir doch sehr Kopfzerbrechen bereitet

sie lautet

1. Pfad vom Heimatverzeichnis des aktuellen Nutzers als Variable V1 speichern

2.ermitteln in welchem Pfad sich das programm grep befindet und als Variable V2 speichern

3.Programm grep unter Verwendung der Variablen V1 und V2 in das aktuelle Heimatverzeichnis kopieren

4.kopiertes Programm grep unter Verwendung der erstellten Variablen in mygrep unbenennen

pro Aufgabe ist jeweils nur ein Befehl erlaubt

Eventuelle Lösung für den ersten Befehl von mir wäre: PATH=$PATH:/home/user export V1

vielleicht kann mir ja jemand weiter helfen :)

dankeschön

Re: Praxisaufgabe Betriebssysteme

Verfasst: 18. Nov 2017, 17:09
von marce
Sorry, aber Deine Hausaufgaben solltest Du schon selbst machen - also mal die Unterlagen, Mitschriebe und vorangegangene Übungsaufgaben durchsehen - die Lösungen stehen da sicherlich brauchbar erkennbar drin.

Re: Praxisaufgabe Betriebssysteme

Verfasst: 18. Nov 2017, 22:51
von abgdf

Code: Alles auswählen

#!/usr/bin/perl

use warnings;
use strict;

use File::HomeDir;
use File::Copy;

my $V1 = File::HomeDir->my_home();
my $V2 = `which grep`;
chomp $V2;

copy($V2, $V1);
move("$V1/grep", "$V1/mygrep");

system("ls ~");
unlink("$V1/mygrep");
print "\n";
system("ls ~");
;)

Re: Praxisaufgabe Betriebssysteme

Verfasst: 19. Nov 2017, 13:27
von Dirk.M
Jawoll,

jetzt kennt er die Befehle, hat aber nichts verstanden.

Studieren heißt Zusammenhänge zu erkennen, zu hinterfragen, zu verstehen und auf andere Probleme anzuwenden.

Suche dir einen anderen Beruf.

Gruß

Dirk

Re: Praxisaufgabe Betriebssysteme

Verfasst: 19. Nov 2017, 14:41
von Gräfin Klara
Bnjmn249 hat geschrieben:
18. Nov 2017, 14:58
1. Pfad vom Heimatverzeichnis des aktuellen Nutzers als Variable V1 speichern
Normalerweise steht dieser Pfad in der Systemvariable $HOME. Also
# V1="$HOME"
sollte genügen. Doch nicht auf allen Systemen ist $HOME vorhanden und in chroot würde $HOME nicht funktionieren.
Deshalb:
# V1="$(echo ~)"
Bnjmn249 hat geschrieben:
18. Nov 2017, 14:58
2.ermitteln in welchem Pfad sich das programm grep befindet und als Variable V2 speichern
Diese Aufgabe ist nicht wirklich einfach zu lösen, da nur EIN Befehl als Vorgabe besteht und der Pfad die Aufgabenstellung ist.
Ich gehe nun davon aus, dass damit eine Befehlszeile gemeint ist. Deshalb:
# V2="$(dirname $(type -P grep))"
whereis sollte nicht verwendet werden, da in Systemen, die den PATH zusammenfügen, z.B. PATH=$PATH;... whereis nicht mehr funktioniert.
Bnjmn249 hat geschrieben:
18. Nov 2017, 14:58
3.Programm grep unter Verwendung der Variablen V1 und V2 in das aktuelle Heimatverzeichnis kopieren
4.kopiertes Programm grep unter Verwendung der erstellten Variablen in mygrep unbenennen
Der Rest ist simpel. Wir warnen vor Überschreiben und Achten auf die Berechtigungen
# cp -ip "$V2/grep" "$V1"
# mv -i "$V1/grep" "$V1/mygrep"

Gruß
Gräfin Klara

Re: Praxisaufgabe Betriebssysteme

Verfasst: 20. Nov 2017, 00:32
von abgdf
Dirk.M hat geschrieben:
19. Nov 2017, 13:27
Jawoll,

jetzt kennt er die Befehle, hat aber nichts verstanden.
So sollte es sein. Ich wollte ihm bewußt keine verwendbare (bash-)Lösung vorgeben.

Re: Praxisaufgabe Betriebssysteme

Verfasst: 22. Nov 2017, 21:16
von spoensche
Gräfin Klara hat geschrieben:
19. Nov 2017, 14:41

whereis sollte nicht verwendet werden, da in Systemen, die den PATH zusammenfügen, z.B. PATH=$PATH;... whereis nicht mehr funktioniert.
Dann dürfte whereis bei dir, bei mir, kurzum bei jeder Distri nicht mehr funktionieren. Whereis oder which suchen in den mittels PATH angegebenen Verzeichnissen ob dort ein Programm mit dem mitgegebenem Namen existiert.

whereis ermittelt neben dem Binärprogramm zusätzlich auch die Manpage usw. Das ist der Unterschied zwischen whereis und which.

Code: Alles auswählen

V2=$(which grep)
passt also in 99,9% der Fälle.

Re: Praxisaufgabe Betriebssysteme

Verfasst: 27. Nov 2017, 19:35
von framp

Code: Alles auswählen

V2=$(find / -name grep 2>/dev/null)
sollte dann wohl 100% abdecken :D

Re: Praxisaufgabe Betriebssysteme

Verfasst: 27. Nov 2017, 23:47
von abgdf
which grep?

Re: Praxisaufgabe Betriebssysteme

Verfasst: 28. Nov 2017, 06:53
von marce
Hm. Sonderlich Interesse scheint der TE an den Antworten nicht zu haben:

Code: Alles auswählen

Benutzer-Statistik

Registriert:
    18. Nov 2017, 15:48
Letzte Aktivität:
    18. Nov 2017, 17:22
... das ist noch vor der ersten Antwort.

Re: Praxisaufgabe Betriebssysteme

Verfasst: 29. Nov 2017, 11:18
von Gräfin Klara
spoensche hat geschrieben:
22. Nov 2017, 21:16

Code: Alles auswählen

V2=$(which grep)
framp hat geschrieben:
27. Nov 2017, 19:35

Code: Alles auswählen

V2=$(find / -name grep 2>/dev/null)
Pflichtkurs nicht bestanden!
Die Aufgabe lautet: PFAD mit einem Befehl.
Nocheinmal von vorne bitte, sonst streiche ich euch das Leistungsstipendium.

Re: Praxisaufgabe Betriebssysteme

Verfasst: 29. Nov 2017, 19:28
von abgdf
Gräfin Klara hat geschrieben:
29. Nov 2017, 11:18
Pflichtkurs nicht bestanden!
Die Aufgabe lautet: PFAD mit einem Befehl.
Nocheinmal von vorne bitte, sonst streiche ich euch das Leistungsstipendium.
:???: Ich verstehe Deinen Einwand nicht so recht.

Code: Alles auswählen

dirname $(which grep)
besser?

Das ist manchmal ganz seltsam in Programmierforen, insbesondere im Python-Forum. Da wird sich nicht selten heftigst um Kleinigkeiten in den Grundlagen gestritten (so daß ich schließlich sogar gegangen bin, was eigentlich ziemlich absurd ist). Dabei ist das für Programme ganz unwichtig.
Der Lehrer will hier doch darauf hinaus, daß "grep" aus dem System nach "~" kopiert werden soll. Also muß man "grep" finden. Das macht "which". Also bringt einen das dahin, wohin man will. Ich sehe da keine weiteren Probleme.

An der Fernuni war es auch lustig: Da war eine superschwere Sortieraufgabe. Ich bin da so 'rangegangen, daß ich erst einen Prototyp in Python (und Perl) dazu gemacht hab', und das dann in das geforderte Pascal übertragen hab'. Dabei mußte die Perl-Funktion "splice()", die schon nicht mal leicht zu benutzen ist, in Pascal neu implementiert werden. Also nicht einfach.
Der Korrektor fand meine Lösung auch ziemlich gut, weil sie sauber in Funktionen (bzw. Prozeduren) gegliedert war. Und dann hat er mir einen Punkt abgezogen, weil ich zum Hochzählen irgendwo einen Integer benutzt hab'. Und Integer in Pascal nur eine begrenzten Wert erreichen können.
Das stimmt, ist aber ein lächerlicher Einwand. Zumal es im Kurs auch gar nicht darum ging, wirklich Pascal zu lernen. Na ja.

Re: Praxisaufgabe Betriebssysteme

Verfasst: 7. Mai 2018, 22:36
von uhelp
Mensch Framp!!!

Was machst du, wenn dein find erst tatsächlich das Binärprogramm "grep" findet, danach aber ein Lehrvideo von YouPr0n, das mit dem Namen "grep" getarnt wurde? Hä?
Das arme grep!