Desktop ade: Me and my shell



Ähnliche Dokumente
Linux Prinzipien und Programmierung

Shell-Programmierung

Skripte. Beispiel. M. Fyta Computergrundlagen 73/93

INHALT 1. INSTALLATION DES V-MODELL XT UNTER WINDOWS 7 2. INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

X Anmelden am System. X System herunterfahren. X Grundlegendes zur Shell. X Das Hilfesystem. X Dateioperationen. X Bewegen im Verzeichnisbaum

Aufgabensammlung IT Shellprogrammierung Teil I

Exchange Export. Mailbox Export

INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

Version White Paper ZS-TimeCalculation und die Zusammenarbeit mit dem iphone, ipad bzw. ipod Touch

Anleitung über den Umgang mit Schildern

Leichte-Sprache-Bilder

Luis Kornblueh. May 22, 2014

Anleitung: Webspace-Einrichtung

Erklärung zum Internet-Bestellschein

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Eine Einführung in die Installation und Nutzung von cygwin

Erstellen der Barcode-Etiketten:

Übung - Datenmigration in Windows Vista

Was ist Sozial-Raum-Orientierung?

Historical Viewer. zu ETC5000 Benutzerhandbuch 312/15

Was meinen die Leute eigentlich mit: Grexit?

Der Kalender im ipad

Dokumentation zur Versendung der Statistik Daten

Betriebssystem Windows - SSH Secure Shell Client

bizsoft Rechner (Server) Wechsel

Hardware - Software - Net zwerke

Version 0.3. Installation von MinGW und Eclipse CDT

Gibt Daten im erweiterten Format aus. Dies beinhaltet die Angabe von Zugriffsrechten, Besitzer, Länge, Zeitpunkt der letzten Änderung und mehr.

Import und Export von Übergängern

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Tipps und Tricks zu Netop Vision und Vision Pro

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Systemvoraussetzung < zurück weiter >

Gezielt über Folien hinweg springen

Sie müssen sich für diesen Fall mit IHREM Rechner (also zeitgut jk o.ä.) verbinden, nicht mit dem Terminalserver.

Was ich als Bürgermeister für Lübbecke tun möchte

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Karten-Freischaltung mit dem UNLOCK MANAGER

Wie Sie mit Mastern arbeiten

Etikettendruck mit Works 7.0

Statuten in leichter Sprache

SAP-KIS RemoteApp: Besonderheiten beim Dateiexport und Drucken

Psyprax auf einen neuen Rechner übertragen (Rechnerwechsel)

Das Leitbild vom Verein WIR

Quartalsabrechnung! " " " " " " " Stufe 1! Beheben von Abrechnungsfehlern" Stufe 2! Neue Abrechnung erstellen"

Extranet pro familia. Anleitung zur Nutzung Webseitenstatistik. Extranet pro familia Anleitung zur Nutzung Webseitenstatistik...

1. Bearbeite Host Netzgruppen

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Online bezahlen mit e-rechnung

teischl.com Software Design & Services e.u. office@teischl.com

Die Rückgabe kann über folgende, von uns getestete Programme / Apps vorgenommen werden: Adobe Digital Editions Sony Reader for PC Bluefire Reader

Adminer: Installationsanleitung

Backup der Progress Datenbank

Tutorial Speichern. Jacqueline Roos - Riedstrasse 14, 8908 Hedingen, jroos@hispeed.ch -

Anleitung für die Teilnahme an den Platzvergaben "Studio II, Studio IV und Studio VI" im Studiengang Bachelor Architektur SS15

SJ OFFICE - Update 3.0

Wie halte ich Ordnung auf meiner Festplatte?

I.1 Die Parrot Assemblersprache

der Eingabe! Haben Sie das Ergebnis? Auf diesen schwarzen Punkt kommen wir noch zu sprechen.

Deswegen bekomme ich folgende Fehlermeldung: Ich will aber nicht aufgeben, deswegen mache ich es erneut, aber mit einen anderen Seite - networkpro.

Intranet Moodle

Installationsanleitung zum Firmware-Update für den VPA compact III

Rechnung Angebot Zeiterfassung

Einfach und schnell Kurse herbeizaubern mit dem Kurs Wizard

ftp://ftp.dlink.de/dpr/dpr-1061/documentation/dpr-1061%20printer%20compatible%20list.pdf

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Finder > 'Programme' > 'Dienstprogramme' > 'Terminal'

Firewalling. Michael Mayer IAV0608 Seite 1 von 6

So erstellen Sie nützliche Beschreibungen zu Ihren Tradingdaten

Jederzeit Ordnung halten

FÜR 2 BIS 4 SPIELER AB 8 JAHREN

Aber mancher braucht diese Funktionalität halt, doch wo ist sie unter Windows 8 zu finden?

Erfahrungen mit Hartz IV- Empfängern

ANLEITUNG NETZEWERK INSTALATION

1. So beginnen Sie eine Kalkulation

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Verbinden. der Firma

