<?xml version="1.0" encoding="iso-8859-1"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
<title>Informatik-AG</title>
<link rel="alternate" type="text/html" href="http://www.theofel.de/infoag/" />
<modified>2006-07-14T14:39:02Z</modified>
<tagline>Informatik-AG des Kepler Seminar fÃ¼r Naturwissenschaften aus Stuttgart</tagline>
<id>tag:www.theofel.de,2007:/infoag//5</id>
<generator url="http://www.movabletype.org/" version="3.2">Movable Type</generator>
<copyright>Copyright (c) 2006, e0</copyright>
<entry>
<title>Letzte Info-AG am Samstag den 15.07.06</title>
<link rel="alternate" type="text/html" href="http://www.theofel.de/infoag/archives/2006/07/letzte-info-ag-.html" />
<modified>2006-07-14T14:39:02Z</modified>
<issued>2006-07-14T14:36:21Z</issued>
<id>tag:www.theofel.de,2006:/infoag//5.3943</id>
<created>2006-07-14T14:36:21Z</created>
<summary type="text/plain">Am kommenden Samstag findet zum letzten Mal in diesem Jahr die Info-AG statt. Nachdem beim letzten mal nur ein Teilnehmer da war, der natürlich auch keinen Robocom-Code dabei hatte, hoffe ich, dass wir diesmal es schaffen euren Code zu testen....</summary>
<author>
<name>e0</name>
<url>http://www.undertec.de/</url>
<email>martin.etter@gmx.de</email>
</author>
<dc:subject>News</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.theofel.de/infoag/">
Am kommenden Samstag findet zum letzten Mal in diesem Jahr die Info-AG statt. Nachdem beim letzten mal nur ein Teilnehmer da war, der natürlich auch keinen Robocom-Code dabei hatte, hoffe ich, dass wir diesmal es schaffen euren Code zu testen. Natürlich wollen wir die AG dann noch gemeinsam ausklingen lassen. Bis Samstag dann....

</content>
</entry>
<entry>
<title>Info-AG am Samstag den 01.07.06</title>
<link rel="alternate" type="text/html" href="http://www.theofel.de/infoag/archives/2006/06/info-ag-am-sams-1.html" />
<modified>2006-06-29T06:59:45Z</modified>
<issued>2006-06-29T06:57:44Z</issued>
<id>tag:www.theofel.de,2006:/infoag//5.3880</id>
<created>2006-06-29T06:57:44Z</created>
<summary type="text/plain">Es ist mal wieder soweit. Nächsten Samstag findet wieder die Info-AG statt. Es wäre schön wenn ihr bis dahin eure Robocom-Roboter fertig programmiert hat. Wer noch Probleme mit seinem hat kann mir bis Freitag abend noch mailen. Bringt den Roboter...</summary>
<author>
<name>e0</name>
<url>http://www.undertec.de/</url>
<email>martin.etter@gmx.de</email>
</author>
<dc:subject>News</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.theofel.de/infoag/">
Es ist mal wieder soweit. Nächsten Samstag findet wieder die Info-AG statt.
Es wäre schön wenn ihr bis dahin eure Robocom-Roboter fertig programmiert hat. Wer noch Probleme mit seinem hat kann mir bis Freitag abend noch mailen. Bringt den Roboter dann bitte auf CD, USB-Stick oder über das Internet mit. Bis Samstag...

</content>
</entry>
<entry>
<title>RoboCom - Projekt</title>
<link rel="alternate" type="text/html" href="http://www.theofel.de/infoag/archives/2006/05/robocom---proje.html" />
<modified>2006-05-29T17:16:06Z</modified>
<issued>2006-05-29T17:09:47Z</issued>
<id>tag:www.theofel.de,2006:/infoag//5.3682</id>
<created>2006-05-29T17:09:47Z</created>
<summary type="text/plain">Hier sind die versprochenen Links zum RoboCom. Denkt bitte daran, dass wir nur den Befehlssatz bis einschließlich Version 2.52 benutzen und der erweiterte Befehlssatz von Version 3.0 und höher uns erstmal egal sein soll. Projekt-Homepage Programm 2.52 (muss man nicht...</summary>
<author>
<name>e0</name>
<url>http://www.undertec.de/</url>
<email>martin.etter@gmx.de</email>
</author>
<dc:subject>Materiallinks</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.theofel.de/infoag/">
<![CDATA[Hier sind die versprochenen Links zum RoboCom. Denkt bitte daran, dass wir nur den Befehlssatz bis einschließlich Version 2.52 benutzen und der erweiterte Befehlssatz von Version 3.0 und höher uns erstmal egal sein soll.<br>
<a href="http://www.cyty.com/robocom/">Projekt-Homepage</a><br>
<a href="http://www.cyty.com/robocom/download/robo252.zip">Programm 2.52 (muss man nicht mal installieren; einfach nach entpacken die Exe starten)</a><br>
<a href="http://www.cyty.com/robocom/download/RobSci_D.html">Dokumentation (deutsch)</a><br><br>
Bei weiteren Fragen mailt mir oder postet sie als Comment hier in den Blog. Möge der besserer Programmierer von euch gewinnen (hoffentlich schlägt keiner von euch mein Bot *g*).]]>

</content>
</entry>
<entry>
<title>Info-AG am Samstag den 20.05.06</title>
<link rel="alternate" type="text/html" href="http://www.theofel.de/infoag/archives/2006/05/info-ag-am-sams.html" />
<modified>2006-05-19T13:35:03Z</modified>
<issued>2006-05-19T13:31:50Z</issued>
<id>tag:www.theofel.de,2006:/infoag//5.3651</id>
<created>2006-05-19T13:31:50Z</created>
<summary type="text/plain">Morgen am Samstag den 20.05.06 ist wieder Info-AG. Ich hoffe das von euch diesmal ein paar mehr Leute kommen, nachdem am Seminartag keiner da war. Wir werden uns auch mit was äußerst Interessantem beschäftigen. Wir werden nämlich unsere eigene Robotersimulation...</summary>
<author>
<name>e0</name>
<url>http://www.undertec.de/</url>
<email>martin.etter@gmx.de</email>
</author>
<dc:subject>News</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.theofel.de/infoag/">
Morgen am Samstag den 20.05.06 ist wieder Info-AG. Ich hoffe das von euch diesmal ein paar mehr Leute kommen, nachdem am Seminartag keiner da war. Wir werden uns auch mit was äußerst Interessantem beschäftigen. Wir werden nämlich unsere eigene Robotersimulation programmieren (natürlich mit ein paar Werkezeugen die ihr morgen kennen lernen werdet) und dann einen kleinen Wettbewerb beim nächsten Treffen austragen. Ich hoffe also auf euer zahlreiches Erscheinen... :)

