kleine Shell Programme ed

eng verwandt mit Shell Scripte

Text-Verarbeitung ed

Ausgabe ed

Strings ausgeben
echo STRINGS

Dateiinhalt ausgeben
cat DATEIEN

Ausgabe in Datei kopieren UND trotzdem ausgeben
BEFEHL | tee DATEI

viel Text scrollen
less DATEI                    # auf- und ab
BEFEHL | less
more DATEI                    # nur abwärts

Ausschnitt aus Datei anzeigen
head DATEI                    # erste 10 Zeilen anzeigen
head -n ZEILEN ...            # Anzahl der Zeilen
tail DATEI                    # letzte 10 Zeilen anzeigen
tail -n ZEILEN ...

einfache Operationen ed

Wörter zählen
wc DATEI                     # Wörter/Zeilen/Buchstaben

Zeilen sortieren
sort DATEI                   # Zeilen sortiert ausgeben -> STDOUT
sort -u ...                  # unique (keine doppelten Zeilen) -> STDOUT
uniq DATEI                   # keine doppelten Zeilen (falls direkt aufeinander folgend) -> STDOUT
tac DATEI                    # in umgekehrter Reihenfolge ausgeben -> STDOUT

Spalten
paste DATEIEN                # fügt zeilenweise die Dateiinhalte durch Tabs getrennt zusammen -> STDOUT
cut -f1,3-5 DATEI            # nur Spalte 1, 3 bis 5 ausgeben (Spalten durch Tab getrennt) -> STDOUT
cut -dZEICHEN ...            # Spalten-Trennzeichen festlegen
cut -c1,3-5 DATEI            # nur Zeichen 1, 3 bis 5 ausgeben -> STDOUT

Vergleichen
diff DATEI_A DATEI_B         # Text-Dateien
cmp DATEI_A DATEI_B          # auch binär

Konvertieren
tr DATEI ZEICHEN1 ZEICHEN2   # Zeichen1 durch Zeichen2 ersetzen (angegeben z.B. als aeiou oder [a-z]) -> STDOUT

Ausschnitte kopieren
dd if=EINGABE_DATEI of=AUSGABE_DATEI bs=1024 count=10
                             # kopiert 10 Blöcke (BlockSize = 1024b = 1kb)
dd skip=10 ...               # überspringt 10 Blöcke in der Eingabe
dd seek=10 ...               # überspringt 10 Blöcke in der Ausgabe
dd conf=notrunc ...          # Datei2 NICHT abschneiden

Bearbeitung ed

Muster suchen

Texteditoren (interaktiv)
nano
emacs
vi
joe

Datei-Verwaltung ed

einfach ed

Arbeitsverzeichnis
pwd                           # aktuelles Verzeichnis anzeigen
cd VERZEICHNIS                # ins Verzeichnis springen
cd -                          # zuletzt besuchtes Verzeichnis

Verzeichnis-Inhalt anzeigen
ls
ls -l                         # ausführlich

kopieren
cp DATEIEN ZIEL_VERZEICHNIS
cp DATEI ZIEL_DATEI
cp -r ...                     # rekursiv
cp -u ...                     # update (nur wenn Quelle neuer)
cp -v ...                     # verbose (Operationen anzeigen)

löschen
rm DATEIEN
rm -r ...                     # rekursiv (auch Verzeichnisse)
rm -f ...                     # force (auch keine Fehler ausgeben)
rmdir VERZEICHNIS             # muss leer sein!  (sonst rm -r ...)

verschieben/umbenennen
mv DATEI ZIEL_VERZEICHNIS
mv DATEI ZIEL_DATEI

Verzeichnis erstellen
mkdir VERZEICHNIS

komplizierter ed

Berechtigungen ändern
chmod [uga][+-][rwx] DATEI    # User/Group/All +- Read/Write/Execute
chmod -R ...                  # rekursiv

Besitzer ändern
chown BESITZER DATEI
chown -R ...                  # rekursiv
chgrp GRUPPE DATEI
chgrp -R ...                  # rekursiv

Verknüpfung erstellen
ln ZIEL LINK_NAKE
ln -s ...                     # nur symbolisch (sonst "hart")

suchen
find -name "NAME"             # im aktuellen Verzeichnis suchen (NAME kann * enthalten)
find VERZEICHNIS ...          # im angegebenen Verzeichnis
which BEFEHL                  # Pfad der ausführbaren Datei
whereis BEFEHL                # Pfad der ausführbaren Datei, Quellcode und Manpage

suchen und Befehl ausführen
find -name "NAME" -exec Befehl {} \;   # {} wird durch den Dateinamen ersetzt

Hilfe
man BEFEHL                    # Dokumentation anzeigen
man 3 BEFEHL                  # zu einem Bibliotheks-Befehl (C-Programmierung)
info BEFEHL                   # ebenso...

