Archiv der Kategorie: Allgemein

Lisp Funktionen

cond

(defun pudding-eater (person)
     (cond ((eq person 'henry) (setf *arch-enemy* 'stupid-lisp-alien)
                        '(curse you lisp alien – you ate my pudding))
             ((eq person 'johnny) (setf *arch-enemy* 'useless-old-johnny)
                        '(i hope you choked on my pudding johnny))
              (t                '(why you eat my pudding stranger ?))))

Die Cond- Form ist die klassische Art der Verzweigung in Lisp. cond arbeitet in diesem Beispiel 3 Zweige ab.

assoc

(assoc 'garden *nodes*)
(GARDEN (YOU ARE IN A BEAUTIFUL GARDEN. THERE IS A WELL IN FRONT OF YOU.))

assoc kann eine List abarbeiten, um dann ein Listenpaar auszugeben.

(defun describe-location (location nodes)
(cadr (assoc location nodes)))

Oder halt nur einen Teil eines Listenpaares.

car, cdr, cadr, cdar, cddr, caddr, cddar, cadadr

Es geht um das Auslesen von Listen.

> (car '((peas carrots tomatoes) (pork beef chicken)))
(PEAS CARROTS TOMATOES)
> (cdr '(peas carrots tomatoes))
(CARROTS TOMATOES)
> (cdr (car '((peas carrots tomatoes) (pork beef chicken))))
(CARROTS TOMATOES)
> (cdar '((peas carrots tomatoes) (pork beef chicken)))
(CARROTS TOMATOES)
> (car '((peas carrots tomatoes) (pork beef chicken)))
(PEAS CARROTS TOMATOES)
> (cdr '(peas carrots tomatoes))
(CARROTS TOMATOES)
> (cdr (car '((peas carrots tomatoes) (pork beef chicken))))
(CARROTS TOMATOES)
> (cdar '((peas carrots tomatoes) (pork beef chicken)))
(CARROTS TOMATOES)

Diese Funtionen machen es einfach cons-Zellen basierte Strukturen zu bearbeiten.

progn

progn bietet die Möglichkeit in einer Abfrage mehr als eine Sache zu machen.

> (defvar *number-was-odd* nil)

> (if (oddp 5)
(progn (setf *number-was-odd* t)
'odd-number)
'even-number)

ODD-NUMBER
> *number-was-odd*
T

In diesem Fall wurden zwei Sachen abgefragt.

Shell Befehle top und ps Kurzreferenz

ps
psEin Befehl zum Auflisten laufender Prozesse.
Schalter die zu ps gehoeren
LLanges Format
UUser Format (Mit User und Startzeit)
AAlle Prozesse, auch die anderer User
XAuch Daemon-Prozesse (Ohne eigene TTY-Leitung)
FForest (Wald) Format – Der Prozessbaum wird dargestellt
WWide (breite) Ausgabe – Zeilen werden nicht abgeschnitten
Beispiel fuer ps: ps uax, ps fax

top
topEin Befehl zum Auflisten laufender Prozesse, aber mit staendiger Erneuerung.
LEERTASTESofortiger Update der Prozesse
STRG_LBildschirm neu aufbauen
H oder ?Darstellung einer Hilfeseite
IIgnoriere schlafende und Zombie-Prozesse (i ist ein Wechselschalter, erneutes Drücken bewirkt, dass diese Prozesse wieder angezeigt werden.
RRenice – Damit kann einem Prozeß ein neuer Nice-Wert gegeben werden (sofern der User das Recht dazu hat). Das Programm fragt nach PID und Nice-Wert.
KKill – Entspricht dem Programm kill – siehe weiter unten. Damit können Signale an Prozesse geschickt werden.
SDamit kann die Zeit verändert werden, die zwischen dem Auffrischen des Bildschirms gewartet wird. Eingabe in Sekunden. Vorsicht, eine zu kurze Zeit bringt den Rechner schnell in die Knie. Eine 0 steht für dauernde Neudarstellung ohne Wartezeit, Voreingestellt sin meist 5 Sekunden.
FFügt Felder in die Ausgabe ein oder entfernt sie. Die einzelnen Felder werden weiter unten erklärt.
WSchreibt die aktuelle Konfiguration in die Datei ~/.toprc – Damit wird nach dem Neustart von top diese Konfiguration wieder geladen.
QQuit – Beendet das Programm

Felder die von top dargestellt werden koennen. Werden von F angefuehrt.
PIDDie Process-ID des Prozesses
PPIDDie Parent Process ID des Prozesses
UIDDie User ID des Users, dem der Prozeß gehört
USERDer Username des Users, dem der Prozeß gehört
PRIDie Priorität des Prozesses. Höhere Werte bedeuten höhere Priorität.
NIDer Nice-Wert des Prozesses. Höhere Werte bedeuten geringere Priorität.
SIZEDie Größe des Codes plus Daten plus Stack in KiloByte
TSIZEDie Größe des Codes in KiloByte. ELF Prozesse werden nicht korrekt dargestellt
DSIZE
Die Größe der Daten und Stack in Kilobyte. ELF Prozesse werden nicht korrekt dargestellt
TRSText Resident Size – Die größe des residenten Code-Blocks in KiloByte
SWAPGröße des ausgelagerten Bereichs des Tasks
DGröße der als Dirty markierten Speicherseiten
LIBGröße der Library-Speicherseiten – Funktioniert nicht bei ELF-Prozessen.
RSSDie Größe des physikalische Speichers, den das Programm benutzt. Für ELF-Format werden hier auch die Libraries mitgezählt, bei a.out Format nicht.
SHAREDie Größe der benutzten Shared-Libraries des Prozesses.
STATDer Status des Prozesses. Das kann entweder ein S für schlafend, D für ununterbrechbar schlafend (dead), R für laufend (running) oder T für angehalten (traced). Dieser Angabe kann noch ein < für einen negativen Nice-Wert, ein N für einen positiven Nice-Wert oder ein W für einen ausgelagerten Prozeß folgen. (Das W funktioniert nicht richtig für Kernel-Prozesse)
WCHANDie Kernelfunktion, die der Task gerade nutzt.
TIMEDie gesamte CPU-Zeit, die der Prozeß verbraucht hat, seit er gestartet wurde.
%CPUDie CPU-Zeit, die der Prozeß seit dem letzten Bildschirm-Update verbraucht hat, dargestellt als Prozentsatz der gesamten CPU-Zeit.
%MEMDer Anteil des Speichers, den der Task nutzt.
COMMANDDas Kommando, mit dem der Prozeß gestartet wurde.
TTYDie Terminalleitung des Prozesses.

Tastenkombinationen Emacs, im Buffer (Text) arbeiten 3

C+x C++Schrift vergroessern.
C+x -> oder <-Pfeiltasten um durch die Buffer zu schalten..
C+x C+-Schfrift verkleinern.
M+x menu-bar-openWeil in der Konsole F10 nicht funktioniert.
M+x cua-modeStellt copy und paste auf gewohnte short-cuts um.
C+spaceFaengt an eine Regoion zu makieren.
C+wSchneidet diese makierte Region aus und fuegt sie dem Kill Ring zu..
C+yFuegt diese Region wieder ein.
C+x kSchliesst eine Datei bzw. Killt einen Buffer.
C+x d
d (martkiert)
x (loescht)
Im dired mode kann man die Dateizeile mit d markieren und dann mit x loeschen
C-u -5 C – kLoescht 5 Zeilen vor dem Cursor.
C-u 5 C - kLoescht 5 Zeilen nach dem Cursor.
M-x display-line-numbers-modeAnzeigten der Zeilennummern.
C – x C – wSpeichern unter neuem Namen.
C – x C – sDatei speichern.
C – c C – jKopiert den Ausdruck aus der Datei in die REPL und führt in dort aus.
C – c C – eFührt den Ausdruck aus und schreibt das Ergebnis in den Minibuffer.
C – c C – pMacht für das Ergebnis eines Ausdrucks ein neues Fenster auf.

Tastenkombinationen Emacs, im Buffer (Text) arbeiten 2

C-x s Alle offenen Dateien speichern.
C-x C-b Alle offenen Buffer/Dateien anzeigen.
C-x b Buffer/Datei wechseln
C-x C-c Beendet Emacs
C-x 1 Macht alle bis auf einen Buffer unsichtbar
C-x u Undo
M-x replace-string<Return>Wort1<Return>Wort2<Return> Ersetzen von Woertern
M-x text-mode <Return> “Veraendert den Mode” Veraendert den  Mode.
M-x auto-fill-mode<Return>
Bringt einen automatschen Zeilenumbruch
C-u 20 C-x f
Zeilenubruch nach 20 Zeichen
C-s Suchen incremental, C-s fuehrt zum n. Fund
C-r Suchen rueckwerts
C-x 2 Teilt Fenster in zwei Buffer waagerrecht
C-x 3 Teilt Fenster in zwei Buffer senkrecht.
C-M-v Scrollen im unteren Fenster
C-x o Wechselt mit dem Cursor durch die Fenster.
C-x C-f Datei Neu erstellen

Tastenkombinationen Emacs, im Buffer (Text) arbeiten.

TastenkürzelFunktionBeschreibung
C+x C+ssave-bufferSpeichere den aktuellen Puffer auf Festplatte
C+x uundoMache den letzten Arbeitsvorgang rückgängig
C+x ddiredDired starten
C+x C+ffind-fileÖffne eine Datei von Festplatte
C+sisearch-forwardInkrementelle Suche vorwärts
C+risearch-backwardInkrementelle Suche rückwärts
replace-stringSuchen & Ersetzen einer Zeichenkette
replace-regexpSuchen &amp; Ersetzen bei regulären Ausdrücken
C+h thelp-with-tutorialBenutze das interaktive Emacs-Tutorial
C+h fdescribe-functionZeige den Hilfetext für eine Funktion an
C+h vdescribe-variableZeige den Hilfetext für eine Variable an
C+h xdescribe-keyZeige an, was eine Tastenfolge macht
C+h aaproposZeige den Hilfetext für einen (regulären) Ausdruck an
C+h Fview-emacs-FAQZeige die Emacs-FAQ an
C+h iinfoLese die Emacs Dokumentation
C+x r+mbookmark-setSetze ein Lesezeichen. Nützlich bei Suchen
C+x r+bbookmark-jumpSpringe zu einem Lesezeichen

Tastenkombinationen Emacs, im Buffer (Text) bewegen.

TastenkombinationAktion
C+peine Zeile hoch
C+neine Zeile runter
C+feinen Buchstaben vorwärts
C+beinen Buchstaben zurück
C+aZeilenanfang
C+eZeilenende
C+veine Seite runter
M+veine Seite hoch
M+fein Wort weiter
M+bein Wort zurück
M+<Beginn des Puffers
M+>Ende des Puffers
C+gaktuellen Arbeitsvorgang beenden