Linux Terminal Befehle

albaum

Ensign
Registriert
Juli 2014
Beiträge
172
Hey,

an meiner Universität bin ich zurzeit in einen Informatikvorkurs, indiesem nehmen wir das Betriebssystem Linux durch.

unter: http://pi.informatik.uni-siegen.de/schuh/lk-handout.pdf kann man sich das Handout zum Vorkurs downloaden.

Im Moment sind wir beim zweiten Teil angekommen und haben ein paar Übungen bekommen, jedoch komme ich gar nicht richtig damit klar und bitte euch um Hilfe.

1. Zum Beispiel sollen wir alle Adressen mit einer Zeilennummer 20 bis 29 aus der Datei "adressen" auflisten:

grep head -n 29 adressen (also hier komme ich schon nicht weiter... Ich weiß dass ich den Befehl grep benutzen muss jedoch weiß ich nicht wie ich die Adressen mit einer Zeilennummer von 20 bis 29 aufliste... ich weiß nur wie ich den ersten oder den letzten teil ausgeben kann, also head und tail...)

2. In einem anderen Bsp soll man die Straßennamen und Hausnummern aus der Datei adressen ausgeben:

grep ( dann Straßennamen und Hausnummern... aber wie ist der Befehl definiert? Wie gibt er die Straßennamen und Hausnummern aus? Die sind doch immer verschieden... HILFE!!!)

3. Ein weiteres Bsp wobei ich Hilfe benötige ist, das erstellen einer neuen Datei nur mit Vorname, Anrede und Nachnamen aus der Datei adressen:

Da müsste man ja eig die Datei adressen kopieren und dann alle Dateien außer Vorname, Anrede und Nachnamen entfernen (mit cut) oder?

Also: cp adressen dann cut (keine ahnung wie man alles andere entfernt... Hilfe bitte...)

4. Wenn man eine neue Datei nach Postleitzahlen notiert erzeugen soll:

cp adressen und dann grep Postleitzahlen adressen ( aber dann habe ich auch keine neue Datei mit dem Inhalt von adressen erstellt...)

5. Man soll die doppelten Zahlen aus 2 Dateien ausgeben.. Dazu soll man Pipe für die ein und ausgabe benutzen:

Dafür braucht man ja den Befehl uniq oder? Also: uniq Datei1 -ls und danach uniq Datei2 -ls (-ls ja zum ausgeben oder?)

6. Soll man aufschreiben wie die nummerische Berechtigung bei einer Datei mit -rwxr-x--- nach Eingabe des folgenden Befehl aussieht: g-x file

Die letzten drei - bedeuten ja dass Sonstiges nicht lesen schreiben und ausführen darf und die ersten vier Buchstaben bedeuten, dass der Eigentümer lesen schreiben und ausführen darf.
Und das x in der Mitte bedeutet dass die Gruppe nur in die Datei Schreiben darf...

Stimmt dass? Oder habe ich da schon Fehler?

Dann nach dem Befehl g-x file (wofür steht das g? x ist ja das Ausführen der Datei aber g?)... Ehrlich gesagt habe ich keine Ahnung wie es sich nach dem Befehl verändert da ich nicht weiß wofür das g steht und aus was das x, also das ausführen, wirkung hat. Sind alle betroffen, sodass Der Eigentümer, die Gruppe und Sonstiges dann die Datei ausführen können oder wie? ...

7. Wenn man die Rechte so abändern möchte dass nur die Gruppe die Datei lesen und reinschreiben darf:

chmod 060 Datei oder?

Und wenn nur Sonstige lesen und reinschreiben darf:

chmod 006 Datei oder?

8. Wenn man die Rechte einer Datei so ändert dass man sie ausführen kann:

chmod g+w Datei oder?



