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 |
|
Ausgababe von ls nicht im Terminal ausgeben, sondern in die Datei liste.txtschreiben |
|
Ausgabe von ls -l an liste.txt anhängen |
|
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 (|) |
|
leitet die Ausgabe von befehl1 direkt an befehl2 weiter |
|
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 |
|
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!) |
|
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:
Gibt es keine mehrfachen Übereinstimmungen wird automatisch
angezeigt und mit Enter ausgeführt.
Information
Befehl |
Beschreibung |
|
manpage (Handbuch) für den Befehl echo öffnen. Navigation mit Pfeiltasten, beenden mit q |
|
kompletten Pfad des Befehls echo ausgeben |
|
kompletten Pfad des Befehls echo und seinen Konfigurationsdateien ausgeben |
|
kurze Funktionsbeschreibung über den Befehl echo ausgeben |
|
Dauer des Befehls echo “Test” ausgeben |
|
Informationen zur Programmdatei von echo |
Navigation
Befehl |
Beschreibung |
|
zum Pfad /home/ navigieren (change directory) |
|
aktuelles Arbeitsverzeichnis ausgeben (print working directory) |
|
zum Heimatverzeichnis (Standardmäßig /home/benutzername/ wechseln |
|
zum letzen Verzeichnis wechseln |
|
aktuellen Pfad zwischenspeichern |
|
zum zwischengespeicherten Pfad wechseln |
|
Verzeichnisinhalt vom aktuellen Verzeichnis ausgeben
gibt den Inhalt von /verzeichnis/ aus |
|
Verzeichnisinhalt vom aktuellen Verzeichnis als Liste mit Dateiinformationen ausgeben. |
Weitere Parameter für ls |
|
auch Versteckte Dateien anzeigen |
|
Dateigrößen in lesbare Werte umrechenen (kByte, MByte, …) |
|
Ausgabe farbig darstellen |
|
alle hier aufgeführten Parameter kombiniert |
Dateioperationen
Befehl |
Beschreibung |
|
kopiert alle Dateien, Ordner und Unterordner des aktuellen Verzeichnisrekursiv (-r) nach /ziel und gibt währenddessen den Status aus (-v) |
|
verschiebt datei in den Ordner /ziel/ |
|
ä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 |
|
erstellt den Ordner verzeichnis im aktuellen Ordner |
|
löscht datei |
|
löscht ordner/ mit allen enthaltenen Dateien / Ordnern |
Dateibetrachtung
Befehl |
Beschreibung |
|
Inhalt von datei.txt direkt ausgeben |
|
Datei Seitenweise ausgeben, Navigieren mit Pfeiltasten, Leertaste für nächste Seite. |
|
wie more, jedoch mehr Funktionen (siehe manpage: man less). q zum beenden |
|
Ausgabe von lspci an less weiterleiten |
|
Die letzten Zeilen von datei.txt ausgeben |
|
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 |
|
öffnet datei.txt in nano, ein einfaches Textbearbeitungsprogramm. Zum beenden STRG+X |
|
öffnet datei.txt in vi, ein sehr umfangreiches Textbearbeitungsprogramm. Zum Beenden ESC q! ENTER. Unbedingt manpage vor dem benutzen lesen! |
|
gibt datei.txt sortiert aus |
Dateisuche
Befehl |
Beschreibung |
|
Suche nach Dateien / Ordnern mit palita im Dateinamen |
|
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 |
|
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 |
|
archiv.tar entpacken |
Weitere Parameter für tar |
|
Archiv a.tar.gz aus Ordner o/ mit gzip komprimieren |
|
Archiv a.tar.bz aus Ordner o/ mit bzip komprimieren |
Parameter-Info: x = extract (Entpacken), c = create (Erstellen), f = file (Datei zum Packen / Entpacken als erster Parameter), v = verbose (Status während dem (Ent)Packen) |
Befehl |
Beschreibung |
|
Alle Dateien & Ordner im aktuellen Verzeichnis in archiv.zip speichern |
|
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 |
|
verbindet zur Konsole des Rechners hostname (alternativ kann auch die IP-Adresse angegeben werden) |
|
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 |
|
Anzahl der Zeilen von datei.txt ausgeben. Andere Zählweisen: -w: Wörter zählen, -m: Buchstaben zählen |
|
Dateiattribute auflisten |
|
Unterschiede zwischen 2 Dateien anzeigen |
|
Festplattenspeicher Analysieren (-h = human readable / In größtmögliche Einheit umrechnen) |
|
Dateigrößen (disk usage) des aktuellen Verzeichnis und Dateien anzeigen (-human readable) |
|
Größe des aktuellen Ordners inkl. Unterordner |
|
Speicherauslastung in Megabyte ausgeben |
|
Dateityp von datei.txt ermitteln |
|
Prüfsumme (MD5) von datei.txt ausgeben |
|
geöffnete Dateien anzeigen |
|
Prozessviewer, mit q beenden |
|
alle Prozesse auflisten |
|
eingeloggte Benutzer auflisten |
Netzwerk
Befehl |
Beschreibung |
|
Netzwerkkonfiguration anzeigen |
|
Infos zur ersten Netzwerkkarte (eth0) anzeigen |
|
Alle Netzwerkverbindungen anzeigen |
|
Aktive Internetverbindungen ausschließlich Server anzeigen |
|
Aktive Serververbindungen ausgeben |
|
Programm zur Datenverkehrsanalyse (nicht immer installiert!) |
|
Informationen über Hostname / IP von palita.net |
|
Weg zu palita.net verfolgen |
|
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) |
|
eigenen Hostnamen ausgeben |
|
Nameserver-Infos zu palita.net ausgeben |
dig @nameserverxy.com palita.net
|
Nameserver-Infos zu palita.net über den DNS auf namserverxy.com ausgeben |
|
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 |
|
SMB Netzwerk-Scanner – listet Windows-Freigaben / Arbeitsgruppen / Domains auf |
|
findet Rechner, die Windowsfreigaben bereitstellen |
|
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 |
|
Kalender mit 3 Monaten ausgeben (letzter, aktueller und nächster Monat) |
|
Kalender vom September 1752 anzeigen |
|
aktuelles Datum + Uhrzeit ausgeben |
|
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 |
|
installiert firefox und alle dazu benötigten Zusatzpakte / Bibliotheken auf dem System |
|
aktualisiert die Paketliste |
|
aktualisiert alle installierten Programme |
|
aktualisiert alle installierten Programme, Kernel-Updates, Distributions-Updates, … |
|
deinstalliert firefox |
|
deinstalliert firefox und all seine Konfigurationsdateien |
|
deinstalliert nicht mehr benötigte software / bibliotheken |
rpm / yum
Enthalten in Red-Hat ähnlichen Distributionen (Fedora, CentOS, RedHat, …)
Befehl |
Beschreibung |
|
installiert firefox und alle dazu benötigten Zusatzpakte / Bibliotheken auf dem System |
|
überprüft, ob neue Pakete verfügbar sind und aktualisiert sie auf wunsch |
|
gibt Informationen über das Paket firefox aus |
|
deinstalliert firefox |
|
sucht nach Paketen, die firefox im Namen oder in der Beschreibung enthalten |
|
gibt mögliche Befehle aus |
|
gibt mögliche Parameter für install aus |
Anwendungsbeispiele
Hier einige Beispiele von Befehlen und Kombinationen, die gelegentlich hilfreich sein können.
-
for i in *.JPG; do mv "$i" "${i/.JPG}".jpg; done # Benennt alle Dateien, die mit .JPG enden in .jpg um
-
>datei.txt # Leert den Inhalt von datei.txt
-
rename 's/\s+/_/g' * # Leerzeichen mit _ ersetzen
-
rm bild{6..100}.jpg # Löscht bild6.jpg, bild7.jpg, ... bis bild100.jpg
-
mail -s "file" deine@mail.tld < file.txt # Sendet eine Email an dich mit dem Inhalt von file.txt
-
tail -f /var/log/mail.log | grep -i --color error # verfolgt Fehlermeldeungen in mail.log
cooool!
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
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!
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
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?
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.
Jcyer – man kann auch etwas höflicher fragen … und sich vor allem anschl. bedanken, wenn man eine ausführliche Antwort bekommt!
Gruß Dagmar
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
Cooles Tutorial. Danke!!
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!
Accustomed Message Fro this product
Accustomed Information About this offshoot