Core

Einige Shell-Anweisungen im Vergleich

Windows-AnwenderInnen kennen nur eine Konsole, das klassische schwarze Fenster des Programms cmd.exe - Ein letzter Rest der alten DOS-Konsole.
Die wenigen und wenig leistungsfähigen Windows Konsolen-Anweisungen kann man durch Installation von Cygwin und Perl mit mächtigen Befehlen ergänzen
Linux stützt sich stark auf die Konsole und bietet dafür mehrere Shell-Programme zur Auswahl.
Alle wichtigen Linux-Funktionen werden durch Shell-Scripts gesteuert.
Perl ist in jeder gängigen Linux-Distribution enthalten.
Linux Server betreiben meist auch einen SSH-Server - mann kann sie dann mit der Konsole komplett fernsteueren.
Konsole Verwendung der "guten alten" Konsole (Shell)
Darstellung Shell-Befehle in diesem Web
Hilfe Hilfe zur Hilfe, man, info und help
Verzeichnisse Ausgewählte Shell-Befehle auf Linux und Windows
Dateien Shell-Befehle für Dateien
N & C Netzwerke und Connectivity
Umgebung Umgebungs-Variable (Environment) lesen und schreiben
Diverse DIverse weitere Shell-Befehle
Alias Kurznamen für Linux Shell-Befehle

Shell-Darstellung

In diesem Web werden Konsolen-(Shell)-Befehle in der rechts gezeigten Form dargestellt. Die einheitliche Formatierung wird durch eine einzige zentrale → CSS-Anweisung gesteuert. Linux Shell Konsole:
# ifconfig
Windows-Konsole:
C:\> ipconfig
Das Prefix # bzw. C:\> symbolisiert die beiden meist verwendeten Betriebssysteme. In allen Systemen ist es möglich, den 'Prompt'-Text fast beliebig zu konfigurieren. Auf dieser Seite werden ausnahmsweise keine Prefixes verwendet, da die Anweisungen der beiden Systeme in beschrifteten Spalten gegenüber gestellt sind.

Hilfe

Linux

Windows

Hilfe, um unbekannte Konsolen-Befehle zu finden
info coreutilshelp
Hilfe zur Hilfe
man man
info
info info
help
help help
Hilfe zu einem Konsolen-(Shell)-Befehl, z.B. cp bzw. copy
apropos cp
man cp
info cp
help copy
copy /?
Info-Fenster
Navigation im Hilfe-Fenster mit den Pfeil-Tasten, Ende und Rückkehr zur Shell mit Taste q
Linux   man-Übersicht bei Wikipedia
man auf Webseiten bei man online
Das Fenster lässt sich virtuell vergrößern: Rechtsklick in die Kopfzeile | Eigenschaften | Layout | Fensterpuffergröße | Höhe (z.B. auf 300..500 ändern).
Hilfe-Text als Datei speichern:
help copy >> c:\copyhelp.txt

Script-Programme

sind Text-Dateien, die speziell formulierte Befehle enthalten. Mit entsprechenden Programmen ('Interpreter') werden die Anweisungen gelesen und in ausführbare Befehle umgewandelt. Häufig verwendete Interpreter sind z.B. verschiedene Shells auf Linux, cmd.exe auf Windows, oder → Perl (alle Plattformen).
Linux Shell Scripts Linux enthält in jeder Distribution zahlreiche Scripts zur Steuerung des Betriebssystems. Das System ist daher 'transparent', d.h. birgt keine Geheimnisse - wenn man die Zugriffsrechte hat. Die meisten Linux-Scripts sind so sauber programmiert, dass sie beim Aufruf ohne Argumente eine Mini-Anleitung ausgeben. Darüber hinaus sind sie meist auch im Quelltext kommentiert: Den Inhalt von Script-Programmen kann man mit jedem Editor (vorzugsweise jedoch readonly mit Konqueror) lesen (nicht ändern !), z.B. konqueror /test/myscript.pl
Scripts zur System-Steuerung sind auf Linux nur für die/den AdministratorIn root zugänglich.

