Ein erstes eigenes Unix-Programm (Hello World)

Ähnliche Dokumente
Oft feinere / flexiblere Regelung der Zugriffsrechte gewünscht ACLs = access control lists Features:

Oft feinere / flexiblere Regelung der Zugriffsrechte gewünscht ACLs = access control lists Features:

Ein erstes eigenes Unix-Programm (Hello World)

1. Aliases. Shells: Was passiert mit einem Kommando? 2. Variablen. Shell durchläuft folgenden Zyklus: Ersatz für häufige / längliche Kommandos

Shells: Was passiert mit einem Kommando?

Shells: Was passiert mit einem Kommando? Prozeßkontrolle. Aliases. Variable. Wichtige Environment-Variablen. Shell durchläuft folgenden Zyklus:

Shells: Was passiert mit einem Kommando?

Einführung Unix Shell

UNIX/Linux Lösung. Mär 18, 18 15:34 Seite 1/6

Shell. Oder Konsole suchen im Application Finder. Auch Terminal, Bash oder Kommandozeile genannt. Bash nimmt Befehle entgegen und führt diese aus

Okt 10, 16 17:29 UNIX/Linux Lösung

Grundlagen der Programmierung

Sep 25, 18 8:36 UNIX/Linux Lösung

UNIX/Linux Lösung. Mär 08, 16 16:11 Seite 1/6

UNIX/Linux Lösung. Mär 14, 17 20:40 Seite 1/6. Prozeßsynchronisation (was ist das?, wo kommt es vor?, Beispiel?):

Programmierung I Einführung in Unix/Linux

Arbeiten mit der Shell Teil 2

Grundlagen der Programmierung in C Klassen

Computer & GNU/Linux Einführung Teil 3

Arbeiten mit der Shell Teil 2

Computernutzung für Experimentalphysiker Frei progammierbare Rechner als Werkzeuge in der Experimentalphysik Teil 2

UNIX Die wichtigsten Befehle

Computer & GNU/Linux Einführung Teil 4

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

Ein- und Ausgabeumlenkung

Unterschiede in Dateien mit diff

Shell-Programmierung

SHELL WE BEGIN? EINE EINFÜHRUNG IN DIE SHELL. Max Rosin - ANKÜNDIGUNGEN

Bash-Skripting Linux-Kurs der Unix-AG

Der Standard-Editor vi

shell variable HOWTO.txt

Shell-Scripting Linux-Kurs der Unix-AG

Crashkurs Kommandozeile

Shell-Scripting Linux-Kurs der Unix-AG

Linux Prinzipien und Programmierung

Bash-Skripting Linux-Kurs der Unix-AG

Exkurs: Unix Programme

Arbeiten in der Unix-Kommandozeile. PeP et al. Toolbox Workshop

Arbeiten mit der Shell Teil 2

Arbeiten mit der Shell Teil 2

Arbeiten mit der Shell Teil 2

Okt 02, 17 12:28 UNIX/Linux Lösung

Basiskonzepte des Rechnerbetriebs

Unix/Linux Grundlagen für Einsteiger

UNIX Grundlagen. Sascha Frank SS August 2006 UNIX I. Sascha Frank. Einführung. Basic Befehle. Quellen

Vorlesung Unix-Praktikum

Allgemeines. Shell Programmierung Unix. Kommentar. Vorgangsweise. Mag. Thomas Griesmayer

Shell-Scripting Linux-Kurs der Unix-AG

Vorlesung Unix-Praktikum

Die Shell. Ein Vortrag von Frederik und Michael 1 / 35

GNU/Linux Introduction Part 3. Simon M. Haller, Sebastian Stabinger iis.uibk.ac.at

Pipes. 1 Prozessverwaltung. 2 Pipes. 3 Rechteverwaltung. 4 Secure Shell Fernsteuern anderer Rechner. 5 Kommandos, Kommandos, Kommandos,...

Bash-Scripting Linux-Kurs der Unix-AG

Benutzung der Manpage, Shell Teil 3

Linux I II III Res WN/TT NLTK XML Weka E Theorie Terminal Ein- und Ausgabe. Linux I. 1 Linux I. Theorie Terminal Ein- und Ausgabe. Ressourcen-Vorkurs

D.2 Sonderzeichen (2)

Shell-Scripting Linux-Kurs der Unix-AG

L A TEX, Linux, Python

UNIX/Linux Lösung. Okt 12, 13 13:57 Seite 1/6. Pipe (was ist das?, wo kommt es vor?, Beispiel?): Datenverbindung zwischen 2 Prozessen(Kommandos)

