Last active
May 20, 2026 11:31
-
-
Save jaydg/d05b20f2eca9f35e9c5b96db16fb12bf to your computer and use it in GitHub Desktop.
Notizen aus Linux-Grundlagenkurs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Bootvorgang | |
| Statt init bash starten: Kerneloptionen im grub um | |
| init=/bin/bash rw | |
| ergänzen. So lässt sich das root-Passwort wiederherstellen. | |
| Jobkontrolle | |
| ^c Prozess abbrechen | |
| ^z Prozess anhalten | |
| jobs Jobs auflisten | |
| bg [%n] Job [Nr. n] in den Hintergrund | |
| fg [%n] Job [Nr. n] in den Vordergrund | |
| kill %n Job Nr. n killen | |
| History | |
| history Historie anzeigen | |
| ~/.bash_history | |
| ^r History rückwärts durchsuchen | |
| !n Kommando Nr. n aus History ausführen | |
| Aliase | |
| erstellen alias x='y' | |
| anzeigen alias x | |
| löschen unalias x | |
| alle löschen unalias -a | |
| Aliase können andere Aliase verwenden. | |
| ^k Löscht alles rechts vom Cursor | |
| ^u löscht alles links vom Cursor | |
| ^l löscht Bildschirm | |
| Variablen | |
| x=y lokal definieren | |
| x=y Befehl nur für ausführung dieses Befehls Variable setzen | |
| export Umgebungsvariable daraus erzeugen | |
| unset Variable loswerden | |
| env Umgebungsvariablen anzeigen, | |
| run a program in a modified environment | |
| y="Neue Datei"; touch $y | |
| => zwei Dateien, daher: touch "$y" | |
| Initialisierung | |
| login-Shell interaktive Shell | |
| /etc/profile /etc/bash.bashrc | |
| /etc/profile.local /etc/bash.bashrc.local | |
| ~/.bash_profile ~/.bashrc | |
| ~/.bash_login | |
| ~/.profile | |
| Hier werden Umgebungs- Aliase werden nicht ver- | |
| variablen definiert und erbt. | |
| an alle Subshells ver- | |
| erbt. Lokale Konfigdateien | |
| werden in der angegebenen | |
| Reihenfolge abgearbeitet. | |
| Wenn eine gefunden wurde, | |
| werden die folgenden | |
| ignoriert. | |
| Escaping | |
| echo $HOME/* /home/user1/Desktop .... | |
| echo "$HOME/*" /home/user1/* | |
| echo '$HOME/*' $HOME/* | |
| {eins,zwo,drei} | |
| {1..20} | |
| {eins,zwo,drei,{1..3}} | |
| Alias oder Shell-Builtin? | |
| type alias alias is a shell builtin | |
| type ls ls is aliased to `/bin/ls $LS_OPTIONS' | |
| type passwd passwd is /usr/bin/passwd | |
| which | |
| whereis | |
| Hilfsysteme | |
| help Hilfe zu bash builtins | |
| man Dokumentation von Programmen | |
| mandb baut die Datenbank für whatis und apropos auf | |
| whatis Kurzbeschreibung | |
| apropos Stichwortsuche | |
| info "Hypertext" | |
| konqueror kann info und man anzeigen: info:/ man: | |
| http://www.tldp.org/ | |
| http://www.linwiki.org/ -> Linuxfibel | |
| http://www.selflinux.org | |
| less N <- / -> n Suche vorwärts, Ergebnisse vorwärts | |
| N <- ? -> n Suche rückwärts, Ergebnisse rückwärts | |
| Dateisystem | |
| fuser identify processes using files or sockets | |
| fdisk -l Partitionstabelle aller eingehängten Platten anzeigen | |
| Dateitypen | |
| - reguläre Datei | |
| l Link | |
| d Verzeichnis | |
| c character Device | |
| b block Device | |
| p Pipe | |
| s Socket | |
| Dateirechte | |
| Besitzer Gruppe Others | |
| u g o | |
| 4 2 1 4 2 1 4 2 1 | |
| r w - r - - r - - | |
| 6 4 4 | |
| Shellskripte müssen sowohl lesbar als auch ausführbar sein, um | |
| gestartet werden zu können. Binärprogramme dagegen müssen nicht | |
| lesbar sein. Ausführen für Verzeichnisse regelt, ob in das | |
| Verzeichnis gewechselt werden kann. | |
| chmod 644 die oben gezeigten Berechtigungen vergeben | |
| chmod u=r genau dieses Recht für Benutzer | |
| Für den Besitzer eines Verzeichnisses geben die Verzeichnisberecht- | |
| igungen die Rechte für Dateioperationen an, auch für Dateien, die | |
| einen anderen Besitzer haben. | |
| Zusätzliche Rechte sind | |
| SETGID | |
| set user ID on execution. Nicht für Shellskripte. | |
| wird angezeigt als 's' beim Eigentümer, wenn 'x' gesetzt | |
| ist, sonst als 'S'. | |
| Oktal: 4 (u+s / u-s) | |
| SETUID | |
| set group ID on execution | |
| wird bei der Gruppe angezeigt als 's', wenn 'x' gesetzt | |
| ist, sonst als 'S' | |
| Oktal: 2 (g+s / g-s) | |
| sticky bit | |
| The 'sticky' bit on a directory means that a file in that | |
| directory can be renamed or deleted only by the owner of the | |
| file, by the owner of the directory, and by a privileged | |
| process. Wird für Verzeichnisse genutzt, in denen mehrere | |
| Benutzer arbeiten. Unerläßlich für /tmp | |
| Oktal: 1 (+t / -t) | |
| umask | |
| beim Erstellen von Dateien und Verzeichnissen werden die Rechte | |
| 666 bzw. 777 verwendet, von denen der als umask gesetzter Wert | |
| abgezogen wird. Bsp.: 666 - 022 = 644. Tricky: 033 -> 644, | |
| da 6 rw und 3 wx entspricht wird nur w abgezogen. | |
| Wird meistens definiert in /etc/profile | |
| Symbolische anzeige mit 'umask -S', dann werden allerdings die | |
| Rechte angezeigt, die übrig bleiben: u=rwx,g=rx,o=rx | |
| EXT2/EXT3 Attribute | |
| lsattr Attribute anzeigen lassen | |
| chattr Attribute ändern | |
| Verfügbare Attribute siehe man-Page zu chattr | |
| Dateikommandos | |
| mkdir -p kompletten Verzeichnisbaum erstellen | |
| cp -b Backup - falls Zieldatei existiert, wird diese umbenannt | |
| ls -F Dateitypen identifizieren (mit @,/,|) | |
| Symbolische Links orientieren sich nur am Namen der verlinkten Datei. | |
| Wird eine Datei umbenannt oder verschoben, ist der Link gebrochen. | |
| Harte Links beziehen sich auf Inode-Nummer, sind dementsprechend unab- | |
| hängig von Dateiname und -position. Wird eine Datei gelöscht, wird | |
| diese erst vom Dateisystem entfernt, wenn der letzte harte Link ent- | |
| fernt wird. Harte Links funktionieren nur auf dem selben Dateisystem | |
| und nicht für Verzeichnisse. 2. Spalte bei "ls -l" ist der Referenzzähler. | |
| Duplikate dieser Datei findet find mit '-samefile'. Allerdings kann find | |
| falsche Ergebnisse liefern, wenn auf unterschiedlichen Dateisystemen | |
| zufällig die gleiche Inode-Nummer vergeben ist. | |
| find | |
| -size 2M Dateien größer 2MB | |
| -size +2M -size -4M Dateien größer 2MB, kleiner 4MB | |
| -type [p|s] Alle Pipes / Sockets | |
| \( -type p -o -type s \) Alle Pipes und Sockets | |
| -nouser Ohne gültigen Benutzer | |
| -iname case-insensitive | |
| -exec für einfache Fälle siehe xargs | |
| -printf Ausgabe formatieren | |
| Dateiarchivierung | |
| cpio | |
| -o < DATEINAMEN > Archivdatei Archiv erstellen | |
| -i < Archivdatei Archiv entpacken | |
| tar | |
| Wird ein Verzeichnis übergeben, wird dieses rekursiv archiviert. | |
| -P führendes / nicht abschneiden | |
| r Dateien an Archiv anhängen (nicht komprimiert!) | |
| A zwei Archive verbinden (nicht komprimiert!) | |
| u nur geänderte Dateien in Archiv erneuern (nicht komprimiert!) | |
| --delete einzelne Dateien aus Archiv entfernen | |
| Standardkanäle | |
| 0 Standardeingabe (stdin) | |
| 1 Standardausgabe (stdout) | |
| 2 Standardfehler (stderr) | |
| > xy Ausgabe in Datei umlenken (wird vorher neu angelegt) | |
| >> xy Ausgabe in Datei umlenken (wird angehängt, sonst angelegt) | |
| 2> xy stderr umleiten | |
| > xy 2>&1 stdio nach xy umleiten, stderr nach stdio (und damit xy) | |
| Wertvolle Textwerkzeuge für Pipes | |
| nl Zeilen nummerieren | |
| pr [-2] Dateien für Druckerausgabe vorbereiten [zweispaltig] | |
| tee von stdin in Datei und nach stdout schreiben | |
| sort -n -t : -k 3 numerisch nach 3. Feld sortieren, getrennt mit : | |
| sort -u nur eindeutige Zeilen zurückgeben | |
| cut einzelne Werte ausschneiden | |
| tr Zeichen tauschen | |
| uniq | |
| expand Tabs zu Leerzeichen umwandeln | |
| unexpand Leerzeichen zu Tabs umwandeln | |
| paste Zusammenführen zweier Dateien | |
| Zeitgesteuerte Ausführung | |
| wall Rundspruch an alle angemeldete Benutzer | |
| at Verwendung mit Zeitangabe | |
| at 15:15 Job um 15:15 ausführen, Inhalt wird interaktiv | |
| abgefragt oder ein Skript kann mit -f übergeben werden | |
| atq Liste aller Jobs anzeigen | |
| atrm n Job Nr. n löschen | |
| at -c n Job Nr. n anzeigen | |
| Unter /var/spool/atjobs liegen die erzeugten Skripte. | |
| /etc/at.deny - Liste aller Benutzer, die at nicht benutzen dürfen | |
| /etc/at.allow - Liste aller Benutzer, die at benutzen dürfen. | |
| Wenn diese Datei vorhanden ist, darf niemand außer den dort | |
| eingetragenen Benutzern at benutzen. | |
| batch wie at, job wird ausgeführt, wenn load unter 0.8 sinkt | |
| cron | |
| crontab -e crontab bearbeiten | |
| crontab -l crontab anzeigen | |
| crontab -u nn crontab eines anderen Benutzeres verwaten | |
| nach letzter Zeile in crontab muß ein Zeilenumbruch stehen, | |
| sonst wird der job nicht ausgeführt | |
| Dateien liegen in /var/spool/cron/tabs | |
| Prozesse | |
| ps -ef | |
| ps xau | |
| kill -l Liste aller Signale | |
| signal(7) Beschreibung aller Signale | |
| killall unter UNIX: alle Prozesse killen! | |
| Zustände | |
| D Uninterruptible sleep (usually IO) | |
| R Running or runnable (on run queue) | |
| S Interruptible sleep (waiting for an event to complete) | |
| T Stopped, either by a job control signal or because it is being traced. | |
| X dead (should never be seen) | |
| Z Defunct ("zombie") process, terminated but not reaped by its parent. | |
| For BSD formats and when the stat keyword is used, additional characters | |
| may be displayed: | |
| < high-priority (not nice to other users) | |
| N low-priority (nice to other users) | |
| L has pages locked into memory (for real-time and custom IO) | |
| s is a session leader | |
| l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do) | |
| + is in the foreground process group | |
| vi | |
| vi -o horizontal Teilen | |
| vi -O vertikal Teilen | |
| Kommandomodus -> Kommandozeilenmodus | |
| i,I,a,A,o,A,s,S ^ | |
| | | | |
| v ESC | |
| Eingabemodus | |
| im Kommandomodus: | |
| ZZ speichern und beenden | |
| ^g Statusleiste anzeigen | |
| gg Angfang der Datei | |
| G Ende der Datei | |
| y$ Alles bis zum Zeilenende kopieren | |
| v visueller Modus | |
| r einzelnes Zeichen ändern | |
| u undo | |
| . letzte Aktion im Eingabemodus wiederholen | |
| ^ww springen zwischen zwei geöffneten Fenstern | |
| ^r Änderungen rückgängig machen | |
| ? rückwärts suchen | |
| % korrespondierende Klammer finden | |
| "g Zwischenspeicher g ansprechen, danach y und p | |
| im Kommandozeilenmodus: | |
| :w name Speichern unten 'name' | |
| :x speichen und beenden | |
| :r! Ergebnis in den Puffer einfügen | |
| :next nächste Datei | |
| :previous vorherige Datei | |
| :split horizontale Teilung | |
| :vsplit vertikale Teilung | |
| :close aktuellen Puffer schließen | |
| :wa _alle_ Fenster schreiben | |
| :%s/alt/neu/gc alle Vorkommen mit Rückfrage ersetzen | |
| :help Hilfe aufrufen | |
| :number Zeilennummern einschalten | |
| vimdiff | |
| do Änderung aus anderem Puffer übernehmen | |
| dp Änderung in anderen Puffer übernehmen | |
| Shellskripte | |
| #!/bin/bash als erste Zeile | |
| mit chmod +x Datei ausführbar machen | |
| Werden Skripte mit einer Subshell ausgeführt (bash datei oder ./datei), | |
| so sind in diesem Skript exportierte Variablen verloren. Möchte man das | |
| Gegenteil erreichen, muß man die Datei mit source (d.h. .) ausführen. | |
| bash -x alle Befehle und deren Parameter ausgeben | |
| bash -v zeigt die Eingabezeilen beim einlesen an | |
| bash -n Befehle einlesen aber nicht ausführen | |
| bash -u Zugriffe auf nicht gesetzte Variablen erzeugen Fehler | |
| $(( )) Berechnungen durchzuführen | |
| $# Anzahl der übergebenen Parameter | |
| $0 Name des Programms | |
| $1 erster Parameter, für 11. Parameter: ${11} | |
| $@ alle Parameter in einem String | |
| $* alle Parameter einzeln, zum Übergeben an andere Skripte | |
| $$ PID des Prozesse | |
| $? Rückgabewert des zuletzt ausgeführten Programms | |
| ${x:2:4} Teil einer Variablen zurückgeben: 4 Zeichen ab der 2. Stelle | |
| while COMMANDS; do COMMANDS; done | |
| i=1 | |
| while [ $i -le 5 ] | |
| do | |
| echo $i | |
| i=$(($i+1)) | |
| done | |
| until COMMANDS; do COMMANDS; done | |
| i=0 | |
| until [ $i -eq 5 ] | |
| do | |
| i=$(($i+1)) | |
| echo $i | |
| done | |
| if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... | |
| [ else COMMANDS; ] fi | |
| for NAME [in WORDS ... ;] do COMMANDS; done | |
| case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac | |
| && UND | |
| test -e .profile && . .profile | |
| || ODER | |
| [ -d /etc/bladir ] || mkdir -p /etc/bladir | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment