Quelle: wwwcip.informatik.uni-erlangen.de/~silobuet/coali Most recent 14.Aug.2009 | CC-by-sa 3.0, by Lorenz: http://wwwcip.informatik.uni-erlangen.de/~silobuet/coali.txt coali.txt - Coding and Linux -><-><-><-><-><-><-><-><-><- = Taste 'X' gedrueckt (halten u.U.) und dann Taste 'Y' xyz = exakter (Gross-/Kleinschreibung!) Befehl fuer die Shell [x] = optionale Eingabe von 'x' -> zusatzliche Bedeutung dann auch in [ ] "xyz" = mnemonischer, zu ersetzender Ausdruck Com1 -Com2 - Text = nach letztem '-' Erklaerungstext fuer Befehlskette (x) = zusaetzliche Erklaerungen/Infos oder Vorbedingungen(!) !!! Einige Informationen gelten NUR fuer die CIP-Debian-Installation !!! Linux Allgemein (Shell-Kommandos) : =================================== - (gleichzeitig druecken) Rechner neu starten (?) - Startet X-Server neu (Kernel -> X-Server -> GUI/WindoMaker) - Textterminal, Consolen-Login (ohne X-Server), TTY1-6 [] - graphisches Terminal (X-Server), GUI-Login - Ausgabeterminal der Magic System Requests (SysRq), TTY10 <+>/<-> - Grafikaufloesung aendern <~> - Vollbild an/aus - Clear screen in Konsole - graphisches Programm-/Befehlstart Fenster (KDE) Magic System Requests (SysRq) - VERWENDUNG IM CIP AUF EIGENE GEFAHR ! ------------------------------- "SysRqKeys" - Befehle direkt an Kernel senden Auch wenn System sonst nicht mehr reagiert, Ausgabe auf TTY10 () SysRqKeys: - sauberer Restart/Reboot Konsolenbefehle : ----------------- man "befehl" - manual, Hilfeseiten (RTFM!) whatis "man-Befehl" - Auftreten und Kurzbeschreibung des man-Bef. apropos "man-Befehl" - Jedes Auftreten von man-Bef. / - Root Verzeichnis ~/ - Home Verz. (liegt auf faui03) ./ - Aktuelles Verz. ../ - Eine Ebene hoeheres Verz. "Prog" "X">[>] "file" - Umleiten der "X"-Ausgabe (X: 1=stdout, 2=stderr) von "Prog" nach "file" [anhaengen] "Prog" [0]< "file" - "Prog" verwendet "file" als [stdin-] Eingabe "Prog1"|"Prog2" - Pipen von mehreren Befehlen (stdout "Prog1" -> stdin "Prog2") echo "Befehl" - Anzeigen, was ausgerollter "Befehl" ausfuehren wuerde, ohne dass Befehlsaufruf wirklich durchgefuehrt wird Bsp.: echo rm *.pdf -> Bildschirmausgabe: rm foo.pdf bar.pdf bla.pdf find "dir" [-name] "*.zip" - Suche in Verz. "dir" alle Dateien mit Endung ".zip" find "dir" -path ""dir"/*" -prune - schliesse Unterverzeichnisse bei der Suche aus Bsp.: find . -path "./*" -prune -name "*.pdf" -not -name "*Summer*" -exec cp '{}' ~/ ';' Suche im aktuellen Verz, aber nicht in Unterverz nach allen .pdf-Dateien, die nicht "Summer" im Namen haben und kopiere gefundene Dateien nach "~/" Bsp.: find . -regex "./cimg05[2,3][0-9].jpg" Suche mit Regulaerem Ausdruck Achtung: Regex muss immer gesamten Pfad beschreiben (inkl. Verz.) kfind - GUI-Suche, regexp (regulaere Ausdruecke) Editor integriert locate "file" - Verz. anzeigen, in denen "file" vorkommt (Datenbank abfrage) type "command" - Typ des Kommandos und moeglicher Speicherort ausgeben which "command" - Verz. anzeigen, in dem Datei fuer "command" liegt (bash+tcsh) whereis "command" - Verz. von Binary, Source und Manpage fuer "command" anzeigen ls - list (Dateinamen etc. anzeigen) (ls -ld = './'-Verz. anzeigen) dir - directory (Dateinamen etc. anzeigen) pwd - aktuelles Arbeitsverzeichnis ausgeben vdir - view directory (Genauere Infos zu Verz.) less - Ausgabe seitenweise anzeigen, mit Scrollen (nicht unter bash!) - Seitenweises scrollen (more - Ausgabe seitenweise anzeigen, ohne Scrollen! pg - Page - " - ) grep - Suchen von Uebereinstimmungen in Dateien/Ausgaben etc. ('-v' invertiert matchen = Zeilen, die Ausdruck NICHT enthalten, '-i' case sensitiv ignorieren, '-E' erweiterte regulaere Ausdruecke) Bsp.: grep "text" `find "Verz" -name ""Dateien""` Zeige alle Zeilen, die "text" in allen "Dateien" von "Verz" enthalten grep -E ""Muster1"|"Muster2"" Zeige alle Zeilen, die "Muster1" oder "Muster2" enthalten /bin/ls | grep -E ".*\.c$|.*\.h$" Zeige im aktuellen Verz. alle .c- und .h-Dateien an ACHTUNG: wenn 'ls' auf 'ls --color' aliased ist, werden Color-Codes mit uebergeben!! (ls --color > "MitColorCodes.txt") rm `/bin/ls | grep -i -v "\.jpg$"` Loesche alle Dateien im aktuellen Verz., die NICHT auf ".jpg" enden und ignoriere Gross-/Kleinschreibung von "jpg" clear - clear screen (cls unter DOS) file - Dateityp Infos cd "DirName" - Springt ins Verz. "DirName", wenn vorhanden cd - Springt direkt ins Home-Verz cd ~"uid" - springt ins Home von "uid" cd - - Springt ins vorherige Arbeitsverz. (man bash -> /cd) mkdir - make directory touch "Name"- leere Datei "Name" erzeugen ln - Link/Verknuepfung auf Daten mv - move (auch zum UMBENENNEN geeigent) cp - copy ('cp test1.scm test2.scm' - erstellt test2.scm mit Inhalt von test1.scm) rm - remove rmdir - remove directory cat - concatenate = Zusammenfuegen von Dateien oder Ausgabe von Dateiinhalten auf stdout diff - Zeilenweiser Vergleich zweier Dateien wc - WordCount = Zeilen-, Woerter- und Byteanzahl ausgeben ('ls ./ | wc' - Erste Zahl = Anzahl Dateien im aktuellen Verzeichnis/Anzahl Zeilen) chmod - Datenrechte einstellen (u = user, g = group, o = others; r = readable, w = writeable, x = executeable) Bsp.: chmod u+rwx,g+rw-x,o-rwx "Daten" ('+' = ja, '-' = nein) oder 4 = r, 2 = w, 1 = x: Summe ergibt Rechte je Benutzerart 1.Zahl = user, 2.Zahl = group, 3.Zahl = others chmod 755 "Daten" -> User rwx, Group+Other r-x (fuer Verzeichnisse+Binaries) chmod 644 "Daten" -> User rw-, Group+Other r-- (fuer "einfache" Dateien) chmod 400 "Daten" -> User r--, Group+Other --- (fuer "kritische" Daten) acl - Access Control Lists (individual chmod) -> getfacl, setfacl eiciel - graphisches Frontend fuer ACLs sleep "time" - Verzoegerung fuer "time" Sekunden (Hintergrundpr. testen) mesg "y/n" - (Ext.) Zugang zum Terminal einstellen (s.a. 'talk') say "Text" - "Text" wird auf Audiodevice ausgegeben sed - Text in Dateien zeilenweise editieren rename ('s/bmp/jpg/' *.bmp) - umbenennen von mehreren Dateien (alle .bmp- in .jpg-Dateien umbenennen) Bsp: rename 's/(.*)/$1\.jpg/' foo* Haenge an alle Dateien, die mit "foo" anfangen ans Ende ein ".jpg" ($1 greift auf die erste Gruppierung (in runden Klammern) zu) rename 's/a([0-9]{2})b([0-9]{2})/a$2b$1/' * Vertausche bei allen Dateinamen im aktuellen Verz die zweite, genau zweistellige, Zahl (nach 'b') mit der ersten, genau zweistelligen, Zahl (nach 'a') uname [-a] - System Infos [alle Angaben, inkl. Linux Kernel Nr.] dmesg [|tail] - Gebe aktuellen Kernel Ringpuffer aus/ Zeige laufende (Hintergrund-)Kernel Kommandos an [nur letzte Meldungen] "Name" & - Prog. "Name" im Hintergrund starten ('fg' bringt Prozess wieder in Vordergrund) ps [a][u][x] - laufende Prozesse in aufrufender Shell [alle Prozesse global][leserlich] [alle eigenen Benutzer-Prozesse global] anzeigen strace "Binary" - zeigt system calls und Signale von "Binary" waehrend der Ausfuehrung lsof - list open files, Anzeige aller offenen/aktiven Dateien/Geraete crontab - Angabe/Planung zukuenftiger Prozessstarts (Geeignet fuer Endloslauefe) htop - interaktive und umfangreichere Anzeige von aktuell laufenden Prozessen (top++) top - table of processes (+"uid" um nur Ps v. uid anzuzeigen, fuer Hilfe) pstree - Prozessbaum kill "pid" - Prozess mit ID "pid" beenden (-9 = SIGKILL) pkill "RegExp" - alle Programme die "RegExp" erfuellen beenden killall [-KILL] "name" - Alle Prozesse mit Prozessnamen "name" [zwingend] beenden jobs - laufende (Hintergrund)prozesse (man bash -> /jobs) kill %"id" - Job mit Nummer "id" beenden nice - Prozess Prioritaet aendern ssh - SecureShell: ssh "uid"@faui"xxx".informatik.uni-erlangen.de scp - SecureCopy: scp "uid"@faui"xxx".informatik.uni-erlangen.de:"Quelle" "Ziel" screen - Shell(?) in der Prozesse, die Ausgabe erzeugen etc. nach Logout weiter laufen - detach terminal (terminal in Hintergrund schicken) screen -r - resume terminal (terminal wieder hervorholen) telnet "Server-Adr" "Port" - telnet-verbindung zu Server ip route - IP abfragen netcat - TCP/IP Utility (aka 'nc') netstat - network connections, routing table etc. lsof [-i] - list open files, -i: alle Internet-Verbindungen ausgeben host [-a] "Com" - Gibt 'Hostname' von 'IP' an - und umgekehrt whois "hostname" - gibt Infos zu "hostname" an ping "IP" - Gibt den 'Ping' von "IP" an wget "URL" - Consolen Download von "URL"-Datei Bsp: wget --no-check-certificate -e robots=off -r https://"UID":"PW"@"URL" Lade rekursiv (-r) Verzeichnisstruktur von "URL" runter, mit Benutztername "UID" und Passwort "PW", ignoriere dabei vorhandene robots.txt und Server-Zertifikate su "uid" - als Benutzer uid einloggen x2x - Mehrere X-Sessions mit einer Tastatur/Maus steuern (verbindet nicht X-Server - Fenster koennen nicht verschoben werden) x11vnc -display:0 - als Server fuer x11 Fernzugriff agieren ("Far-Host") vncviewer "Far-Host":0 - mit, vorher per x11vnc gesetzten, "Far-Host" verbinden whoami - uid des aktiven Users (steht in $USER Umgebungsvariable) id - aktiver User Infos woist "uid" - Name+Location von "uid" wowar "uid" - Letzter Login von "uid" who - wer ist eingeloggt w - wer ist eingeloggt + was tut er last - welche user waren zuletzt eingeloggt finger [-slpm] "Name/uid" - genauere Infos ueber "Name/uid" [Abfrage geht bedeutend schneller] ypcat passwd | grep "Name/uid" - aehnlicher Effekt wie 'finger', nur schneller quota - Accountgroesse/verbrauch in Byte filelight - graphische Darstellung von Verz. Speicherverbrauch du [--max-depth="1"][-m / -h] - file space usage (Dateigroesse), [Verz. zusammengefasst ausgeben] [Speicherverbrauch in aufgerundeten MB / leserlich als Byte-Angaben] df - filesystem disk usage mount "/media/cdrom" - mounten/laden von devices z.B. umount - unmounten von devices mke2fs - erstelle/formatiere Datentraeger mit ext2/ext3 Linux-Filesystem dd if=bootdisk.img of=/dev/fd0 - Bootdisk-Image nach floppy drive fd0 uebertragen date - Datum und Uhrzeit ausgeben cal - Kalender mit aktuellem Monat man ascii - ASCII-Zeichentabelle in Oct, Dec und Hex psnup [-"2"] [in] [out] - Mehrere PS Seiten pro Blatt konfigurieren pdfnup [--nup "2" --orient "landscape"] - Mehrere PDF Seiten pro Blatt konfigurieren kpdf - in Druckeinstellungen mehrer Blaetter pro Seite etc. pdftops - PDF -> PS konvertieren psmerge - PS-Dokumente zu Einem zusammenfassen pdfjoin [--outfile "Datei.pdf] - PDF-Dokumente zu Einem zusammenfassen groff - ASCII-text to ps (groff < "file.txt" > "file.ps") a2ps "input" - ASCII to Postscript, Text in PS konvertieren (druckt gleich), Angabe von (Code-)Stylesheets (LANG.ssh-Dateien) ueber '--pretty-print=LANG' moeglich Bsp.: a2ps -R --columns=1 -B -K "input.txt" -o "output.ps" -R = Portrait, -B = no header, -K = no prefeed psselect ["x"-"y"] "in.ps" ["out.ps"] - Seiten "x" bis "y" aus "in.ps" in "out.ps" uebertragen pr_acct - Anzahl Druckerunits ausgeben (Gesamtuebersicht in ~/.pr_acct) pr - dokument fuer Ausdruck formatieren lpq - Druckerstatus lprm ["PID"] -U "UID" - Druckauftrag "PID" von User "UID" loeschen lpr - print lpr -P "Drucker" "Datei" - Drucke "Datei" auf "Drucker" Drucker: ps[1/2][a/b/c]cip[bw][d] [-ZStapleLocation=UpperLeft/LeftW] PostScript-Drucker [1/2].Stock CIP-Pool [links/rechts/ganz links] Drucker [ganz links: s/w, anstatt Farbe][doppelseitig] [ganz links: Tackern von Blaettern nach dem Druck, einmal oben links/zweimal links (als Heft)] import "Datei" - Screenshot in "Datei" speichern ksnapshot - Screenshotprogramm scrot - screenshot mit delay Angaben etc. aus Konsole tty - terminal type, mit welcher /dev/pts/"Nr" Datei ist das Ausgabe-Terminal verbunden stty [-a]- set terminal type, Tastenkominationen anzeigen/hinzufuegen xev - X11 environment events (key typings) xset - X11 user preferences (Tastatur ringen, Mausparameter etc.) xargs - reinterpretiert Kommandos vom stdin (Leerzeichen auslassen etc.) Bsp.: find -name "* *.pdf" -print0 | xargs -0 rm Loesche alle .PDFs, welche Leerzeichen enthalten alias - Ausgabe der Aliases von ~/.aliases.bash (Unter bash) echo $"Env-Var" - Ausgabe von Shell-Umgebungsvariablen env - environment infos, Liste von Shell-Umgebungsvariablen mit aktuell gesetzten Werten cpenv - copy environment, Umgebung zuruecksetzen envcfg - environment configuration (andere GUIs) yppasswd - Passwort neu setzen cpenv - environment platt machen und neu einstellen (??) xlock [-logoutAuto -1 -logoutButton -1] - Monitor sperren [ohne automatisches Ausloggen] exit - beenden des Text-Terminals bye - beenden des Text-Terminals in tcsh-Shell \"Sonderzeichen" - "Sonderzeichen" escapen/maskieren - Text an Cursorposition einfuegen, der vorher von Maus markiert wurde. Alternativ mittlere Maustaste zum Einfuegen druecken - Autovervollstaendigung (bash auch: Praefixaufloesung) - Suspend/Stop ('bg'/'fg' laesst Job weiter im Hintergrund/Vordergrund laufen) <\> - Quit - Cancel/Quit - EOF (tcsh auch: Praefixaufloesung) In Manuals/gewissen Programmen: - Quit/Abbruch "Name" - "Name" in Dokument suchen - Naechster gesuchte Eintrag - Vorheriger gesuchter Eintrag - Befehlshistory durchsuchen (bash) Mail : ------ mail, pine, mutt, procmail, fetchmail ~/.forward ~/mbox /var/mail/"uid" felix.rrze.uni-erlangen.de problems@cip.informatik.uni-erlangen.de Locations : (some only CIP) ----------- CPU-Infos : /proc/cpuinfo Memory-Infos : /proc/meminfo Port-Nummern : /etc/services I/O Devices : /media/cdrom/, /media/usb etc. Header-Files : /usr/include/ Signal-Nummern : /usr/include/bits/signum.h Datentypen : /usr/include/stdint.h (inkl. systemunabhaengigen Darstellungen mit fester Laenge) Trash-In/Out : /dev/null (liefert EOF bei Lesezugriff) Prozess-Infos : /proc/"pid"/ - Infos zu Prozess mit Id "pid" Prozess-Mapping : /proc/"pid"/mmap - gemapte Seiten/Pages fuer Prozess in virtuellem Speicher, inkl. Libraries Prozess-Speicher : /proc/"pid"/smaps - Speicherverbrauch, inkl. Heap/Stack Admins : /home/cip/adm/ CIP-Tmp : /proj/ciptmp/ (liegt auf faui00u) -> temporaer: faui00u:/proj.stand/ciptmp/ Verwendete Linux Konfiguration : /proc/config.gz (zless /proc/config.gz) CIP-ls : lslocal, lsproj, lshome, lshomecip, lspci etc. CIP-Tools : /local/ciptools/bin/ (CIP-eigene Programme/Befehle) Applications : apt-cache [search/show] "Package", apt-get etc. aptitude [search/show] "Package" dselect (Debian package management) Bsp.: apt-get -b source k3b News-Server in/out: news.cis.dfn.de Umgebungsvariablen : (env) -------------------- Ausgabe mit: echo $"VARIABLE" USER - //TODO GROUP - //TODO SHELL - //TODO HOST - //TODO Config : (.*rc files) -------- source "cfg" - Laden einer "cfg" in der aktuellen Umgebung (bash) ~/.xinitrc - X.11 Grundeinstellungen ~/.aliases - (tcsh) Vergabe von Alias-Namen (alias Name "Befehl") ~/.aliases.bash - (bash) - " - (alias Name='Befehl') GUIs ('envcfg'): ================ KDE 1-3 - K Desktop Environment WindowMaker FVWM2 IceWM FluxBox Blackbox (MWM) Shells : ======== bash (sh) + Builtins: --------- "$"FOO"" - Variable "FOO" wird von bash ersetzt '$"FOO"' - Variable "FOO" wird von bash nicht ersetzt `"COM"` - Ergebnis des Befehls "COM" wird ausgefuehrt !$ - repraesentiert den letzten Befehl $? - Exit Code/Rueckgabewert des letzten Befehls $@ - auf alle Argumente der Argumentliste zugreifen, die an das Shell-Skript uebergeben worden $"i" - auf "i"tes Argument zugreifen, das dem Skript uebergen wurde "Befehl1";"Befehl2" - "Befehl2" nach "Befehl1" ausfuehren "Befehl1"&&"Befehl2" - nur nach erfolgreicher Ausfuehrung (exit 0) von "Befehl1" wird "Befehl2" gestartet cd - - Springt ins vorherige Arbeitsverz. (siehe oben 'cd') shopt - baSH OPTionen, Variablen fuer optionales Shell-Verhalten bash script: - - - - - - Bsp.1: for i in {0..19}; do for j in {30..40}; do touch "a""$i""b""$j"; done; done; Bsp.2: for i in *.pdf */*.pdf; do echo pdfnup --nup 4 --orient landscape "$i"; done; - fuer alle pdf-Dateien im aktuellen Verz. und alle im Untrverz. anzeigen, was pdfnup abarbeiten wuerde ("$i" anstatt $i, damit Sonderzeichen (Leerzeichen etc.) maskiert werden) Bsp.3: foo=1; for i in *.jpg; do mv $i $foo.jpg; foo=$(($foo+1)); done; - benenne alle jpg-Dateien im aktuellen Verz. um in "Nummer".jpg, mit aufsteigender Nummer, beginnend bei 1 tcsh, rxvt ---------- Games : ======= /usr/games/scorched3d armagetron Q3A: ---- addpackage q3 (quake) quake3 (q3) Befehl in Config schreiben: - im Spiel : set "Befehl" "Argument" - in Q3-Config: seta "Befehl" "Argument" Befehl im Spiel verwenden: in Konsole ('~'): '/'"Befehl" "Argument" Befehle: cg_fov "value" (Field Of View) sensitivity "value" (Maus Genauigkeit) cg_drawfps 1 (Frames Per Second) cg_drawgun 0 (Waffenanzeige ausschalten) cg_gib 0 (Leichenteile) com_blood 0 (Bodenblut) s_initsound 0 (Sound ausschalten, wenn Sound zu technischen Problemen fuehrt) map "q3dm17" (Map "q3dm17" als Server starten) map_restart (Map neu starten) connect "faui00q" (Zu Server "faui00q" verbinden) reconnect (Zum vorherigen Server verbinden) rcon (RemoteConnect) UrbanTerror: ------------ quake3 +set fs_game urban com_hunkMegs "100" (e.g.) Tetrinet : ---------- gtetrinet Crack-Attack (Hardcore Tetris ;-): ------------ /usr/share/games/crack-attack/ Progs : ======= File Management : ----------------- konqueror (Drag&Drop) mc (MidnightCommander) Documents : ----------- openoffice (MS-Office files), -> OO-Math: Escape-Character = '"' -> "Math-Text" gobby - gemeinsam/kolloberativ Texte bearbeiten gnumeric - Tabellenprogramm (Excel) kile (.tex) - Latex-Dokumente komfortabel erstellen abiword (.doc, .rtf), xpdf, acroread, evince (.pdf) pdfimages - Bilder aus pdf-Dateien extrahieren gv (.ps) evince (.pdf+.ps) - Gnome Viewer Ent-/Packen : ------------- zless/zmore/zcat - entpacken von gezippten Dateien und dann Kommando (less/more/cat) darauf anwenden //TODO: tar [-t/xvvz/jf] Inhalte von tar-Archiv-Datei mit vielen Infos anzeigen tar [-xvvf] - Inhalte von tar-Archiv-Datei mit vielen Infos entpacken tar [-xvvzf] - Inhalte von gzip gepackten tar-Archiv-Dateien mit vielen Infos entpacken tar [-xvvjf] - Inhalte von bzip2 gepackten tar-Archiv-Dateien mit vielen Infos entpacken gzip, gunzip, bzip2, bunzip2 Browser : --------- lynx, w3m (Text-basierend) firefox, mozilla, konqueror opera - Dateileiste ein/ausschalten slrn (Newsgroup) Chat : ------ centericq, gaim, alicq irc, xchat, talk, irssi write "uid" ('mesg y' setzen), wall (man lesen!!) Media : ------- Bilder/Graphik: xzgv, gqview (view) xv (view, print) qiv (view, viele Optionen, als xlock-Hintergrundbild verwendbar) gimp (edit, pixelbasiert) inkscape (edit, vektorbasiert) convert (konvertieren von Bildern in verschiedene Formate und Groessen) mogrify (bearbeiten) Audio: mplayer -cache 8000 cdda://* (Audio-CD Option +Cache 8MB e.g.) rhythmbox (Gnome), kscd (Audio-CDs), xmms (Winamp aehnlich -> mp3, ogg, wav etc.) audacious - Winamp aehnlich, xmms Nachfolger?, Im CIP als Output Plugin: OSS anstatt ALSA einstellen! aumix, kmix - Lautstaerke, Balance etc. einstellen grip - Rippen + Encoden von Audio-CDS (kann Audio-CDS auch abspielen) mpg123 - konvertiere mp3s in wav/cda wavesurfer (simpel), audacity (bessere GUI) - editieren von Audiodateien Video/DVD: mplayer [-zoom] ( = Fullscreen) mplayer -sub ?.srt ?.avi - Untertitel mplayer -ao help - Audio Treiber Auswahl anzeigen noatun vlc (VideoLAN Client, DVD), ogle (DVD) (DVB-T Empfang: vlc->View->Playlist->Manage->Services discovery->SAP announces) totem - bevorzugt fuer Streaming (?) avidemux2 - editieren von Videodateien CD/DVD brennen : ---------------- k3b, cdbakeoven, cdrecord, cdrdao k3b - fuer Audio CDs unter "Advanced -> Paranoia" auf 3 stellen! mkisofs - ISO Datei erstellen cdparanoia - Audio CDs einlesen growisofs -V "CD/DVD Titel" -Z "/dev/dvd" "Source" - DVD brennen wodim - CD brennen cdrdao scanbus cdrdao write --device 0,0,0 --driver generic-mmc --speed "value" "xy.cue" M$ unter Linux : ---------------- win - rdesktop-Verbindung mit Win2003-Server (faui07) (Vorher mit /local/ciptools/bin/setsambapw registrieren) wine - Windows Progs. unter Linux mtools - etc. DOS-Disks unter Linux Tools : ------- xcalc - graphisch, wissenschaftlicher Matherechner calc, bc - konsole, beliebig genauer Rechner gnuplot - mathematische Funtionen graphisch darstellen (plot "f(x)") dia - Diagramme zeichnen (Entity-Relationship etc.) together - UML-Diagramme erstellen etc. (/local/together/bin/together) umbrello - UML + Codegenerierung bouml - Code <-> UML-Diagramm kivio - Flussdiagramme u.a. freemind - Mindmaps/Mindmanager Editoren/IDE : ============== vi[m] (UniversalEditor) : ------------------------- ~/.vimrc - ViM-Config (/etc/vim/) :syn on - Syntaxhighlighting an Tab-Laenge: set tabstop="Wert", set sw="Wert" vimdiff - Dateivergleich map <"Taste"> :nohl - belegen von Tasten mit Befehlen (hier NoHighlighting+Enter) vim "Verz" - zeigt navigierbares Verzeichnis "Verz" an vim -p - oeffnet Dateien in Tabs - 'Grund'-Modus, zum eingeben von Vi-Kommandos - 'Insert'-Modus, zum eingeben von Text (Quellcode) - 'Visual'-Modus, zum markieren von Text Kombination von Befehlen moeglich - e.g. ':wq' = Speichern+Beenden :q - Vim beenden :qa! - Alles beenden ohne Speichern! :w - write (Speichern) :x - = :wq :e - edit :% "Befehl" - "Befehl" auf ganze Datei anwenden (z.B. :% s/"Muster"/"String"/ anstatt :0,$ s/...) :0,$ s/"Muster"/"String"/g - ersetze von Zeile 0 bis letzter Zeile ($) alle "Muster" durch "String", auch für mehrere vorkommen in einer Zeile (g) Regexp: \("Bedingung"\) - Gruppe mit regexp "Bedingung" \"n" - Inhalt der "n"ten Gruppe \< (\>) - Anfang (oder Ende) eines Wortes - undo - redo (undo rueckgaengig machen) /