Arbeiten in der Unix-Kommandozeile

Kommandozeilen effizient nutzen und verstehen

Unix Grundlagen. - ii - Ambit Professional Seminar Series. Autor: Prof. J. Anton Illik Diplom-Informatiker

Übungen zu Systemprogrammierung I Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2003 C-Uebung1.fm

Basiskonzepte des Rechnerbetriebs. 6 Die Shell: Der UNIX-Kommandointerpreter

Linux eine Einführung

Arbeiten mit der Shell Teil 2

I Grundlagen der System-Administration 8

Arbeiten in der Unix-Kommandozeile

Einführung in Linux Ein Untertitel

Computer & GNU/Linux Einführung Teil 2. Simon Haller iis.uibk.ac.at

Kommandozeilenverarbeitung durch die Unix-Shell (bash)

Technische Praxis der Computersysteme I 3. Vorlesung

GNU/Linux Introduction Part 2. Simon M. Haller, Sebastian Stabinger iis.uibk.ac.at

Eine Mini-Shell als Literate Program

Systemverwaltung mittels Skripts

Perl-Praxis. Dateien und Daten. Jörn Clausen

Fachhochschule Frankfurt am Main Fachbereich 2: Informatik WS 2008/2009

Es können mehrere Kommandos in der Kommandozeile eingegeben werden Kommandoverkettung.

Computer & GNU/Linux Einführung Teil 3

Computer & GNU/Linux Einführung Teil 2

Computermethoden in der Physik

Teil 1: Einführung in die Shell. Was ist die Shell? Wichtige Kommandos (1) Einführung in die Shell. Grundlagen der Shell-Programmierung

Linux II. Reguläre Ausdrücke Editoren Scripting. 2 Linux II. Linux I II III Res WN/TT NLTK XML Weka E Reguläre Ausdrücke Editoren Scripting

SelfLinux Dateien unter Linux

Werkzeuge der Informatik Einführung in Unix/Linux

Arzu Sanli Ibrahim Canakci

Linux und Shell-Programmierung Teil 5

Hochschule Für Angewandte Wissenschaften FH München Sommersemester Thomas Kolarz. Folie 1.

Desktop ade: Me and my shell

Suchen in Files mittels Grep

pwd mkdir Zeigt das aktuelle Verzeichnis an Beispiel: pwd

105.1 Shell, Scripting

Arbeiten in der Unix-Kommandozeile

SelfLinux Dateien unter Linux

Windows PowerShell. CmdLets. PipeLine / Filter. Variablen / Operatoren. Schleifen / Prüfmethoden. Funktionen / Skripte. Allgegenwärtige Parameter

UNIX-Benutzerumgebung und Shell. die Zuordnung der Zeichen zu den Sonderfunktionen kann durch ein UNIX-Kommando (stty(1)) verändert werden

Transkript:

Ein erstes eigenes Unix-Programm (Hello World). Zachmann 47 Prozesse aus Sicht der Shell 3 Zustände eines Prozesses (aus Sicht der Shell) Foreground: Default - Ausgabe (stdout) des Prozesses erscheint im Terminal-Fenster - Eingabe (stdin) des Prozesses kommt vom Keyboard Background: - Ausgabe erscheint im Fenster - Eingabe nicht erlaubt estoppt: - Prozeß schläft. Zachmann 48 1