Installation von MailON2!

Kurzanleitung zur Bereitstellung von Sachverhalten und Lösungen zum Universitätsrepetitorium auf dem Server unirep.rewi.hu-berlin.

Task: Nmap Skripte ausführen

P&P Software - Adressexport an Outlook 05/29/16 14:44:26

Wie erreiche ich was?

Bau, Eigenheim, Hütte, Bude, Behausung, Heim

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

Dokumentation. Black- und Whitelists. Absenderadressen auf eine Blacklist oder eine Whitelist setzen. Zugriff per Webbrowser

12. Dokumente Speichern und Drucken

Professionelle Seminare im Bereich MS-Office

Seriendruck mit der Codex-Software

Serienbrief mit Works 7.0

Wie man Registrationen und Styles von Style/Registration Floppy Disketten auf die TYROS-Festplatte kopieren kann.

Hinweis, sofern Sie Probleme beim Download der Excel-Dateien für das LIOS-Makro haben:

Ein PDF erstellen. aus Adobe InDesign CC. Langner Marketing Unternehmensplanung Metzgerstraße Reutlingen

Servername: Servername für FTP ftp.ihre-domain.de Benutzername: Username für FTP Mustername Passwort: Passwort mus44ter

Bauteilattribute als Sachdaten anzeigen

Senioren helfen Junioren

Vorstellung - "Personal Remote Desktop" für (fast) alle Hardwareplattformen und Betriebssysteme

Installation und Inbetriebnahme von Microsoft Visual C Express

Einrichtung eines Zugangs mit einer HBCI-Chipkarte bei der Commerzbank

Transkript:

Ein Shelldiskurs Desktop ade: Me and my shell Erkan Yanar erkmerk@gmx.de

casus belli Warum auf einem Linuxtag mit Schwerpunkt Desktop? Beherrschung der Shell := freie Wahl des Desktops Beherrschung der Shell := Unabhängigkeit vom Desktop Üblichen Verdächtigen

Ziel des Vortrags Meistern der großen Shellstolpersteine

Übersicht Quoting Subshells SUSV3 Kür

"Quoting"

Quoting Die Shell ist ein Makroprozessor Die Kommandozeile wird mehrmals durchlaufen *Danach* werden die Programme aufgerufen

Problem Der mehrmalige Durchlauf oder Die Shell mischt mit

Tokenizing/Expansion Tokenizing Die Shell unterteilt die Kommandozeile in einzelne Tokens Parameter Expansion ${Variablen} werden durch ihren Wert ersetzt Command Substitution $() Kommandos werden ausgeführt und das Ergebnis gesetzt Word Splitting (Field-Splitting) Die Zeile wird aufgrund vom $IFS (Internal Field Separator) in einzelne Tokens zerlegt)

Hilfe Was kann ich dagegen tun? Quoten!!!! Durch Quoten wird die Shell angewiesen auf (eine) Expansion/Tokenizing zu verzichten.

Drei Quoting-Möglichkeiten Wie kann ich Quoten? Backslash \ maskiert das folgende Zeichen \$hasch_mich Singlequotes Maskiert den eingeschlossenen Bereich Doublequotes " " Maskieren den eingeschlossenen Bereich "nur" vor dem Word Splitting rm "$wort" rm "mich auch"

Beispiele wort=hallo welt wort="platz da" echo/touch $wort echo/touch "$wort" Vorführen?!

for i in * do mach_was "$i" done Frage: Warum wird * nicht beim Word Splitting zerlegt? Pathname Expansion kommt nach dem Splitting ;-)

Kurzzusammenfassung Das Tokenizing kategoriesiert einzelne Worte Parameter Expansion und Command Substitution ersetzen Tokens Word Splitting unterteilt die Ersetzungen in Wörter ($IFS) Backslash \ und Singlequotes verhindern beim Tokenizing die "Kategorisierung" Doublequotes " " ermöglichen beim Tokenizing Wörter mit Trennern Doublequotes " " bewahren vor dem Word Splitting

Subshells

Exkurs Prozess/Verzeichnisbaum Mal ein Tafelbild! Prozesse rufen via fork-exec andere Prozesse auf Ein gefork-execter Prozess bekommt eine Kopie der exportierten Variablen Kindprozesse haben keine Zugriff mehr auf den Mutterprozess

Subshells Subshells sind nichts weiter als Kindprozesse Subshells bekommen nur die exportierten Variablen als Umgebung mit Subshells haben eine eigene Umgebung Subshells können keine Variablen des Mutterprozesse ändern

Vorführung chdir Bsp Shellscript ( exp. Variablen) Shellscript (Addition)

Lösung Builtins Shell-Kommandos Erzeugen keinen neuen Prozess Performen

Builtin-Liste Skripte in der aktuellen Shell ausführen:. oder source Diese Anweisung führt das Skript in der aktuellen, anstatt einer Subshell aus source tolles_skript.sh Weitere Builtins cd Jetzt kommen wir endlich weg vom Fleck export, echo, read, alias, exit denk mal darüber nach

