Grundlegende Linux-Befehle

Bei der Eingabe wird alles hinter dem #-Zeichen wie ein Kommentar behandelt und nicht ausgeführt. Dateien mit einem führenden Punkt sind versteckt. Jeder Benutzer hat ein Homeverzeichnis, das mit ~ gekennzeichnet ist.

Bash
Dateiverwaltung
Administrationsbefehle
Textverabeitung
Prozessmanagment
Internet & eMail
TCP/IP Administrationsbefehle
Vergleiche
Drucken
Verwaltung von Programmen
Shell-Programmierung
Partitions Management
Tar/Rar-Archive
Schalter wichtiger Befehle
Wildcards
Nützliche Kombinationen

Bash:

cal # Kalender anzeigen
clear # Bildschirm löschen
reset # Steuercodes resetten

Dateiverwaltung:

./datei.sh # Ausführbare Datei im aktuellen Verzeichnis starten
apropos # Man-Pages nach Thema durchsuchen
cat # Dateien Anhängen/anzeigen mit der Option -n zeigt cat Zeilennummern
cd # (bzw. cd ~) in das Home-Verzeichnis wechseln. "cd /" in das höchste (root-) Verzeichnis wechseln. "cd .." in das Verzeichnis darüber wechseln.
cksum # Prüfsumme berechnen
cp # Datei1 in Datei2 kopieren
csplit # Dateien an bestimmten Stellen aufteilen
dd # Dateien im Rohformat kopieren
du # Zeigt den Speicherverbrauch an, "du -hs verz." listet das in Mega- und Gigabytes auf
df # Freier Platz des "Laufwerks" auflisten, df -h listet das in Mega- und Gigabytes auf
dos2unix # Text Dateiconverter
unix2dos # Text Dateiconverter
extundelete # Undelete für ext3 und ext4
file -i datei # Den Dateityp bestimmen
fold # Bricht ueberlange Zeilen um
gpg -c dateiname.doc # File verschlüsseln
head # Die ersten Zeilen einer Datei anzeigen
ln # Aliasname für Dateinamen erzeugen
less # Dateien bildschirmweise anzeigen
locate "filename" # File suchen (falls Locate installiert ist)
ls # Dateien/Verzeichnis anzeigen
ls -l # Dateien im aktuellen Verzeichnis tabellarisch anzeigen
ls -a # die versteckten Dateien auch noch anzeigen
ln datei link # erzeugt man einen Hardlink. Der ist eine zweiter Eintrag und bleibt auch dann stehen wenn die eigentliche Datei gelöscht wird, daher funktioniert der auch nur für Dateien und auf der selben Platte.
ln -l datei link # erzeugt man einen Softlink. Der geht auch für Ordner und auf andere Partitionen. Löscht man die Datei, ist der Link auch weg.
ln -s datei link # symbolischer Link, er bleibt auch erhalten, wenn man die Datei oder den Ordner dahinter löscht. Er ist am ehesten mit der Verknüpfung unter Windows zu vergleichen und belegt auch Inodes auf der Partition.
md5sum # MD5 Summe erzeugen bzw. überprüfen
merge # Änderungen in ver. Dateien zusammenführen
md # Verzeichnis erstellen
more # ähnlich less
multitail # wie Teil, nur das multitail mehrere Dateien überwachen kann
mv # Datei1 in Datei2 umbenennen bzw. verschieben
nano # einfacher Texteditor
newgrp # Die Aktuelle Gruppe ändern
pico # einfacher Texteditor
pwd # Arbeitsverzeichnis ausgeben
rm # Dateien löschen
rmdir # Verzeichnisse löschen
rm -rf # Verzeichnis ohne nachzufragen rekursiv löschen, VORSICHT!!!
rm FOO.log.{21..80} # löscht logfile 21 bis 80
rm FOO.log.{3,4,5} # löscht logfile 3,4 und 5
sha1sum # SHA1 Summe erzeugen bzw. überprüfen
shred -fuzvn 10 dateiname.doc # Datei sicher löschen
split # Dateien gleichmässig aufteilen
tac # Wie cat nur wird das File umgekehrt ausgegeben
tail # Die letzen zeilen einer Datei ausgeben
unix2dos # Text Dateiconverter
updatedb # locate-Datenbank (falls Locate installiert ist) aktualisieren
vi oder vim # der kompliziertere und mächtigere Texteditor
whatis # Kurzbeschreibung über ein Programm ausgeben
whereis # Shellprogramme, Source, Manpage Files finden
which # Pfad zu einem Program ausgeben