Auf Windows werden nur wenige Script-Programme ( *.bat, *.cmd ) eingesetzt, und sie sind leider nur selten brauchbar kommentiert. Immerhin kann man solche Programme mit einem Editor öffnen oder anzeigen:
type myscript.cmd
Windows-Systeme sind vergleichsweise krypisch programmiert, d.h. man benötigt spezielle Programme und zeimlich viel Fachwissen, um sie zu durchschauen und zu steuern. Viele Details sind überhaupt nicht öffgentlich dokumentiert.
Details zum Windows Commandline-Interpreter cmd.exe

Linux man

Linux bietet man-(Manual)-pages für die meisten Befehle und Programme an.
In einem man-Fenster navigieren sie mit den Pfeil-Tasten. Weiters können sie mit einigen Tasten Kurz-Befehle erteilen: h (Navigations-Hilfe),
g (Anfang), G (Ende), d (Halbseite vor), u (Halbseite zurück), t (Absatz vor), T (Absatz zurück), q (quit).
/ (Suche vor) und ? (Suche zurück), z.B. /search sucht nach 'search' im nachfolgenden Text.
Programm man verwendet eine einfache man-Datenbank, in welche sowohl das System als auch die meisten installierten Programme Einträge vornehmen.

Linux   info

Diese fortgeschrittene Variante von man bietet einige zusätzliche Möglichkeiten. Mit den Pfeiltasten steuern sie einen Text-Cursor.
Links: <return> folgt einem Link, wenn der Cursor darauf steht. p (previos, zurück), n (next, weiter), t (top, an den Anfang).
Einführung mit info
Ausstieg mit q (quit).
Neuere Programme bieten Hilfe hauptsächlich mit info an, und in man nur mehr eine Kurzversion davon.

Linux cnf

Einige Linux-Versionen bieten auch das Programm cnf (Command not found) zur Suche nach Shell-Anweisungen oder ausführbaren Programmen.

Linux Dokumentation

Unabhängig davon sind viele Linux-Pakete in diesem Verzeichnis dokumentiert:
/usr/share/doc
/usr/share/doc/packages
Die Doku ist in entsprechend benannten Sub-Verzeichnissen enthalten.

Umfangreiche Doku wird meist nur auf Anfrage installiert. Konsultieren sie dazu die Software-Verwaltungs (YAST, apt, ...) ihres Linux Systems.
Doku nicht an andere Pfade verschieben - Das verhindert die automatische Aktualisierung.
Doku in den Formaten HTML oder PDF kann man besonders bequem mit einem → Webserver am gleichen PC anzeigen.

Verzeichnisse

Alle Angaben ohne Gewähr.
Absolute Pfade beschreiben den Pfad zu einem Verzeichnis oder einer Datei, ausgehend vom (obersten) 'Wurzel-Verzeichnis'.
Absolute Pfade beginnen auf Linux mit einem / Zeichen, auf Windows mit einem Laufwerks-Buchstaben.
Relative Pfade beschreiben einen Pfad ausgehend vom 'aktuellen Verzeichnis' (Current Wortking Directory, cwd). Mit Anweisung cd (Change Directory) kann man dieses Verzeichnis beliebig wählen.

Linux

Windows

