Shell Quotes

Meta- Zeichen Unixoider Systeme sind unter Anderem das ‚*‘ oder ‚?‘- Zeichen, beispielsweise im Zusammenspiel mit dem ‚ls‘ Kommando. 

Möchte man solche Zeichen aber in der Ausgabe mit ‚echo‘ oder ‚printf‘ zur Ausgabe benutzen, dann muss man das dem Interpreter der Shell sagen. Das geht indem man dem Zeichen entweder ein ‚\‘ voranstellt oder es in die ‚ bzw. “ Zeichen einschließt:

echo \*

echo ‚*‘

echo „*“

Diese Technik wird als Quoting bezeichnet. Alle drei der oben gezeigten Methoden machen im Prinzip das Selbe. Der Unterschied ist der:

\
Ist die stärkste Form des Quoting.  Für einzelne Zeichen.

 


Strong Quoting
Alle Zeichen werden ausgegeben, auch das ‚$‘. Das heist, Inhalte von Variablen werden nicht berücksichtigt: echo ‚$Hallo‘ hat ‚$Hallo‘ zum Ergebnis.

 


Weak Quoting
Wenn man Meta- Zeichen ausgeben möchte, aber die Inhalte von Variablen und Kommandos (zwischen den ` Zeichen) berücksichtigen möchte, dann sollte man diese Form benutzen: echo „Hallo das ist der Inhalt von $i“. Gibt den angegebenen Text und den Inhalt der Variablen ‚i‘ aus. wenn Sie das so machen: echo ‚Hallo das ist der Inhalt von $i‘ dann ist das Ergebnis: Hallo das ist der Inhalt von $i.

Eine spezielle Bedeutung dabei hat das ` – Zeichen. Es wird nicht als Quote verstanden, sondern als  Kommando- Ersatz:

echo Sie sind im Verzeichnis: `ls`

oder etwa:

echo Heute ist der `date`

 

 

Advertisements

SSH

SSH (Secure Shell). Mit UNIX Systemen kann man damit Verbindung zur Shell eines anderem Computers herstellen der im Netzwerk (LAN) angemeldet ist und ihn damit – gewissermaßen – fernsteuern.

SSH ist mein vorsichtiger Einstieg in das ‚Netzwerken‘. Anlass war mein kürzlich erstandener Raspberry Pi 3. In Ermangelung eines Zweit- Monitors habe ich mich einfach mit der hier beschriebenen Methode in die Kommandozeile meines RPI eingeloggt. Das geht so:

Ich habe eine fritzBox und ein Mac Book. Den RPI verbindet man mit einem Patchkabel direkt mit der fritzBox. Nach ein paar Sekunden sollte die Box den RPI erkennen. Die IP- Adresse kopiert man sich und wechselt dann in die Shell seines Client- Computers (in meinem Fall also mein Mac Book). Die SSH Verbindung stell man so her:

ssh pi@ip-adresse_hierher_kopieren

Vor dem ‚@‘ steht der username und dahinter die IP- Adresse die der Router – in meinem Fall die fritzBox –  dem RPI im Netzwerk zugewiesen hat.

Wenn die Verbindung hergestellt wurde, wird das Password abgefragt. Wie auf raspberry.org beschrieben sollte das ‚raspberry‘ lauten. Nach der Eingabe findet man sich in der Shell des RPI.

Das war es!

 

Unix Shell

Shell Scripts sind nützlich!

Eine gute Übersicht und Einführung zum Thema findet sich da:

Ubuntu Users (Letzter Aufruf: 11.2.2016)

Header

# !/bin/bash 

Gibt an, welcher Interpreter benutz werden soll. Es ginge auch:

#!/bin/perl

Wenn das Programm perl in bin liegt.

Das Ergebnis eines Befehls an einen Befehl übergeben

Im script schreibt man die wie in der Shell. Einfach im Klartext, so werde die dann auch abgearbeitet. Interessant ist, dass Befehle selbst als String an einen Befehl übergeben werden können:

echo $(ls -l)

Die Ausgabe des Beispiels ist das aktuelle Verzeichnis als String, zusammenhängend ohne Linefeed. Letzteren erreicht man mit:

echo „$(ls -l)“

Das Beispiel ist weitgehend sinnfrei, zeigt aber grundsätzlich wie das geht. Nützlicher wäre da schon:

for out in $(ls /Volumes/NO_NAME/DCIM/100NCD90/*.JPG)

Die Schleife arbeitet jeden Verzeichniseintrag ab der dem vorgegebenen Muster entspricht und stellt das Ergebnis (den Dateinamen jeder gefundenen JPG- Datei) in der Variable out bereit. Interessant in diesem Zusammenhang ist: Warum funktioniert das ohne dass der Befehl in Anführungszeichen gesetzt wurde?

 

Making shell (scripts)

Shell scripts unter Unix, sind nützlich. Unbestritten!

Lektion 1 => Wie erzeuge ich eines?

mit dem emacs oder einem anderen Text- Tool deiner Wahl erzeuge eine Textdatei. Wie die heist, ist egal. Auf die inneren Werte kommt es an – zunächst.

Nehmen wir an, wir nennen die example.sh

Wir müssen Unix nun nur noch mitteilen, das example.sh ausführbar ist:

chmod 755 example.sh

Mittels ./example.sh starten wir das Ganze.

 

Command Line Tools

Schnell, elegant und eine Portion Nerd Bonus. Das sind die kleinen, oft kryptischen Befehle, die man im sogenannten Kommandozeilen Modus des Betriebssystems seiner Wahl eintippt.

Dabei dürfte DIR zu den bekannteren Befehlen aus der DOS Welt gehören. Wer sich für Unix interessiert, findet hier was er braucht:

http://www.mitchchn.me/2014/os-x-terminal/