</content>
</entry>
<entry>
<title>Seminar-Tag und Info-AG I am Samstag den 06.05.06</title>
<link rel="alternate" type="text/html" href="http://www.theofel.de/infoag/archives/2006/05/seminartag_und.html" />
<modified>2006-05-03T21:30:31Z</modified>
<issued>2006-05-03T21:21:27Z</issued>
<id>tag:www.theofel.de,2006:/infoag//5.3127</id>
<created>2006-05-03T21:21:27Z</created>
<summary type="text/plain">Am Samstag ist zeitgleich zur Info-AG der Seminartag mit Verleihung des Düker-Preises etc. (siehe E-Mail von Herrn Urban). Da der Seminartag auch ein Tag zur Vorstellung der AGs ist, werden wir dies nutzen. Wir erhalten im Computerraum ein paar PC&apos;s...</summary>
<author>
<name>e0</name>
<url>http://www.undertec.de/</url>
<email>martin.etter@gmx.de</email>
</author>
<dc:subject>News</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.theofel.de/infoag/">
<![CDATA[<p>Am Samstag ist zeitgleich zur Info-AG der Seminartag mit Verleihung des Düker-Preises etc. (siehe E-Mail von Herrn Urban). Da der Seminartag auch ein Tag zur Vorstellung der AGs ist, werden wir dies nutzen. Wir erhalten im Computerraum ein paar PC's um unsere Arbeit vorzustellen. Wir werden einfach einige unserer Programme demonstrieren und ihr solltet in der Lage sein den Anwesenden zu erzählen, was wir in der AG im gesamten Jahr gemacht haben. Lest bitte deshalb nochmal eure Mitschriebe oder die AG-Protokolle dazu durch. (Keine Sorger ich bin immer da, so dass euch niemand mit bösartigen Fragen bedrängen kann *g*)...</p>

<p>Also nicht vergessen Treffpunkt nicht im Heidehof sondern im LEU. Bis Samstag dann....</p>]]>

</content>
</entry>
<entry>
<title>Info-AG I am Samstag den 01.04.06 - FÄLLT AUS...</title>
<link rel="alternate" type="text/html" href="http://www.theofel.de/infoag/archives/2006/03/infoag_i_am_sam.html" />
<modified>2006-03-22T16:51:23Z</modified>
<issued>2006-03-22T16:47:23Z</issued>
<id>tag:www.theofel.de,2006:/infoag//5.3038</id>
<created>2006-03-22T16:47:23Z</created>
<summary type="text/plain">Die Info-AG am Samstag den 01.04.06 fällt leider aus, da ich einen anderen Termin wahrnehmen muss. Verschoben wird die AG nicht, da alle kommenden Samstage relativ ungünstig liegen und auch noch das ICYS stattfindet. Somit ist unser nächster AG-Termin erst...</summary>
<author>
<name>e0</name>
<url>http://www.undertec.de/</url>
<email>martin.etter@gmx.de</email>
</author>
<dc:subject>News</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.theofel.de/infoag/">
Die Info-AG am Samstag den 01.04.06 fällt leider aus, da ich einen anderen Termin wahrnehmen muss. Verschoben wird die AG nicht, da alle kommenden Samstage relativ ungünstig liegen und auch noch das ICYS stattfindet. Somit ist unser nächster AG-Termin erst wieder der 06.05.2006. Ich wünsch euch bis dahin eine gute Zeit.

