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 kopie
mv datei1 datei2 verz
, cp datei1 datei2 verz
mv *.txt verz
, cp *.txt verz
mv -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 xyz
find . -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; ls
cd verz && ls
cd verz || ls
ls | sort -n
grep 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 -l
find . -name '*.mp3" -print0 | xargs -0 mpg123
while true; do ps aux | grep xterm; sleep 1; done
until ssh rechner; do sleep 1; done
for i in *.txt; do cp -v $i $i.backup; done