Wechsel in ein Verzeichnis (absolut, relativ abwärts, relativ aufwärts)
cd /home/test/sub cd c:\test\sub
cd testcd test
cd ..cd ..
Verzeichnis neu anlegen (absolut, relativ)
mkdir /home/test/neumkdir c:\test\neu
mkdir neumkdir neu
Verzeichnis kopieren (rekursiv, d.h. inkl. aller Inhalte, Quelle → Ziel )
cp -r /home/test /home/neucopy c:\test c:\neu
Verzeichnis verschieben (rekursiv, d.h. inkl. aller Inhalte, Quelle → Ziel )
mv -r /home/test /home/neumove c:\test c:\neu
Verzeichnis umbenennen (von → nach )
rename /home/test neurename c:\test neu
Verzeichnis löschen (rekursiv, d.h. inkl. aller Inhalte)
rm -r /home/testdel c:\test
Verzeichnis-Liste anzeigen (zahlreiche Optionen)
ls -l /home/testdir c:\test
Anzeige der Zugriffsrechte auf ein Verzeichnis:
ls -l /home/testcacls c:\test
Zugriffsrechte auf ein Verzeichnis ändern (zuerst nur Verzeichnis, danach rekursiv für alle Inhalte)
chmod 755 /home/test
chmod -rwxrwx /home/test  
chmod -R 755 /home/test
cacls c:\test /g PC/User:r
cacls c:\test /T /g PC/User:r

Dateien

Alle Angaben ohen Gewähr.

Linux

Windows

