Grundlagen – BASH (Linux / Mac Terminal)

Neue Version

!!! Eine überarbeitete Liste befindet sich unter palita.net/t/bash

Grundfunktionen

Hier sind einige Grundfunktionen der Shell, die sich mit Befehlen kombinieren lassen oder Auswirkungen auf andere Befehle haben. In einigen Beispielen werden diese Grundfunktionen verwendet.

Umleitungen

Funktion Beschreibung
ls > liste.txt
Ausgababe von ls nicht im Terminal ausgeben, sondern in die Datei liste.txtschreiben
ls -l >> liste.txt
Ausgabe von ls -l an liste.txt anhängen
grep palita < datei.txt
Den Inhalt von datei.txt als Terminal-Eingabe verwenden
|
Die Pipe ist eine sehr nützliche Funktion. Sie leitet Ausgaben an andere Programme weiter. Um dies näher zu verdeutlichen nachfolgend einige Beispiele
Verwendung der Pipe (|)
befehl1 | befehl2
leitet die Ausgabe von befehl1 direkt an befehl2 weiter
ls -la | grep jpg
Verzeichnisinhalt auflisten, mit grep nur Zeilen, die jpg enthalten ausgeben
ls -la | grep jpg | grep -v foto
wie voriges Beispiel, zusätzlich mit einem zweiten grep alle Vorkommnisse vonfoto nicht herausfiltern und nicht ausgeben (-v)

Historie

Funktion Beschreibung
sudo !!
Den letzten Befehl wiederholen, jedoch den Befehl sudo (als Superuser ausführen) voranstellen. Nützlich auch um z.B. die Ausgabe des letzten Befehls an less weiterzuleiten (nicht vergessen, dass der Befehl erneut ausgeführt wird, nicht nur die Ausgabe wiederholt wird!)
history
die letzten ausgeführten Befehle ausgeben

Automatische Vervollständigung

Die Bash kann standardmäßig Befehle und Dateien automatisch vervollständigen. Möchtest du z.B. den Befehl dmesg ausführen, reicht die Eingabe von dm und das Drücken der Tabulator-Taste (↹), esg wird automatisch angefügt. Sollte es mehr als eine Übereinstimmung geben, wird durch zweimaliges Drücken der Tabulatortaste eine Liste mit möglichen Befehlen ausgegeben. Diese Funktion ist genauso für Dateien gültig, so kann man sich etwa durch die gesamte Ordnerstruktur mit Hilfe von Tab leiten lassen. Um die Datei /var/log/syslog auszugeben, wäre eine einfache Möglichkeit:

catTAB/vTABlogTABsysTAB

Gibt es keine mehrfachen Übereinstimmungen wird automatisch

cat /var/log/syslog

angezeigt und mit Enter ausgeführt.

 

Information

Befehl Beschreibung
man echo
manpage (Handbuch) für den Befehl echo öffnen. Navigation mit Pfeiltasten, beenden mit q
which echo
kompletten Pfad des Befehls echo ausgeben
whereis echo
kompletten Pfad des Befehls echo und seinen Konfigurationsdateien ausgeben
whatis echo
kurze Funktionsbeschreibung über den Befehl echo ausgeben
time echo "Test"
Dauer des Befehls echo “Test” ausgeben
type echo
Informationen zur Programmdatei von echo

Navigation

