C2

11.7.09

  • K3b zum CD brennen – funktioniert sogar
    • mit rip cd kann man audio cd tracks extrahieren, einstellen was für ein format man will
    • mp3 funktioniert nicht – zuerst muss lame oder ubuntu-restricted-extras laden (aus multiverse
    • und dann va Settings bei den plugins für encoders bei lame
      • checking the checkbox "Wave-Kopfdaten schreiben" (write wave header)
      • checkbox "Bytefolge umkehren" (swap byte order)

9.6.09

Marcus Fischer. Ubuntu GNU/Linux. Galileo Press. Bonn 2008.

  • BuchUpdates auf www.galileocomputing.de -> Buch-Updates, ZugangsCode 127100051770
  • Ein Riesenschmöker mit über 1000 Seiten
  • localhost:631 ==> CUPS = common unix printing system
  • deskbar: tool um verschiedene Suchvorgänge (im Computer, im Netz usw.) zu starten
  • cd/dvd Brennsoftware: k3b (für kde läuft aber auch unter gnome)
  • bluetooth paket bluez-utils und obexserver ==> bluetooth usb Stick o.ä.
  • MetaPaket build-essential alles nötige um zu compilieren und zu builden
  • rsnapshot --> backupTool mit Hardlinks (für incrementelle Links zum Platz sparen)
  • openssh: secure shell (statt unsicheren remote Terminal) openssh-client bzw. Openssh-server installieren
  • daten Druckerserver für Window brauch samba und smbfs und swat als Samba Web Administration
  • Virtualisierung
    • Vmware Player erlaubt ubuntu unter Windows oder einer anderen Unixdistribution laufen zu lassen. Daneben gibt es Vmware Workstation und Server mit mehr Funktionen (z.B,. Windows unter Ubuntu)
    • QEMU ähnlich
    • KVM: Kernel basiert Virtuelle Maschine (Standard in Ubuntu) – aber braucht spezielle (neue) VirtualisierungsFeatures des Prozessors
    • Xen: eingeschränkt auf Linux und andere Unix, aber ohne HardwareUnterstützung sehr performant
  • dmesg: print kernel ring buffer (boot messages)
  • free -m MemoryGrösse in MB

18.5.09

Tom Mens, Serge Demeyer (Eds) Software Evolution. 2008. Springer

  1. Introduction.
    • Horseshoe process model for reengineering (legacy software --> high level architectural model --> improved, restructured model --> new software systemDirk W. Hoffmann. Software-Qualität.
    • Different evolutions: requirements, architecture, data, runtim, to SOA (service oriented architecture), language (programming, modelling, formal specification etc.)
  1. Identifying and removing Software Clones. Rainer Koschke. Uni Bremen. Verschiedene Clones: Identisch / Syntaktisch Isomorph / nur ähnlich. Entsprechend verschiedene Detection Methoden. Visualisierungen
  2. Analysing Software Repositories to Understand Software Evolumtion. Marco D' Ambros, Lugano etc.. Versioning Sysktem, defect Tracking system, eMail Logs usw. Durchforsten um Evolution zu analysieren, z.B,. Developer Effort, social networks, change impact & propagation, trend and hotspot analysis, fault and defect prediction. Daten zuerst extrahieren und dann analysieren, z.B. Grafisch darstellen: Z.B. Fractal Figures für wieviele Developer arbeiten wieviel mit. Evolution Radars für change propagation
  3. Predicting Bugs from History. Thomas Zimmermann, Calgary etc.. Bug Wahrscheinlichkeit kann aus importierten/benutzen Modulen gut vorausgesagt werden
  4. ObjectOriented Reengineering. Reengineering Patterns
    • Aehnlichkeiten mit Patterns: Keep it simple, Pattern System oder Language (besser organisiertes System), Human in the Loop
    • Unterschiede: Process Oriented, Intermediate Solutions, Bad Examples, Polititcs
  1. Migration of Legacy Information Systems:
    • 1. Dimensionen: DB, Strategien
      • physisch (jedes alte Konstrukt in neues System übersetzen),
      • Conceptual: Konzept ist extrahiert, verbessert und neu implementiert
      • plus DatenKonversion
    • 2. Dimension Program
      • Wrapper
      • Statement Rewriting (z.B. alte nach neue DML Statements)
      • Logic Rewriting (mit manueller Unterstützung neu schreiben)
  1. Architectural Transformations: From Legacy to Three-Tier and Services. Legacy enthält eine Mischung der Kategorien Presentation, Business Logik und DB-Acces, wo das nicht automatisch erkannt den Code mit der Kategorie Annotieren und dann transformieren
  2. On the interplay Between Software Testing and Evolution and its Effect on Program Comprehension. Leon Moonen, etc.. XP basiert wesentlich auf UnitTests und UnitTests fungieren auch als Dokumentation und für Program Comprehension. Listet verschiedene test smells und Lösungen um daraus bessere Tests zu machen. Z.B. Mystery Guest: Abhängigkeit von externen Resourcen: diese selbst generieren. Usw.. Tests selbst können Refactor'd werden oder man kann Tests Smells benutzen um nötige Code Refactoring zu entdecken
  3. Evolution Issues in Aspect Oriented Programming Kim Mens und Tom Tourwe. Aspect exploration (crossCuttingConcerns entdecken), Aspect extraction und Aspect evolution
    • aspect Languages z.B. AspectJ: poinCut ist Menge von joinPoints in die wird der Code der advices einGewoben. PatternLanguage um pointCuts zu definieren
  1. Software Architectur Evolution. Olivier Barais etc.. beweisbare Ueberprüfung bzw. Transformation von architekturellen Eigenschaften, z.B. Communication Integrity (Kommunikation/Calls etc nur über in der Architektur erlaubte Verbindungen). Architektur eignet sich für aspektorientierte Ansätze (mit verschiedenen Views, die verschiedene Aspekte beleuchten). Viele Tools wie, Wright, Fractal/FScript, ArchJava usw. Stellt TranSAT vor, mit dem architect. Evolution unterstützt wird.
  2. Empirical Studies of Open Sopurce Evolution. Juan Fernandez-Ramilt etc. Open Source bringen ein Fülle von Daten über grossen Softwareprojekte. Die Evolution scheint Unterschiede zu propriety Software Entwicklung aufzuweisen, z.B. wechseln Stagnations, Regressions und Wachstumsphasen häufiger. Wachstum kann sehr schnell sein

9.5.09

Dirk W. Hoffmann. Software-Qualität. Ein Rundumschlag mit über 500 Seiten und vielen Beispielen mit berühmten Softwarefehlern. Von allem ein bischen:

  • software Fehler
  • konstruktive Qualitätssicherung
  • test
  • statische code analyse
  • Verifikation
  • Lebenszyklus
  • Infrasturktur: Versionsverwaltung nicht nur für source, auch für Spezifikation, Tests usw. Build- und Testautomatisierung (Subversion als Nachfolger von CVS), Defektmanagement. Defekt mit 3 Klassen von Attibuten; Identifikation, Klassifikation (Schwere), Bestreibung, Zustandsmodelle (mit verschiedenen Defektzuständen, (OpenSource Tool z.B. Bugzilla, Mantis)
  • Managementprozesse
    • Vorgehensmodelle
      • Wasserfallmodell: Systemanforderung, SoftwareAnforderung, Analyse, Entwurd, Implementierung, Test, Betrieb (allenfalls mit Rückkoppelungsschleifen, aber nur auf vorherige Stufe). Ist Dokumentengetrieben und hat klare Meilensteine
      • V-Modell: V runter mit Entwicklung, hoch mit Verifikation + Validation:
        • Anforderunganalyse <- useCases -> Abnahmetest
        • Systementwurf <- Testfälle, UseCases -> Systemtest
        • SoftwareArchitektur <- Testfälle -> Integrationstest
        • Spezifikation <- Testfälle -> UnitTest
        • Implementierung
      • V-Modell XT (eXtreme Tailoring) Weiterentwicklung, die aber nicht mehr viel mit V-Modell zu tun hat. Hat 21 Vorgehensbausteine und 21 Prüfpunkte, die je nach ProjektGegenstand (5 Kategorien) und Projektrollen zusammengesetzt werden
      • Rational Unified Process (RUP). 6 best prctics: iterative SoftwareEntwicklung, Anforderungsmanagement, Komponentenbasierte Architekturen, visuelle SoftwareModellierung, SoftwareQualitätskontrole und Aenderungskontrolle. Iterative besteht das Vorgehen aus Zyklen, jeder aus 4 Phasen: Inception (konzept), Elaboration (Entwurd), Construction (Entwicklung) und Transition (Produktübergabe)
      • Extreme Programming: Communication, Simplicity, Feedback, Mut.
    • Reifegrad Modelle
      • CMM (Capability Maurity Model, 1991 mit 5 ReifeModellen
      • CMMI (CMM Integration) nicht nur für SoftwareEntwicklung, 2000)
      • ISO 15504 = SPICE = Software Process Improvement and Capality dEtermination)

14.4.09

  • Loacl mediwiki administrator walter/pw

19.4.09

  • Extension:ParserFunctions erlaug {{#if ...}} usw. Für Bedigungen und Ausdrücke {{#expr ...}} und SeitenExistenz {{#ifexist ...}}

17.4.09

  • Damit Ubuntu Telefon erkennt;
  • Damit sound juicer mp3 files erstellen kann, die packages lame, gstreamer0.10-plugins-ugly, gstreamer0.10-plugins-ugly-multiverse installieren (und bei preference mp3 anwählen)
  • Semantic mediwiki caches inline queries: Im Help gibt es verschiedene Variante für cache auszuschalten, funktioniert hat nur in LocalSettings.php einfügen
    • $wgEnableParserCache = false;
    • $wgCachePages = false;
  • Vielleicht besser wäre: Install the MagicNoCache extension, and add the string "__NOCACHE__" to any page
  • wlkl.referata.com enthält im Help ein Quickref auf SemanticMediaWiki

Peter Farrell-Vinay, Manage Software Testing, 2008, Auerbach Publications.

  1. Introduction
    1. viele Ausreden nicht zu testen
    • if it's not planned, it won't happen – planen und spezifizeren da es Zeit und Aufwand braucht
    • Testing ist eine Methode, es brauch auch Reviews (für jedes Dokument)
    • Baseling, dagegen wird getestet. Notwendige Eigenschaften
      • changeable
      • unique interpretation
      • enough infos to be useful (not complete)
      • humanly-visible
      • stable
  1. the big questions
    • why and how testing
    • when start and when stop testing
    • which baselines to test against
    • what do we test with
    • are we getting better or warse at finding bugs (why not earlier, primary cause, wo häufen sich fehler uws.)
    • how measure test coverage
  1. Risk Management
    • Risiken planen (identifizieren, Wahrscheinlichkeit und Kosten)
    • Risks Alerts implementieren (Anzeichen, z.B. > 10 Prio-1 bugs)
  1. Test Planning and Management
    • Test innerhalb Life Cycle Modell lokalisieren
    • Bug classification scheme
    • TestLimiten für Releases
    • wer macht wieviel Unit Testing
    • Welche Baseline und Tester müssen sie anpassen können
  1. Testing and the Web – alle Elemente, Zusammenspiel und Performance. Im Betrieb ¨Uberwachung über Erreichbarkeit, korrekt Links, Downloads, Clickouts usw..
  2. The overall test life-cycle: in jeder Phase gibt es das entsprechende zu tun
  3. Testing process and infrastructure
    • Keeping Configuration Management System in Order: Item Acceptance Rewiew: Eintrittstest für jedes Element im CMS/
    • ChangeControlBoard segnet sämtliche Changes ab
    • Testenvironment: Scheduler, tasks, requirments management, test casss managment, bug managment, logging, reproting, import/export usw.
    • Testautomatisierung
    • Monitoring Test Progres
    • Bug management, Reports, analysis etc..
    • statische und dynamische Analysen
  1. Test Documents: unendlich lange Liste
  2. The test team and its context: Testmanager: Beziehungen zum Team und anderen Managern: ziemlich viel Konkurrenz und gegensätzliche Ziele
  3. Outsourcing: verdächtige Gründe una Anleitungen.
  4. Test Techniques: Functional (BlackBox)
    • equivalence partitioning
    • boundary-value analysis
    • cause effect graphing
    • random data selection
    • feature test process
  1. Test Technique Structural (white box)
    • statement coverage
    • decision/branch coverage
    • condition coverage
    • path analysis
    • all DU-paaths coverage
    • execution time and resource use
    • algorithm anaysis
    • linear code sequence and jump
    • dynamisc analysis techniques (executabe assertions)
    • derivative technique (decision tables, finite state machines)
  1. Test Techniques: Statis Analysis: dataflow, controlFlow, FunctionValueAnalysis, SymbolicExecution, MutationTesting. Fault Incection, TestDataGenerator, Failure mode effects and criticality analysi
  2. Unit Test Process: Entwickler sollten es tun, Testmanager muss nur einen Ueberblick bekommen, über Vollständigkeit usw.. Unit = maximal eine Druckseite – scheint doch sehr kleine Einheit zu sein!
  3. System an Acceptance Testing. Auch hier detaillierte Checklisten. Zuerst baseline festmachen (Business requirments, Use Cases usw.) und Testziele. Regression, Localization, Configuration, Security, Beta usw. Testing. Monitor den Testprozess
  4. Performance and Stress Testing: Auch hier Baseline definieren und Messgrössen
  5. Usability Test Process. Baseline: was muss wie ausgebildeter User wie schnell und wie fehlerhaft können
  6. Metrics: eine grosse Palette von meist einfachen Metriken für von Software Komplexität, bis Alter der offen Bugs

Appendices: viele Checklisten, Toollisten

12.4.09

  • Open office: nicht recover bares dokument: einfach recovery cancel, dann kommts nicht mehr
  • mediawiki: fehlermeldung: keine Zugriff mit user ''“... -> ohne Anmeldung benutzt wiki den leeren user, hat nichts mit dem user in LocalSettings.php zu tun
  • wlkl.referata.com semantic wiki erstellt (free hosting)
    • user wlkl/furk98
    • wiki wlkl administrator wikiwlkl/furk98 (achtung login auf referata.com sind die bei referata definierten unser, auf wlkl.refarata die von mir definierten!)
    • für import muss man Special::Import und nicht Special::ImportXml nehmen!

8.4.09

Mauro Pezzè, Michal Young, Software Testing and Analysis, 2008, John Wiley & Sons

  • Das Halting Problem einer Turing Maschine ist unentscheidbar, und die Tests der meisten Programme sind ebenso hart
  • unvollständige Verifikationen entweder pessimistische (falsche Negatives: man muss aus falsche Fehlermeldungen die echten rausfiltern) oder optimistisch (zu wenige Fehlermeldungen)
  • Validation: auswerten wiewei Software User real needs erfüllt
  • Verifikation: überprüfen ob Implementation mit Spezifikation übereinstimmt (auf irgendeiner Ebene)
  • V-Modell:
    • actual needs, constraints / requirements ==> user acceptance test
    • system spec ==> system test
    • Subsys desing spec ==> integration test
    • unit/component specs ==> unit/module test
  • oracle: inspect result of test und Entscheid ob satisfied or failed
  • Basic Principles
    • Sensitivity: Versuch das zufällige Fehler häufiger werden (damit sie bei Tests eher entdeckt werden) also defensiv programmieren (asserts usw.)
    • Redundancy: maschinell überprüft oder generiert billiger als Testen, z.B. Statische TypeSystem
    • Restriction: ein schwierig zu testende Property durch eine einfacher zu testende Verschärfung ersetzen (z.B. Nur initialiserte Variabeln lesen durch am Anfang initialisert, oder Serialisierbarkeit durch ein Serialisierungsprotokoll)
    • Partition: divide und conquer: z.B. In Teilprobleme auflösen, oder Modell bilden und dort verifizieren
    • Visibility: dass man sieht was passiert (z.B. HTTP hat lesbare Textmeldungen)
    • Feedbacl
  • endliche Modelle: ControlFlowGraphs, CallGraphs, endliche Automaten
  • dependence and dataFlowModels
  • Symbolic Execution and Proof of Properties
  • Finite State Exploration: State Space Exploration mit Safety and Liveness Eigenschaften, relational Algebra
  • Test case selection and adequacy
    • test case: input, execution condition, und pass/fail criterion
    • test oder test execution: durchführen eines test case
    • test suit: Menge von Test cases
    • test case specification: Ein requirement, das durch einen oder mehrer test cases erfüllt werden kann
    • test obligation: Teil einer test case specification
    • adequcy criterion: ein Prädikat, auf einem Programm – Test suite Paar. Satisfied oder nicht
    • adqequacy criteria Vergleichen: z.B. Subsume (umfassen) ==> kannn benutzt werden um Qualität einer TestSuite zu messen, oder zusätzliche TestCases zu finden
  • functional testing
    • function test cases können und sollen schon in der requirements Phase entworfen werden
    • z.B. Random oder Partitionierung des Inputspaces
  • Combinatorial Testing
    • Category-Partition Testing: Aufteilung in unabhängig testbare Feature, repräsentative Values bestimmen und Test case specifizieren
    • pairwise combination testing – statt alle Kobminationen nur paarweise kombinieren
    • catalog-based testing: einen Katalog der input values (für eine Variable), z.B. Integer Variable mit einem Intervall: einen mitteleren Wert, die beiden Grenzwerte, und deren äussere Nachbarn
  • Structural Testing: Testfälle aus Programmstrukturen ableiten
    • Statement Coverage
    • Branch Coverage
    • Condition Testing (jede Klausel innerhalb jedes Prädikates)
    • Path testing: brauchen spezielle Kriterien für Loops (z.B. Jeder Loop muss 0-, 1- und mehrmals durchlaufen werden)
    • Call Coverage
  • DataFlow Testing
    • Definition Use - Coverage
      • jedes DU pair (verbunden über Definition-free (ControlFlow) path) muss durchlaufen werden
  • Model based testing
    • endlich Automation: z.B. Transition Coverage
    • Entscheidungstabellen
    • Test cases von ControlFlow oder Dataflow Graphen ableiten oder Grammatiken ableiten
  • Testing object-oriented software
    • State Dependent Behaviour: Objekt haben einen State, der Methoden beeinflusst
    • Encapsulation (Test benötigen Zugriff auf hidden variables)
    • inheritance
    • polymorphismus und dynamic binding
    • abstract classes
    • genericity
    • exception handling
    • concurrency
    • z.B. Mit folgenden Schritten
      • Intraclass (Instanzierungen für abstrakte class, inherited constructors und methods, state machine tests, structural tests für class source, exceptions, polymorphic calls
      • Interclass: Hierarchy von KlassenClustern für incremental tests, für jeden Cluster: funktional, dataFlow, exceptionHandling, Polymorphismus
      • System und Acceptance: wie üblich
  • Fault Based Testing: mechanisch Fehler in Programme einfügen und mit testSuite prüfen
    • competent programmer hypothesis: Programmierer machen kleinere Fehler (die einfachen Mutationsoperatoren ähnlich sind)
    • coupling effect hypotheses: tests für einfache Fehler entdecken auch komplexe.
    • Fault Based Adquacy Criteria: genereate mutatants, führe TestSuite aus, wieviele Mutanten bleiben unentdeckt
    • Qualitätsmass: Verhältnis von endeckten zu unentdeckten Mutanten entspricht dem Verhältnis von bis jetzt total entdeckten Fehlern zu noch in der Software vorhandenen Fehlern
  • Test Execution
    • aus test case specicification test cases abzuleiten kann mechanisch machbar sein, oder Genialität und Scaffolding benötigen
    • Scaffolding: Hilfscode um Testen zu erleichtern – liefern controllability und observability:
      • test driver (ersetzt caller)
      • test harness (ersetzt Teile der deployment Umgebung)
      • stubs (ersetzen benutzte Funktionalität der Software under test)
      • mock: einfachster stub der nur erwartete Aufrufe prüft
      • scaffolding Konstrukts können oft in SoftwareFunktionen verwendet werden (z.B. BusinessLogik mit Scripting statt GUI)
    • Oracles: entscheiden ob Test erfolgreich war oder nicht
      • comparision based (vergleich mit vorarsberechnetem Wert, anderer Implementation, oder Rückwärtsableitung des Inputs aus Output, oder partieller Test z.B. Neunerprobe)
      • selfchecks as oracles (assertions, z.B. Ein- ausschaltbar -> no sideeffects)
      • capture und replay
  • Inspection
    • manueller sozialer Prozess, einzeln oder in Gruppen
    • sozial Aspekt (Ausbildung, Know How Transfer, Project standards...)
    • CheckListen
    • pair programming
  • Protram Analysis
    • Symbolic Execution in Program Analysis: zu aufwendig für allgemeine Verifikation besser für spezielle Fehlerklassen (z.B. MemoryAccess oder Concurrency Faults)
    • Symbolic Testing: Variablenwerte auf wenige Aequivalenzklassen reduzieren (z.B. Null, not null)
    • Summaryzing Execution Paths, z.B. Endlicher Automat mit obigen Aequivalenzklassen und Transitions entsprechend gruppieren
    • MemoryAnalysis: instrumentierter Code, der MemoryZugriffe, LockingProtokoll usw. Überwacht
    • Extracting Behavior Model from Execution: aus TestExecution Modelle ableiten und analysieren
  • Planning and Monitoring the process: Ziel: Fehler möglichst früh erkennen, Risiken minimieren
    • Quality and Process – Qualität muss natürlich in GesamtenEntwicklungsProzess eingebettet sein (z.B. V-Model), typische Schritte für ein Element:
      • interne consistency checks
      • externe consistency checks
      • definieren von correctnes conjectures: z.B. Testresultate die Anforderungen an ander Produkte stellen
    • Test and Analysis Strategie: verschiedene Modelle, z.B. XP oder IBM Cleanroom
    • Test and Analysis Pläne
      • welche Qualitätsaktivitäten
      • Abhängigkeiten innerhalb Qualität und zwischen Qualität und Entwicklung, kritische Pfade und Abhängigkeiten
      • welche Resourcen
      • wie überwachen wir Prozess und Qualität des entstehenden Produkts
    • Risk Planning
      • personelle, technische (z.,B. Neuer DB-Release oder COTS (Commercial Of The Shelf Software) und Schedule Risks erraten, kontrollieren und überwachen
      • reduzieren durch zusätzliche oder frühere Tests usw.
    • Monitoring the Process
      • Fehler Statistiken: treten die Fehler in den erwarteten Häufigkeiten an den erwarteten Orten auf? Sinnvolle Lösungszeiten
      • orthogonal defect classification (ODC):
        1. wenn sie entdeckt werden Activity Executed, Trigger der Fehler zeigte, und impact auf custormer
        2. fix time: target, type (verschiedene Taxanomien), source und age der Software
        3. verschiedene Auswertung: Fault Type versus activities, triggers versus time usw.
    • Improving the Process
      • Root Cause Analysis (RCA) Ursache von Fehlern im Prozess suchen
    • Quality Team: verschiedene Modelle von voll integriert in Entwicklung (XP) bis absolut getrennt oder outsourcing
  • Integration and Component-based Software testing
    • Big Bang Testing: erst am Schluss
    • structural (abgeleiten von Programm/System) versus Featur oriented
    • top down testing braucht weniger driver/scaffolding dafür stubs
    • bottom-up umgekehrt
    • sandwhich or backbone Strategie: kombination von top down Analyse und BottomUp Prototypes. Z.B. Zum einbinden von COTS
    • critical module: anfangen mit Modules mit dem grössten Risiko
  • System, Acceptance andn Regression Testing
    • System Testing, soll unabhängige Tesets machen, nicht wiederholen. GesamSystemEigenschaften. Möglich sind auch lange Tests mit komplexen Auswertungen usw.
    • Acceptance Testing. Performance mit operational profile und sensitivity testing (gutmütiges Verhalten bei ¨Uberlast)
    • Usability – auch über den ganzen Zyklus von Usability Inspection und Prototypes (explatory testing) in der Reqirementsphase. Im AcceptanceTest Mit Vertretern verschiedener Usergruppen testen
    • Regression Testing: TestSuit muss mit Software maintain't werden.
      • Regression Test Selection: die gehabten Kriterien, aber redundante Tests sind teurer wegen Wiederholungen und Maintenance
      • Test Case Priorisierung und selektive Execution
  • Automating Analysis and Tests
    • Process Management mit verschiedenen Metriken
    • Tools für Test Case Generierung, static analysis and proof, cognitive aids (z.B. Im Editor, CrossRef, Visualisierungen usw.), Debugger, VersionControl usw.: geschickt Auswahl und Kombination von Tools
  • Documenting Analysis and Tests
    • Hauptkategorien: planning, specification (test suites), reporting:
      • Test Strategy Document
      • Anaysis and Test Plan
      • Test Design Specification Documents (-> Test suites)
      • Test and Analysis Reports
    • mature processes brauch Metadata in jedem Document

2.4.09

Paul Amman, Jeff Offutt, Introduction to software Testing

Testlevels entsprechen Developement Aktivitäten:

  • Acceptance Test – Requirements
  • System Test – Architectur
  • Integration Test – SubsystemDesign
  • Module Test – detail design
  • Unit Test – Implementierung
  • Regression Test – zusätzlich

Grundsatz: Testen kann nur Fehler zeigen, nicht Ihre Abwesenheit

Begriffsbestimmung

  • Software Validierung: Nach der Softwareentwicklung überprüfen, ob sie der beabsichtigten Nutzung dient
  • SoftwareVerifikation: entprechen die Resultate einer Entwicklungsphase den Anforderungen der vorherigen Phasen?
  • Software Fault: ein statische Defekt
  • Software Error: ein inkorrektur interner Zustand als Manifestation eine Fault
  • Software Failure: external inkorrektes Verhalten
  • Testing: Software Evalution durch Beobachten ihres Verhaltens
  • Test Failure: Execution die ein Failure erzeugt
  • Debugging: der Prozess aus einer failure den fault zu finden
  • für failure braucht es drei Bedinungen
    • Reachability: der Fault muss erreicht werden
    • Infection: nachdem das Statement ausgeführt wird, muss der State falsch werden (auch bei fehlendem Code, dann ist PC per Definition falsch)
    • propagation: der infizierte Zustand muss sich bis zum Output verbreiten
  • test case values: Inputwerte für eine Ausführung software under test
  • Test Requirement: spezifisches Element, das ein Test abdecken muss (meist Menge)
  • Coverage Criterion Regelmenge, die TestRequirements definieren
  • Subsumption: Criterion C1 subsumes C2, wenn TestSet S satisfies C1 dann auch C2

Es gibt 4 Klassen von Coverage Criterien: Graph, Logic, InputSpace und Syntax

Graph Coverage

  • simple Path: ausser erstem und letzten sind alle Knoten verschieden
  • prime path: simple Path der in keinem anderen simplen Path echt enthalten ist
  • verschiedene Kriterien:
    • TR enthält alle Knoten
    • TR enthält all Kanten (d.h. All Pfade von Länge 0 und 1, um alle Knoten zu subsume)
    • TR enthält alleKantenPaare (alle Pfade der Länge 0, 1, 2)
    • TR enthält jeden prime Path
    • spezielle Berücksichtigung von nicht erreichbaren Pfaden und Zyklen
  • Datenflow Kriterien: def-use Pairs: Pfade von Definition (assignment etc.) zu Benutzung eines Wertes (ohne weitere def drin)
  • zu benutzende Graphen
    • Control Flow Graph
    • Data Flow Graph
    • design elements: call graph (Prozeduren, Methoden, Module), Inheritance und Polymorphismus, Dataflow auf Designelementen
    • Spezifikation: Sequencing Constraints, ableiten des Graphs eines endlichen Automaten (states auf Aequivalenzklassen von Variabelnwerten reduzieren!)
    • für use cases
  • Graphen als (regular expressions) von Pfadausdrücken (um sie leichter bearbeiten zu können um Testfälle abzuleiten):
    • AB Konkatinierung der Pfade A und B
    • A + B: Verzweigung in zwei Pfade A und B
    • A* 0 bis n Wiederholungen des Pfades A (Loop Konstrukt)

Logic Coverage

arbeiten auf Mengen von Prädikaten und ihren Klauseln

  • jedes Prädikat muss einmal wahr und einmal falsch werden
  • jede Klausel muss einmal wahr und einmal falsch werden
  • jede aktive Klausel (d.h. Die in der aktuellen Konstellation einen Einfluss auf das Prädikat hat)
  • inaktive Klauseln verändern Prädikatwert nicht (4 Fälle Prädikat 1/0, Klausel 1/0)
  • die richtigen Inputwerte zu finden ist nicht einfach, erstens muss das Prädikat erreicht werden, zweitens mit passender Variabelnbelegung!

Input Space Partitioning

  • IDM = InputDomainModel teil den Inputraum in Aequivalenzklassen auf
    • Interface base Partioning: jede InputVariable einzeln partitionieren und dann kartesische Produkt
    • functionality based approach: Inputraum von der Funktionalität her Partitionieren
    • oder mehrere IDMs kombinieren
  • testvalues
    • Werte aus verschiedenen Partitionen kombinieren
    • innere Werte und Grenzwerte testen

Syntax-Based Testing

  • BNF Coverage Criteria
    • jedes Terminal
    • jede Produktion
    • alle Ableitungen
  • MutationsTesting: gültige Produktionen werden mit einem Operator mutiert (entweder gültige oder ungültig in der Grammatik)
    • ein Test t killt einen Mutant m einer Ableitung D, wenn der Output von t auf D und m unterschiedlich ist
    • Mutation Coverage: für jeden Mutanten m enthält TR genau ein Requirement um m zu killen
    • MutationOperatorCoverage: für jeden MuationsOperator enthält TR ein Requirement um einen mutierten String abzuleiten
    • MutationProduction Coverage ...
  • ProgrammSuiten für Compiler und andere Programme mit Grammatik beschriebenem Input
  • Programm Mutationen:
    • TR soll Kriterien enthalten, die mutierte Programme entdecken
    • Mutationsoperatoren: Zahlen mit abs, negAbs usw. Verändern, Prädikate oder Klauseln negieren (oder sonstwie logisch veränden) AssignmentOperatoren ersetzen += durch *= usw.)
  • Integration Mutation: Parameter in jedem Call mutieren oder vertauschen

Practiacal Considerations

  • Regression Testing
    • muss automatisiert sein, Explosion der Testfälle verhindern
    • Testprozess parallel zu jeder Entwicklungsphase, z.B. Um Testbarkeit zu garantieren
  • Identifying correct outputs
    • direkte Verifikation (falls möglich)
    • redundante Berechnungen, Konsistenz Checks, Redundanzen überprüfen

Engineering Criteria for Technologies

  • OO bringt spezielle Fehlermöglichkeiten, die auch speziell z.B. Mit polymorphen Pfaden in Grafen. z.B.
    • State definition anomaly: überschreibende Method behandeln state inconsistent
    • inconsistency wegen Variable hinding

Formal Methods and Testing (LNCS 4949)

  • Wozu ist Modellbasiertes Testen gut? Wenn man aus einem Modell automatisch Code generiert und den mit aus demselben Modell generierten Tests testet, ist das doch zyklisch! (Mit einem anderen Modell ist es auch nicht viel besser, da sollte man zuerst die beiden Modelle unifizieren). Anders ist es mit einer Modellbasierten Suite, man leitet aus eine Mischung von manuellen und automatischen Verfahren Code und Tests ab und kann gegenseitig Elemente wiederverwenden.
  • TTCN-3 ist eine standardisierte Testsprache, man kann Test in dieser Sprache definierenund mit entsprechenden Plattform und Applikationsadaptern durchführen. automatischenorg.eclipse.ui.internal.Workbench (in plugins/org.eclipse.ui.workbench/Eclipse UI). Es gibt eine Core-Language und verschiedene grafischen Formalism – Prozedur- und Message-orientierte Varianten sind möglich
  • Kombination von verschiedenen Testmodellen bringt (wie beim parallel Entwicklung von Software durch getrennte Teams) einen kleineren Gewinn, als von statistisch unabhängigen Prozessen erwartet wird – durch DiversitätsEnforcement kann man aber besser (als statistisch unabhängig) werden.

29.3.09

Internals zu org.eclipse.ui.menus:

  • org.eclipse.ui.internal.Workbench (in plugins/org.eclipse.ui.workbench/Eclipse UI)
    • initializeDefaultService: erstellt, registriert einen WorkbenchMenuService und ruft dessen readRegistry Methode auf
    • openWorkbenchWindow
  • org.eclipse.ui.internal.menus.WorkbenchMenuService (in plugins/org.eclipse.ui.workbench/Eclipse UI)
    • implementiert
    • readRegistry: registriert sich als changeListeneer auf das Platform.getExtensionRegistry() und lädt daraus die Menueinträge
  • org.eclipse.core.internal.registry.ExtensionRegistry kann entweder die Manifests und XML einlesen, oder dasselbe aus cache Files erstellen
  • org.eclipse.core.runtime.Platform enthält registry, adapterManager usw., nur statische Methoden und Felder
  • org.eclipse.core.internal.registry.osgi.Activator startet Registry
  • RegistryPersistence Verbind von Registry und StorageManager
  • org.eclipse.ui.internal.ShowInMenu#fill (in plugins/org.eclipse.ui.workbench/Eclipse UI) füllt Menu mittels Workbench#populateContriubutionManager das Menu ==> Achtung es wird der ganze riesige Menübaum beackert – nachher wird visibility über Evaluations gesteuert!, durch WorkbenchMenuService#processAdditions
  • EvaluationAuthority ist Subclass von ExpressionAuthority gibt's einmal pro EvalutationService, der von Singleton Workbench einam instanziert wird.
  • org.eclipse.ui.internal.services.EvaluationAuthority#sourceChanged (in plugins/org.eclipse.ui.workbench/Eclipse UI) : reevaluiert die Expressions der angegebenen Sources pro Expression mit #refsWithSameExpression
  • EvaluationAuthority hat ein Map über Sources auf IEvaluationReference
  • org.eclipse.ui.internal.services.EvaluationAuthority#refsWithSameExpression (in plugins/org.eclipse.ui.workbench/Eclipse UI): evaluiert einen Array von von Expressions (mit gleichen Ausdrücken) und falls geändert firePropertyChange
  • WorkbenchMenuService#processAdditions erzeugt MenüEinträge mittels MenuAdditionCacheEntry#createContributionItems
  • org.eclipse.ui.internal.menus.MenuAdditionCacheEntry#createContributionItems addiert neue Icontriubiton, holt Expression aus org.eclipse.core.runtime.IConfigurationElement (registry) und verknüpft sie mittels ContriubutionRoot#addContributionItem
  • org.eclipse.ui.internal.menus.ContriubutionRoot#addContributionItem und registerVisibilityForChild verknüpfen visibility und Expressiong mittels WorkbenchMenuService#registerVisibleWhen
  • WorkbenchMenuService#registerVisibleWhen hängt das org.eclipse.jface.action.IContributionItem mittels EvaluationService#addEvaluationListener an die Expression
  • EvaluationService#addEvaluationListener packt die Expression in eine IevaluationReference und call EvaluationAuthority#addEvaluationListener
  • EvaluationAuthority#addEvaluationListener(IEvaluationReference) registriert den listener UND wertet die IEvaluationReference aus und propagiert den berechneten Wert mit firePropertyChange
  • org.eclipse.core.internal.expressions.StandardElementHandler konvertiert ConfigurationsElemente in Expressions

24.3.09

  • org.eclipse.ui.viewActions: This extension point is used to add actions to the pulldown menu (Dreieck oben rechts im ViewHeader NICHT ContextMenu!)
  • Für jede View muss eine eigene extension definiert werden (z.B. org.eclipse.ui.views.ResourceNavigator für Navigator und org.eclipse.ui.navigator.ProjectExplorer für Project Explorer)
  • viewActions (wie in readme example) wurden durch org.eclipse.ui.menus ersetzt, die ein gemeinsames Handling erlauben --- aber auch nicht ganz einfach zu durchschauen sind

Testing

  • SAQ _ Swiss Association for Quality
  • STB – Swiss Testing Board eine Arbeittsgruppe von SAQ
  • ISTQB – International Software Testing Qualifications Board, verantwortlich für international qualification scheme called "ISTQB Certified Tester“ hat Syllabi (Lehrpläne) für Foundation und Advanced Level (bei STB auch auf Deutsch, expert level ist noch nicht definiert) – Aufwand 3-4 Tage foundation, 10 Tage advanced)
  • bei STB kann man dazu Prüfungen machen (Fr 400.- ++, für advanced 18 Monate Praxis),

23.3.09

  • Startet man ein im Workbench ein Eclipse Application, wird ein neuer (nicht ganz vollständiger Workspace) erstellt und gestartet. System.out geht auf die Console des startenden Workspaces, Debug in die DebugPerspektive des startendenden Workspaces
  • JIT: Just in Time Compiler übersetzt ByteCode o.ä. in Maschinencode, wenn es ausgeführt wird, oder zur Laufzeit als effektiktive Optimierung erscheint

.net Architektur

  • CLI: Common Language Infrastructur
    • CLR (Common Language Runtime) Microsoft Implementierung von CLI
    • CTS: Common Type System, d.h. Für alle Languages,
    • CLS: Common Language Specification: ein Subset von CTS, an das sich Sprachen halten müssen
    • VES Virtual Execution System: lädt und executed CLI Programme,
    • CIL: Common Intermediate Language: Hardwareunabhängige Zwischensprache, die VES compiliert CIL in maschinencode für die Ausführung durch den just-in-time-compiler
  • Assembly: Common Language Infrastructur
    • CIL CodeLibrary (PE = portable executable)
    • zwei Sorten
    • process (EXE) und
    • libraries (DLL)
    • Der Namen besteht aus 4 Teilen:
    • Kurzname
    • culture: bestimmt locale
    • Version
    • public key
    • Satellite Assemblies: sollten lokaliserung der neutralen Assemblies enthalten
  • Metadata über Programmstrukturen, Sprachunabhängig
    • All CLI is self-describing through .NET metadata.
  • Zwei Sorte Security
    • CAS Code Access Security (über Evidenzen)
    • Validation and Verification
  • Class Library
    • BCL BaseClassLibrary: was die CLR braucht
    • FCL FrameWorkLibrary: alles was mit .NET kommt
  • GC: Garbage Collection benutzt Metadata
  • managed code: läuft in CLR: System weiss was er tut, im Gegensatz zu konventionellen Codefiles
  • aktuell .NET 3.5 mit visual studion 2008

22.3.09

  • Im Extension Point Schema muss man die xml Syntax für den ExtensionPoint angeben, das wird dann auch kontrolliert, fehlt das Schema, gehts ohne Kontrolle. Der Schema Editor scheint keine Unterelement hinzukriegen, Wie heisst die richtige Syntax dafür, wie flickt man den Editor – oder gibt es schon einen Patch dafür?
  • Mit Eclipse 3.0 wurde die proprietäre Eclipse Runtime wurde auf das das OSGi(Open Services Gateway Initiative)-umgestellt: OSGi-Equinox-Framework.. Das erlaubt nun auch RCP (Rich Client Platforms).
  • Eclipse error log --> besser mit window -> show view -> show error log, dort kann man's auch rausputzen etc. Errors erscheinen verzögert (bzw. Durch welche Events getriggert?)

20.3.09

  • Wenn man ein plugin in Eclipse definiert und die Activator class fehlt gibt's auf dem Manifest nur eine Warnung – wenn man's startet kommt das Plugin nicht hoch mit Viewclass not found, obwohl die vorhanden ist (vor her kommt auch die Activator not found Meldung) Wieso?

18.3.09

  • Die Sources der Eclipse examples sind nicht in der Distribution, auch nicht im source zip --> aus cvs herausholen
  • in eclipse in cvs repository view dieses Module usw. suchen und dann checkout (as)
  • cvs checkout holt die Files nur in die workarea, gesperrt werden sie erst durch Watch!
  • Cvs repository in Eclipse definieren siehe http://wiki.eclipse.org/index.php/CVS_Howto unter Repository view -> new

17.3.09

Die Specification der Java Virtual machine enthält alle opcodes und Hintergrundinfos über die VM

Eclipse Compiler:

Eclipse Java

  • Scrapbook um CodeSnippets auszuprobieren: File > New > Other.... Then select Java > Java Run/Debug > Scrapbook Page
  • Debugging geht auch Remote
  • formatting auch als commandline, FormatRegeln via Preferences -> Java -> CodeStyle -> Formatter

16.3.09

Apache ant ist ein Make ganz in Java implementiert.

  • build.xml enthält standardmässig die Bauanleitung, und enthält ein project Element mit einem default target. Default basedir ist parentdir des Buildfiles
  • target können voneinander abhängen (depends) und tasks enthalten
  • einige task können (geschachtelte) Bedingungen enthalten
  • properties können in im build.xml oder in separaten Properties Files versorgt werden, sie sind konstant und werden zur bei der ersten Zuweisung gesetzt, später Zuweisungen werden ignoriert

Eclipse Source Builds (Source from Zip)

  • eclipse-sourceBuild-srcIncluded-3.4.2.zip (included nicht fetched ZipFile! Aus http://download.eclipse.org/eclipse/downloads -> aktueller release -> source build) in leeres Directory entpacken
  • java, anthome usw. richtig setzen, siehe Instructions zum sourcebuild. Im Properties File nur das neueste jdk angeben, siehe java/ecAnt. Und dann build ausführen für das Zielsystem
  • build (sh, bzw. Build.bat für windows) compiliert zuerst den EclipseCompiler mit javac und nachher mit dem EclipseCompiler selbst, der Source wird jedesmal aus jdtcoresrc/src/ecj.zip extrahiert, Aenderungen müssen also da rein geschrieben werden. Nachher alles compiliert aus build.xml und dann features/org.eclipse.sdk/build.xml. Log in comilelog.txt
  • einige Buildfiles (u.a. das erste enthalten einen unvollständigen bootclasspath – am einfachsten passt man das im Compiler an, in jdtcoresrc/src/ecj.zip>>>org.eclipse.jdt.internal.compiler.batch/Main.java in
 handleBootclasspath(....) {
 ....:
 if (paths[0].indexOf("/rt.jar") < 0 ) { 
             paths[0] = paths[0] + ":/usr/lib/jvm/java-6-sun-1.6.0.10/jre/lib/charsets.jar:/usr/lib/jvm/java-6-sun-1.6.0.10/jre/lib/deploy.jar:/usr/lib/jvm/java-6-sun-1.6.0.10/jre/lib/javaws.jar:/usr/lib/jvm/java-6-sun-1.6.0.10/jre/lib/jce.jar:/usr/lib/jvm/java-6-sun-1.6.0.10/jre/lib/jsse.jar:/usr/lib/jvm/java-6-sun-1.6.0.10/jre/lib/management-agent.jar:/usr/lib/jvm/java-6-sun-1.6.0.10/jre/lib/plugin.jar:/usr/lib/jvm/java-6-sun-1.6.0.10/jre/lib/resources.jar:/usr/lib/jvm/java-6-sun-1.6.0.10/jre/lib/rt.jar"; 
             if (logger.err != null) 
                 logger.err.println("+++wkTest err change bootclasspath[0] to " + paths[0]); 
         }
  • die Buildfiles sind tief verschachtelt und leider mit vielem mehrfach Code, darum ist Aenderung im Compiler einfachter !!! Leider wird mit einem speziellen Target auch kein inkrementeller Build gemacht ....
  • nachher tar.gz aus result directory entpacken (normale exlipse Installation) (==> /usr/eclipseBuild)

4.3.09

  • GTK+ is a highly usable, feature rich toolkit for creating graphical user interfaces which boasts cross platform compatibility and an easy to use API. Gehört zu GNU, Ursprünglich für GIMP entwickelt (Gimp Toolkit), wird von GNOME und viele anderen gebraucht. 4 Libraries:
    • GLib, a low-level core library t
    • Pango a library for layout and rendering of text with an emphasis on internationalization
    • Cairo, a library for 2D graphics with support for multiple output devices (including the X Window System, Win32)
    • ATK, a library for a set of interfaces providing accessibility.
  • GNOME: gnu desktop<br/>

3.3.09

CVS = concurrent version system = open source scm ==> http://ximbiot.com/cvs/wiki/

  • revision = Version 1 File, RevisionsNr 1.1, 1.3.2.2 (gerade Anzahl Zahlen)
  • release = Version eines Produkts
  • tag symbolischer Name einer Revision (Namen mit – und _)
  • watch auf ein File, informiert mich, wenn es geändert wird – und andere bekommen es nur readonly, müssen
  • update workdirectory aus cvs repository nachführen (mit Konflikt Auflösung)
  • cvs edit Befehl benutzen um es ein File mit Wacht auf rw umzuschalten und zu editieren
  • $...$ keyword substituion beim checkout

2.3.09

27.2.09

  • Eclipse Fehlermeldung help -> about -> config details -> show error log
  • Mount -a funktioniert nicht für meine beiden NTFS Drives wkData und wkArchive, unklar ob wegen NTFS oder SCSI. File Browser macht es ja richtig (man muss einfach mal draufklicken) manuelle Sequenz ist
  • mkdir /media/wkArchive
  • sudo mount /dev/sda8 /media/wkArchive
  • mit udev könnte man auch noch rumspielen
  • falls bash als sh oder als login shell gestartet wird, wird zuerst /etc/profile durchgeführt, das executed alle /etc/profile.d/*.sh

= Linux =

Documentation

man: manual pages anzeigen

  • man section? page: zeigt diese section dieser page an
  • man -a page : zeigt alle sections dieser page an
  • man bentzt einen pager heute meist less (nicht mehr more)
  • man -f alias whatis: short description dieser man page
  • man -k : alias apropos : alle short descriptions durchsuchen und matches anzeigen

less: pager

  • q quit
  • arrows, pageUp/Down
  • g oder > : go ZeilenNummer vorher eingeben
  • % : go Prozentsatz
  • { [ ( wenn eine solche Klammer auf TopLine erscheint, positioniere entsprechende closing bracket auf bottom line
  • } ] ) wenn eine solche Klammer auf Bottom Line erscheint, positionier entsprechende open bracket auf top line
  • m lowerCaseCharacter : markiere aktuelle Position mit lowerCaseCharacter
  • ' lowerCaseCharacter : gehe zu mit lowerCaseCharacter markierer Position
  • / search (n times default n=1) vorwärts (regular expression mit Optionen am Anfang
  • n repeat search
  • N repeat search in opposite direction

[https://help.ubuntu.com/community/ ][https://help.ubuntu.com/community/ https://help.ubuntu.com/community/] und dort suchen

bugs bugs.ubuntu.com

xman: x11 window man intebugs.ubuntu.comrface. Section auswählen, riesiges Verzeichnis aller Manuals, scrollen mit in Leiste reinklicken

yelp gnome man interface ==>

  • über advanced bekommt man Liste von man bzw. Info pages ==> manchmal schneidts text ab, dann halt doch mit man
  • info pages z.b. Basics -> Coreutils enthält eine Sammlung vieler vieler Utilities
  • in search eingeben oder
  • command yelp man:ls

= Boot = grub zeigt ein menu, wird teilweise generiert mit update-grub. In /boot/grub/menu.lst. Mit Default Nummer sagt man (0 relativ) welcher MenuEintrag Default ist

= Gnome DeskTop =

  • Alle Fenster minimieren/restoren: # Click on the Show Desktop button at the far left of the bottom panel.oder Press Ctrl+Alt+D.
  • gconf-editor: editor für gnome configurationsfile -> tree structure
  • gconftool:command line editing der gnome configuration
  • nautilus Scripts: in erscheinen auf rechter Maustaste
  • ~/gnome2/nautilus-scripts versorgen
  • script Sprache mit #!/bin/bash markieren
  • für Output muss ein Fenster aufgemacht werden z.B. Mit zenity
  • places --> connect to server mit entsprechendem Type --> man kanns bookmarken und bekommt's dann imm wieder unter Places

= Live CD =

Process

  • Echte Terminals 1 – 6 mit crtl+alt+f1 bis crtl+alt+f6, grafische Oberfläche ctrl+alt+f7
  • Prozesse anzeigen: ps, pstree oder top (mit ctrl c wieder raus)
  • kill: signal an Prozess schicken
  • sudo -s startet root terminal

= Diverses =

  • gedit Editor
  • stat detailInfos für ein File
  • chown change owner
  • chgrp change group
  • chmod change Modes (rwx für owner, group others) ändern
  • mkfifo: benannte Pipe erstellen, kann von gelesen und geschrieben werden (Speicher nur solange Prozess aktiv)
  • lsusb: usb devices anzeigen, -v mit viel Inos, -s auf Bus einschränken
  • sudo update-usbids : ubs ids neu aus Netz laden, dann erkennt's auch neuere
  • lshw zeigt Hardware Konfiguration
  • tail /var/log/messages ==> letzte Log Meldungen anshen

bash

.bashrc inital File falls keine login shell

/etc/profile und dann .bash_profile für nicht login shell

/etc/inputrc (und nach .inputrc) wird libreadline konfiguriert (see man readline)

= Unix =

Bourn shell

  • heisst: bash aber!! es gibt auch noch sh die noch weniger kann (z.B. function versteht sie nicht!)
  • PATH variable unter denen commands gesucht werden (normalerweise /bin), chmod +x damit sie auch ausgeführt werden können!
  • Bei ernsthaften Fehlern (redirections fail etc.) verlässt die shell den aktuellen command, also die subshell, oder FunktionsAufruf, aber { } oder ander strukturierte Statements (if while) erzeugen keine solche Hülle!
  • scanning: Input in Wörter teilen mit whiteSpace, und metaChars: < > | & ; ( ) , space tab newline (synonym für ;) ( } dagegen ist ein reserviertes Wort, vorangehender Command muss mit ; abgeschlossen werden!)
  • Struktur:
  • command: parameterAssignments commandWords redirection (assignments vor commandWords)
  • pipes: |, ! pipe kehrt then exitstatus (des letzten Commands der pipe) um
  • list: pipes mit || && oder &, |& und ;
  • compound commands (case,... while) werden nur Anfangs Zeile erkannt, redirections müssen also nachher komm
  • { list } (mit ; siehe oben) compound
  • ( list ) wird in subshell ausgeführt, aus Subshell kommen keine Variabeln zurück!
  • if list then list elif list else list fi usw. immer listen als Bedingung erlaubt!
  • $(( )) equivalent to let, arithmetische Ausdrücke, C-like, inklusive emedded assignment, Variabeln werden ohne $ expandiert
  • [] test
  • [[ ]] Variante von [ ] test ohne fileChar substituion usw.
  • substitutionen:
  • command susbstitution ersetzt command durch seinen standard output. $(...) mit normale QuotingRules aber in `...` werden die \ von \$ \` und \\ entfernt
  • arithmetic substitution $((...)) berechnet ausdruck
  • parameter substitution mit $var oder ${var} oder ${var[arith expr]} array,
  • ${name:-ifNull}, ${name:+ifNotNull}, ${name:=assignIfNull}, ${name:?errorMsgIfNull} ${#name} stringLength, ${#name[*]} Anzahl array Elemente
  • ${name#pat} if pat matches begin of name, delete shortest match, ## longest, % from end
  • ~ tilde expansion home of user bis nächstem /
  • braces expansion: a{b,c}d wird abd acd
  • parameter assingments innerhalb command (ohne ;!) gelten nur temporär für diesen command, werden aber exportiert!
  • filename patters:
  • * 0-n chars, ? 1 char, [...] charset [!...] not charset,
  • *(..|....) 0-n pattern in Klammer, +(..|...) 1-n, ?(..|...) 0-1 !(..|...) alles was nicht matched
  • . und .. werden nie erzeugt, mit option markdir wird ein / and directories appended
  • Input/Output Redirection
  • > StdOut, >> StdOut append, < StdIn, << marker inline Input bis Zeile mit Marker, nach verarbeiten dieser Zeile
  • 3> 5< analog > bzw < auf entsprechendem fileDescriptor (0..9) bezogen
  • fileDescriptoren 0 stdIn, 1 stdOut, 2 stdErr 3 - 9 zur freien Verfügungen (werden durch reDirection deklariert und geöffnet)
  • 2>&1 stdError nach stdOutput analog für ander FileDescriptoren
  • Characters (siehe stty -a)
  • ctrl d eof (aber nur als erstes Zeichen der Zeile)
  • ctrl z: suspend ( background)
  • ctrl c:: intr (Interrupt Signal)
  • \ escape z.B. \enter interpretiert return nicht und erlaubt mehrzeilige Eingaben
  • *, ?, [] activates filename Susbtitution: wildcard
  • $ variable substitution
  • `cmd` backQuotes: führt cmd aus und führt dann den Befehl mit dem zurückgegebenen String aus, in subShells, hat zwar alle Variablen, kann sie aber nicht zurückverändern!
  • \ escapes ein Zeichen
  • 'text' simple Quotes: escapes den ganzen Text
  • "text" double Qutes: nur \, $ und ` ` werden interpretiert
  • function: benutzt denselben nameSpace (ausser $*)
  • Variablen:
  • Konvention: rein uppercase für Unterscheidung zu commands
  • ${varName} wenn Ende des Namens usw. nicht klar (geht nicht rekursiv)
  • ${var:-defaultValue} -> gibt defaultValue zurück, fall var undef
  • ${var:+tValue} -> gibt Value zurück, falls var definiert ist
  • ${variable:?message} -> falls undefiniert message nach stderr und exit
  • unset var: entDeklarieren (gleiche Wirkung wie auf leeren String setzen)
  • $0 command name
  • $1 -$9 Argumente
  • $* alle Argumente (auch $@, Unterschied liegt in quoting)
  • $# Anzahl Argumente
  • $$ processId
  • $? exitStatus von letztem Command exit Werte sind Modulo 256 und alphas -> 0
  • readonly var: macht var readonly
  • export -> var für subshells sichtbar machen (für alle zukünftigen mit aktuellen Werten, aber aus subSchell kommen Werte nicht zurück!"
  • builtins
  • if elif else fi: cmd; then schaut auf returnWerte des cmd. 0 oder '' sind TRUE, alles andere falsch (aber rc von expr kehrt es um, damit man normal arbeiten kann…
  • : (colon) leerer cmd
  • . command in current environment ausfüren
  • : empty
  • eval ... Argumente werden expandiert und nachher wieder ausgeführt (geht aber auch ohne eval!)
  • exec cmd cmd ohne forking ausführen
  • export: variable für subProzesse sichtbar machen
  • false, true
  • fc command history anzeigen bearbeiten...
  • getopts Optionen einScannen
  • hash: geHashte cmds anzeigen
  • jobs, kill
  • set shellOptions
  • time cmd: time to execute cmd, without of shell
  • trap um Signale / Interrupts aufzufangen, see kill -l (wenn trap kein exit mach, läuft Programm weiter!)

Korn Shell >= Bourn

  • history [von] [bis]: command History, von: 555: Nummer, -10 relative Nr, ls : commandAnfang
  • r [old=new] [line] repeat [line] wie [von] von oben
  • set -e vi: edit mode vi setzen, wie üblich mit ESC in CommandMode und durch history skippen

Concepts

  • UUCP: historische Verbind zwischen Unix Maschinen
  • BNU: Basic Networking Utilities = bekanntester Release von UUCP
  • NIS: Network Information Service, introduced by Sun (handling von remote users, groups usw.)
  • NFS. Networked File System: FileSystem via Network anhängen
  • regular expressions allgemeiner aber anders für (teils) grep und teils egrep usw.: . (punkt) einzel Char. $ endOfLine, ^beginOfLine, * 0-n mal Vorherige Expr, \ escape (aber ohne quotes verschluck shell ersten \), [...] charset mit - und ^ für Negation, {min, max} Wiederholungen und \(, \), \n für backReferenzen
  • devices
    • /dev/null: leeres / dummy File
    • /dev/zero: unendliches File von hex Nullen
    • mount <-> automount stört einander!
  • sticky bit: nur owner darf (öffentlich schreibbares) File löschen
  • setuid und setgid Bits: Executables laufen unter uid/gid des Files, für Directories: File dring bekommen entsprec owner/group
  • runlevel: 0=halt, 1=singleUser,3=full multiuser, 6=reboot. ändern mit init x. Dann werden zuerst kill script aus /etc/rc.d/rcX.d/k * (für alten run level X) und dann Start Script (.../s* aus neuem run level) gestartet

Processes, JobControl etc:

General Process Control Signals, von weich nach hart

  • TERM Termination—process may ignore or block this (default von kill)
  • HUP Detection of terminal hangup or controlling process death
  • INT Interactive attention signal—INTR control character generates this
  • QUIT Interactive termination—QUIT control character generates this
  • KILL Termination—process cannot ignore or block this

Job Control Process Control Signals

  • CONT Continue a stopped process—process cannot ignore or block this
  • STOP Stop a process—process cannot ignore or block this
  • TSTP Interactive stop—SUSP control character generates this
  • TTIN Background job attempted a read—process group is suspended
  • TTOU Background job attempted a write—process group is suspended

Scheduling via Priorität und Nice Value

ProcessGroups: Prozesse, die für einen Commanc erzeugt werden

Job = ProcessGroup im Background oder suspended

JobNummern sind kleine Zahlen (pro Terminal): % oder %+ für aktuellen Job, %- für vorherigen, ?find

commands: jobs, fg, bg, stop, wait

sun admin Kurs:

  • ff Pfade pro iNode eines Filesystem
  • quot: Diskplatz pro User
  • newfs : FileSystem erstellen, mit –N anzeigen, insbesondere Liste der Backups des Superblocks
  • fsck: Filesystem checken und flicken (unbekannte Files  lost+found
  • prtvtoc: zeigt Dimensionen, Slices (=Partitionen) usw. eines Disks an
  • format: disk formattieren, mit verify anzeigen
  • /etc/path_to_inst listet die Übersetzung von physischen Path-Name zu InstanzNamen/Nummern
  • setfacl zum setzen und getfacl zum lesen fon acl File Einträgen
  • sticky bit: nur owner darf (öffentlich schreibbares) File löschen
  • setuid und setgid Bits: Executables laufen unter uid/gid des Files, für Directories: File dring bekommen entsprec owner/group
  • cde Prozessmanager, start mit sdtprocess &
  • prstat: interaktiv Infos über laufende Prozesse
  • patches zu finden unter sonsolve.Sun.com
  • patchadd, patchrm Patches (de)installieren
  • patchadd –p oder showrev –p: Patch Status abfragen
  • /var/sadm/patch enthält PatchHistory des Systems
  • /dev/rmt/... enthält Tapes
  • ufsdump: FileSystem auf Ban d sichern, Total oder inkrementell
  • /etc/dumpdates enthält die Daten und FS Namen der dumps
  • ufsrestore:: recovern eines FS ab dump. Root restoren,, nach dump von CD
  • mt Status von Tapes anzeigen
  • fssnap: einen read only snapshot eine UFS erstellen (ermöglich online dumps, behält Änderungen seit Erstellungszeitpunkt auf) Snapshot kann gemountet werden und als RO Device gebraucht werden.

= Utilities / Commands =

  • alt altGr Tasten über Mapping in exceed Konfiguration
  • arp: address resolution display/control: nfs Adressen
  • ?? banner: riesiges echo
  • basname echo't den FileNamen zurück aus einem path
  • bc Calculator, C-like
  • bg: job in background - normalerweise Suspend Char ^z, ( oder signal STOP)
  • cal Kalender,
  • cd change directory (.. eins runter, leer home, tilde = home
  • chmod security usw. setzen, chown owner ändern, chgrp Gruppe ändern
  • crontab (-l listet, -e ediert) crontab des aktuellen Users. Eintrag Minute Stunde Tag Monat Wochentag Command. Command wird mit sh ausgeführt (ohne profile). kann mit #!.. im Script überschrieben werden. => mail an User, falls Output produziert wird!
  • cut: columns ausschneiden: -b byteList, -c charList (1-10,19-21), -f fieldList, -d delimiter (default tab)
  • date Datum und Zeit anzeigen, auch einzelne Felder
  • dc Calculator, postfix
  • dd kopiern mit Konversionen
  • df: system Diskplatz pro fileSystem
  • directory Commands: pwd (what dir), cd, ls (list dir), mkdir rmdir
  • dirname echo't den DirectoryNamen zurück aus einem path
  • dos2unix KonvertFile von dos auf unix (-ascii: Carriage Returns und eof), -iso: CharacterSet)
  • du Diskplatz Belegung für SubDirectories
  • ?? env zeigt alle Variabeln envgrep (shellScript) nur Teil davon, auch für Commandaufruf mit temporären Logicals
  • expr: Ausdrücke + - & | regular expressions index….. aber nicht geschachtelt. RetrunWert kehrt um 0 oder '' nach 1, andere Werte nach 0
  • fg: job in foreground
  • ?? file commands: cat, head, pg (page file), more, tail, file (art des Files angeben) cp (copy), cpio (archivieren), tar (Archive manipulieren) csplit (split) ln (link names), mv (move) rm (remove), rmdir, split, touch, du (disk usage), diff cmp (file vergleichen)
  • find: sucht Directories rekursiv durch und kann Aktionen ausführen find sucht rekursiv fileTree, -print zeigt an, -exec …{}. \; führt Command aus (man command): nur einfacher command ist erlaubt, {} und ; müssen isolierte Argumente sein
  • ff - list file names and statistics for a special file system
  • finger: detailierte User Info
  • format: disk formattieren, mit verify anzeigen usw.
  • fprint wie in C
  • fsck: Filesystem checken und flicken (unbekannte Files  lost+found
  • fssnap: einen read only snapshot eine UFS erstellen (ermöglich online dumps, behält Änderungen seit Erstellungszeitpunkt auf) Snapshot kann gemountet werden und als RO Device gebraucht werden.
  • fuser <files> zeigt die Prozesse an, die die Files benutzen. fuser -c alle Processe auf und unter diesem mountpoint
  • getfacl zum lesen und setfacl zum setzen von acl File Einträgen, z.B. setfacl -m group::r--,mask:r--, ,u:szhszy:r-- fileNames
  • grep: -c count, -E extended regular expr (= egrep), -F find statt regular (= fgrep), -i ignore case, -p<separator> paragraph anzeigen, -q ohne output, -v display not matching, -w wordsearch -x match exactly (ohne addional)
  • group ändern: etc/group editieren
  • gzip: komprimieren (jedes fileName -> fileName.gz) mit gunzip umgekehrt. Optionen für crLf, recursive usw.
  • head Anfang eine Files
  • id aktuellen User/Gruppe anzeigen, id -a zeigt all Gruppen an, zuder user gehört
  • jobs: JobVerwaltung
  • kill -l zeigt mögliche Signale, sonst schickt Signal, default TERM kill –KILL ?? killt wirklich
  • ls/ll list directory usw. permission 3*3 {owner, group, world} x rwx
  • ?? ls: -R recursive Subdirs, -r sort Umkehrung -t sort lastModif
  • mail <adresse> sendet Text from StdIn
  • mailx -s …. geht auch mit Kurzzeichen
  • man: manual, help: -s section, -l listet vorhandene secitions
  • mount: azeigen oder mounten
  • mt Status von Tapes anzeigen oder Befehle ausführe skippen, marken schreiben usw.
  • iostat: io Statistik
  • logger: EinzelMessage oder File  /var/log/syslog
  • lsof list open files
  • mfsstat
  • newfs frontend für mkfs um FS zu erstellen
  • nohup: command starten immun auf nohup (überlebt also logout)
  • nslookup fragt lokal definierte Internet Hosts ab
  • op: Aufruf von Cmds mit privilegien, festgehalten in /etc/op.access
  • patchadd, patchrm: (Sun)Patches (de)installieren, suchen unter sonsolve.Sun.com
  • patchadd –p oder showrev –p: Patch Status abfragen, /var/sadm/patch enthält PatchHistory des Systems
  • prtvtoc: zeigt Dimensionen, Slices (=Partitionen) usw. eines Disks an
  • ps: column ppid = Parent Pid
  • quot: Diskplatz pro User pro Filesystem, pro FileGrösse usw.
  • rcp remoteCopy analog cp
  • renice: Process Nice (< Priorität) ändern
  • rlogin ist in UBS verboten, aber mit telnet kommt man auf anderen Server
  • rm -r löscht rekursiv files und directories
  • sar SystemAcitivy Reporter: Performance Analysis, falls richtig aufgesetzt…
  • ?? selection: line (erste) tail (letzte 10) grep, wc wordCount, sort (+0.7-0.9), uniq, cut, paste, merge, sed (stream Editor), grep, cut
  • sleep 17 : 17 Sekunden warten
  • su; switch user
  • stty: setzen/anzeigen von Terminal Optionen
  • tar cf tarFile directories/files erstellt tarfile und addiert rekursiv files/directories, Achtung keine absoluten Pfade brauchen, sonst muss es wieder auf diese extrahiert werden. tar tf tarFile zeigt Inhalt an, …xf… extrahiert relativ zu aktuellem Directory
  • tee: multiply std in
  • test oder [ ]
    • numerisch-eq -gt usw
    • strings= != -n -z (string in "" sonst findet er den leeren String nicht)
    • filePermissions -r -w -x fileName
    • fileTyp -f -d fileName
    • boolean ! not, -a and -o or
  • time/timex: zeigt cpu Verbrauch eines commands
  • top : zeigt grösste cpu verbraucher
  • tr: translate delete (-d) oder squeeze -s), z.B., tr a-z A-Z = übersetzen auf Gross
  • tty: Namen des aktuellen Terminals anzeigen
  • type xxx: zeigt pfad unter dem command xxx gefunden wird
  • ?? typeset -fu : autoload für Funktionen setzen (aus FPATH)
  • ?? umask setzt/zeigt rechte die beim erzeugen einer Datei per Default vergeben werden
  • ufsdump: FileSystem auf Ban d sichern, Total oder inkrementell, /etc/dumpdates enthält die Daten und FS Namen der dumps
  • ufsrestore:: recovern eines FS ab dump. Root restoren,, nach dump von CD
  • uname unix system name, verschiedene soft/hardware infos (-a viele Infos, -n hostname….)
  • unzip für zip files, -a konvertiert DOS end of Lines
  • uptime: Zeit seit System läuft und RunQueueTief seit 5/10/15 mins
  • vmstat:: Memory Statistik
  • wait: auf job warten
  • who: logged on user anzeigen mit verschiedenen infos mit finger zusätzliche Infos wie Name, whoami nur für mich

unix environment

  • /dev/rmt/... enthält Tapes
  • /etc/path_to_inst listet die Übersetzung von physischen Path-Name zu InstanzNamen/Nummern
  • /etc/passwd enthält User Liste
  • Pkg werden unter export/opt mit Version geAddet, var/spool (ohne Option) enthält logfiles, Temp Daten usw.
  • by the way auf svgnu81/82 sind die Directories/Files /var/sadm/pkglog/xxx jetzt offen, damit
  • jedermann darin lesen kann. So seht Ihr jeden Fehler, den ich mache
  • EDITOR Variable bestimmt Editor z.B. für Crontab

ubs utilities

  • nt: network drive mounten auf [smb://svg50.flur.zuerich.ubs.ch/homes \\svg50.flur.zuerich.ubs.ch\homes] geht auf mein HomeDirectory (Samba)
  • xtitle setzt shell title per Default auf hostname

= ===Tools=== =

awk

case $1 in

### pattern { action }

# no pattern matches every line

1) awk '{ print $0 }' < $tFile ;;

# no action prints whole line

2) awk '/.*ie.*/' $tFile ;;

# each match is processed; statements separated by ; or nl

3) awk 'BEGIN {print "begin"} /ie/ { print "ie:" $0 } $0 ~ /e/ {print "e :" $0}

 END {print "end"}' $tFile ;;

# from to

4) awk '/fue/,/ehn/' $tFile ;;

# boolean combinations: ! || && and parentheses

5) awk '/ie/ && ! /ech/' $tFile ;;

# 6 rel ops as in C

6) awk 'NR == 1 || NR > 3 { print "nr " NR ", nf " NF ", $0 " $0}' $tFile ;;

*) echo 'argument <$1> not understood' ;;

esac

= Continuus =

  • Projekt checkout: erstellt workarea in ~/ccm_wa/<db>/<wa>  workarea Namen immer mit kurzzeichen prefixen (und release). Directories enthalten Links, checkout erlaubt zu schreiben..
  • Continuus: Task eröffnen, Release eingeben und Assignen, Checkout und editieren oder kopieren. Task Einchecken.
  • Reconfigure Projec  holt alle Elemente von Eingecheckten Tasks ins aktuelle Projekt, zeigt Konflikte an. Für Integrationsprojekt muss das gear_bmgr tun, damit Änderung nachkommen
  • Reconcile: Workarea mit Continuus oder umgekehrt abgleichen
  • eingeCheckte Tasks gehen via Task_Release in Master_Projekt, wenn falscher Release ausgewählt (Achtung 4. Buchstabe in axf….) kommt es nie zurück, Admin, muss dann Release des Task ändern!
  • Package erstellen mit op ccm_mtar (plus für ITIN op makepkg rfc pkg und op send_veri rfc pkg vers)
  • start from shell etc  myCcm

= emacs = c-<chr>Control-<chr>

m-<chr> Meta-<chr>: Meta, Alt oder zuerst Esc und

m-c-<chr> Contol und Meta und-<chr> gleichzeitig, bzw. zuerst Esc und dann c-<chr>

c-xCharacter eXtend. Followed by one character.

m-xNamed command eXtend. Followed by a long name (abgekürzt mit Tab).

c-x c-c quit emacs (fragt für saves)

c-z temporärer Ausstieg, z.B. aus shell mit shell fg o.ä.

#<filename># autosave file

Help

c-h c <chr>function name für diesen <chr>

c-h k <chr>help für diesen <chr>, Kombination oder Menu Selektion

c-h f <fun>describe function

c-h a <wort>describe function die <wort> enthält

c-h igeht ins info system für installierte info manuals

Konzepte

  • Menu und toolbar wie üblich
  • Point=Cursor  vor Buchstaben auf dem Cursor blinkt (d.h. immer zwischen Zeichen!)
  • Mode Line: zuunterst pro Window: -CS:CH BUF (MAJOR MINOR)--LINE--POS----- mit CS CodingSystem (- normal, = anderes) CH: -- unveränd ** modifiziert bzw oder %* für read only buffers
  • Echo Line: unterste Zeile unter Mode Line des untersten Windows, zeigt lange/langsame Commands an, Errors usw., History in Messages Buffer
  • MiniBuffer: auch in Echo Area für Command Argumente
  • Region: von Mark bis Point
  • Regin Rectangle: von Mark bis Point aber nur in Kolonnen
  • Mark Ring: Jeder Buffer erinnert die 16 letzten Marks
  • Kill Ring
  • Register: enthalten text, Positionen usw. Namen = 1 Zeichen (syntax R)
  • bookmarks: permanente Registers

Navigation

c-v1 screen vorwärtsm-b1 screen rückwärt

c-lcursor in Mitte Window anzeigen

c-bbackward (1 char)m-b(1 word)

c-fforward (1 char)m-f1 word

c-pprevious linem-p

c-nnext line

c-aanfang linem-aSatz

c-eende linem-eSatz

c-u 999wiederhol Faktoer eingeben (vorher)

c-gende/stop irgendetwas

esc esc escauch ende usw.

m->bottom

m-<top

scrollbar: mit mittlerer Maustaste bedienen

c-s vorwärts suchenc-r rückwärts suchen

C-s <RET> C-w WORDS <RET für Wörter suchen

C-M-s reg expr search vorwärts, C-M-r retour

m-c innerhalb incrementalen Search toggled Case-Sensivity

c-space oder [c-@: c-@:] Marke setzen

c-x c-x Point und Mark vertauschen

drag mouse 1 (mark Point und ziehe Point)

mouse-3: set mark bei Point und dann point bei click

c-u c-space zu vorheriger Marke zurückkehren im lokalen Ring

c-x c-space zu vorheriger Marke zurückkehren im globalen Ring

C-x r <SPC> R Position -> Register, C-x r j R: Jump to Register Position

edit

c-wkill Region (von Marke bis Cursor)M-w region -> last killed text (ohne zu löschen)

m-c-w append-last-kill

c-dvorwärts löschen charm-d kill wort

delete char rückwärts löschen m-delete kill wort

c-kkill bis endOfLinem-k kill bis Ende Satz

c-yyank (reInsert killed)m-y vorh yank mit älterem kill ersetzen

c-_ oder c-x uundo

c-x c-l bzw c-u: Region to lower/upper case

m-^: Join lines

append-to-buffer, copy-buffer uisw.

c-x r k kill rectangle

C-x r s R: copy region to register, C-x r i R insert Register

M-%search<ret>replace<ret> query search ( spc ja usw.) c-m-% dito für regexp

m-c-x replace-string …. alle occurences ersetzen

intendation

m-mmove to intendation

tab Anfangs Zeite: Intend richtig

files

c-x c-f <filename> reads file in new buffer (find file)

c-x c-s saves to file (fragt für jeden geänaderten)

m-x recover file

c-x c-w save as

buffer

c-x c-b list buffers

c-x k kill buffer

make-indirect-buffer

windows

c-x 11 window

c-x 2horizontal split

c-x ocursor to other window

m-c-vscroll other window

modes

major Modes nur einer aktiv:

minor Modes: ein und aus Togglen

  • Column Number mode

= emc =

  • BCV: Business Continous Volume: Disk Spiegelungen, Handhabung über sym* commands, Liste der Commands mit symcli -v. Business Continuance Volumes): Business Continuance Volumes are copies of active production volumes that can be used to run simultaneous tasks in parallel with one another
  • Veritas Volume Manager
  • Symmetrix: Intelligente DiskBoxen
  • SRDF: Symmetrix Remote Data Facility
  • TimeFinder: Utility um BCV zu verwalten

vi

Editor braucht envVar TERM für TerminalType

vi hat verschiedene Modes: CommandMode, InputMode, User : Mode. Mit Esc (oder CommandEnde) zurück nach CommandMode

InputMode zurück mit Esc oder Interrupt

CommandMode

  • Cursor Bewegungen mit Pfeil oder h links, j down, k up, l rechts, 0 anfangsZeile, $ endeZeile
    • w; ein wort vorwärts, e EndOfWord b wort backward
    • ctlr d halbeSeite down, ctrl F eine Seite vorwärts, ctrl U halbeSeite Up, ctrl b halbeSeite back
    • G goToLine (Last, Zahl vorher), ctrl G show LineNum
    • i: character insert, a character append, o insert line after O insert line before
    • cw Wort ersetzte~, r ersetzte ein Zeichen, R ersetze Text, ~ gross/klein
    • n, x delete char, dw deleteWord, dd deleteLine
    • / search forwad, ? search backward, n search again, N search reverse
    • ( begin of sentenc, ) end of sentence, ]] next [[ previous section/function, } next { previous paragraph
    • u undo
    • .: redo last change
    • ZZ write and quit
    • J Join Line
    • zahl: ZeilenNummer / RepeatCount folgender Command
    • d delete y yank(copy) usw. mit skip Modifikation
    • p paste after cursor, P paste before
    • "x: buffer x addressieren für folgenden befehl (y p usw).
  • Command mit : zurück mit enter
    • :e fileName: edit file
    • :e! reEdit, discard changes
    • :sh shell
    • :! ein shelll command
    • !! ein shelll command output nach editFile

= Literature = [ORC06] Jonathan Oxer, Kyle Rankin, Bill Childers,. Ubuntu Hacks. O'Reilly 2006, siehe http://hacks.oreilly.com