Da ich ja in der Gruppe A bin, kann ich ja den Leuten von Gruppe B helfen.... die Lösungen die ich habe (die hab ich von anderen, also nicht das man glaubt ich bin so gut, ich stells nur ins Internet....) sind hoffentlich fehlerfrei.. ich versuch so viele Erklärungen wie möglich dazuzuschreiben....
# bedeutet das ich da ein Kommentar eingefügt habe, also nicht in die Shell eintippen


Übungsbeispiele 1 - Links, PATH Dinge, chmod, df Befehl (für Partitionen)


Übungsbeispiele 2 - find Befehle, while Schleifen, eine for-Schleife und im vi ersetzen


Übungsbeispiele 3 - for-Schleife, ein kompliziertes Shell-Script, while-Schleife, Sachen mit Hintergund und Prozess- Dinge (nohup, SIGHUP..)

1)
\t #.. 24h format
\w #.. working driect
PS1=Primär Prompt
PS1="[\t \w]\$" # $=user, $ muss escapt werden, sonst gilt es als variable, escapen beutetet unter "" setzten.
#um das ganze 'abzuspeichern':
echo 'PS1="[\t \w]\$"' >> .bash_profile
2)
#im vi
for i in `seq100`
do
cp ws0405_$i .../target1/sosem05_$i
done
# das Script im Verzeichnis mit den ws0405 Dateien schreiben/speichern, im target Ordner sind dann die geänderten zu finden
#das wichtige ist aba nachdem das Script geschrieben wurde, muss man chmod 777 machen
3)
#das ist jetzt ein ganzes script das im vi geschrieben wird!
#!/bin/bash
#echo "$#"
dest="$3";
src=`pwd`;
if [ "$#" = 2 ]; #also wenns nur 2 Parameter gibt ist die Destination das Verzeichnis indem ich mich befinde
then
dest="./"; #./ steht für das Verzeichnis indem ich mich befinde
fi
#echo $dest;
for i in `find ./ -name "*"$1"*"`;
do
j=`echo $i | sed -e "s/$1/$2/"`; #substitute -ersetzt den 1. für den 2. Parameter
#echo $j;
cp $i $dest$j;
done
# die Parameter müssen in der Kommandozeile eingegeben werden z.B.: myscript Para1 Para2 Para3
# der 1 Parameter steht für den Namen/Ursprung der 2te für das Muster(wies heisen soll) und der 3te wo's hin soll.
4)
#!/bin/bash
#echo "$#"
dest="$3";
counter=0;
src=`pwd`;
if [ "$#" = 2 ];
then
dest="./";
fi
#echo $dest;
for i in `find ./ -name "*"$1"*"`;
do
echo $((counter++)) > /dev/null;
j=`echo $i | sed -e "s/$1/$2/"`;
#echo $j;
cp $i $dest$j;
done
echo "$counter Dateien wurden (hoffentlich) kopiert. ;>";
# der counter ist für das zählen verantwortlich
5)
mkdir prefix
for i in `seq100`
do
touch prefix_$i # erzeugt 100 Dateien
done
mkdir prefix2 # im home Verzeichnis erstellen
~/myscript2 prefix_ ofix_ ~/prefix2/
6)
# im vi script
#!/bin/bash
kathi=1; # kathi is unser variablen name gewesen da kann irgendwas stehen
while kathi=1;
do
sleep 1; # er schläft 1 sec und weil kathi immer 1 is, schläft er dauernd
(#)echo "Still running..."; # wenn ich das '#' weglasse dann läuft das ganze ohne message ab
done

chmod 777 runforever # gibt Benutzerechte 'frei'... dann kann mans auch ausführen
./runforever # führt das Script aus
7)
./runforever # in Beispiel 9 wird das Script nochmal gebraucht , also nachdem killen kann man es wieda starten und im Hintergrund
rennen lassen...
ctrl+Z # stoppt das Script
bg runforever # verlegt das Script in den Hintergrund
jobs # da kann man sehen ob was läuft oda nicht
kill %1 # killt den ersten Prozess
killall #killt alle Prozesse

8)

ps -aux # oder ps -waux zeigt Prozesse an
pstree # zeigt einen Prozess baum an oder ps -auxf
# man sucht sich jetzt einfach seine prozessid raus und schreibt sich die auf oda merken (das is ne 5 tsellige zahl)

9)
nohup ./runforever #(von bsp 7 rennt noch ein runforever Script)
strg+Z
bg # jetzt sind 2 im Hintergund laufende Scripts

-eine 2te Shell aufmachen
ps -auxf #(wieda Prozess nummer suchen)

kill -SIGHUP 23490 #das war unsere prozessid
# ein runforever schließt sich, das das nicht mit nohup gestartet wurde

10)
./runforever & # startet runforever automatisch im Hintergund

disown -h
-eine 2te Shell aufmachen
ps -auxf # prozess id von der bash suchen
kill -SIGHUP 28456 # die nummer ist wieder unsere prozessid
ps -auxf #prozesid von runforever suchen
kill -SIGHUP 30130 # wiedamal unsere numma :)

soda das wars, ich weiss das vor allem 7-10 etwas unklar sind, nur alles hab ich ma ja auch nicht gmerkt :)