Vorführung Skripte von vorhin mit. und source starten Brainstorming zu export, echo, read, alias, exit?

Subshells in der Shellprogrammierung Wo treffen wir auf Subshells? Command Substitution Pipes ()

Subshells-Command Substitution Command Substitution Command Substitution geschieht in einer Subshell Es kann nur mit der Rückgabe gearbeitet werden > c=4 > echo $c 4 > $(c=10) > echo $c 4

Subshells-Pipes Pipes Die Bash führt die Seiten einer Pipe in einer Subshell aus. > size=0 find /tmp -user erkan -print0 xargs -0 stat -c %s \ while read c; do size=$((size+c)); echo Zwischensumme: $size;done \ echo Am Ende: $size... Zwischensumme: 35052639 Zwischensumme: 36113595 Zwischensumme: 37174551 Zwischensumme: 38235507 Zwischensumme: 38372267 Zwischensumme: 38509027 Zwischensumme: 38513123 Zwischensumme: 38513123 Zwischensumme: 38513123 Zwischensumme: 38517219 Zwischensumme: 38521315 Zwischensumme: 38521932 Am Ende:

Subshells-Pipes Pipes Die Bash führt die Seiten einer Pipe in einer Subshell aus. > size=0 find /tmp -user erkan -print0 xargs -0 stat -c %s \ while read c; do size=$((size+c)); echo Zwischensumme: $size;done \ echo Am Ende: $size... Zwischensumme: 35052639 Zwischensumme: 36113595 Zwischensumme: 37174551 Zwischensumme: 38235507 Zwischensumme: 38372267 Zwischensumme: 38509027 Zwischensumme: 38513123 Zwischensumme: 38513123 Zwischensumme: 38513123 Zwischensumme: 38517219 Zwischensumme: 38521315 Zwischensumme: 38521932 Am Ende:

Subshells-Pipes Etwas einfacher: $ a=manno $ echo hallo read a $ echo $a manno

Subshells-() () gruppiert Anweisungen und führt Sie in einer Subshell aus nicht verwechseln mit { } $ pwd /home/erkan $ (cd /tmp) $ pwd /home/erkan $ exec macht sie dauerhaft exec 1>/tmp/log

Kurzzusammenfassung Subshells sind neue Prozesse mit eigener Umgebung Subshells haben keinen Zugriff auf die Muttershell Builtins. und source führen Skripte in der ("Mutter")Shell aus Rechne bei Command Substitution und Pipes mit Subshells!

SUSV3

SUSV3 Definiert Standardverhalten für Shells Größtmögliche Kompatibilität zwischen den Shells

SUSV3+bash echo echo verhält sich nicht POSIX-Konform -e der bash ist bei POSIX standard printf benutzen?! Pipes Kein Standard zu Subshells und Pipes Ergo: Nur mit der Rückgabe arbeiten

Kür

Kür MAX_ARG Unangenehme Dateinamen (Newlines) Debugging

MAX_ARG Maximale Länge der Argumentenliste (exec) Subshells werden via fork-exec erzeugt. Argumentenliste > MAX_ARG => Fehlermeldung Achtung, gilt nicht für builtins $ /bin/ls * Useless Use of ls * bash: /bin/ls: Argument list too long $ echo *...

find schafft Abhilfe find... -exec {} \; Umgeht via -exec ARG_MAX Erzeugt für jeden Treffer einen weiteren Prozess (Subshell) Kommt auch mit Newlinezeichen zurecht Die in einer "POSIX"-Pipe verloren gehen.

GNU-find GNU-find kennt -print0 Kombination mit GNU-xargs -0 find.. -print0 xargs -0 command POSIX-find/xargs kennt die Optionen nicht Schnell und sicher Gerade bei Dateien mit \newline(trennzeichen) Vorführen!

Debugging Hilfsmittel für die Schnelle set -x schreibt jedes Kommando nach dem Expandieren und vor der Ausführung auf STDERR $ a=hallo $ set -x $ echo $a + echo hallo hallo $ wort="halasd asdfaf" + wort=halasd asdfaf $ touch $wort + touch halasd asdfaf $ touch "$wort" + touch halasd asdfaf

DebuggingII set -v schreibt jede Zeile auf STDERR, bevor es expandiert wird $ g="hallo" $ set -v -x set -v -x + set -v -x $ eval a= $g eval a= $g + eval a=$g a=$g ++ a=hallo

Gute Nacht

locale Achten Sie auf die locale-settings Ermöglichen: Sprachtypische Sortierung -> sort Reguläre Ausdrücke $LANG=C $echo HALLOÄÄÄÄ tr [:upper:] [:lower:] halloääää $LANG=de_DE $ echo HALLOÄÄÄÄ tr [:upper:] [:lower:] halloääää

Letzte Seufzer rechnen IFS read