Befehl Beschreibung
cd /home/
zum Pfad /home/ navigieren (change directory)
pwd
aktuelles Arbeitsverzeichnis ausgeben (print working directory)
cd
zum Heimatverzeichnis (Standardmäßig /home/benutzername/ wechseln
cd -
zum letzen Verzeichnis wechseln
pushd .
aktuellen Pfad zwischenspeichern
popd
zum zwischengespeicherten Pfad wechseln
ls
Verzeichnisinhalt vom aktuellen Verzeichnis ausgeben

ls /verzeichnis/

gibt den Inhalt von /verzeichnis/ aus

ls -l
Verzeichnisinhalt vom aktuellen Verzeichnis als Liste mit Dateiinformationen ausgeben.
Weitere Parameter für ls
-a
auch Versteckte Dateien anzeigen
-h
Dateigrößen in lesbare Werte umrechenen (kByte, MByte, …)
--color=auto
Ausgabe farbig darstellen
ls -lah --color=auto
alle hier aufgeführten Parameter kombiniert

Dateioperationen

Befehl Beschreibung
cp -rv * /ziel
kopiert alle Dateien, Ordner und Unterordner des aktuellen Verzeichnisrekursiv (-r) nach /ziel und gibt währenddessen den Status aus (-v)
mv datei /ziel/
verschiebt datei in den Ordner /ziel/
mv alt.txt neu.txt
ändert den Namen der Datei alt.txt in neu.txt
ln -s original.txt link.txt
erstellt eine Verknüpfung auf den relativen Pfad original.txt mit dem Namenlink.txt
ln -s /pfad/zu/original.txt link.txt
erstellt eine Verknüpfung auf den absoluten Pfad zu original.txt mit dem Namen link.txt
mkdir verzeichnis
erstellt den Ordner verzeichnis im aktuellen Ordner
rm datei
löscht datei
rm -r ordner/
löscht ordner/ mit allen enthaltenen Dateien / Ordnern

Dateibetrachtung

Befehl Beschreibung
cat datei.txt
Inhalt von datei.txt direkt ausgeben
more datei.txt
Datei Seitenweise ausgeben, Navigieren mit Pfeiltasten, Leertaste für nächste Seite.
less datei.txt
wie more, jedoch mehr Funktionen (siehe manpage: man less). q zum beenden
lspci | less
Ausgabe von lspci an less weiterleiten
tail datei.txt
Die letzten Zeilen von datei.txt ausgeben
tail -f datei.txt
Die letzten Zeilen von datei.txt ausgeben und auf Änderungen warten. Wird der Datei etwas hinzugefügt, wird es direkt ausgegeben. Beenden mit STRG + C. Nützlich vor allem für Logdateien
nano datei.txt
öffnet datei.txt in nano, ein einfaches Textbearbeitungsprogramm. Zum beenden STRG+X
vi datei.txt
öffnet datei.txt in vi, ein sehr umfangreiches Textbearbeitungsprogramm. Zum Beenden ESC q! ENTER. Unbedingt manpage vor dem benutzen lesen!
sort datei.txt
gibt datei.txt sortiert aus

Dateisuche

Befehl Beschreibung
locate palita
Suche nach Dateien / Ordnern mit palita im Dateinamen
find -iname palita
Suche nach Dateien & Ordnern im aktuellen Verzeichnis (und darunter) mit palitaim Namen, ignoriere Groß- / Kleinschreibung
find -type f ! -iname '*.jpg'
Suche nach Dateien, die nicht mit .jpg enden
find -type f ! -perm -444
Suche nach Dateien, die nicht von allen Benutzern lesbar sind
grep "palita" * --color
Suche nach dem Vorkommen des Wortes palita im aktuellen Verzeichnis mit farbiger Hervorhebung
grep -i -C 2 "palita" datei.txt
Suche nach dem Vorkommen von palita in datei.txt, ignoriere Groß- / Kleinschreibung und gebe jeweils 2 Zeilen vor und nach dem vorkommen aus
grep -i -v "palita" datei.txt
Gebe alle Zeilen aus, in denen palita nicht vorkommt

Archivierung / ZIP

Befehl Beschreibung
tar cf archiv.tar ordner/
ordner im aktuellen Verzeichnis in die Datei archiv.tar packen
tar xf archiv.tar
archiv.tar entpacken
Weitere Parameter für tar
tar cfz a.tar.gz o/
Archiv a.tar.gz aus Ordner o/ mit gzip komprimieren
tar cfj a.tar.bz o/
Archiv a.tar.bz aus Ordner o/ mit bzip komprimieren
Parameter-Infox = extract (Entpacken), c = create (Erstellen), f = file (Datei zum Packen / Entpacken als erster Parameter), v = verbose (Status während dem (Ent)Packen)
Befehl Beschreibung
zip archiv.zip *
Alle Dateien & Ordner im aktuellen Verzeichnis in archiv.zip speichern
unzip archiv.zip
archiv.zip entpacken

Backup & Synchronisation (rsync)

RSync ist ein mächtiges Tool um Verzeichnisse zu Sichern. Dies eignet sich für Backups, geteilte Ordner über mehrere Rechner, usw. RSync sucht nach Unterschieden von der Quelle zum Ziel und kopiert veränderte und neue Dateien zum Ziel. Mit verschiedenen Parametern können auch nicht mehr vorhandene Dateien der Quelle im Ziel gelöscht werden, um immer zwei identische Verzeichnisse zu haben.

RSync eignet sich hauptsächlich, wenn es eine Quelle und ein Ziel gibt. Wenn zwei Ordner parallel Verändert werden und Synchronisiert werden sollen, sollten Programme wie Unison verwendet werden.

Befehl Beschreibung
rsync -aP --delete --stats /quelle /ziel
Sichert den Ordner /quelle nach /ziel. Gab es vorher bereits eine Sicherung, werden in /quelle nicht mehr vorhandene Dateien in/ziel gelöscht (–delete). Während dem Kopieren wird der Fortschritt angezeigt (-P’). Nach dem Kopieren wird eine Statistik ausgegeben (–stats). Es werden die Standardeinstellungen zum Sichern verwendet (-a).
rsync -aze ssh /quelle benutzer@rechner.de:/ziel
Sichert den Ordner /quelle nach ziel auf den entfernten Rechner mit dem Hostnamen rechner.de in den Ordner /ziel über SSH. Die Dateien werden komprimiert übertragen (-z).

SSH / Tunneling

SSH steht für Secure Shell und meint ein Protokoll und dazugehörige Programme, um sich über das Netzwerk auf einem Sicheren Kanal auf der Konsole eines anderen Rechners zu verbinden. Mit SSH können außerdem Sichere Tunnel für andere Protokolle erstellt werden.

Befehl Beschreibung
ssh hostname
verbindet zur Konsole des Rechners hostname (alternativ kann auch die IP-Adresse angegeben werden)
ssh user@hostname
verbindet sich als Benutzer user
ssh -L 90:localhost:80 hostname
leitet Port 80 von Rechner hostname auf den lokalen Port 90′weiter. In diesem Beispiel wird der Webserver (Port 80) von hostname lokal über Port 90 erreichbar (http://localhost:90). Alle Daten werden dabei verschlüsselt übertragen
ssh -R 5901:localhost:5900 hostname
Leitet den Lokalen Port 5900 (VNC) über einen sicheren SSH-Kanal auf den Rechner hostname weiter. hostname kann jetzt eine verschlüsselte VNC-Verbindung auf den lokalen Rechner über seinen Port 5901 herstellen. Dies ist auch sinnvoll, wenn Port 5900 durch eine Firewall gesperrt wird, der Datenverkehr läuft bei einem Tunnel immer über den SSH-Port 22!
scp lokal.txt benutzer@hostname:/home/kopie.txt
Kopiert die lokale Datei lokal.txt auf den entfernten Rechnerhostname in das Verzeichnis /home/ unter dem Namen kopie.txt.
scp benutzer@hostname:/home/kopie.txt .
Kopiert die entfernte Datei /home/kopie.txt von hostname auf den Lokalen Rechner ins aktuelle Verzeichnis

Datenanalyse, Speicher & Prozesse

Befehl Beschreibung
wc -l datei.txt
Anzahl der Zeilen von datei.txt ausgeben. Andere Zählweisen: -w: Wörter zählen, -m: Buchstaben zählen
lsattr
Dateiattribute auflisten
diff datei1 datei2
Unterschiede zwischen 2 Dateien anzeigen
df -h
Festplattenspeicher Analysieren (-h = human readable / In größtmögliche Einheit umrechnen)
du -h
Dateigrößen (disk usage) des aktuellen Verzeichnis und Dateien anzeigen (-human readable)
du -hs
Größe des aktuellen Ordners inkl. Unterordner
free -m
Speicherauslastung in Megabyte ausgeben
file datei.txt
Dateityp von datei.txt ermitteln
md5sum datei.txt
Prüfsumme (MD5) von datei.txt ausgeben
lsof
geöffnete Dateien anzeigen
top
Prozessviewer, mit q beenden
ps aux
alle Prozesse auflisten
who
eingeloggte Benutzer auflisten

Netzwerk

Befehl Beschreibung
ifconfig
Netzwerkkonfiguration anzeigen
ifconfig eth0
Infos zur ersten Netzwerkkarte (eth0) anzeigen
netstat
Alle Netzwerkverbindungen anzeigen
netstat -tup
Aktive Internetverbindungen ausschließlich Server anzeigen
netstat -tupl
Aktive Serververbindungen ausgeben
iptraf
Programm zur Datenverkehrsanalyse (nicht immer installiert!)
host palita.net
Informationen über Hostname / IP von palita.net
traceroute palita.net
Weg zu palita.net verfolgen
ping -c 5 palita.net
palita.net 5 mal ein Ping senden, um zu sehen, ob der Rechner erreichbar ist und wie lange er für eine Antwort benötigt (manche Server geben trotz Erreichbarkeit aus Sicherheitsgründen keine Antwort)
hostname
eigenen Hostnamen ausgeben
nslookup palita.net
Nameserver-Infos zu palita.net ausgeben
dig @nameserverxy.com palita.net
Nameserver-Infos zu palita.net über den DNS auf namserverxy.com ausgeben
ip addr show
Informationen zu Netzwerkkarten und zugehörigen Adressen ausgeben

Dateidownload (wget)

Befehl Beschreibung
wget http://palita.net/empty.txt
Datei empty.txt von palita.net herunterladen und im aktuellen Verzeichnis abspeichern
wget -c http://palita.net/empty.txt
Vorher abgebrochenen Download fortsetzen (-continue)

Windows Netzwerke (samba)

Befehl Beschreibung
smbtree
SMB Netzwerk-Scanner – listet Windows-Freigaben / Arbeitsgruppen / Domains auf
findsmb
findet Rechner, die Windowsfreigaben bereitstellen
smbclient -L hostname
listet alle verfügbaren Freigaben von hostnameauf
mount -t smbfs -o fmask=666,guest //hostname/share /mnt/share
bindet die Freigabe share im lokalen Rechner als Laufwerk unter /mnt/share ein

Textmanipulation

Befehl Beschreibung
sed 's/string1/string2/g' datei.txt
ersetzt string1 mit string2 in datei.txt
sed '/ *#/d; /^ *$/d' datei.txt
entfernt Kommentare, die mit # beginnen und Leerzeilen aus datei.txt
tr '[:lower:]' '[:upper:]' < datei.txt
Gibt datei.txt in Großbuchstaben aus

Datum / Zeit

Befehl Beschreibung
cal -3
Kalender mit 3 Monaten ausgeben (letzter, aktueller und nächster Monat)
cal 9 1752
Kalender vom September 1752 anzeigen
date
aktuelles Datum + Uhrzeit ausgeben
uptime
Information über die Laufzeit des Systems

Paketverwaltung

Viele Linux-Distributionen verwenden Paketverwaltungsprogramme, um Software auf dem System zu installieren, aktualisieren und löschen. Je nach Distribution gibt es verschiedene Programme, die bekanntesten sinddpkg und rpm. Für dpkg kann apt-get, für rpm kann yum als erweitertes, einfaches Installationstool verwendet werden.

dpkg / apt-get

Enthalten in Debian-Distribitionen (Debian, (X/K/Edu)Ubuntu, …)

Befehl Beschreibung
apt-get install firefox
installiert firefox und alle dazu benötigten Zusatzpakte / Bibliotheken auf dem System
apt-get update
aktualisiert die Paketliste
apt-get upgrade
aktualisiert alle installierten Programme
apt-get dist-upgrade
aktualisiert alle installierten Programme, Kernel-Updates, Distributions-Updates, …
apt-get remove firefox
deinstalliert firefox
apt-get purge firefox
deinstalliert firefox und all seine Konfigurationsdateien
apt-get autoremove
deinstalliert nicht mehr benötigte software / bibliotheken

rpm / yum

Enthalten in Red-Hat ähnlichen Distributionen (Fedora, CentOS, RedHat, …)

Befehl Beschreibung
yum install firefox
installiert firefox und alle dazu benötigten Zusatzpakte / Bibliotheken auf dem System
yum update
überprüft, ob neue Pakete verfügbar sind und aktualisiert sie auf wunsch
yum info firefox
gibt Informationen über das Paket firefox aus
yum erase firefox
deinstalliert firefox
yum search firefox
sucht nach Paketen, die firefox im Namen oder in der Beschreibung enthalten
yum help
gibt mögliche Befehle aus
yum help install
gibt mögliche Parameter für install aus

Anwendungsbeispiele

Hier einige Beispiele von Befehlen und Kombinationen, die gelegentlich hilfreich sein können.

  1. for i in *.JPG; do mv "$i" "${i/.JPG}".jpg; done # Benennt alle Dateien, die mit .JPG enden in .jpg um
  2. >datei.txt # Leert den Inhalt von datei.txt
  3. rename 's/\s+/_/g' * # Leerzeichen mit _ ersetzen
  4. rm bild{6..100}.jpg # Löscht bild6.jpg, bild7.jpg, ... bis bild100.jpg
  5. mail -s "file" deine@mail.tld < file.txt # Sendet eine Email an dich mit dem Inhalt von file.txt
  6. tail -f /var/log/mail.log | grep -i --color error # verfolgt Fehlermeldeungen in mail.log
Tagged with: ,
Posted in Tutorials
12 Comments » for Grundlagen – BASH (Linux / Mac Terminal)
  1. testname sagt:

    cooool!

  2. Michael Kiefer sagt:

    Die Grundlagen – BASH (Linux / Mac Terminal) sind für mich der sich selten auf Betriebssystemebene bewegt prima. Im Bezug auf meine BASH (version 3.2) wird ping jedoch “ping -c 5 ” aufgerufen.

    Viele Grüße
    Michael

  3. Lukas Rose sagt:

    Super Zusammenstellung! War ein echter Leitfaden zu Beginn meiner Bash-Zeiten, und wird auch heute noch immer wieder mal zu Rate gezogen! Danke für diesen klasse Beitrag, ich kann gar nicht sagen, wie oft ich schon hier war! :D

  4. Johnk547 sagt:

    I’m really impressed with your writing skills as well as with the layout on your blog. Is this a paid theme or did you customize it yourself? Anyway keep up the excellent quality writing, its rare to see a great blog like this one these days.. beddcgkddeef

  5. jcyer sagt:

    Und wie erstelle ich jz nen Link von einem Verzeichnis in ein anderes Verzeichnis (2), sodass das Verzeichnis (2) trotzdem noch von einem Programm(In dem Fall “CUPS-PDF”) erkannt wird?

    • manuel sagt:

      Ich verstehe deine Frage leider nicht ganz.
      Angenommen du hast folgende Ordner:

      /home/xyz/bilder
      /var/medien

      Und du möchtest /home/xyz/bilder in /var/medien/bilder verlinken, dann kannst du das mit folgendem Befehl:

      ln -s /home/xyz/bilder/ /var/medien/
      (ln -s quelle ziel)
      /var/medien behält den ursprünglichen Inhalt und erstellt eine Verknüpfung (Softlink!) mit dem Namen bilder. Möchtest du den Link mit einem anderen Namen erstellen ginge das so:
      ln -s /home/xyz/bilder/ /var/medien/linkaufbilder
      Ich hoffe dir damit geholfen zu haben.

    • Dagmar sagt:

      Jcyer – man kann auch etwas höflicher fragen … und sich vor allem anschl. bedanken, wenn man eine ausführliche Antwort bekommt!

      Gruß Dagmar

  6. Ratlos sagt:

    Sehr schöne Aufstellung +1

    Vielleicht kann mich jemand in die richtige Richtung schubsen :)

    Ich möchte farbige Information des Terminals in einer Datei speichern.

    TIA

  7. Nikita sagt:

    Cooles Tutorial. Danke!!

  8. AppleUse sagt:

    I tried a few of your commands and they’re not working,
    as example: mv file /targetfile/, doesn’t work. In another tutorial they use: mv file ./targetfile

    Do you know what could be the reasen for that? Are there different types of the terminal? My Mac is quite old. Does your description only apply to newer models?

    Cheers!

  9. Accustomed Message Fro this product

  10. Accustomed Information About this offshoot

4 Pings/Trackbacks for "Grundlagen – BASH (Linux / Mac Terminal)"
  1. […] auch : Grundlagen – Bash Terminal Linux Commands Ubuntuusers Wiki All Bash Commmands in […]

  2. […] gefunden auf palita.net […]

Hinterlasse einen Kommentar zu Lukas Rose Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>