Text-Datei neu anlegen
echo >> /home/test/test.txt echo >> c:\test\test.txt
Datei kopieren
cp /home/test/test.txt /home/neu/neu.txt copy c:\test\test.txt c:\neu\neu.txt
Datei verschieben ( Quelle → Ziel )
mv /home/test/test.txt /home/neu/neu.txt move c:\test\test.txt c:\neu\neu.txt
Datei umbenennen (von → nach [Muster] )
rename .txt .dat /home/test/*.txt rename c:\test\*.txt *.dat
Text-Inhalt einer Datei überschreiben
echo "Neuer Inhalt" > /home/test/test.txt echo "Neuer Inhalt" > c:\test\test.txt
Text an eine Datei anhängen
echo "Neue Zeile" >> /home/test/test.txt echo "Neue Zeile" >> c:\test\test.txt
Datei(en) löschen
rm /home/test /neudel c:\test c:\neu
Text-Datei auf der Konsole ausgeben
cat /home/test/test.txt
cat /home/test/test.txt | more
view /home/test/test.txt
type c:\test\test.txt
more c:\test\test.txt
Text-Datei mit einem Editor-Programm öffnen
vim /home/test/test.txt notepad c:\test\test.txt
Zugriffsrechte auf eine Datei ändern
chmod 750 /home/test/test.txt
chmod -rwxr-x /home/test/test.txt
cacls c:\test\test.txt /g PC/User:r

Netzwerk und Connectivity

Linux

Windows

Verbindungs-Test (3 Versuche)
ping -c3 192.168.0.12ping 192.168.0.12
Diverse
ifconfig
ip addr
ip neigh
route
(Befehle mit umfangreichen Optionen, siehe man & info )
ipconfig /all

net
(Umfangreiche Optionen, z.B. help, accounts, share, config server, config workstation, localgroup, use, file, user, view)
arp
netstat -s
netstat -r
netstat -i
netstat -tun
arp -a
netstat -e
netstat -r
netstat -n
netstat -a

Umgebungs-(System)-Variable

Umgebungs-Variable spielen in allen Betriebssystemen eine wichtige Rolle. Zahlreiche Programme lesen die Daten dieser Variablen und richten ihr Verhalten danach ein.
Auf Win-Systemen sind Umgebungs-Daten alternativ auch über die Registry-Datenbank zugänglich.
Alle gängigen Programmiersprachen bieten die Möglichkeit, Umgebungs-Variable zu lesen und zu schreiben. Eine Ausnahme bildet Javascript, da Webseiten prinzipiell nicht auf Daten der BesucherInnen-PC zugreifen dürfen.
Umgebungs-Variable in Perl, PHP, VBA

Linux

Windows

Liste aller aktuellen Umgebungs-Variablen
env | sort
export
set
Umgebungs-Variable neu anlegen
export UVNEU="abc123"
Linux unterscheidet UVNEU, uvneu, UVneu usw.
set uvneu=abc123
Vorsicht, keine Leerzeichen nach dem =
Windows unterscheidet nicht nach großen und kleinen Buchstaben.
Umgebungs-Variable ändern
export UVNEU="987zyx"
export PATH; PATH="$PATH:/home/ich/test"
export PATH; PATH="/home/ich/test:$PATH"
set uvneu=987zyx
set path=%path%;c:\ich\test
set path=c:\ich\test;%path%
Umgebungs-Variable löschen
export -n UVNEUset uvneu=
  Details zu Umgegebungs-Variablen auf Win-Systemen.

Diverse Shell-Befehle

Linux

Windows

Datum und Zeit
date "+%d.%m.%Y"
date --iso-8601
date "+%T"
date "+%F %T"
date/T
time/T
echo %date:~6,4%-%date:~3,2%-%date:~0,2% %time:~0,8%
Datei-Manager (allgemein, Pfad, Web-Adresse
konqueror
konqueror /home/test
konqueror http://localhost
explorer
explorer c:\test
explorer http://localhost
Prozesse
ps
ps -a
qprocess
qprocess *
Befehl in neuem Konsolen-Fenster ausführen
Tipp: Diese Form ist ideal für Alias (SoftLinks) geeignet: Solche Alias lassen sich am Desktop oder in einem Menü platzieren. So kann man häufig verwendete Konsolen-Befehle mit einem Klick starten.
konsole -noclose -e ifconfig cmd /K ipconfig
Konsolen-Fenster löschen
clearcls

Alias für Befehle

Linux bietet die Möglichkeit, Kurznamen für beliebige Befehls-Kombinationen einzusetzen. Damit kann man z.B. gewohnte Windows-Befehle auf Linux 'nachahmen'.
Hilfe mit man alias oder info alias

Eine Liste aller aktuell gültigen Alias erhält man mit der Anweisung
# alias
Beispiele:
# alias dir='ls -l'
Erzeugt einen dir-Befehl, der so ähnlich wie auf Windows arbeitet.
# alias ipconfig='ip addr show'
Ermöglicht den gewohnten Windows-Befehl auch auf Linux. Alternativ eine sehr kompakte Variante:
# alias ipconfig="ifconfig | grep 'inet '"
Neue Alias-Anweisungen werden so definiert:
# alias name=value
(Ersetzen sie name und value durch die jeweils gewünschten Daten.
Bewährte Alias sollten automatisch bei jedem System-Start geladen werden. Dazu bietet jedes Linux-System Konfigurations-Dateien, z.B.
/etc/bash.bashrc
/etc/profile
Beispiele:
# alias help='info'
# alias ping='ping -c3'
# alias untar='tar -xzvf $1'
Das letzte Beispiel zeigt die Weitergabe von Argumenten ($1,$2,...) an das Alias.
Globale Alias (für alle User) werden je nach Version in einer dieser Dateien definiert. SuSE-Linux trennt zwischen den Grundeinstellungen (werden bei einem Update evtl. geändert) und den selbst ergänzten Einstellungen (.local), die von System-Updates nicht betroffen sind.
/etc/profile
/etc/profile-local
/etc/bash.bashrc
/etc/bash.bashrc.local
Legen sie allenfalls eine Text-Datei *.local neu an, falls sie noch nicht existiert, und tragen sie darin alle globalen Alias-Definitionen und alle globalen Umgebungs-Variablen ein.
User-spezifische Alias werden z.B. in dieser Datei definiert:
/home/user/.bashrc
(Ersetzen sie user durch einen beliebigen User-Namen). Diese Text-Datei wird für neue User als Kopie dieser Datei hergestellt:
/etc/skel/.bashrc
Die Windows Konsole cmd.exe bietet leider keine Alias. Immerhin kann man einen oder mehrere Befehle in einem → Konsolen Script-Programm (Text-Datei *.cmd) sammeln und so wie ein Alias ausführen. Tipp: Mit → Cygwin kann man nicht nur viele praktische Linux-Programme an der Windows-Konsole nutzen, sondern auch deren Alias-Fähigkeit.