Ich weiß dass es vllt den Anschein macht dass ich euch die ganze arbeit aufbrummen möchte aber ich bin mit den nerfen am Ende... Ich versuche dass jetzt schon seit 4 Stunden hinzubekommen und schaffe es nicht... :( Ich habe all meine Ansätze hier reingeschrieben mit der Hoffnung dass mir jemand Helfen kann...
 
albaum schrieb:
Ich weiß dass es vllt den Anschein macht dass ich euch die ganze arbeit aufbrummen möchte

So wirkt es tatsächlich, und dabei studierst du Informatik an der Uni. Die letzten Fragen zu Dateirechten sind z. B. in jedem Linux-Buch erklärt. Also warum liest du nicht einfach die entsprechenden Abschnitte in einem Buch?

Die anderen Fragen könntest du konkreter stellen, z. B. : Wie bekomme das dritte Wort einer Zeile aus einer Textdatei?
 
Hi,
erstmal ein paar allgemeine Tipps:
Hab ein Terminal vor dir und probiere die Befehle aus, lege sie dir nicht nur in deinem Kopf zurecht. Ob du ein echtes Linux hast, ein OSX, oder unter Windows cygwin, oder VirtualBox mit Ubuntu live oder was auch immer, Ausprobieren ist wichtig. Außerdem kannst du dir mit "man [Befehl]" die Hilfe anzeigen und nach Parametern durchsuchen, oder meistens mit [Befehl] --help die Kurzversion anzeigen lassen.
Zweitens frag auch deine Komilitonen um Hilfe, oder mach mit ihnen die Aufgaben zusammen. So ein Vorkurs ist ideal um erste Kontakte zu knüpfen und auch später im Studium wird es Aufgaben geben, die unmöglich jeder alleine lösen kann.

Die meisten Befehle bekommen als Eingabe entweder eine Datei oder einen input stream (STDIN) und geben die Daten als output stream (STDOUT) zurück. Der Dateiinhalt wird nicht verändert. Meistens musst du mehrere Befehle kombinieren um zum Ziel zu gelangen und manchmal die Ausgabe in eine Datei umleiten. Lies dich daher genauer zum Thema pipes und redirection ein.
Beispiel: Um eine Datei nach einem Wort zu durchsuchen könnte man "grep [suchwort] [datei]" verwenden. Oder cat und grep kombinieren, ersteres gibt einfach den Dateiinhalt aus: "cat [datei] | grep [suchwort]". Das pipe-Zeichen leitet die Ausgabe von cat zur Eingabe von grep, das dann diese Eingabe durchsucht und ausgibt. Will man das Ergebnis in eine neue Datei schreiben, sieht das so aus: "cat [datei] | grep [suchwort] > [neuedatei]". Ob sinnvoll oder nicht, so kann man unendlich viel kombinieren und meist führen mehrere Wege zum Ziel.

Zur ersten Aufgabe macht es imo wenig Sinn grep zu benutzen. "man grep" sagt, es gibt Zeilen aus, die einem Muster entsprechen. Hast du ein Suchausdruck nach dem du suchen willst? Deine letzten Worte sind quasi die Lösung: du kennst head und tail. Könnte man vielleicht die ersten 29 Zeilen ausgeben und dann davon wiederum die letzten 10? (mit Nummierung in der Informatik immer aufpassen, aber Zeilen 20-29 sollte 10 Zeilen sein, glaub ich... ;) )
Der Befehl dazu:
head -n 29 adressen | tail -n 10
Es gibt mit Sicherheit auch andere Lösungen!

Ich hoffe damit kommst du auch bei den anderen Aufaben weiter, du musst "nur" ein bisschen um die Ecke denken und die richtigen Befehle kombinieren.
Wenn bei 2) in der Datei die Adressen jeweils in einer Zeile stehen kommst du mit "cut" weiter, du kannst damit nicht nur feste Zeichenpositionen ausschneiden, sondern auch "Felder".

3) erweitert dann die Aufgabe 2 um eine Ausgabe in eine Datei, siehe weiter oben.
cp ist ein Befehl der nur auf Dateiebene funktioniert, nicht auf Streams/Zeilen!

Zu den Dateirechten noch der Hinweis, dass es Rechte für Benutzer/user, Gruppen/group und Andere/other gibt und 3 Rechtearten: lesen/read, schreiben/write und ausführen/execute. Letzteres heißt bei Ordnern dass man sie durchsuchen, also den Inhalt mit "ls" ausgeben kann und bei Dateien, dass man sie mit ./datei ausführen darf (ob das auch klappt kommt auf den Dateiinhalt an).

Viel Erfolg noch...
 
HaZweiOh schrieb:
Die anderen Fragen könntest du konkreter stellen, z. B. : Wie bekomme das dritte Wort einer Zeile aus einer Textdatei?

Und das kann man dann bei Google eingeben und ausprobieren.

Bei mir geht das immer nach "learning by doing". Heißt wenn ich was gebraucht habe, dann habe ich das entsprechend bei Google eingegeben und ausprobiert. Inzwischen würde ich sagen das ich erweiterte Kenntnisse von Linux habe und ich mache das schon seit Jahren so. Profi bin ich natürlich nicht.

Halt dich an die Tips von mauorrizze, so würde ich das an deiner Stelle auch machen. Ansonsten: "man" ist dein Freund ;-)
 
Zurück
Oben