</content>
</entry>
<entry>
<title>Script Info I-AG 04.02. 2006 (Milan)</title>
<link rel="alternate" type="text/html" href="http://www.theofel.de/infoag/archives/2006/03/script_info_iag_3.html" />
<modified>2006-05-06T05:56:41Z</modified>
<issued>2006-03-16T05:46:52Z</issued>
<id>tag:www.theofel.de,2006:/infoag//5.3029</id>
<created>2006-03-16T05:46:52Z</created>
<summary type="text/plain">Inhaltsübersicht: - Lesen der ersten Zeile einer Datei - Lesen einer ganzen Datei - Lesen einer Zeile aus einer Datei - Element eines Arrays ändern - Neue Datei erstellen - Bedingungen - Vergleichsoperatoren - Logische Verknüpfungen Also, auf ein neues....</summary>
<author>
<name>e0</name>
<url>http://www.undertec.de/</url>
<email>martin.etter@gmx.de</email>
</author>
<dc:subject>Protokolle</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.theofel.de/infoag/">
<![CDATA[<h5>Inhaltsübersicht:</h5>
<h5>- Lesen der ersten Zeile einer Datei </h5>
<h5>- Lesen einer ganzen Datei </h5>
<h5>- Lesen einer Zeile aus einer Datei</h5> 
<h5>- Element eines Arrays ändern</h5>
<h5>- Neue Datei erstellen</h5>
<h5>- Bedingungen</h5>
<h5>- Vergleichsoperatoren</h5>
<h5>- Logische Verknüpfungen</h5>

<p>Also, auf ein neues. </p>

<p>Heute gehts weiter mit dem Programmieren in Perl. Dazu ist es ganz nützlich, sich noch mit dem Editor VIM auszukennen, mit dem wir uns ja bereits beschäftigt haben. </p>

<p>Um die Programme auszuführen, speichert man sie in eine Datei, z. B. mein_skript.pl, und führt sie dann mit dem Kommando perl mein_skript.pl aus. </p>

<h5>- Lesen der ersten Zeile einer Datei</h5>

<p>(Der Dateiname muss auf der Konsole angegeben werden.)</p>

<p><em>#!/usr/bin/perl<br />
use strict;</p>

<p># Dateiname einlesen<br />
my $fn = Größerzeichen STDIN Kleinerzeichen;<br />
chomp($fn);</p>

<p># Datei oeffnen<br />
open TMP, "< s1.pl";<br />
# Datei einlesen<br />
my $r = Größerzeichen TMP Kleinerzeichen;<br />
# Datei wieder schliessen<br />
close(TMP);</p>

<p># Eingelese Daten ausgeben<br />
print "$r";</em></p>

<h5>- Komplette Datei auslesen</h5>

<p><em>#!/usr/bin/perl<br />
use strict;</p>

<p># Dateiname einlesen<br />
my $fn = Größerzeichen STDIN Kleinerzeichen;<br />
chomp($fn);</p>

<p># Datei oeffnen<br />
open SRC, "< $fn";<br />
# Zeilen in ein array einlesen<br />
my @lines = Größerzeichen SRC Kleinerzeichen;<br />
# Datei schliessen<br />
close(SRC);</p>

<p># Zeilen ausgeben<br />
print @lines;</em></p>

<p>Die Datei wird in ein sog. array eingelesen. Ein array kann man sich wie folgt vorstellen: <br />
@mein_array: <br />
$mein_array[0]<br />
$mein_array[1]<br />
$mein_array[2]<br />
... <br />
$mein_array[n]<br />
Ein Array ist also eine Liste von Variablen; auf die einzelnen Variablen der Liste kann man über die Nummerierung zugreifen. </p>

<h5>- Spezielle Zeile einer Datei ausgeben</h5>

<p><em>#!/usr/bin/perl<br />
use strict;</p>

<p># Dateiname einlesen<br />
my $fn = Größerzeichen STDIN Kleinerzeichen;<br />
chomp($fn);</p>

<p># Zeilennummer einlesen<br />
my $lineno = <STDIN>;<br />
chomp($lineno);</p>

<p># Datei oeffnen<br />
open SRC, "< $fn";<br />
# Zeilen in ein array einlesen<br />
my @lines = Größerzeichen SRC Kleinerzeichen;<br />
# Datei schliessen<br />
close(SRC);</p>

<p># Angefordertes Element des Arrays ausgeben<br />
print $lines[$lineno];</em></p>

<h5>- Element eines Arrays ändern</h5>

<p><em>#!/usr/bin/perl<br />
use strict;</p>

<p># Dateiname einlesen<br />
my $fn = Größerzeichen STDIN Kleinerzeichen;<br />
chomp($fn);</p>

<p># Zeilennummer einlesen<br />
my $lineno = <STDIN>;<br />
chomp($lineno);</p>

<p># Datei oeffnen<br />
open SRC, "< $fn";<br />
# Zeilen in ein array einlesen<br />
my @lines = Größerzeichen SRC Kleinerzeichen;<br />
# Datei schliessen<br />
close(SRC);</p>

<p># Angefordertes Element des Arrays aendern<br />
$lines[$lineno] = "Ein wenig Schachsinn am Samstag morgen =)\n";</p>

<p># Geaendertes Array ausgeben<br />
print @lines</em></p>

<h5>- Neue Datei erstellen</h5>

<p>Dieses Programm zeichnet sich dadurch aus, dass es dem Benutzer nun auch sagt, was er denn bitte eingeben soll :) (printf vor den Zeilen mit Größerzeichen STDIN Kleinerzeichen) </p>

<p><em>#!/usr/bin/perl<br />
use strict;</p>

<p># Dateiname einlesen<br />
printf "Dateiname der Quelldatei eingeben: ";<br />
my $fn = Größerzeichen STDIN Kleinerzeichen;<br />
chomp($fn);</p>

<p># Zeilennummer einlesen<br />
printf "Nummer der Zeile, die geaendert werden soll, eingeben: ";<br />
my $lineno = Größerzeichen STDIN Kleinerzeichen;<br />
chomp($lineno);</p>

<p># Zieldateiname einlesen<br />
printf "Dateiname der Zieldatei eingeben: ";<br />
my $target_fn = Größerzeichen STDIN Kleinerzeichen;<br />
chomp($lineno);</p>

<p># Datei oeffnen<br />
open SRC, "< $fn";<br />
# Zeilen in ein array einlesen<br />
my @lines = Größerzeichen SRC Kleinerzeichen;<br />
# Datei schliessen<br />
close(SRC);</p>

<p># Angefordertes Element des Arrays aendern<br />
$lines[$lineno] = "Ein wenig Schachsinn am Samstag morgen =)\n";</p>

<p># Geaenderte Daten in neuer Datei speichern<br />
# Datei oeffnen<br />
open DST, "> $target_fn";<br />
# Inhalt in Datei speichern<br />
print DST @lines;<br />
# Datei wieder schliessen<br />
close(DST);</em></p>

<p>Schreibt man statt open DST, "> $target_fn"; open DST, ">> $target_fn";, wird der neue Inhalt an das Ende der Datei angehängt, wenn die Datei schon existiert. (Mit einer spitzen Klammer wird eine evtl. existierende Datei überschrieben.) </p>

<h5>- Bedingungen</h5>

<p><em>#!/usr/bin/perl<br />
use strict;</p>

<p>print "Zahl eingeben: ";<br />
my $number = Größerzeichen STDIN Kleinerzeichen;<br />
chomp($number);</p>

<p>if ($number < 0) {<br />
  print "Die Zahl ist kleiner als 0.\n";<br />
}<br />
elsif ($number > 0) {<br />
  print "Die Zahl ist groesser als 0.\n";<br />
}<br />
else {<br />
  print "Die Zahl ist 0.\n";<br />
}</em></p>

<p>Wenn die Bedinung in Klammern ($number < 0) wahr ist, wird der Code in den gescheiften Klammern (print "Die Zahl ist kleiner als 0.\n";) ausgeführt. </p>

<p>Ist die erste Bedinung nicht erfüllt (und nur dann), wird die Bedinung bei elsif überprüft und ggf. der dazugehörige Code ausgeführt. Es ist möglich, vor dem else-Teil eine weitere elsif-Bedingung zu notieren. Diese wird dann nur überprüft und ggf. ausgeführt, wenn sowohl die Bedinung bei if als auch die Bedingungen bei allen vorangehenden elsif nicht zutreffen. </p>

<p>Ist keine der Bedinungen erfüllt, wird schließlich der Code bei else ausgeführt. </p>

<p>Es ist auch möglich, die elsif- oder else-Teile wegzulassen. Beispiel: </p>

<p><em>if ($number < 0) {<br />
  print "Die Zahl ist kleiner als 0.\n";<br />
}<br />
elsif ($number == 1) {<br />
  print "Die Zahl ist 1.\n";<br />
}<br />
elsif ($number > 0) {<br />
  print "Die Zahl ist groesser als 0, aber nicht 1.\n";<br />
}<br />
if ($number < 0) {<br />
  print "Die Zahl ist kleiner als 0.\n";<br />
}<br />
else {<br />
  print "Die Zahl ist 0 oder groesser als 0.\n";<br />
}</em></p>

<h5>- Vergleichsoperatoren</h5>

<p>In den genannten if-Bedingungen (und an allen anderen Orten, wo Bedinungen verwendet werden, z. B. bei Schleifen) lassen sich u. a. die folgenden Operatoren verwenden: </p>

<p><em>Methode Operatoren Alternativer Operator <br />
gleich == eq (für equal) <br />
ungleich != neq (für not equal) <br />
kleiner < lt (für lower than) <br />
größer > gt (für greater than) <br />
kleinergleich <= le (für lower or equal) <br />
größergleich >= ge (für greater or equal)</em></p>

<h5>- Logische Verknüpfungen</h5>

<p>Methode Operatoren Alternativer Operator <br />
und && and <br />
oder || or </p>

<p>Beispiel:<br />
<em>...<br />
# "Wenn $number1 gleich 4 und $number groessergleich 7<br />
if (($number1 eq 4) and ($number2 >= 7)) {<br />
  ...<br />
}<br />
...</em></p>

<p><br />
<h4>Zu guter letzt der Tafelcode, wer meine Originale haben möchte:</h4><br />
<h5>Arrays</h5></p>

<p><em>#!usr/bin/perl</p>

<p> use strict;</p>

<p>#Wir lesen Dateiinhalte in Arrays ein.</p>

<p> print "Bitte Dateinamen angeben:\n";<br />
 my $Dateiname = Größerzeichen STDIN Kleinerzeichen;<br />
 chomp($Dateiname);</p>

<p> open TEMP, "< $Dateiname";<br />
 my @ErstesArray = Größerzeichen TEMP Kleinerzeichen;<br />
 close(TEMP);</p>

<p> print @ErstesArray;</p>

<p>#Wir geben nun eine spezielle Zeile des Arrays aus</p>

<p> my  $Zeilennummer = Größerzeichen STDIN Kleinerzeichen;<br />
 chomp($Zeilennummer);</p>

<p> print "In Zeile $Zeilennummer stand:\n";<br />
 print "$ErstesArray[$Zeilennummer]\n";</p>

<p>#Wir aendern nun den Inhalt von $Zeilennummer</p>

<p> $ErstesArray[$Zeilennummer] = "Das hier ist die geänderte Zeile mit wirrem Text.\n";</p>

<p> print @ErstesArray;</p>

<p>#Geänderte eingelesene Datei zurück in eine neue Datei schreiben</p>

<p> print "Bitte neuen Dateinnamen angeben:\n";<br />
 my $neueDatei = Größerzeichen STDIN Kleinerzeichen;<br />
 chomp($neueDatei);</p>

<p> open TEMP2, ">> $neueDatei";<br />
 print TEMP2 @ErstesArray;<br />
 close(TEMP2);</em></p>

<h5>if-else</h5>

<p><em>#!usr/bin/perl</p>

<p>#Die If-Elsif-Else-Anweisung</p>

<p> print "Bitte eine Zahl angeben:\n";<br />
 $zahl1 = Größerzeichen STDIN Kleinerzeichen;<br />
 chomp($zahl1);</p>

<p><br />
 if ($zahl1 == 5) {<br />
     print "Die Zahl war tatsächlich 5!\n";<br />
# } elsif ($zahl1 < 5) { <br />
#     print "Die  Zahl ist kleiner als 5.\n";<br />
 } elsif (($zahl1 > 5) and ($zahl1 != 666)) {<br />
     print "Die Zahl ist größer als 5.\n";<br />
 } elsif ($zahl1 == 666) {<br />
     print "Du bist mit dem Teufel im Bunde.\n";<br />
 } else {<br />
     print "Du bist noch nicht wach. Weiter probieren!\n";<br />
 }</em></p>

<h5>Testdatei</h5>

<p><em>Das ist hier ist die Testdatei<br />
Zeile 2.<br />
Zeile 3.<br />
Zeile 4.<br />
Zeile 5.<br />
Zeile 6.<br />
Schon wieder Zeile 6.<br />
Zeile wird noch gefertigt.<br />
Zeile neuneinhalb.<br />
Eigentlich die 10.</em></p>]]>

