| 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 :)
|