Administrationsbefehle:

chmod a+r # Benutzerrechte setzen: Alle dürfen lesen
chmod g+rw # Benutzerrechte setzen: Gruppe darf lesen und schreiben
chmod u+rwx # Benutzerrechte setzen: Besitzer darf alles
chmod o+rwx # Benutzerrechte setzen: Welt darf alles
chown root:root # Benutzer ändern
chfn # Benutzerinfo für finger,E-Mail usw. ändern
chsh # Anmeldeshell ändern
crontab # Zeigt die userspezifische Cron-Tabelle an, bzw. oeffnet sie zum editieren
date # Zeigt Zeit & Datum an
dmidecode # Detaillierte Hardwaredaten auslesen
dos2unix # Text Dateiconverter
dpkg -i paketname # DEB Programm installieren
dpkg -r paketname # DEB Programm deinstallieren (Configdateien bleiben erhalten)
dpkg -P paketname # DEB Programm komplett deinstallieren
dpkg -l | grep paketname # Nachsehen ob ein DEB Paket installiert ist
finger # Zeigt infos über über die user aus
free # Zeigt die Speicherauslastung und die Auslastung des Swap bereichs an
groups # Die Gruppenzugehörigkeit ermitteln
history # Zeige die letzten eingegebenen Befehle an
id # Die UID eines Users anzeigen lassen
init 3 # In den Runlevel 3 wecheseln
init 5 # In den Runlevel 5 (Windows Manager) wecheseln
ldconfig # Erstellt die Cache-Datei für den Programmlader welche Bibliotheken im System sind.
ldd # Zeigt welche Bibliotheken in welchen Versionen ein Programm verwendet.
lsb_release --d # Betriebssystem und Versionsnummer anzeigen.
lscpu # Gibt Informationen über die CPU aus
lshw # Gibt Informationen über die Hardware aus
lsmod # Zeigt die geladenen Kernelmodule an
lspcmcia # Gibt Informationen über die PCMCIA Geräte aus
lspci # Gibt Informationen über Geräte auf dem PCI-Bus aus
lsusb # Gibt Informationen über Geräte auf dem USB-Bus aus
mkfs # Datenträger oder Partition formatieren
newgrp # Aendern der aktuellen Gruppe
/proc/cpuinfo # Informationen über die CPU
/proc/meminfo # Informationen über sen Speicher
passwd # Festlegen bzw. Aendern des Passwortes eines Useraccounts
pwd # Arbeitsverzeichnis ausgeben
export PATH=/usr/bin/:$PATH # Pfad neu setzen unter Beibehaltung der alten Pfade
shutdown -h now # System herunter fahren
shutdown -r now # System neu starten
stat filename # Dateistatus anzeigen
stat -f / # Dateisystem-Status anzeigen
reboot # System neu starten
rpm -Uvh filename # RPM Paket installieren
rpm -qa | grep Paketname # Nachsehen ob ein RPM Paket installiert ist
rpm -qi filename # Informationen über das installierte RPM-Paket bekommen (oder nur -q für die Versionsnummer)
rpm -ev filename # RPM Paket deinstallieren
rpm -qlp filename # Alle Files in einem RPM Paket anzeigen
rpm -qf /usr/bin/setup # Welches File gehört zu welchem RPM Paket
runlevel # Zeigt einem den aktuellen Runlevel an
rwho # wer ist gerade remote eingeloggt ? (evtl. mit yum install rwho nachinstallen)
unix2dos # Text Dateiconverter
w # wer ist gerade eingeloggt und wieviele Ressourcen nutzt er ?
who # wer ist gerade eingeloggt ?
whoami # als wer bin ich gerade eingeloggt ?

Textverabeitung:

