Autor Thema: /bin/bash - ahoi  (Gelesen 1619 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline Baldrian

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 2426
  • Bewertung der Beiträge: 28
  • Geschlecht: Männlich
    • Profil anzeigen
    • ecarux.de
/bin/bash - ahoi
« am: Juni 17, 2005, 22:31:48 »
Hi,
 
ich möchte hier ein paar wichtige und nützliche Befehle für die Konsole aufführen.
In der Linux (oder generäll der Welt der Unix-artigen Betriebsysteme) ist es wesentlich verbreiteter, Aufgaben in einer Textkonsole zu lösen, anstatt unter der Grafischenoberfläche. 

Unter Linux gibt es eine klare Trennung zwischen dem eigentlichen Betriebsystem und der GUI. Das liegt daran, das Linux (unix) ursprünglich hauptsächlich für Server und Netzwerke vorgesehen war. Eine Grafischeoberfläche wie für heutige Desktoprechner üblich war damals nicht vorgesehen.

Wenn man jetzt ein GNU/Linux System von einem der großen Distributoren auf seinem Desktop Rechner installiert, sieht das Ergebnis aber meistens nicht groß anders aus, als man es von Windows her kennt.
Aber unter der Oberfläche ticken die Uhren anders. Viele der Programme sind nach wie vor konsolen Programme nur haben sie zusätzlich ein grafisches Frontend.
Warum benutzt man unter Linux aber immer noch eine Textkonsole?
Die Linux Shell hat halt wesentlich mehr zu bieten als die Windows Eingabeaufforderung.
Es lassen sich alle Aufgaben komplett über die Shell erledigen, auch Webbrowser, Mails, CDs brennen und Videos (mit hilfe des Framebuffer) und wenn man sich erst einmal ein bisschen an die Shell gewöhnt hat, wird man merken das vieles schneller über die Konsole geht. 
Ein Beispiel, das erstellen eines neuen Ordner. Wenn man nur mit einer Grafischen Oberfläche arbeitet, müste man jetzt erst einen Dateimanager starten, auf "Datei" klicken, auf "neu" gehen, auf "Ordner erstellen" klicken und zuletzt den Namen für den neuen Ordner eingeben. 
In der Shell wäre das ein simples 
# mkdir "ordnername" Was geht wohl schneller?
Wer beim Einsatz einer Textkonsole befürchtet, seine Tastatur einem frühzeitigen Tod zu bescheren, den kann ich endwarnen. Die bash (bourne again Shell), die standart Shell von Linux, bietet viele Komfortfunktionen.
 


Durch das Betätigen der TAB-Taste, wird die Autoverfolständigung genutzt.
Wenn ein Programm im PATH liegt, wird dieses vervollständigt.
Man will zB. das Programm tail starten, und brauch dann nur ta[TAB] eingeben, wenn es kein weiteres Programm gibt, das mit ta beginnt, vervollständigt die TAB-Taste das wort.
Wenn es mehrere Möglichkeiten gibt, werden diese nach erneutem drücken der TAB-Taste aufgelistet.
Das gleiche gilt für Pfade. Wenn man zB. ins Verzeichnis /home/benutzer wechseln möchte, würde ein # cd /h[TAB]b[TAB] reichen.
 
Eine weitere schöne Hilfe ist, das die Shell Befehle speichert.
Wenn man zum Beispiel einen langen Befehl eingegeben hat und diesen dann in nur leicht abgewandelter Form noch einmal benutzen will, brauch man lediglich die PFEIL-NACH-OBEN Taste drücken. Dann ist der alte Befehl wieder da.
Und das geht immer so weiter. Zweimal die Pfeil-Taste und man ist beim vorletzten Befehl. Man kann in der Shell also einfach mit den Pfeil-Tasten in den alten Befehlen blättern.
 
Es gibt unter Linux aber standartmäsig mehr als eine Konsole.
Es gibt insgesamt sechs stück. Diese Konsolen lassen sich mit der Tastenkombination STRG-[F1] bis [F6] aufrufen. Auf [F7] liegt der X-Server. 

Noch eine schöne Sache der bash. Man kann die Bash relativ einfach an die eigenen Bedürfnisse anpassen. In der Datei .bashrc (mit einem "." anfangenden Dateien sind versteckte Dateien) kann man zB. Aliase definieren.
Ein Beispiel:
Mit dem Befehl echo kann man einfach einen Satz in der Konsole ausgeben.
# echo "Hallo, wie geht's ?" gibt einfach 
Hallo, wie geht's ? 
aus.
# echo -e "Hallo,\n wie geht's ?" würde
Hallo,
wie geht's ?
ausgeben. also mit einem zeilen Umbruch.
Wer echo jetzt immer mit dem Parameter -e nutzen will, damit durch den Schalter \n ein Zeilenumbruch entsteht, der kann in der .bashrc einen eintrag wie alias echo="echo -e" eintragen.
Dadurch wird bei der einfachen Eingabe von echo immer echo -e benutzt.


Fortsetzung folgt ...
"Was auch immer geschieht, nie dürft ihr so tief sinken,
von dem Kakao, durch den man euch zieht, auch noch zu trinken."

Offline Baldrian

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 2426
  • Bewertung der Beiträge: 28
  • Geschlecht: Männlich
    • Profil anzeigen
    • ecarux.de
Re: /bin/bash - ahoi
« Antwort #1 am: Juni 17, 2005, 23:19:47 »
 
So, jetzt kommen aber erst ein paar sehr nützliche Befehle:
 
Befehle für Verzeichnisse:
 
 cd
- mit cd kann man in der Shell durch die Verzeichnisse wecheln. cd /home/benutzer bringt einem ins eigene Home verzeichnis. Um den Baum wieder runter zuklettern, benutzt man cd ..
Das läst sich natürlich kombiniren. 
 Wenn man zB. im Verzeichnis /home/benutzer/fotos ist und nach
 /home/benutzer/texte will, kann man einfach cd ../texte eingeben.
Dadurch geht cd erst ein Verezeichnis runter und dann hoch ins  Verzeichnis texte.
 
 ls
 - ls listet den inhalt eines Ordners auf.
 
 mkdir
- mkdir legt ein Vereichnis an. mkdir texte erstellt in dem Ordner in dem man gerade ist den Ordner texte. Natürlich funktioniert das auch mit
Pfad angabe. also /home/benutzer/texte
 
 rm
 - Mit rm löscht man eine Datei.
Mit rm -rf löscht man einen Ordner.
 
Kleine zwischen Bemerkung. Viele Befehle haben Schalter. So wie oben genanter rm
Befehl den Schalter -rf um Verzeichnisse zu löschen.
Um sich die möglichen Schalter für einen Befehl anzeigen zu lassen, gibt man befehl --help ein.
Es gibt sehr nützliche Schalter der Schalter -p beim Befehl mkdir legt zB. nur eienen Ordner an, wenn dieser noch nicht vorhanden ist.
Da manche Schalter so sinnvoll sind, kann wie oben beschrieben auch als alias definieren. 
 
Datei Befehle:
 
Die einfachste möglich keit eine Datei über die Konsole zu erstellen oder zu verändern ist der gebrauch eines Editors.
Es gibt viele Editoren für GNU/Linux. Die bekanntestetn und größten sind vi und emacs.
Die meisten Linux schlagen sich unter einander die Köpfe ein, welcher von beiden Editoren der bessere ist. Das ist quasi ein wahrer Glaubenskrieg.
Ich persönlich bevorzuge allerdings für die Konsole nano.
nano kann zwar nicht viel, aber editieren tut er auch und er ist vorallem einfach.
Deshalb mein persönlicher tip als Konsolen editor: nano.
 
Manchmal braucht es aber keinen Editor wenn man an eine Datei rann will.
 
 cat
 - cat gibt den Inhalt einer Text Datei in der Konsole aus.
 
 less
 - Über less wird auch der Inhalt einer Textdatei in der Konsole ausgegeben, 
allerdings im gegensatz zu cat rasselt hier nicht einfach alles runter, sondern
man kann in dem Text mit den Pfeiltatsten hoch und runter scrollen.
 
 head
 - Mit head kann man sich die ersten 10 Zeilen einer Datei anzeigen lassen. Mit head -n kann man die Anzahl der Zeichen bestimmen.
Wozu das gut ist? Wenn man wissen möchte was für eine Datei man
überhaupt vorsich hat. Meistens wird das in den ersten 10 Zeilen beschrieben.
 
 tail
 - Das Gegenstück zu head. tail gibt die letzten 10 Zeieln aus. Das ist nützlich bei log Datein, wenn man nur angezeigt bekommen möchte, was als letztes passiert ist.
 
 tree
 - tree ist ähnlich wie ls, zeigt allerdings eine Baumstrucktur mit Unterordnern
an.
 
 mv
 - mit mv kann man eine Datei verschieben. mv /usr/share/doc/test.txt  /home/benutzer
verschiebt die Datei test.txt in den neuen Ordner.
Mit mv kann man auch Dateien umbenen. mv test.txt hallo.txt benennt die datei test.txt in hallo.txt um.
 
 cp
 - Der cp Befehl dient zum kopieren.    cp /usr/share/doc/test.txt /home/benutzer würde die Datei test.txt ins neue Verzeichnis kopieren, sie aber gleichzeitig im original Ordber belassen.
Mit dem Schalte -a kann man auch Verzeichnisse kopieren. Das tolle, alle
Dateirechte werden beibehalten.

 find
 - Mit find kann man eine Datei in einem Ordner suchen

 grep
 - grep dient zum durchsuchen des Inhaltes einer Ausgabe.
#cat test.txt | grep hallo
Der cat Befehl würde erst die Datei test.txt ausgeben. grep würde dann diese Ausgabe nach dem Suchwort "hallo" durchsuchen. Auf der Konsolle würde man so nur alle Zeilen die zum Suchwort "hallo" gehöhren angezeigt bekommen.
Das komische "|" Zeichen nennt sich Pipe. Eine Pipe dient dazu einen Befehl auf einen anderen zu beziehen. aber dazu später mehr.


Fortsetzung folgt ....
« Letzte Änderung: Juni 17, 2005, 23:37:02 von Baldrian »
"Was auch immer geschieht, nie dürft ihr so tief sinken,
von dem Kakao, durch den man euch zieht, auch noch zu trinken."

Offline Baldrian

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 2426
  • Bewertung der Beiträge: 28
  • Geschlecht: Männlich
    • Profil anzeigen
    • ecarux.de
Re: /bin/bash - ahoi
« Antwort #2 am: Juni 18, 2005, 12:13:13 »
Ich hab hier jetzt ja schon ein paar Befehle aufgeführt, wer mehr über die einzelnen Befehle und deren Parameter wissen möchte, der sollte es auf jeden fall erst einaml mit den Linux Boardmitteln versuchen.
Ein Befehl mit dem Parameter --help, zeigt die wichtigsten Schalter und Parameter für den Befehl an.
Mit # man befehl wird die man (manual) Page des Programmes mit hilfe von less dargestellt.
Ein ähnliches Prinzip ist # info befehl. Info Seite werden Haupsächlich von Programmen des GNU Projekts angelegt.

Eine andere wichtige Sache ist, das Linux einen Befehl nur dann ohne angaben eines Pfad ausführen können wenn diese in PATH liegen.
Das bedeutet, das man den Pfad für binäre Dateien vorbestimmt.
Binäre Dateien sollten sich immer im bin Ordner befinden. sbin ist der Ordner der nur für Programme die ausschließlich für den Superuser root vorgesehen sind (zB. fürs formatieren von Festplatten).
So die Geschichte mit dem PATH ist jetzt folgende, es gibt mehr als einen /bin. Es gibt /bin , /usr/bin und /usr/local/bin, wenn man jetzt binäre Dateien in einem anderen Verzechnis hat, würden diese nicht ohne Pfad angabe gefunden.
Um also den Pfad(e) zu bestimmen, in denen die Shell suchen soll, muß man diesen übergben. Das geht folgender maßen:
# export PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
Die verschiedenen Pfade werden einfach durch einen  Doppelpunkt getrennt. Wenn man also ein Programm installiert hat, aber der Aufruf von diesem zu keinem Ergebnis fürt, dann stimmt eventuell der PATH nicht.


So, noch ein paar Befehle:

adduser
 - mit adduser "Benutzername" fügt man dem System einen neuen Benutzer hinzu.

addgroup
 - mit addgroup fügt man dem system eine neue Gruppe hinzu.

Die Sache ist, das dises Gruppen / Benutzer Geschichte nicht nur für reale Benutzer gilt, sondern auch für sogenannte Systemgruppen.
Es  gibt Gruppen wie audio, video, brenner, camm etc. .Wenn man also ein Benutzer zB. keinen Sound hat, obwohl die Soundkarte ordnungs gemäß installiert ist, dann befindet er sich eventuell nicht in der Gruppe "audio".
Um den Benuzer in die Gruppe "audio zu bekommen, muß man folgendes eingeben.
# adduser "Benutzername" audio



Fortsetzung folgt....
"Was auch immer geschieht, nie dürft ihr so tief sinken,
von dem Kakao, durch den man euch zieht, auch noch zu trinken."