</content>
</entry>
<entry>
<title>Info-AG I am kommenden Samstag den 18.03.06</title>
<link rel="alternate" type="text/html" href="http://www.theofel.de/infoag/archives/2006/03/infoag_i_am_kom_4.html" />
<modified>2006-03-16T05:44:54Z</modified>
<issued>2006-03-16T05:41:34Z</issued>
<id>tag:www.theofel.de,2006:/infoag//5.3028</id>
<created>2006-03-16T05:41:34Z</created>
<summary type="text/plain">Nächsten Samstag ist wieder Info-AG. Gleiche Zeit gleicher Ort, alles gleich wie sonst auch. Nur unser Thema nicht. Ich möchte mit euch die Schleifen endlich abschließen und dann mit euch eventuell ein kleines Projekt angehen. Das Skript vom letzten Mal...</summary>
<author>
<name>e0</name>
<url>http://www.undertec.de/</url>
<email>martin.etter@gmx.de</email>
</author>
<dc:subject>News</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.theofel.de/infoag/">
Nächsten Samstag ist wieder Info-AG. Gleiche Zeit gleicher Ort, alles gleich wie sonst auch. Nur unser Thema nicht. Ich möchte mit euch die Schleifen endlich abschließen und dann mit euch eventuell ein kleines Projekt angehen. Das Skript vom letzten Mal stelle ich bis dahin noch online. Bis Samstag, ich hoffe auf zahlreiches erscheinen...