cat # Dateien Anhängen/anzeigen
comm # Vergleicht zwei Textfiles, Zeile für Zeile
cut # Schneidet Spalten aus einem Text aus
dos2unix # Text Dateiconverter
egrep 'floppy|cdrom' /etc/fstab # Erweiteres grep, sucht nach mehreren Begriffen
expand/unexpand # Expandiert Tabulatoren (8 Zeichen breit) in 8 Leerzeichen und umgekehrt
file -i file.txt # Codierung einer Textdatei anzeigen
fold # Dieses Programm bricht Zeilen um
grep # Nach Dateinhalten suchen
head # Die ersten Zeilen einer Datei anzeigen
recode utf-8..latin-1 file.txt # Umwandeln von UTF-8 nach Latin
recode latin-1..utf-8 file.txt # Umwandeln von Latin nach UTF-8
join # Zusammenfügen von Dateien
more # Text Seitenweise angezeigen
less # Dateien bildschirmweise anzeigen
paste # Das Gegenteil zu cut. Fügt Dateien Spaltenweise zusammen
sort # Sortiert die Zeilen einer Textdatei
split # Das Gegenteil zu join. Dateien in Teile zerlegen
tail # Die letzen zeilen einer Datei ausgeben
tr # Wörter oder Zeichenfolgen durch andere ersetzen
uudecode # Dateien dekodieren, die mit uuencode bearbeitet wurden
uuencode # Dateien mit Binärzeichen zum Verschicken enkodieren
uniq # Stellt sicher, dass eine Zeile nur einmal vorkommt
unix2dos # Text Dateiconverter
wc # Zeilen/Wörter/Zeichen zählen
nl # Zeilennummern erzeugen

Prozessmanagment:

bg # Packt Prozesse in den Hintergrund der laufenden Shell
fg # Packt Prozesse in den Vordergrund der laufenden Shell
jobs # Zeigt alle laufenden Prozesse auf der laufenden Shell an
kill # Beendet den Prozess mit der uebergebenen Prozess-ID (PID)
kill -9 prozessid # Beendet den Prozess ohne auf Speicherungen zu warten (Brutalmethode !)
killall # Beendet alle Prozesse mit dem uebergebenen Namen
killproc # Beendet den Prozess, dessen ausfuehrbare Datei im uebergebenen Pfad zu finden ist
lsof # Welche Dateien sind im Moment geöffnet, und wer hat sie geöffnet
mpstat -P ALL # Informationen zur Auslastung der einzelnen CPUs
nice # Setzt die Prioritaet eines Prozesses
nohup # Startet ein Programm immun gegen SIGHUPs
pidof # Gibt die PID(s) des Prozesses mit dem uebergebenen Namen aus
ps # Zeigt alle Prozesse mit ihrer PID, der User-ID des ausfuehrenden Users, die Terminal-ID etc. an
ps ax | grep sshd # zeigt an ob der Prozess sshd noch läuft (Achtung, grep zeigt sich selbst auch einmal an, da er ja nach sshd sucht ;-))
pstree # Zeigt alle Prozesse in einer Baumdarstellung
strg-z # Prozess anhalten
timeout # Laufzeit eines Prozesses festlegen

Internet & eMail:

curl # Download Client
ftp # Kommandozeilen FTP Client
lynx # Text Browser
mail # Sendet eine E-Mail an einen User
mailq # Zeigt noch zu versendende Mails an
mosh --ssh="ssh -p 2222" du@dein.server.de # SSH für schlechte Verbindung. Vorher noch mosh auf dem Server installieren. Es gibt auch eine Chrome App.
mutt # der kompliziertere eMailclient
echo hallo duda | mutt -s "Mein Betreff" -a prog.exe email@domain.de # Mail mit Anhang verschickt
pine # der einfache eMailclient
scp # Dateien auf ein entferntes System kopieren
ssh # Kommandozeilen SSH Client
w3m # der Text Browser
wget # Download Client
wput # Upload Client

TCP/IP Administrationsbefehle:

arp #
dhclient -v -r eth0 # Renew der IP Adresse per DHCP auf eth0, lassen wir eth0 weg, werden für alle Schnittstellen die IPs erneuert.
dig NS xxx.xxx.xxx.xxx domain.de # macht einen Lookup auf einen Nameserver
host IP oder Domain # DNS Host+Zonen-Infoausgabe
hostname # Zeigt den Namen des Rechners an
ifconfig # Netzwerkkarte
netstat # Netzwerkzustand
netcat # Mächtiges TCP/IP-Tool
nslookup #
nmap # Portscanner
ping # Selbsterklärend
pppd # Aufbau einer Verbindung per ppp
traceroute # macht eine traceroute (ach was !)
route # Manipulation der Routingtabelle

