zshell

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!

Zenity

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