Kommandos zur Prozesskontrolle Befehl Funktion ps ps -edfjw ps -auxw kill pid kill -9 pid command & jobs trl- trl-z fg bg trl-s trl-q top Prozesse anzeigen Alle Prozesse anzeigen dito für einige andere Unix-Varianten Prozeß mit PID pid abbrechen (wie trl-) wenn der Prozeß trotzdem nicht aufhören will Prozeß im Hintergrund starten Prozesse im Hintergrund anzeigen Foreground-Prozeß abbrechen (interrupt) Foreground-Prozeß anhalten (stoppen) Zuletzt angehaltenen Prozeß im Foreground weiterlaufen lassen Angehaltenen Prozeß im Background weiterlaufen lassen Ausgabe des Foreground-Prozesses anhalten (Pr. läuft weiter!) Ausgabe weiterlaufen lassen tabellarische Ansicht aller Prozesse und deren PU-Verbrauch. Zachmann 49 Bash vs. tcsh Annahme im folgenden: bash! (ksh / sh) Häufig ist die Tcsh für die interaktive ommandline-nutzung komfortabler Wie stellt man fest, welche Shell man gerade hat? Einfach 'set' eingeben: Resultat unter tcsh % set tcsh 6.14.00 version tcsh 6.14.00 Resultat unter bash $ set BASH=/bin/bash BASH_VERSINFO=([0]="3" BASH_VERSION='3.2.17(1)- Wer (t)csh hat, kann eine Bash starten mit dem Kommando bash. Zachmann 50 2

Shells: Was passiert mit einem Kommando? Shell durchläuft folgenden Zyklus mit jedem eingegebenen Befehl: 1. Kommando wird aus der Eingabezeile oder einem Script gelesen 2. Aliases werden expandiert 3. Variable Substitutions werden vorgenommen 4. Wildcards (File-Patterns) werden expandiert 5. Das Kommando wird ausgeführt: - Entweder von der Shell selbst (built-in commands) - Oder in einem neuen Prozeß. Zachmann 51 1. Aliases Ersatz für häufige / längliche Kommandos Beispiel: % alias mo less % alias uni "ssh l zach X hera.uni-bonn.de % mo program.cpp % uni alias zeigt alle Aliases an Alias 'uni' wird ersetzt Alias 'mo' wird ersetzt Definiert Alias 'uni' Definiert Alias 'mo'. Zachmann 52 3

2. Variablen Variable = Name + Wert, Wert = Zeichenkette 2 Arten: Normale Shell-Variablen Environment-Variablen, sind auch in Kind-Prozessen (child process) bekannt Setzen: $ export TMP="/tmp" $ tmpdir="/home/stud/zach/tmp" Achtung: kein Space beim =-Zeichen! Verwenden des Wertes einer Shell-Variablen: % cp file ${tmpdir} % echo ${TMP}. Zachmann 53 Anhängen eines Strings an eine bestehende Shell-Variable: $ PATH=${PATH}:${HOME}/bin $ PATH=${HOME}/bin:${PATH}. Zachmann 54 4

Ausdrucken des Wertes einer bestimmten Variablen: $ echo $var $ echo $VAR Ausdrucken aller Environment-Variablen: $ printenv. Zachmann 55 Komplexere Variablen-Ersetzung Suffix bzw. Präfix löschen: ${VAR%suffix} ${VAR#prefix} Löscht Schluß der Variable VAR, falls er gleich "suffix" ist Löscht Anfang der Variable VAR, falls er gleich "prefix" ist Beispiel: % file="program.cpp" % mv ${file} ${file%.cpp}.c % mv ${file} ${file%.p}.c % mv ${file} ${file#prog}prog wird ersetzt zu % mv program.cpp program.c % mv program.cpp program.cpp.c % mv program.cpp Program.c. Zachmann 56 5

4. File Patterns File-Pattern = File-Name mit Wildcards: *? [] Wildcard? * {0,1,2} [0-9] [a-za-z0-9] [^0-9] Bedeutung enau ein beliebiges Zeichen Beliebig viele beliebige Zeichen (auch 0) enau ein Zeichen aus der Menge {0,1,2} enau ein Zeichen aus der Menge {0,,9} enau ein Zeichen aus der Menge {a,,z,a,,z,0,,9} enau ein Zeichen nicht aus der Menge {0,,9} Beispiele: % ls *.cpp *.h % ls [0-9][0-9]*.ppt % ls???r?? % ls *[^a-za-z0-9_.,-]* Achtung: das Kommando sieht nur eine Liste von File-Namen!. Zachmann 57 Kleine Warnung zu rm Task: Shoot Yourself in The Foot The proliferation of modern programming languages (all of which seem to have stolen countless features from one another) sometimes makes it difficult to remember what language you're currently using. This handy reference is offered as a public service to help programmers who find themselves in such a dilemma. % ls foot.c foot.h foot.o toe.c toe.o % rm *.o rm:.o no such file or directory % ls %. Zachmann 58 6

Quotation Achtung: das Kommando sieht die Wildcards nie! Shell expandiert Wildcards Quotation verhindert, daß Wildcards (allg. Meta-Zeichen) von der Shell expandiert werden Arten: \ verhindert die Expansion des folgenden Zeichens % echo \*.ppt \$PATH " " verhindert die Expansion der Wildcards, ersetzt aber Variablen % echo "*.ppt $PATH" ' ' verhindert jegliche Expansion (Wildcards, Variablen, ) % echo '*.ppt $PATH'. Zachmann 59 5. Wie die Shell ein Kommando ausführt 1. Built-in: Shell führt Kommando selbst aus Beispiel: echo 2. Sonst: externes Programm Beispiel: ls dir 3. command in PATH (Environment-Variable) suchen Falls nicht gefunden, Fehlermeldung, fertig 4. Kind-Prozeß erzeugen Erinnerung: erbt Environment des Vater-Prozesses (= Shell) 5. Argumente (Zeichenketten) dem Prozeß bereitstellen Argumente werden durch Space (i.a.) getrennt 6. Warten bis Kind-Prozeß beendet. Zachmann 60 7

Suchpfade Suchpfad = Environment-Variable mit Liste von durch : (Doppelpunkt) getrennten Verzeichnissen Beispiel: % echo $PATH.:/usr/bin:/bin:/usr/local/bin:/home/zach/bin Kommandos werden in PATH gesucht Test: File mit Namen des Kommandos im ersten Verzeichnis und dieses ist executable? ausführen Sonst: nächstes Verzeichnis in PATH untersuchen Analog für Man-Pages und andere. Zachmann 61 Wichtige Suchpfade Variable Bedeutung PATH Suchpfad für Kommandos MANPATH Suchpfad für Man-Pages LD_LIBRARY_PATH Suchpfad für dynamisch gelinkte Libraries. Zachmann 62 8

File-"Viewer" more, less Interaktiv, zeigen *jeden* File-Typ im Terminal-Fenster an Unter Linux/Mac ist more = less Suchen mit '/', weitersuchen mit 'n', rückwärts 'N', u.v.m. Environment-Variable: setenv PAER 'less -l' Nicht-interaktiv: cat ("concatenate" = aneinanderhängen) head, tail = einige der ersten / letzten Zeilen anzeigen. Zachmann 63 Standard-I/O Shell etabliert 3 "Kanäle" zu / vom Prozeß: Standard Input (stdin) Program Standard Output (stdout) Standard Error (stderr) Default-mäßig mit Terminal (= Fenster & Keyboard) verbunden. Zachmann 64 9

Redirection Verbindet Standard-I/O mit Files Prozeß (Programm) bemerkt davon nichts! Redirection Bedeutung > file >> file >& file < file stdout wird nach file geschrieben stdout wird an file angehängt stdout und stderr umlenken Programm liest aus file, nicht von Keyboard Shell bietet noch viele weitere Möglichkeiten Beispiel: % ls 1 > dir-listing % sort dir-listing % ps -edfyl > procs.log % bc -l < berechnung.txt. Zachmann 65 Pipelines Effiziente Möglichkeit, komplexere Kommandos aus einfacheren zusammenzubauen! Selber Mechanismus wie bei Redirection, um Prozesse miteinander zu verbinden: stdout Utility or User Program pipe stdin Utility or User Program Syntax: % command command command. Zachmann 66 10

Beispiele Listings weiterverarbeiten: % ls -1 sort more % ls -1 *.cpp wc l % ls -1 *.cpp sort > sorted-dir % ls -1 tr -s "_" Tip: Bauen Sie eine Pipeline immer eine Stufe nach der anderen auf!!. Zachmann 67 Die Unix-Philosophie "Small is beautiful" Make each tool do one thing only Make it do it well Read from stdin, write to stdout (if sensible) Use ASII-Files. Zachmann 68 11

Filter Sind hauptsächlich dazu gedacht, um damit Pipelines aufzubauen enerelle Verwendung: Filter lesen von stdin, schreiben auf stdout Arbeiten fast immer zeilenweise Utility Funktion cut fmt sort uniq wc tr grep rev bc Felder oder Zeichenspalten ausschneiden Text umformatieren Zeilenweise sortieren (auch nach Teil-Key) Duplikate entfernen Zeichen, Wörter, und Zeilen zählen Zeichen ersetzen Zeichenketten in der Eingabe suchen (s.u.) Reihenfolge der Zeichen umkehren (zeilenweise) "Taschenrechner" mit unendlich hoher enauigkeit. Zachmann 69 Beispiele Alle Filegrößen in einen File ausgeben: % ls -l tr -s " " cut -d' ' -f5 > sizes.txt Nur die letzten paar Zeilen eines langen Directory-Listings: % ls -l tail -10. Zachmann 70 12

Alle top-level Verzeichnisse in einem Zip-Archiv auflisten (jedes Vorkommen nur 1 Mal) % unzip -l Archive.zip tr -s " " cut -d' ' -f5 cut -d'/' -f1 sort uniq. Zachmann 71 13