Vergleiche :

cmp # Zwei Dateien Byte für Byte vergleichen
comm # Elemente in zwei sortierten Dateien vergleichen
diff # Zwei Dateien Zeile für Zeile vergleichen
diff3 # Drei Dateien vergleichen

Drucken :

lpq # Den Status von Druckaufträgen anzeigen
lpr # Dateien an Drucker schicken
lprm # Druckjobs löschen
lpstat # Drucker-Status abfragen

Verwaltung von Programmen :

cvs # Verschiedene Versionen von Quelldateien verwalten
gdb # GNU-Debugger
imake # Makefiles für Make erzeugen
make # Programme erzeuge/Dateien verwalten
patch # Änderungen an Quelldateien Anbringen
size # Die Größe eines Objektes in Bytes ausgeben
strace # Systemaufrufen und Signalen folgen
touch # Änderungszeit einer Datei aktualisieren

Shell-Programmierung:

echo # Kommandozeilenargumente ausgeben
env # Gibt alle Umgebungsvariablen aus.
sleep # Die Verarbeitung für X Sekunden anhalten
test # Eine Bedingung prüfen
exit # Die aktuelle Schell verlassen / ausloggen
export # Shellvariablen exportieren
id # Ausgabe der Benutzernummer und der Gruppenzugehörigkeiten
set # Umgebungsvariable setzen
seq # Gibt eine Vordefinierte Zahlenliste aus
tee # Von Standardeingabe lesen und in Standardausgabe und Dateien schreiben
flock # Befehle ausführen mit Filelock, hilfreich bei cronjobs z.B.

Partitions Management:

badblocks# Durchsucht einen Partition nach beschaedigten Bloecken (BadBlocks)
blkid# UUIDs der Festplatten (Blockdevices) anzeigen
dd # Kopiert Partitionen/Dateisysteme bytegenau
dumpe2fs # Gibt Informationen ueber das Dateisystem auf einer Partition aus
e2fsck # Prueft und repariert Linux ext2 Dateisysteme
e2label # Weist einem Dateisysten ein Label (Bezeichnung) zu, bzw gibt das Label aus
fdisk # Legt Partitionen an und loescht sie oder Anzeige der aktuellen Partitionstabelle
fdisk -l /dev/hda # Direkte Anzeige der aktuellen Partitionstabelle
fsck # Prueft und repariert Linux Dateisysteme
hdparm # Programm zum Einstellen verschiedener Parameter einer Festplatte u.a. DMA Modus
hdparm -I /dev/hda | grep size # Festplattengröße anzeigen
mkfs # Frontend zu verschiedenen Filesystem-Erstellern
mkswap # Erzeugt eine Linux Swap-Partition auf der angegebenen Partition
mount # Haengt ein Dateisystem (eine Partition, Diskette..) in den Verzeichnisbaum ein (an einen Mountpoint)
sfdisk # Partition table manipulator for Linux
swapon# Swap aktivieren
swapoff# Swap abschalten
tune2fs # Pogramm zum Einstellen verschiedener Parameter des ext2 Dateisystems (zB maximal mount count)
umount # Loest ein Dateisystem aus dem Verzeichnisbaum

Tar/Rar-Archive:

tar -xvf Datei.tar -C destverz # zum Auspacken von .tar
tar --strip-components 0 -xvf tarball.tar # zum Auspacken ohne Pfade von .tar
tar -xzvf Datei.tar.gz -C destverz # zum Auspacken von .tar.gz oder .tgz
tar -xjvf Datei.tar.bz -C destverz # zum Auspacken von .tar.bz oder .tbz
tar -cvpf Datei.tar Dateiliste # zum Erstellen eines Tar's - .tar
tar -czvpf Datei.tar.gz Dateiliste # zum Erstellen eines Gzip Tar's - .tar.gz
tar -cjvpf Datei.tar.bz2 Dateiliste # zum Erstellen eines Bzip2 Tar's - .tar.bz2
tar -tvf file.tar # zum Auflisten eines Tar's
tar -ztvf file.tar.gz # zum Auflisten eines Gzip Tar's
tar -jtvf file.tar.bz2 # zum Auflisten eines Bzip Tar's
rar a -r -ow -v1000m -m1 archiv.rar /home/path # zum Erstellen eines rar mit Filegröße 1 Gb und Packstufe 1 (0-5, 0 = Store)
rar a -r -ow -hpTestpass archiv.rar /home/path # zum Erstellen eines rar, Packstufe 3 (Default) und Passwort Testpass
rar x -ow -ola archiv.rar /home/path # zum Auspacken eines rar

