Eine kurze Einführung in die shell. Als Linux-Einsteiger steht man der shell meist sehr skeptisch gegenüber. Man ist von Windows gewohnt alles per Klick zu erledigen und sofort sehen zu können was passiert.
Wenn man aber erst einmal einen Einstieg geschafft hat merkt man wie einfach es ist mit der shell zu arbeiten und wieviel Spass es bereiten kann.
Serienmässig kommen die meisten Distributionen mit der bash (Bourne Again Shell).
Ich habe mir allerdings die zshell (zsh), die früher die Standart-Shell von MacOSX war, installiert. Und das geht folgendermassen:
sudo apt-get install zsh
Auf Debian basierten Systemen. Danach gebe ich
chsh
und danach den Pfad zur Shell
/usr/bin/zsh
ein um sie zur Standart-Shell zu machen.
In der bash sehe ich folgenden Prompt:
horst@linux ~ $
Das bedeutet: user - hier horst @ computer name - hier linux ; ~ $ als user angemeldet. Wäre ich als root angemeldet würde statt ~ $ ein # stehen.
In der zshell sehe ich lediglich:
linux%
Als erstes passe ich meine zshell mit ein paar Befehlen an:
setopt correct
aktiviert die Eingabe Korrektur. Die zsh versucht falsch geschriebene Befehle zu korrigieren.
Die grosse Stärke der zsh ist der
Vervollständigkeitsmechanismus. Zum Aktivieren dient der Befehl:
autoload -U compinit &&
compinit
Zum schnellen Wechseln in ein
Verzeichnis dient:
setopt auto_cd
Gebe ich ein Kommando ein das nicht im
Programmpfad steht, aber einem Verzeichnisnamen entspricht, wechselt
die zsh stattdessen in das Verzeichnis.
Nun geben wir unser erstes Kommando ein:
linux% pwd ( present working directory ; in welchem Verzeichnis befinden wir uns )
Ich bekomme als Antwort:
/home/horst
Nun gebe ich
linux% ls
ein und bekomme alles aufgelistet was sich im Verzeichnis /home/horst befindet.
Nun erzeuge ich das Verzeichnis (directory) "btest" mit dem Befehl:
linux% mkdir btest ( make directory)
Wenn ich nun nocheinmal ls aufrufe sehe ich btest in meinem Terminal.
Mit dem Befehl cd btest wechsel ich in das Verzeichnis btest.
Dort
kann ich mit echo „hallo linux-user“ >
test.txt
die Textdatei test.txt anlegen und z.B. mit dem Satz
„hallo
linux-user“ befüllen ohne Verwendung eines Texteditors.
( Statt echo kann man auch print verwenden )
Wenn wir nun ls aufrufen bekommen wir angezeigt, dass eine Datei test.txt in unserem Verzeichnis btest existiert. pwd zeigt, dass wir uns im Verzeichnis btest befinden.
Mit cat test.txt können wir uns den Inhalt von test.txt auf der shell ausgeben lassen.
grep „user“ test.txt liefert uns alle Zeilen von test.txt in denen das Wort „user“ vorkommt.
Mit mkdir btest2 erzeugen wir das Verzeichnis btest2 im Verzeichnis btest, was ls verdeutlicht.
Ls -l liefert uns nähere Einzelheiten:
drwxr-xr-x 2 horst horst 4096 2010-04-25 00:39 btest2
rwxr-xr-x :Beschreibt die Zugriffsrechte für das Verzeichnis btest2 (das d steht für directory; bei einer Datei wäre ein Minuszeichen zu sehen)
2: Anzahl der im System vorhandenen Verzeichniseinträge.
horst horst: User- und Gruppenname des Datei-/Verzeichniserzeugers
4096: Datei-/Verzeichnisgrösse in Bytes
2010-04-25 00.39: Datum und Uhrzeit der Erstellung
btest2: Date-/Verzeichnisiname
Zugriffsrechte:
r = read; w = write; x = execute;
In dem Beispiel oben (rwxr-xr-x) hat der Besitzer des Verzeichnisses rwx-Rechte; die Gruppe r-x-Rechte und User ausserhalb der Gruppe auch r-x-Rechte.
Das Löschen der Datei test.txt geschieht mittels rm test.txt.
Um ein Verzeichnis löschen zu können müssen wir rm -r btest2 eingeben.
Ich kann übrigens auch Unterverzeichnisse in einem Rutsch erzeugen, und zwar mit dem Befehl:
mkdir -p btest/btest2/btest3
Ich habe nun einen Ordner btest3 in dem Ordner btest2 erzeugt, welcher wiederum in btest liegt!
Wir wechseln mit cd in unser Heimatverzeichnis und löschen btest bevor wir diese Einführung beenden.
Ein weiteres Beispiel zu den Shellbefehlen cat, grep und zusätzlich cut.
Ich habe eine Datenbank mit Namen fb.dat angelegt.
Mit dem Befehl cat lasse ich mir den Inhalt auf der shell anzeigen.
Mit grep suche ich nach Schlüsselwörtern in der Datenbank und cut zeigt mir einzelne Bereiche an!
Ich habe heute auf der Ubuntuuser-Seite ein recht lustiges Skript gefunden welches man mit Zenity ausführen lassen kann.
Zenity installiert man, wie gehabt, auf Debian- Ubuntu basierten Systemen mittels apt-get install oder über die Synaptic-Paketverwaltung.
Ich habe folgenden Code in einem Texteditor eingegeben und als "eingabe" irgendwo abgespeichert.
#!/bin/bash
if ! zenity --warning --text "Dieses Programm ist eigentlich harmlos!\nTrotzdem fortfahren?"; then
exit;
fi
if ! NAME=$(zenity --entry --text "Bitte geben Sie Ihren Namen ein:" --title "Wer sind Sie?"); then
exit;
fi
if ! PASS=$(zenity --entry --hide-text --text "Bitte geben Sie das Passwort ein:" --title "Und das Passwort?"); then
exit;
fi
(
echo "25"; sleep 1
echo "# Statusmeldung 1"
echo "50"; sleep 1
echo "# Statusmeldung 2"
echo "100"
) | zenity --progress --text "Vorgang wird bearbeitet" --percentage=0
zenity --info --text "Ihr Name: $NAME\nIhr Passwort: $PASS" --title "Das Ergebnis!"
Ich öffne meine Shell und mache das Skript aus führbar:
chmod +x eingabe
Dann rufe ich es auf:
./eingabe