LINUX

Das universelle Betriebssystem

Eine Einführung - Teil 3

Deutsche Angestellten Akademie

sudo

als root: adduser USER sudo

Datei /etc/sudoers

zu editieren mit visudo

daniel ALL=(ALL) ALL

kurze Wiederholung

  • In Dateinamen dürfen fast alle möglichen Zeichen auftauchen. Man sollte sich auf Buchstaben, Ziffern und einige Sonderzeichen beschränken.
  • Linux unterscheidet Groß- und Kleinschreibung in Dateinamen.
  • Absolute Pfade beginnen immer mit einem Schrägstrich und benennen alle Verzeichnisse vom Wurzelverzeichnis bis zum betreffenden Verzeichnis bzw. der Datei.
  • Relative Pfade beziehen sich auf das »aktuelle Verzeichnis«.
  • Aboluter Pfad: /home/daniel/Dokumente
  • Relativer Pfad: Domukente/rechnungen/2018
  • cd ändert das aktuelle Verzeichnis der Shell, pwd zeigt den Pfad des aktuellen.
  • cd .. wechselt 1 Verz. höher
  • cd ../.. wechselt 2 Verz. höher
  • cd ../../etc/nginx
  • cd / -> Wurzelverzeichnis
  • cd oder cd ~ -> home
  • Aufgabe:Erstellt die Verz. ~/hase/fuchs. Erstellt die Datei ~/hase/fuchs/test.txt. Kopiert die Datei test.txt nach ~.
  • ls gibt Informationen über Dateien und Verzeichnisse aus.
  • Mit mkdir und rmdir kann man Verzeichnisse anlegen oder entfernen.
  • cp, mv, rm - kopieren, verschieben, löschen
  • Mit ln kann man »harte« und »symbolische« Links anlegen.
  • more und less dienen zum seitenweisen Anzeigen von Dateien auf dem Terminal.
  • find sucht nach Dateien oder Verzeichnissen, die bestimmte Kriterien erfüllen.
  • locate findet Dateien nach Name
  • es gibt externe und interne ( builtin )Kommandos
  • interne sind zb. cd und echo
  • externe sind zb alles in /bin
  • type gibt Auskunft darüber
  • Aufgabe: welcher Art sind

    alias ,echo, rm, test?

https://www.shellbefehle.de/befehle/
  • Sonderzeichen:
  • 
    $&;(){}[]*?!<>«  
  • touch neue datei - erzeugt 2 Dateien
  • touch 'neue datei' - erzeugt 1 Datei
  • > leitet Ausgabe um

bash Shortcuts

Shortcut Beschreibung
TAB Vervollständige das angefangene Wort
TAB TAB Zeige Liste der Vervollständigungs-möglickeiten
Ctrl + c Aktuell laufendes Kommando abbrechen
Ctrl + z Aktuelles Kommando stoppen
Ctrl + a Gehe zum Anfang der Kommandozeile
Ctrl + e Gehe zum Ende der Kommandozeile
Ctrl + w Lösche vom Cursor zum Anfang des Wortes (das aktuelle Wort löschen)
Ctrl + y Füge ein gelöschtes wort wieder ein, welches mit einem der shortcuts zum löschen gelöscht wurde
Ctrl + xx Bewege dich zwischen Anfang der Kommandozeile und der aktuellen position des Cursor (hin und zurück)
Ctrl + f Ein Zeichen nach vorne
Ctrl + b Ein Zeichen zurück
Ctrl + d Löscht das Zeichen unter dem Cursor
Ctrl + h Löscht das Zeichen vor dem Cursor
Ctrl + r Durchsucht die History rückwärts
Ctrl + g Den History Suchmodus wieder verlassen
Ctrl + l Lösche das Kommandozeilenfenster
Ctrl + s Stopt den Output auf die Kommandozeile (Bei langen Kommandos mit viel Output)
Ctrl + q Stellt denn Output in die Kommandozeile wieder her (welcher vorher mit „Ctl + s“ gestoppt wurde)

bash Konfiguration

aus der bash man-page:

FILES
   /bin/bash
          The bash executable
   /etc/profile
          The systemwide initialization file, executed for login shells
   /etc/bash.bashrc
          The systemwide per-interactive-shell startup file
   /etc/bash.bash.logout
          The systemwide login shell cleanup file, executed when a login shell exits
   ~/.bash_profile
          The personal initialization file, executed for login shells
   ~/.bashrc
          The individual per-interactive-shell startup file
   ~/.bash_logout
          The individual login shell cleanup file, executed when a login shell exits
   ~/.inputrc
              Individual readline initialization file

für den Alltag wichtige config files

  • .bashrc - Konfiguration
  • .bash_aliases - Kommando Aliase
  • .bash_history - Kommando Historie

.bashrc


# zusätzlicher pfad für die auto-vervollständigung
export CDPATH=$CDPATH:/home/dany/projekte

# maximale länge der history
HISTSIZE=1000
HISTFILESIZE=2000
HISTTIMEFORMAT="%d-%m-%Y %H:%M "

# promt formatierung
PS1='\[\033[38m\]\u@\h \[\033[94m\]\W\[\033[95m\]$(__git_ps1)\[\033[37m\]$\[\033[00m\] '
					

export gibt alle gesetzten bash Variablen aus

export $VARIABLE setzt die Bash Variable für die laufende Sitzung

.bash_aliases


# ls Varianten
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

#df in lesbar
alias df='df -h'

# Oft gebrauchte Pfade
alias o='cd ~/ownCloud/'
alias p='cd ~/projekte'

# stopwatch
alias timer='echo "Timer started. Stop with Ctrl-D." && date && time cat && date'

# create a dir with date from today
alias mkdd='mkdir $(date +%Y%m%d)'
							
Aufgabe: legt ein Alias an, das per mkdir ein Verzeichnis mit evtl. Eltern anlegt;
Hinweis: Datei .bash_aliases bearbeiten

alias mp='mkdir -p'

Aufgabe: Macht die Schriftfarbe des Prompt blau

Hilfe: https://wiki.archlinux.de/title/Bash-Prompt_anpassen

PS1="\[\033[34m\]\u@\h:\w$"

stdin, stdout, stderr - Kanäle der Bash

  • Standardeingabekanal stdin, dieser hat die Nummer 0 (null) -> Tastatur
  • Standardausgabekanal stdout, dieser hat die Nummer 1 (eins) -> Bildschirm
  • Standardfehlerkanal stderr, dieser hat die Nummer 2 (zwei). -> Bildschirm

Ausgabeumleitung

ls -la > inhalt.txt

Vorsicht! Überschreibt vorh. Datei inhalt.txt!!

Zum anhängen: ls -la >> inhalt.txt

Umleitung stderr

ls -la /home/user 2> fehler.txt

ls -la > verzeichnis.txt 2> fehler.txt

ls -la > gemeinsam.txt 2>&1

Umleitung stdin

tr -d '0-9' < datei.txt

Der Pipe Operator

ps ax | sort -nr

dmesg | grep -n USB

dmesg | grep -n USB | tail

dmesg > alle-meldungen.log

grep usb < alle-meldungen.log | tail > usb-meldungen.log

dmesg > alle-meldungen.log

grep usb < alle-meldungen.log | tail > usb-meldungen.log

find . -type f -mtime +1 -name "*.log" -exec zip -m {}.zip {} \; >/dev/null &

Reguläre Ausdrücke