Schalter wichtiger Befehle :

cp

-a oder --archive Beibehaltung von Besitzer-, Gruppen- und Zugriffsrechten und Erstellungs-, Modifikations- und Zugriffsdaten (entspricht -dR --preserve=all)
-b oder --backup Sichert Dateien vor dem Überschreiben, wenn diese unterschiedlich sind
-d erhält symbolische Links, folgt ihnen aber nicht beim Kopieren (entspricht -P --preserve=links)
-i oder --interactive fragt vor Überschreiben nach
-l oder --link kopiert nicht, sondern erstellt harten Link
-n oder --no-clobber niemals vorhandene Dateien überschreiben (-i wird wirkungslos)
-p (klein) oder --preserve=mode,ownership,timestamps erhält Standard-Dateiattribute, wie Zeitpunkt des letzten Schreibzugriffs
-P (groß) oder --no-dereference Symbolische Links als symbolische Links kopieren, statt den Links in der Quelle zu folgen
-r oder -R oder --recursive Verzeichnisse rekursiv kopieren (Unterverzeichnisse eingeschlossen)
-s oder --symbolic-link kopiert nicht, sondern erstellt symbolischen Link
-u oder --update kopiert nur, wenn Zieldatei älter als Quelldatei
-v oder --verbose zeigt den Kopierfortschritt an

mv

-b erzeugt eine Backup Datei von jeder Datei
-f überschreiben von vorhandenen Dateien
-i nachfragen beim überschreiben
-u verschiebt nur Dateien die jünger sind als Zieldatei

ls

-a -all auch versteckte Dateien (beginnen mit einem Punkt . ) werden angezeigt
--color für unterschiedliche Dateitypen werden unterschiedliche Farben angezeigt
-d --directory nur der Names des Verzeichnisses wird angezeigt
-i --inode der I-Node der Dateien wird zusätzlich mit angezeigt
-I muster --ignore dateien, die muster enthalten werde nicht mit angezeigt
-l --format=long langes Listenformat wird verwendet (der Aufruf ls -l wird bei vielen Distributionen auch mit dem Alias ll belegt)
-o --no-color auf Farben wird verzichtet
-r --reverse Sortierreihenfolge wird umgedreht. siehe -S und -t
-R --recursive Dateien, die in Unterverzeichnissen stehen, werden auch mit angezeigt
-S --sort=size die Dateien werden nach Ihrer Grösse sortiert (gr. Datei zuerst)
-t --sort=time die Dateien werden nach der Zeit ihrer letzen Änderung sortiert (neuste zuerst)
-X --sort=extention Sortiert die Dateien nach Ihren Kennungen (alles nach dem letzten . im Namen)

grep

-r Setze die Suche rekursiv durch alle Unterverzeichnisse fort. Funktioniert nur bei der Verwendung von Wildcards einwandfrei
-c Anzeige der Anzahl Zeilen, in denen das Muster gefunden wurde
-i Groß- und Kleinschreibung werden nicht unterschieden
-l Nur Anzeige der Namen der Dateien, in denen das Muster gefunden wurde
-n Zeigt die Zeilennummer an, in der das Muster gefunden wurde
-s Unterdrückt die Fehlerausgaben (Standardfehler); sinnvoll in Skripten
-v Zeigt alle Zeilen an, die das Muster nicht enthalten
-w Das Suchmuster muss ein einzelnes Wort sein (also kein Bestandteil eines anderen Wortes)
-A [n] Zeigt »n« Zeilen an, die der Zeile mit dem Muster folgen
-B [n] Zeigt »n« Zeilen an, die vor der Zeile mit dem Muster liegen
--color=auto Hebt das gesuchte Muster farblich hervor

Wildcards :

Other usefful wildcard will be square brackets "[]" and curly brackets "{}". First let you match a range of values, second let you define a list of values.