Dateisystem einhängen
mount                         # alle anzeigen
mount DEVICE VERZEICHNIS
umount DEVICE                 # wieder aushängen
umount VERZEICHNIS

Festplatten-Platz
df                            # Verbrauch auf allen Dateisystemen anzeigen
du                            # Speicherbedarf (in kb) des aktuellen Verzeichnisses (rekursiv gelistet)
du VERZEICHNIS
du -h                         # sinnvolle Einheiten (mb/gb)
du -s                         # nur Gesamtgröße angeben
du --apparent-size            # Datei-Größen (!= Speicherbedarf) angeben

sonstige
touch DATEI                   # Änderungs- und Zugriffsdatum auf "jetzt" setzen
                              # (erstellt die Datei, falls nicht vorhanden)
file DATEI                    # Typ der Datei anzeigen

Computer ed

Daten anzeigen ed

aktuelle Shell
tty

aktuelles Datum
date
date +"FORMAT"                # Zeit-Format angeben
  %S sek, %M min, %H stunde, %d tag, %m monat, % jahr

sonstige Daten
uptime                        # Zeit seit dem letzten Neustart
uname -a                      # Computername, Kernel, Architektur anzeigen

Benutzer ed

Benutzernamen anzeigen
whoami                        # eigener
who                           # alle angemeldeten
w                             # alle angemeldeten (und deren Prozesse)
finger BENUTZER               # Kontodaten anzeigen

Passwort ändern
passwd

Benutzer wechseln
su BENUTZER
su                            # -> Root
sudo BEFEHL                   # Befehl als Root ausführen

Prozesse ed

auflisten
top                           # Auslastung und Prozesse überwachen
ps -A                         # alle Prozesse
pidof PROZESS_NAME            # prozess-id

töten
kill PROZESS_ID
killall PROZESS_NAME

mehrere Shells (im Hintergrund)
screen                        # startet im Vordergrund
    Strg+A+D      -> Hintergrund
screen -r                     # wieder aufrufen (oder mehrere auflisten)

später ausführen
at ZEIT_PUNKT
      BEFEHLE
      Strg+D
at STUNDE:MINUTE
at now+3hours
atq                           # Jobs anzeigen
atrm JOB_NR                   # löschen

Cron Tabelle
crontable -l                  # anzeigen
crontable -r                  # löschen
crontable DATEI               # durch Datei ersetzen

Vordergrund/Hintergrund
befehl &                      # befehl im Hintergrund ausführen (und zur Shell zurückkehren)
    Strg+Z                    # aktuellen Prozess pausieren (und zur Shell zurückkehren)
jobs                          # alle Prozesse anzeigen
fg                            # Prozess wieder im Vordergrund ausführen
fg %JOB_NR                    # Prozessnummer aus jobs, bei befehl & oder bei Strg+Z
bg                            # pausierten Prozess wieder im Hintergrund starten
bg %JOB_NR

Debugging
time BEFEHL                   # Ausführungszeit messen

Netzwerk ed

generell
ping COMPUTER                 # Verbindung zu computer testen
tracepath COMPUTER            # alle Computer auf dem Weg anzeigen

auf anderem Computer anmelden
ssh COMPUTER
ssh BENUTZER@COMPUTER         # als anderer Benutzer
ssh -X ...                    # grafische Oberfläche benutzbar machen

Dateien kopieren
scp DATEI COMPUTER:ZIEL_DATEI # auch mit BENUTZER@COMPUTER:DATEI
scp COMPUTER:DATEI ZIEL_DATEI

Konfiguration
ifconfig                      # anzeigen
ifconfig eth0 IP_ADRESSE netmask 255.255.255.0 broadcast 192.168.1.255
                              # IP-Adresse setzen (für Gerät eth0)
route                         # Routing anzeigen
route add default gw IP_ADRESSE eth0
                              # IP-Adresse des Standart-Gateway für eth0 setzen

Samba Freigaben
smbtree                       # Samba im Netzwerk auflisten
smbmount //COMPUTER/FREIGABE ZIEL_VERZEICHNIS
                              # mounten
smbumount VERZEICHNIS         # aushängen

Http
wget http://URL               # Datei herunterladen
w3c http://URL                # Konsolen-Web-Browser

Programmieren ed

Compiler
gcc QUELLCODE.c -o ZIEL_DATEI # C
g++                           # C++
gfortran                      # fortran
python DATEI                  # Python

erstellen
make                          # nach Regeln aus der Datei Makefile

sonstige
ldd DATEI                     # benötigte Bibliotheken auflisten
valgrind DATEI                # Speicher debugen

sonstige ed

eine Bedingung testen
test ...
test 2 -lt 5
[ ... ]

Categories: Computer