abe@noone.org
http://noone.org/abe/
Teil 1: Die Helfer der Kommandozeile
Teil 2: Kombination macht die Kommandozeile mächtig
| Prompt | Befehl | Optionen | Parameter |
> |
mv |
-v -i |
datei1 datei2 |
$ |
cp |
--recursive --preserve |
datei1 datei2 verzeichnis |
# |
rm |
-rf |
verzeichnis |
BSD-Programme haben oft nur Ein-Buchstaben-Optionen, dafür kombinierbar
GNU-Programme haben oft kurze (ein Buchstabe mit "-" beginnend) und lange Varianten (Wort mit "--" beginnend) ihrer Optionen.
| Kurz | Lang | Bedeutung |
|---|---|---|
-h |
--help |
Hilfe |
--usage |
Ausführliche Hilfe | |
-v, -V |
--version |
Version anzeigen |
-v |
--verbose |
Ausführliche Ausgabe |
-f |
--force |
Ausführung erzwingen |
-i |
--interactive |
Fragen vor destruktiven Aktionen |
-r, -R |
--recursive |
In Verzeichnisse hinabsteigen |
-p |
--preserve |
Datei-Informationen (User, Rechte, Änderungszeit, etc.) sofern möglich beibehalten |
-d3, -d 3 |
--debug=3 |
Debug-Level 3 |
mkdir verzeichnisname: make directory —
Erstelle Verzeichnis.mkdir -p verzeichnisname make directory and
parents — Erstelle Verzeichnis und falls nötig auch
sämtliche Elternverzeichnisse.cd verzeichnisname: change directory —
Wechsle Verzeichnis.cd ohne Parameter: Gehe ins
Home-Verzeichnis.cd -: Gehe zurück ins vorherige
Verzeichnis.mv: move — Verschieben und Umbenennencp: copy — Kopierenmv alt neu, cp datei kopiemv datei1 datei2 verz, cp datei1 datei2 verzmv *.txt verz, cp *.txt verzmv -v ..., cp -v ...: verbose
— wortreich, ausführlichmv -i ..., cp -i ...: interaktiv,
vor Überschreiben fragencp -r ...: recursive — rekursiv, auch
Unterverzeichnisse kopierencp -p ...: preserve — Dateirechte und
Änderungsdatum beibehalten bzw. mitkopierenrm datei: Datei "datei" löschenrm *.txt: Dateien mit Endung "txt" löschenrmdir verzeichnis: Leeres Verzeichnis
löschenrm -r verzeichnis: rekursiv: Verzeichnis
inkl. aller darin enthaltenen Dateien und Unterverzeichnisse
löschen.rm -i *.txt: Vor dem Löschen jeder Datei
nachfragenrm -f *.txt: Auch vor dem Löschen
schreibgeschützter Dateien nicht nachfragenFrage: Wo auf dem Rechner liegt eine Datei, die eine bestimmte Zeichenkette im Namen hat.
locate xyz: Lokalisierelocate -i xyz: Lokalisiere unabhängig von
Groß- und KleinschreibungFrage: Wo auf dem Rechner liegt das Programm "xyz"?
which xyzfind . -name '*txt*': Finde Dateien oder
Verzeichnisse im aktuellem Verzeichnis (".") mit "txt"
im Namen.find xyz -iname '*txt*': Finde Dateien oder
Verzeichnisse im Verzeichnis "xyz" mit "txt"
(Groß-/Kleinschreibung egal) im Namen.find abc xyz -mtime -1: Finde Dateien oder
Verzeichnisse in den Verzeichnissen "abc" und "xyz", die
vor weniger als einem Tag angelegt oder verändert wurden.find . -type d: Finde alle Verzeichnisse
unterhalb des aktuellen Verzeichnisses.find verzeichnis: Finde alle Dateien und
Verzeichnisse unterhalb des Verzeichnisses "verzeichnis".man programmname
(Hilfe dazu: man man)info programmname
(Hilfe dazu: info info; Übersicht über
sätliche vorhandene Dokumentation: info ohne
Parameter)| Eingabe | Bedeutung |
|---|---|
/text<Eingabe> |
Vorwärts suchen nach "text" |
?text<Eingabe> |
Rückwärts suchen nach "text" |
n |
Nächster Treffer in aktueller Suchrichtung |
<Cursor runter>,
<Eingabe>, <Ctrl-n>,
j |
Eine Zeile nach unten |
<Cursor hoch>, <Ctrl-p>,
k |
Eine Zeile zurück |
<Bild ab>, <Leertaste> |
Eine Seite vor |
<Bild auf>, b |
Eine Seite zurück |
<Pos1>, g |
Zum Textanfang springen |
<Ende>, <Shift-g> |
Zum Textende springen |
q |
Beenden |
Problem: Eine sog. "man page" kann locker über 5000 Zeilen haben und ist meist keine eine Bettlektüre sondern eine Referenz.
Pause, danach Teil 2: Kombination macht die Kommandozeile mächtig
Teil 2: Kombination macht die Kommandozeile mächtig
cd verz; lscd verz && lscd verz || lsls | sort -ngrep Suchbegriff: Filtern nach Suchbegriffsort: Zeilen alphabetisch sortierensort -r: Zeilen rückwärts alphabetisch sortierensort -n: Zeilen numerisch sortierenuniq: Doppelte Zeilen entfernenuniq -c: Vorkommen der Zeilen zählenwc (word count): Zeichen, Worte und Zeilen zählentail -10 (Schwanz): Nur die letzten 10 Zeilen ausgeben.head -10 (Kopf): Nur die ersten 10 Zeilen ausgeben.cut (schneiden): Zeichenspalten ausschneidenawk '{print $1}': Wortspalten ausschneidenssh benutzer@rechner 'befehl': Befehl auf anderem Rechner ausführenAnzahl Zugriffe auf den RSS-Feed meines Blogs:
grep /blog/index.rss access.log | \ wc -l
Alle Zugriffe auf den RSS-Feed meines Blogs, sortiert nach IP-Adressen:
grep /blog/index.rss access.log | \ sort
Alle IP-Adressen, die auf den RSS-Feed meines Blogs zugegriffen haben.
grep /blog/index.rss access.log | \
sort | \
awk '{print $1}' | \
uniq
Anzahl verschiedener IP-Adressen, die auf den RSS-Feed meines Blogs zugegriffen haben:
$ grep index.rss /var/log/apache/access.log | \
sort | \
awk '{print $1}' | \
uniq | \
wc -l
Die 10 am häufigsten auf den RSS-Feed meines Blogs zugreifende IP-Adressen:
grep /blog/index.rss access.log | \
sort | \
awk '{print $1}' | \
uniq -c | \
sort -n | \
tail -10
ls -l `which tar`ls -l $(which tar)which tar | xargs ls -lfind . -name '*.mp3" -print0 | xargs -0 mpg123while true; do ps aux | grep xterm; sleep 1; doneuntil ssh rechner; do sleep 1; donefor i in *.txt; do cp -v $i $i.backup; done