# ls pic[1-3].{txt,jpg}

pic1.jpg pic1.txt pic2.jpg pic3.jpg

The star wildcard * has the broadest meaning of any of the wildcards, as it can represent zero characters, all single characters or any string.
The question mark ? is used as a wildcard character in shell commands to represent exactly one character, which can be any single character


Nützliche Kombinationen:

du -h --max-depth=1 # Zeigt den Speicherverbrauch einzelner Verzeichnisse an, "du -hs verz." listet das in Mega- und Gigabytes auf
cat Datei | less # Datei scrollbar anzeigen
cat Datei1 Datei2 > Datei3 # Dateien 1 und 2 in 3 zusammenfügen
cat >filename< | vim - # Datei in Vim read only anzeigen
> dateiname.txt # Datei leeren
echo "Hallo" >> Datei # Hallo an Datei 3 anhängen
ls -l | grep "test" # in der Ausgabe von ls -l nur die Zeilen anzeigen, in denen test steht
tail -f Datei # Dateiende anzeigen und wenn etwas angefügt wird mitscrollen
ps ax | grep sshd # zeigt an ob der Prozess sshd noch läuft (Achtung, grep zeigt sich selbst auch einmal an, da er ja nach sshd sucht ;-))
grep -o "[[:alnum:]+\.\_\-]*@[[:alnum:]+\.\_\-]*" # alle E-Mailadressen aus Textfile filtern
grep -o "^[[:alnum:]+\.\_\-]*@[[:alnum:]+\.\_\-]*" # nur die ersten E-Mailadressen pro Reihe aus Textfile filtern
yes | rm /tmp/file # Nachfragen mit "yes" beantworten
sed 's/^/ /' # insert 5 blank spaces at beginning of each line (make page offset)
df -h | grep sdb1 | awk {'print $5'} # Zeigt uns den 5.ten Tab von Diskfree /dev/sdb1 an. Also die Prozentzahl.
timeout 60 sh -c 'while true; do /bin/ping -c1 8.8.8.8 > /dev/null && break; done && /bin/Befehl' # Befehl nur bei Internetkonnektion ausführen, aber nach max. 60 Sek. abbrechen
time echo „scale=4000; a(1)*4“ | bc -l # Minibenchmark = Zahl Pi auf die 4000 stelle berechnen und dauer dafür ausgeben.
tac /var/mail/root > /tmp/rmails && truncate --size=10M /tmp/rmails && tac /tmp/rmails > /var/mail/root ; rm -f /tmp/rmail # File rotate bei 10 MB
/usr/bin/tail --bytes=10MB /var/mail/root > /tmp/rmails && /bin/cp -f /tmp/rmails /var/mail/root ; rm -f /tmp/rmails # File rotate bei 10 MB

Files finden, Zählen etc. :

grep -rin "sslengine" /etc/httpd # In Textfile(s) String suchen
egrep -l 'scp|rsync' * # Sucht in allen Files die Suchtexte und zeigt die Dateien an
find . -name '*car*' -print0 | xargs -0 rm -i "{}"# In Textfile(s) String suchen und Files löschen
find . -type f -regex '\./xensource.log.+[0-9]' -mtime +120 | sort -n # Erst mal sehen
find . -type f -regex '\./xensource.log.+[0-9]' -mtime +120 -print0 | xargs -0 rm -i "{}" \; # Dann löschen

find . -type f -newermt '2015-02-01 00:00:00' ! -newermt '2015-02-11 23:59:59'
find / -user username -print0 | xargs -0 mv "{}" /tmp/username-trash # Dateien finden und dann bewegen (Die Zeichenkombination "{}" zeigt dem xargs, an welcher Stelle er die Argumentliste für das Kommando einzufügen hat.)
find /home/user/Downloads -type f -newermt '2015-02-01 00:00:00' ! -newermt '2015-02-11 23:59:59' -print0 | xargs -0 /bin/mv "{}" /home/user/Downloads/test

find . -type f | sed 's%/[^/]*$%%' | sort | uniq -c # count Files in Folders
find . -type f | sed -e 's%^\(\./[^/]*/\).*$%\1%' -e 's%^\.\/[^/]*$%./%' | sort | uniq -c # count Files in Folders (max depth 1)