dir ist ls -l, type ist cat, findstr ist grep, ipconfig ist ip addr, tasklist ist ps aux und netstat -ano ist ss -tulpn. Die vollständige Tabelle steht unten, doch die Zuordnung ist der leichte Teil: Groß- und Kleinschreibung, der fehlende Papierkorb und CRLF-Zeilenenden sind das, was die erste Woche wirklich kaputt macht.
| Windows | Linux |
|---|---|
dir |
ls -l |
cd |
cd, und pwd für den aktuellen Ort |
type |
cat |
findstr |
grep |
copy / move / del |
cp / mv / rm |
md / rd |
mkdir / rmdir |
cls |
clear |
tasklist / taskkill |
ps aux / kill |
ipconfig |
ip addr |
netstat -ano |
ss -tulpn |
where |
command -v |
systeminfo |
uname -a, /etc/os-release |
shutdown /r |
reboot |
1. dir → ls -l
$ clai zeige die dateien hier mit größe→ ls -ltotal 12-rw-r--r-- 1 root root 23 Aug 27 15:38 hosts.csvdrwxr-xr-x 2 root root 4096 Aug 27 15:38 logs-rw-r--r-- 1 root root 17 Aug 27 15:38 notes.txt
Die erste Spalte sind die Rechte, ein führendes d bedeutet Verzeichnis. Nacktes ls gibt nur Namen aus, -l ergänzt Größe und Datum, -a zeigt Dateien mit führendem Punkt — das sind hier die "versteckten".
2. type → cat
$ clai zeige mir den inhalt von notes.txt→ cat notes.txtalphabetagamma
cat gibt die ganze Datei aus. Für lange Dateien nimmt man less (beenden mit q), für Anfang oder Ende head und tail.
3. findstr → grep
$ clai suche das wort ERROR in allen dateien in diesem ordner→ grep -rn "ERROR" ../logs/app.log:1:ERROR timeout after 30s
-r geht in Unterverzeichnisse, -n druckt Zeilennummern. Die Schreibweise zählt: ERROR und error sind verschiedene Wörter, mit -i ist es egal.
4. ipconfig → ip addr
$ clai zeige die ip-adresse meiner netzwerkschnittstelle→ ip addr show eth0122: eth0@if123: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0 valid_lft forever preferred_lft forever
inet ist die IPv4-Adresse, link/ether die MAC. Die Schnittstelle heißt nicht immer eth0 — auf einer echten Maschine kann es enp5s0 oder wlan0 sein, und ip addr ohne Argument listet alle auf.
5. tasklist → ps
$ clai zeige laufende prozesse mit ihren nummern→ ps -o pid,commPID COMMAND 1 sh 13 sleep 14 ps
Nacktes ps zeigt nur die eigene Sitzung. Die volle Liste ist ps aux, und taskkill /PID wird zu kill <pid>.
6. netstat -ano → ss -tulpn
$ clai zeige wer auf port 8099 lauscht→ ss -tulpn 'sport = :8099'Netid State Recv-Q Send-Q Local Address:Port Peer Address:PortProcess tcp LISTEN 0 5 127.0.0.1:8099 0.0.0.0:* users:(("python3",pid=1027487,fd=3))
ss ersetzt netstat, das moderne Distributionen nicht mehr mitliefern. Die Flags liest man so: -t tcp, -u udp, -l nur lauschende, -p Prozess, -n keine Namensauflösung. Die Spalte Process entspricht direkt der PID aus netstat -ano.
Gotchas
- Groß- und Kleinschreibung zählt überall.
Notes.txtundnotes.txtsind zwei Dateien, undLSist kein Befehl. Das ist Grund Nummer eins dafür, dass ein Skript "auf meiner Maschine lief". - Es gibt keinen Papierkorb.
rmlöscht sofort und endgültig,delhatte wenigstens ein Ziel. Vorrm -rdasselbe Muster erst mitlsanschauen. - Ein unter Windows geschriebenes Skript startet nicht. CRLF-Zeilenenden liefern
bash: ./crlf.sh: /bin/sh^M: bad interpreter: No such file or directorymit Exit-Code 126. Reparatur:sed -i 's/\r$//' script.sh, und im Editor auf LF umstellen.
Related questions
Welche Version läuft bei mir? cat /etc/os-release nennt Distribution und Version, uname -srm Kernel und Architektur. Zusammen ersetzen sie systeminfo.
Wo sind die Programme? Binärdateien liegen in /usr/bin, ihre Daten in /usr/share, Konfiguration in /etc, Fremdpakete oft in /opt. Einen einzigen Programmordner gibt es nicht.
Was ersetzt den Explorer? mc liefert einen Dateimanager mit zwei Fenstern im Terminal — vertraut für alle, die Far oder Norton Commander kennen.
See also
- sed -i funktioniert nicht unter macOS
- grep rekursiv, ohne node_modules
- Prüfen, ob ein Port offen ist
CliAI lässt Sie die Aufgabe so beschreiben, wie Sie ohnehin denken, und zeigt den Linux-Befehl vor der Ausführung. In einer Zeile installieren.