- vervollstaendigen des aktuellen Ausdrucks (insert-mode)

<;> - Befehls-History - visual block, Text-Block fuer weitere Komplettbearbeitung markieren "Text" - setzt "Text" vor jede Zeile des markierten Blocks <+> - Einruecken - yank/copy - cut - delete (Wird in Zwischenablage gespeichert!) - delete line ( - " - )

- paste / + <"Anzahl"> - kopiere/schneide "Anzahl" Zeilen ab Cursor-Pos /aus (Cursor-Zeile wird mit erfasst, aber nicht in "Anzahl" eingerechnet) "Begriff" - Begriff in Datei suchen :"Nr" - springt in Zeile "Nr" <5> - '%', zeigt Klammernpaar an, wenn Cursor ueber Klammer steht - EOF - Head of file <"Nr"> - springt in Zeile "Nr" // - high/middle/low von aktuellem Ausschnitt / - nach vorne/hinten in Zeile scrollen :[breite]vs "Datei" - vsplit = vertical splitscreen :[hoehe]sp "Datei" - horizontal split - switch screens :set [no]nu - Zeilennummern/line number [nicht]anzeigen "markierter Text" + <=> - Indent/korrektes Einruecken des markierten Textes vim -b "binary" - oeffene Binaerdatei :%!xxd [-r] - [zurueck-]konvertieren von Binaerdatei zu Hex Dump Weitere (mehrheitlich GUI-basiert) : ------------------------------------ nano, emacs, xemacs, kate, kwrite, scite, gedit, jed WYSIWYG-HTML/XML etc. : ----------------------- /local/nvu/ IDE (Integreted Development Environment) : ------------------------------------------ kdevelop, anjuta eclipse (IDE) : --------------- - Autovervollstaendigung/Auto-Completion - wechsle zwischen Editor-View und Perspective-Gesamtansicht <.>/<,> - in naechste/vorherige Fehler- bzw. Warning-Zeile springen [// - zu naechstem[/vorherigem] Editor/View/Perspective

- Geschweifte Klammerpaare finden Markierte Paragraphen: - um 'tab' versetzen - um 'tab' zuruecksetzen - auskommentieren mit '//'TEXT <\> - auskommentieren aufheben - Block auskommentieren mit '/*'TEXT'*/' + "Cursor ueber "Bezeichner"" - springt zu Definition von "Bezeichner" Coding : ======== Assembler (.s): --------------- gcc -S "ProgCode".c -> "ProgCode".s (Aus C-Datei Assembler-Code) as -o "ProgBin" "ProgCode".s - Aus Assembler-Code Binary erzeugen objdump -d "ProgCode"[.o] - Disassemblieren eines Binaries/[einer Object-Datei] < C / C++ > Praeprozessor: (#include, #define, etc.) -------------- gcc -E "ProgCode".c - Ausgabe von Praeprozessor-Code auf stdout Object-File (.o): (Compile von einzelnen Source-Dateien) ----------------- gcc -c "ProgCode".c -> "ProgCode".o Linker: (.o-Dateien und statische Libraries zu Executable 'zusammenfuegen') ------- ld -o "ProgBin" "ProgCode1".o "ProgCode2".o [..] "Lib_1".a "Lib_2".a [..] oder gcc -o "ProgBin" "ProgCode1".o "ProgCode2".o [..] "NonStdLib_1".a "NonStdLib_2".a [..] Libraries (.a, .so): -------------------- *.a - statische Libraries (Archiv von .o-Dateien) *.so - dynamische Libraries ((Distributed) Shared Object, .dll in Windows(?)) ldd "Binary" - Ausgabe der abhaengigen, dynamischen Libraries nm - list symbols from object files C(++)-Std-Libs liegen in /usr/lib/ C (.c): -------- gcc -o "ProgBin" "ProgCode".c -> "ProgBin" (Compile) ./"ProgBin" (Run) gcc = GNU C-Compiler Optional (C99-, Ansi-, Posix-Konform etc.): gcc -ansi -pedantic-errors -D_POSIX_SOURCE -Wall -Werror -g - mit Debuggingangaben compilieren (siehe gdb) -O[1-3/s] - mit zusaetzlichen Optimierungen kompilieren -O0 - alle Optimierungen unterlassen (besser fuer Debuggen) C-Std-Header-Files liegen in /usr/include/ C++ (.cpp): ----------- g++ -o "ProgBin" "ProgCode".cpp -> "ProgBin" (Compile) ./"ProgBin" (Run) Java (.java): ------------- javac "Prog".java -> "Prog".class (Compile) java "Prog" (Run) java -ae "Prog" - assertions zulassen/auf on setzen java -jar "Prog".jar - in jar-Dateien gepackte Programme starten jad - java decompiler (Bytecode leserlich, ohne Opcodes anzeigen) javap [-c] "Classfile" - aus "Classfile" leserlichen Bytecode anzeigen Annotations beginnen mit '@': @Override, @SuppressWarnings, @Deprecated, @Generated Schluesselwoerter fuer Kommentare: TODO - zu erledigende Aufgaben/Code fehlt FIXME - fehlerhafter Code XXX - bogus/schlecht leserlicher/kompliziert geschriebener Code .NET / C#: ---------- mono - CLI Laufzeitumgebung Scheme (.scm): -------------- drscheme, stklos (Scheme-Editoren) scm - Scheme Interpreter In Vim mit sithglan-Skript: - process Prolog (.pl): (folgende Befehle teilweise woertlich zu verstehen!) ------------- swipl, xpce (GUI) ?-help. - Hilfe allgemein ?-help("Befehl"). - Hilfe zu "Befehl" ?-halt. - Programm beenden ?-[user]. - Bearbeitungsmodus |: - Abfragemodus ?-listing. - Definierte Klauseln anzeigen ?-trace. - Programm-Trace ?-tell('"Prog.pl"'), listing, told. - Aktuelles Prog in "Prog.pl" speichern % - Kommentarzeile Regexp (/Regular Expressions/Regulaere Ausdruecke): --------------------------------------------------- s/FOO/BAR/g - (s)ubstitue "FOO" with "BAR" and do it (g)reedy (ersetzte "FOO" mit "BAR" und das bei allen Vorkommen) Bsp: aus "xxFOOyyyFOOzFOO" wird "xxBARyyyBARzBAR" ohne greedy: "xxBARyyyFOOzFOO" [0-9]{MIN,MAX}/{TOTAL} - Dezimalziffern minimale/maximale oder totale (MIN=MAX) Anzahl [^"Zeichen"] - Negation, "Zeichen" darf nicht vorkommen ^. - vergleichen auf Zeichen am Anfang des Strings .$ - vergleichen auf Zeichen am Ende des Strings \d - eine Ziffer [0-9] \w - ein Buchstabe [a-zA-Z_0-9] \s - ein Leerzeichen [ \t\n\x0B\f\r] Buildmanagment: (TODO) =============== Makefile - make [-f "Makefile-Name"] ["target-Name"] - lange Kommandos am Ende der Zeile mit ' \' umbrechen - Kommentare mit '#' ant (Java) Versionsmanagement: (TODO) =================== RCS -> CVS -> SVN / GIT trac - webbasiertes Software-Projekt/-Konfigurations-Management System (inkl. wiki, tickets, roadmap etc.) Debugger (db): ============== gdb = GNU Debugger - Commands: --- Source compilieren mit: -g - gdb-faehige Binaries ! -gdwarf-2 - backtrace faehig h - help Ausgabe mit Unterthemen b "main" - breakpoint (hier z.B. bei Main-Fkt.) watch "Bed" - watchpoint (wird erst gesetzt, wenn "Bed" = true) r "args" - run (Programm starten und moegliche Arg. uebergeben) c - continue set - Werte fuer Var. etc. setzen n - next (danach reicht Enter) s - step (wie 'n' zeigt aber alle durchlaufenen Zeilen an) u - until "target" (Durchlauf bis "target" fortfuehren) f - finish (Bis zum Ende von Fkt. laufen) l - list (Ausgabe von Teilen des aktuellen Prog.code) bt - backtrace (Stack frame Ausgabe - ..2 rief 1 rief 0 auf) f "Frame Nummer" - gibt Codezeile des frames "Frame Nummer" aus up bzw. down - in aufrufenden bzw. aufgerufenen Frame wechseln t - thread (zwischen Threads wechseln) info "Option" - Option z.B. 'program', 'locals', 'variables', 'frame' q - quit ;-) ddd (graphisch), javap ---------------------- Segfaults, Speicherloecher etc. ------------------------------- efence - LD_PRELOAD=/usr/lib/libefence.so "Binary" (zur Laufzeit) bzw. gcc -o "ProgBin" "ProgCode".c -lefence (beim Compilen) valgrind // EOF (End Of File)