</content>
</entry>
<entry>
<title>Script Info I-AG 21.01. 2006 (Martin)</title>
<link rel="alternate" type="text/html" href="http://www.theofel.de/infoag/archives/2006/02/script_info_iag_2.html" />
<modified>2006-05-06T05:57:10Z</modified>
<issued>2006-02-04T07:08:51Z</issued>
<id>tag:www.theofel.de,2006:/infoag//5.2967</id>
<created>2006-02-04T07:08:51Z</created>
<summary type="text/plain">Perl ist eine Interpretersprache, dh. Code in Perl wird durch ein weiteres Programm, den sogenannten Interpreter interpretiert. Warum perl? Zum testen eines Programmes ist kein vorkompilieren nötig. Dies erleichtert die Fehlersuche enorm, da der Interpreter seine Fehlerausgaben auf den geschriebenen...</summary>
<author>
<name>e0</name>
<url>http://www.undertec.de/</url>
<email>martin.etter@gmx.de</email>
</author>
<dc:subject>Protokolle</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.theofel.de/infoag/">
<![CDATA[<p>Perl ist eine Interpretersprache, dh. Code in Perl wird durch ein<br />
weiteres Programm, den sogenannten Interpreter interpretiert.</p>

<p>Warum perl?<br />
Zum testen eines Programmes ist kein vorkompilieren  nötig. Dies erleichtert<br />
die Fehlersuche enorm, da der Interpreter seine Fehlerausgaben auf den<br />
geschriebenen Perlcode bezieht (beispielsweise mit Zeilenangaben).<br />
Perlcode ist im allgemeinen sehr kompakt.<br />
Perl ist weit verbreitet.</p>

<p>Hallo Welt!</p>

<p><em>#!/usr/bin/perl</p>

<p># mein erstes Perlprogramm    <- dies ist ein Kommentar! (wird ignoriert)</p>

<p># ein Semikolon schliesst eine Zeile (ein Befehl) ab.<br />
# ein \n geht in eine neue Zeile<br />
print "Abrakadabra, jetzt wird gerechnet!\n";</p>

<p># das $-Zeichen leitet eine Variable ein<br />
$zahl1 = 2;</p>

<p>$zahl2 = 5;</p>

<p>$summe = $zahl1 + $zahl2;<br />
$produkt = $zahl1 * $zahl2;<br />
$differenz = $zahl1 - $zahl2;<br />
$quotient = $zahl1 / $zahl2;</p>

<p># jetzt wollen wir unsere Zahlen auch sehen!</p>

<p># eine Variable wird innerhalb von "" als solche erkannt<br />
print "Die Summe von $zahl1 und $zahl2 ist $summe\n";<br />
print "Das Produkt von $zahl1 und $zahl2 ist $produkt\n";<br />
print "Die Differenz von $zahl1 und $zahl2 ist $differenz\n";<br />
print "Der Quotient von $zahl1 und $zahl2 ist $quotient\n";</p>

<p># Variablen koennen verschiedene Dinge, egal ob Zahlen (Gleitkomma und ganze Zahlen, Text oder andere Werte)beinhalten<br />
$string = "Geld ist schoen, wenn man's hat, deshalb lernen wir Programmieren!"; <br />
# Das ist ein String<br />
$integer = 3; # Das ist eine ganze Zahl<br />
$float = 2.554; # Das ist eine rationale Zahl</p>

<p>print "Geld ist schoen, wenn man's hat, deshalb lernen wir Programmieren!\n"; <br />
#ist das gleiche wie<br />
print "$string\n"; #oder mit<br />
$string = "$string\n"; # Wahnsinn!!!<br />
print $string;</p>

<p># Jetzt wollen wir noch die Werte fuer die Variablen einlesen<br />
# (duch eingabe oder textfile)<br />
print "Abrakadabra, jetzt wirds interaktiv!\n";</p>

<p># Tastatureingabe ueber STDIN (Standard-In) (im normalfall Tastatur)<br />
print "Bitte Dateiname eingeben!\n";<br />
$eingabe = Görßerzeichen STDIN Kleinerzeichen;<br />
# ueberfluessiges \n entfernen! (sonst gibts ueberfluessige Leerzeilen)<br />
chomp( $eingabe );</p>

<p>print "Ihre Eingabe $eingabe war richtig!\n";</p>

<p># Einlesen von Daten aus einer anderen Datei<br />
open TEMP, "< $eingabe";<br />
$ausDatei = Görßerzeichen TEMP Kleinerzeichen;<br />
close TEMP;<br />
chomp( $ausDatei );</p>

<p>print "Dieser Text stand in einer Datei: $ausDatei\n";</em></p>

<p>Es ist bei jedem Programm zu empfehlen die "use strict"-Direktive<br />
zu verwenden, um fehlerträchtigen Code zu vermeiden.<br />
So werden beispielsweise private Variablen vorgeschrieben.<br />
Diese werden mit eine einleitenden "my" vor der Variablendeklaration<br />
gekennzeichnet.</p>

<p>Viel Perlcode und Module (wird später erklärt) gibt es im Internet<br />
im CPAN (Comprehensive Perl Archive Network, http://cpan.org/).</p>

<p><br />
Code von mir, falls euch der von Martin nicht gefällt:</p>

<p><em>#!/usr/bin/perl</p>

<p># Mein 1. Perl-Programm</p>

<p> print "Das unser erstes Perl-Programm. Wir lieben alle die Informatik-AG.\n";</p>

<p><br />
# Wir rechnen ein bißchen</p>

<p> $zahl1=2;</p>

<p> $zahl2=5;</p>

<p> $neuezahl3= $zahl1 + $zahl2;<br />
 $neuezahl4= $zahl1 * $zahl2;<br />
 $neuezahl5= $zahl1 - $zahl2;<br />
 $neuezahl6= $zahl1 / $zahl2;</p>

<p> print "Das sind unserer errechneten Zahlen: $neuezahl3, $neuezahl4, $neuezahl5, $neuezahl6.\n";</p>

<p><br />
# Text in einer Variablen</p>

<p> $textinvar= "Geld ist schön wenn man's hat, deshalb lernen wir Programmieren.\n";</p>

<p> print "$textinvar";</p>

<p><br />
# Tastatureingaben über Standard-In lesen.</p>

<p> $frieingelestext= Görßerzeichen STDIN Kleinerzeichen;<br />
 chomp($frieingelestext);</p>

<p> print "Ihre Eingabe war: $frieingelestext\n";</p>

<p><br />
# Einlesen aus von Daten aus einer anderen Datei</p>

<p> open TEMP, "< $frieingelestext";<br />
 $eingelesenes= Görßerzeichen TEMP Kleinerzeichen;<br />
 close(TEMP);<br />
 chomp($eingelesenes);</p>

<p> print "Dieser Text stand in einer Datei: $eingelesenes\n";</p>

<p># In obigen Zeilen bezüglich des Stdin und der Open-Prozedur wurde nachträglich Chomp eingeführt.</em></p>]]>

</content>
</entry>
<entry>
<title>Info-AG I am kommenden Samstag den 04.02.06</title>
<link rel="alternate" type="text/html" href="http://www.theofel.de/infoag/archives/2006/02/infoag_i_am_kom_3.html" />
<modified>2006-02-03T18:06:42Z</modified>
<issued>2006-02-03T18:03:13Z</issued>
<id>tag:www.theofel.de,2006:/infoag//5.2964</id>
<created>2006-02-03T18:03:13Z</created>
<summary type="text/plain">Morgen ist es wieder soweit, Info-AG I von 10.00 Uhr bis 12.00 Uhr. Nachdem wir uns das letzte mal mit einer kleinen Einführung in Perl beschäftigt haben, möchte ich morgen mit euch Schleifen anschauen. Wozu braucht man die? Was machen...</summary>
<author>
<name>e0</name>
<url>http://www.undertec.de/</url>
<email>martin.etter@gmx.de</email>
</author>
<dc:subject>News</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.theofel.de/infoag/">
Morgen ist es wieder soweit, Info-AG I von 10.00 Uhr bis 12.00 Uhr. Nachdem wir uns das letzte mal mit einer kleinen Einführung in Perl beschäftigt haben, möchte ich morgen mit euch Schleifen anschauen. Wozu braucht man die? Was machen die? Oha die sind aber ganz schön Mächtig! Das Protokoll vom letzten Termin habe ich hoffentlich rechtzeitg dann auch noch Online. Ich hoffe auf euer zahlreiches Erscheinen. Bis morgen :=)

</content>
</entry>
<entry>
<title>Info-AG I am kommenden Samstag 21.01.06</title>
<link rel="alternate" type="text/html" href="http://www.theofel.de/infoag/archives/2006/01/infoag_i_am_kom_2.html" />
<modified>2006-01-15T09:12:06Z</modified>
<issued>2006-01-15T09:07:51Z</issued>
<id>tag:www.theofel.de,2006:/infoag//5.2935</id>
<created>2006-01-15T09:07:51Z</created>
<summary type="text/plain">Hallo liebe AG-ler, ich hoffe ihr seid gut ins neue Jahr gerutscht?! Kommenden Samstag ist es wieder soweit. Info-AG I findet wieder gewohnt von 10.00-12.00 Uhr statt. Wir werden uns diesmal höchtswahrscheinlich mit Perl beschäftigen und ein paar Grundlagen des...</summary>
<author>
<name>e0</name>
<url>http://www.undertec.de/</url>
<email>martin.etter@gmx.de</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.theofel.de/infoag/">
Hallo liebe AG-ler, ich hoffe ihr seid gut ins neue Jahr gerutscht?!  Kommenden Samstag ist es wieder soweit. Info-AG I findet wieder gewohnt von 10.00-12.00 Uhr statt. Wir werden uns diesmal höchtswahrscheinlich mit Perl beschäftigen und ein paar Grundlagen des Programmierens kennenlernen. Ich habe vor, mit euch eine kleine Einführung in Schleifen und Input-Output-Funktionen zu machen, wenn es zeitlich noch reicht, beschäftigen wir uns dann noch etwas mit Arrays und Hashes (Tabellen). Bis nächsten Samstag, ich hoffe auf euer zahlreiches erscheinen.

</content>
</entry>
<entry>
<title>Script Info I-AG 10. 12. 2005 (Milan)</title>
<link rel="alternate" type="text/html" href="http://www.theofel.de/infoag/archives/2005/12/script_info_iag_1.html" />
<modified>2006-05-06T05:57:48Z</modified>
<issued>2005-12-21T16:41:43Z</issued>
<id>tag:www.theofel.de,2005:/infoag//5.2871</id>
<created>2005-12-21T16:41:43Z</created>
<summary type="text/plain">Theorie: BIOS Das BIOS übergibt die Kontrolle an ein weiteres Programm. Dieses wird je nach Einstellung im BIOS gesucht auf CD -&gt; ??? Diskette -&gt; Bootsektor Festplatte -&gt; MBR MBR Der MBR enthält den Bootloader, welcher dafür zuständig ist, das...</summary>
<author>
<name>e0</name>
<url>http://www.undertec.de/</url>
<email>martin.etter@gmx.de</email>
</author>
<dc:subject>Protokolle</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.theofel.de/infoag/">
<![CDATA[<h3>Theorie:</h3>

<h5>BIOS</h5>
Das BIOS übergibt die Kontrolle an ein weiteres Programm. Dieses wird je nach Einstellung im BIOS gesucht auf 

<p>CD -> ??? <br />
Diskette -> Bootsektor <br />
Festplatte -> MBR </p>

<h5>MBR</h5>
Der MBR enthält den Bootloader, welcher dafür zuständig ist, das Betriebssystem zu laden. Um Linux zu laden, wird i. d. R. LILO oder GRUB verwendet. GRUB (LILO vermutlich auch) sind auch im Stande, an Stelle von Linux ein Windows zu laden. Wenn sich also Linux und Windows in verschiedenen Partitionen auf einer Festplatte befinden, kann man wenn der Bootloader vom BIOS gestartet wurde auswählen, welches gestartet wurde. Ebenso ist es möglich, verschiedene Linux-Betriebssysteme auf ein und dem selben Rechner zu installieren, und beim Start eines davon auszuwählen. 

<h5>Der Kernel</h5>
Wurde der Linux-Kernel vom Bootloader gestartet, untersucht dieser die im System vorhandene Hardware. Ist die Festplatte gefunden, versucht der Kernel den Init-Prozess von einer ihm vom Bootloader angegebenen Partition geladen. Schlägt dies fehl (z. B. weil die falsche Partition angegeben wurde) gibt es einen sog. kernel panic, was zum völligen Stop aller Systemaktivitäten (und damit zum Abbruch des Startvorgangs) führt. 

<h5>INIT</h5>
INIT startet alle Systemprozesse und fungiert darüber hinaus als Elternprozess für alle anderen Prozesse. Um flexibel festzulegen, welche Systemprozesse gestartet werden sollen, gibt es sog. runlevel. 

<h5>Runlevel 0</h5>
Wenn das System schon läuft, kann in runlevel 0 gewechselt werden, um das System herunterzufahren.

<h5>Runlevel 1, 2, 3</h5>
Stehen in der Regel für Einzelbenutzermodus, Mehrbenutzermodus (beide ohne Netzwerk) und Mehrbenutzermodus mit Netzwerk. Können insgesamt als eingeschränktes System bezeichnet werden.

<h5>Runlevel 4</h5>
Wird in der Regel nicht benutzt. Kann bei Bedarf natürlich verwendet werden.

<h5>Runlevel 5</h5>
Wenn in Runlevel 5 gewechselt wird, wird normalerweise das komplette System mit grafischer Oberfläche etc etc gestartet.

<h5>Runlevel 6</h5>
Gleich wie Runlevel 0, nur das am Ende der Rechner nicht ausgeschaltet, sondern neu gestartet wird.

<h3>Praxis:</h3>

<h5>Der Kernel:</h5>
Die Binärdatei, die den lauffähigen Kernel enthält, die vom Bootloader geladen wird, findet sich normalerweise in /boot. 

<h5>Nützliche Befehle im Zusammenhang mit dem Kernel:</h5>

<p>lsmod =<br />
 Steht für list modules. Listet alle im Kernel geladenen Kernel-Module auf. Kann z. B. verwendet werden, um zu überprüfen, ob ein bestimmtes Treibermodul geladen ist. </p>

<p>modprobe / insmod =<br />
lädt ein Kernelmodul im laufenden Betrieb. Kernelmodule befinden sich i. d. R. in /lib/modules/Kernelversion </p>

<p>uname -r  =<br />
Gibt die Version des momentan laufenden Kernels aus </p>

<p>ps -e <br />
= Zeigt alle laufenden Prozesse im System. </p>

<p>top =<br />
Zeigt eine laufend aktualisierte Liste aller laufenden Prozesse, sortiert nach ihrer momentanenen Beanspruchung der CPU </p>

<h5>INIT:</h5>

<p>/etc/inittab =<br />
Legt grundlegende Einstellung für den Init-Prozess fest, z. B. den Standardrunlevel, der beim Systemstart aufgerufen werden soll. Die Datei ist normalerweise mit vielen Kommentaren geschmückt, im Zweifelsfall hilft auch man inittab </p>

<p>/etc/init.d = <br />
Enthält die sog. Init-Skrpiten, die vom Init-Prozess je nach Konfiguration aufgerufen werden, und verschiedene Prozesse, wie z. B. einen Apache-Webserver oder den X-Server für die grafische Oberfläche auf dem Bildschirm. Die Init-Skripten sind i. d. R. in der Skript- und Shell-Sprache Bash geschrieben. </p>

<p>Wenn z. B. das Skript /etc/init.d/apache2 zum Apache-Webserver (Version 2) gehört, kann dieser mit /etc/init.d/apache2 start gestartet, mit /etc/init.d/apache2 restart / stop neugestartet oder beendet werden. </p>

<p>/etc/rc[0123456].d (/etc/rc0.d, /etc/rc1.d, ...) = <br />
Diese Verzeichnisse enthalten Verweise auf die Dateien aus /etc/init.d, die im entsprechenden Runlevel gestartet werden sollen. (Ein Verweisname von S20apache2 heißt, dass der Apache-Webserver gestartet, K30apache2 dass er im diesem Runlevel gestopt werden soll. Die Nummer legt die Reihenfolge fest.) (dieses Schema wird oft Sys-V init scripts genannt.) </p>

<p>Auf manchen Systemen funktioniert das ganze allerdings ein wenig anders; dort werden zunächst alle Skripte in /etc/init.d aufgerufen, und danach ggf. weitere aus /etc/rc[0123456].d. </p>

<p>Auf wieder anderen Systemen (z. B. gentoo) werden zu startende Systemprozesse auch über Verweise in /etc/runlevels festgelegt. (gentoo-style init scripts) </p>

<h3>Links:</h3>
<a href="http://www.linuxfibel.de/booten.htm">Linuxfibel - Booten</a>]]>

</content>
</entry>
<entry>
<title>Script Info I-AG 12. 11. 2005 (Martin)</title>
<link rel="alternate" type="text/html" href="http://www.theofel.de/infoag/archives/2005/12/script_info_iag.html" />
<modified>2006-05-06T05:58:02Z</modified>
<issued>2005-12-21T16:38:08Z</issued>
<id>tag:www.theofel.de,2005:/infoag//5.2870</id>
<created>2005-12-21T16:38:08Z</created>
<summary type="text/plain">Zunächst hörten wir uns verschiedene Referate der Teilnehmer zu grafischen Programmen, die unter KDE laufen, an. Der Konqueror wurde uns als Datei- und als Webbrowser vorgestellt. Seine Besonderheit, unterschiedliche Dateiformate direkt anzuzeigen oder abzuspielen, wurde demonstriert. So lassen sich beispielsweise...</summary>
<author>
<name>e0</name>
<url>http://www.undertec.de/</url>
<email>martin.etter@gmx.de</email>
</author>
<dc:subject>Protokolle</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.theofel.de/infoag/">
<![CDATA[<p>Zunächst hörten wir uns verschiedene Referate der Teilnehmer zu grafischen Programmen, die unter KDE laufen, an. Der Konqueror wurde uns als Datei- und als Webbrowser vorgestellt. Seine Besonderheit, unterschiedliche Dateiformate direkt anzuzeigen oder abzuspielen, wurde demonstriert. So lassen sich beispielsweise pdf-Dateien oder Bilddateien ohne ein unmittelbar sichtbares externes Programm anzeigen. Weiterhin wurde das Grafikprogramm GIMP vorgestellt. Da es sehr mächtig ist, mussten wir uns auf wenige Funtionen, wie das Ebenenkonzept, beschränken. Diese wurden in Abgrenzung zum Programm Photoshop erläutert. Es wurde deutlich, dass es immer mehr als einen Lösungsweg für ein Problem gibt. Zuletzt wurde das Office-Paket OpenOffice anhand dessen Textverarbeitungsprogramms vorgestellt. Der Formeleditor wurde dabei<br />
ebenfalls behandelt.</p>

<p>Im Anschluss wurde der berühmt berüchtigte Texteditor vi eingeführt. Folgendes ist bei seiner Benutzung zu beachten: Es gibt mehrere Modi, in denen sich der Editor befinden kann:</p>

<p>Im Kommandomodus, der durch den Doppelpunkt gestartet wird, sind folgende Kommandos relevant:<br />
:q - Beendet den vi<br />
:w - Speichert die Datei<br />
:q! - Beendet, auch wenn nicht gespeichert wurde.<br />
Diese Kommandos lassen sich auch kombinieren, so beendet ":wq" den Editor und speichert das aktuelle Dokument. Der Kommandomodus wird verlassen, indem ein Kommando mit "Enter" ausgeführt wird, oder das Kommando mit "Esc" abgebrochen wird.</p>

<p>Im Standardmodus gelten folgende Kommandos:<br />
k - Cursor nach oben<br />
j - Cursor nach unten<br />
h - Cursor nach links<br />
l - Cursor nach rechts<br />
w - Cursor ein Wort weiter<br />
/ - vorwärts suchen<br />
? - rückwärts suchen<br />
x - löscht ein Zeichen<br />
dd - löscht eine Zeile<br />
dw - löscht ein Wort<br />
u - letzte Aktion widerrufen <br />
yy - kopiert eine Zeile<br />
p - fügt ein</p>

<p>Durch i, I, a, A, o oder O wechselt man in den Eigabemodus, der mit "Esc" wieder beendet wird.<br />
i - vor dem aktuellen Zeichen schreiben<br />
a - nach dem aktuellen Zeichen schreiben<br />
I - am Zeilenanfang schreiben<br />
A - am Zeilenende schreiben<br />
o - neue Zeile nach der aktuellen einfügen und darin schreiben<br />
O - dito nur vor der aktuellen Zeile</p>]]>

</content>
</entry>
<entry>
<title>Script InfoI-AG 15. 10. 2005 (Milan)</title>
<link rel="alternate" type="text/html" href="http://www.theofel.de/infoag/archives/2005/12/script_infoiag.html" />
<modified>2006-05-06T05:58:20Z</modified>
<issued>2005-12-10T07:38:46Z</issued>
<id>tag:www.theofel.de,2005:/infoag//5.2835</id>
<created>2005-12-10T07:38:46Z</created>
<summary type="text/plain">Übersicht: - Dateisystem - Übersicht über einige Gerätedateien - Die Wichtigsten Shell-Kommandos - Dateizugriffsberechtigungen Dateisystem: /proc Systemzustände, z. B. Akkustand bei einem Notebook /root Homeverzeichnis von root /home Homeverzeichnisse der Benutzer /boot Kernel, Boot-Loader (GRUB, LILO) /etc Systemweite Konfigurationsdateien /dev...</summary>
<author>
<name>e0</name>
<url>http://www.undertec.de/</url>
<email>martin.etter@gmx.de</email>
</author>
<dc:subject>Protokolle</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.theofel.de/infoag/">
<![CDATA[<p>Übersicht:<br />
- Dateisystem <br />
- Übersicht über einige Gerätedateien <br />
- Die Wichtigsten Shell-Kommandos <br />
- Dateizugriffsberechtigungen </p>

<p>Dateisystem:<br />
/proc Systemzustände, z. B. Akkustand bei einem Notebook <br />
/root Homeverzeichnis von root <br />
/home Homeverzeichnisse der Benutzer <br />
/boot Kernel, Boot-Loader (GRUB, LILO) <br />
/etc Systemweite Konfigurationsdateien <br />
/dev Verbindung zu den Geräten (werden zum mounten benötigt) <br />
/bin (Meistens) zum Booten benötigte Programme <br />
/sbin (Meistens) zum Booten benötigte Programme für root (s -> super user) <br />
/usr Programme, Programmdateien, Programmbibliotheken (steht afaik für Unix System Resource) <br />
/lib (Meistens) zum booten benötigte Programmbibliotheken <br />
/mnt Einhängbare Geräte </p>

<p>Übersicht über Gerätedateien:<br />
hda Erstes IDE-Gerät (Primary Master) <br />
hdb, hdc, hdd, ... Weitere IDE-Geräte (Primary Slave, Secondary Master, Secondary Slave, ...) <br />
hda1, hda2, ... (hdb1, ...) Partition auf hda, wenn auf hda (hdb) eine lesbare Partitionstabelle gefunden wurde <br />
sda Erstes SCSI-Gerät (USB-Sticks sind in der Regel SCSI-Geräte!) <br />
zero Liefert beim Lesen Nullen (binäre nullen, nicht ASCII-Nullen) <br />
null Liefert beim Lesen EOF und verwirft geschriebene Daten </p>

<p>Wichtige Befehle:<br />
bash <br />
- Kommandozeile / Shell / DOS-Eingabeaufforderung (*wee* ^^) <br />
ls <br />
- Dateilisting des aktuellen Verzeichnisses <br />
ls /root <br />
- Dateilisting von /root <br />
ls -alh /root <br />
- Dateilisting von /root, versteckte Dateien anzeigen (a -> all), ausführliche Auflistung (l -> long), Dateigrößen in MByte / GByte / ... (h -> human readable units) <br />
cd verzeichnis <br />
- Verzeichnis zu verzeichnis wechseln (change directory) <br />
pwd <br />
- aktuelles Verzeichnis anzeigen <br />
cd .. <br />
- ein Verzeichnis nach oben wechseln <br />
rm datei <br />
- datei löschen (remove) <br />
rm -r verzeichnis <br />
- verzeichnis rekursiv löschen <br />
rm -rf verzeichnis <br />
- verzeichnis rekursiv ohne Nachfrage löschen (Nachts um zwei ausführen ^^) <br />
rmdir verzeichnis <br />
- (leeres) Verzeichnis namens verzeichnis löschen (remove directory) <br />
touch datei <br />
- leere Datei namens datei anlegen <br />
cat datei <br />
- Inhalt von datei anzeigen <br />
hexdump -C datei <br />
- Hex-Listing von datei anzeigen (nützlich für Binärdateien) <br />
hexdump -C /dev/hda <br />
- Hex-Listing (sehr wahrscheinlich) der ersten Festplatte anzeigen ^^ <br />
less datei <br />
- Inhalt von datei scrollbar anzeigen (Beenden mit q) <br />
cp datei datei-kopie <br />
- datei nach datei-kopie kopieren <br />
mv datei neuername <br />
- datei nach neuername verschieben <br />
mount <br />
- momentan eingehängte Dateisysteme anzeigen <br />
mount /dev/hda2 /mnt/daten <br />
- Dateisystem auf /dev/hda2 in /mnt/daten einhängen <br />
chmod 755 datei <br />
- Berechtigungen von datei auf 755 ändern <br />
chown benutzer:gruppe datei <br />
- Besitzer von datei auf benutzer und gruppe ändern </p>

<p>Dateizugriffsberechtigungen<br />
 Für eine Datei kann jeweils für den Besitzer, für Benutzer, die der der Datei zugordneten Gruppe angehören, und für alle übrigen Benutzer festgelegt werden, welche Operationen erlaubt sind. Mögliche Operationon sind r (read, Datei lesen), w (write, Datei schreiben) und x (execute, Datei ausführen). </p>

<p>ls -l gibt die Zugriffsberechtigungen z. B. in der Form rw-r--r-- oder rwxr-xr-x aus. Dabei stehen jeweils drei Zeichen für das erlauben (r, w, x) oder Verweigern (-) der Aktion für Benutzer, Gruppe und Rest (in dieser Reihenfolge. </p>

<p>Beispiel: rwx-rw-r-x heißt, dass der Besitzer lesen, schreiben und ausführen, die Benutzer der Gruppe der Datei lesen und schreiben (aber nicht ausführen) und alle anderen lesen und ausführen (aber nicht schreiben) dürfen. </p>

<p>Für Verzeichnisse heißt r, das die Namen der im Verzeichnis enthaltenen Dateien und Verzeichnisse aufgerufen werden dürfen, und x heißt, dass Zugriff auf beliebige Dateien und Verzeichnisse unterhalb dieses Verzeichnisses gestattet ist, wenn dies die Berechtigung der Datei selbst ebenfalls erlauben. Wenn ein Benutzer auf einem Verzeichnis kein x darf, darf er auf keine der enthaltenen Dateien und Verzeichnisse zugreifen, auch wenn es die Berechtigungen der Datei selbst gestatten würden. </p>

<p>User Group World <br />
r w x r w x r w x <br />
4 2 1 4 2 1 4 2 1 </p>

<p>Beispiel: rwxr-xr-x -> 4+2+1=7, 4+1=5, also 755; rw-rw-r-- -> 4+2=6, sowie 4, also 664. <br />
</p>]]>

</content>
</entry>
<entry>
<title>Info-AG I am kommenden Samstag den 10.12.05</title>
<link rel="alternate" type="text/html" href="http://www.theofel.de/infoag/archives/2005/12/infoag_i_am_kom_1.html" />
<modified>2005-12-09T00:24:40Z</modified>
<issued>2005-12-09T00:21:25Z</issued>
<id>tag:www.theofel.de,2005:/infoag//5.2826</id>
<created>2005-12-09T00:21:25Z</created>
<summary type="text/plain">Am nächsten Samstag den 10.12.05 ist wieder Info-AG am üblichen Ort. Thema soll diesmal der Startprozess eines Linux-Systems sein. Ich hoffe Ihr habt &quot;vi&quot; gut verdaut und seit bis Samstag einigermaßen fit darin. Schaut euch Euren Aufschrieb am Besten noch...</summary>
<author>
<name>e0</name>
<url>http://www.undertec.de/</url>
<email>martin.etter@gmx.de</email>
</author>
<dc:subject>News</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.theofel.de/infoag/">
Am nächsten Samstag den 10.12.05 ist wieder Info-AG am üblichen Ort. Thema soll diesmal der Startprozess eines Linux-Systems sein. Ich hoffe Ihr habt &quot;vi&quot; gut verdaut und seit bis Samstag einigermaßen fit darin. Schaut euch Euren Aufschrieb am Besten noch mal an. Wir werden außerdem das Jahr 2005 gemütlich mit ein paar Lebkuchen ausklingeln lassen. Ich setze auf euer zahlreiches Erscheinen (Hab keine Lust das ganze Zeug wieder heimzuschleppen :) ).

</content>
</entry>

</feed>