• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Praxisaufgabe Betriebssysteme

Bnjmn249

Newbie
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
 

marce

Guru
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.
 

abgdf

Guru
Code:
#!/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 ~");
;)
 

Dirk.M

Newbie
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
 
Bnjmn249 schrieb:
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 schrieb:
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 schrieb:
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
 

spoensche

Moderator
Teammitglied
Gräfin Klara schrieb:
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:
V2=$(which grep)

passt also in 99,9% der Fälle.
 

marce

Guru
Hm. Sonderlich Interesse scheint der TE an den Antworten nicht zu haben:
Code:
Benutzer-Statistik

Registriert:
    18. Nov 2017, 15:48
Letzte Aktivität:
    18. Nov 2017, 17:22

... das ist noch vor der ersten Antwort.
 

abgdf

Guru
Gräfin Klara schrieb:
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:
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.
 

uhelp

Member
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!
 
Oben