Die Shell(meist bash) interpretiert das eingegebene Kommando/Befehl, ersetzt bestimmte Muster durch Dateinamen oder Variableninhalte und führt erst dann das Kommando aus. Das Kommando sollte im Pfad liegen und der Benutzer braucht das Ausführungsrecht. Ansonsten ruft man das Programm mit ./Befehl auf oder . Pfad/Befehl. Wenn der Pfad mit genannt wird braucht es ein Leerzeichen zwischen dem Punkt und dem Pfad-Befehl.
| Programm --langeOption1 --langeOption2 Datei | Dem aufzurufenden Programm können meherere Optionen mitgegeben werden |
| Programm -option1option2 Datei | Kurze Optionen wie -z -v -f können als -zvf zusammengefasst werden |
Die login-shell ist die shell bei der man sich einloggt. Sie arbeitet verschiedene Konfugurationsdateien ab. Alle Sub-shells erben ihre Eigenschaften. Die Sub-shells kann man auch noch separat konfigurieren. Dazu definiert man Variablen. Sollen diese an weitere Subshells weitergereicht werden muß man diese Variablen exportieren.
Login-shells arbeiten 2 scripts ab. das 3. und 4. script wird nur abgearbeitet, wenn das jeweils Vorige nicht existiert.
1. /etc/profile
2. ~/.bash_profile
3. ~/.bash_login
4. ~/.profile
Eine Nicht-Login-shell arbeitet nur die ev. vorhandene ~/.bashrc ab.
Will man für die Ausführung eines scriptes keine Sub-shell aufrufen, dann erreicht man das durch das Voranstellen eines Punktes vor dem Scriptaufruf. Jetzt bleiben im script gesetzte Variablen erhalten. In dem script darf aber kein "exit" vorkommen, da dieses nicht nur das script, sondern auch die shell beenden würde.
Befehle kann man auch verketten.
| Befehl1 ; Befehl2 | das Kommando2 wird nach Kommando1 ausgeführt |
| Befehl1 & Befehl2 | das Kommando1 und Kommando2 werden gleichzeitig ausgeführt (K1 im Hintergrund, K2 im Vordergrund) |
| Befehl1 && Befehl2 | das Kommando2 wird nur dann ausgeführt, wenn Kommando1 fehlerfrei abgeschlossen wurde (Rückgabewert 0) |
| Befehl1 || Befehl2 | das Kommando2 wird nur dann ausgeführt, wenn Kommando1 nicht fehlerfrei abgeschlossen wurde (Rückgabewert ungleich 0) |
Befehl1 || Befehl2 && Befehl3 , (Befehl1 || Befehl2) && Befehl3 , Befehl1 || (Befehl2 && Befehl3) - egal ob und wo eine Klammer gesetzt wird, der Befehl3 wird auf jeden Fall abgearbeitet
Im Kommandospeicher werden gespeicherten Befehle in die Datei ~/.bash_history im Heimatverzeichnis des jeweiligen Users abgelegt.
Mit der Hoch-,Runter-Taste und der Bild-Hoch-Taste kann man die letzten Befehle wiederholen.
Mit der Umschalt+Bild-Hoch-Taste kann man die letzten Ausgaben in der shell wiederholen.
Kopieren von Textstellen mit Markieren mit der Maus, Einfügen mit der mittleren Maustaste.
Programme lassen sich mit Strg-c abschießen, mit Strg-z anhalten und angehaltene Programme mit bg Programm in den Hintergrund schieben. Die bash-shell kann man mit exit verlassen.
$(Befehl) entspricht 'Befehl'
Beispiele
| cat /tmp/.bashrc | sed -e "s/you/du/g" | g=global you mit du in der bashrc ersetzen |
Seitenanfang oder Hauptseite
Es gibt 3 Kanäle für die Datenein- und ausgabe: stdin(meist Tastatur), stdout(meist Bildschirm), stderr(Fehler werden meistens nicht am Monitor angezeigt).
| ls -l | sort | pipes können nur bei Programmen mit Standard-Output benutzt werden, hier wird die Ausgabe des ls-Kommandos für die Eingabe des sort-Kommandos benutzt |
| find / Datei > /tmp/ergebnis | Die Ausgabe erfolgt nicht über den Bildschirm, sondern nur in die Datei ergebnis. |
| find / Datei >> /tmp/ergebnis | Die Ausgabe wird bei schon bestehender Datei hintenangehängt |
| find / Datei | tee /tmp/ergebnis | Mit tee wird das Ergebnis sowohl in die Datei, als auch auf den Bildschirm ausgegeben. |
| ls -l / | xargs tar -czf /dev/sl0 | xargs liest von Std-out und übergibt es einem Befehl als Argument |
| Befehl 1> Datei | 1> und > schreiben std-out(Bildschirm oderDrucker) in eine Datei |
| Befehl 2> Datei | 2> schreibt alle Fehler in eine Datei |
| Befehl 2>&1 Datei | std-out und Fehler werden in eine Datei umgeleitet |
| Befehl < Datei | der Befehl erhält seine Argumente aus einer Datei, nicht von der Tastatur |
Seitenanfang oder Hauptseite
? |
ein Fragezeichen bedeutet ein Zeichen |
A* |
ein Stern bedeutet kein oder beliebig viele Zeichen, hier A |
. |
Ein Punkt steht für genau einen beliebigen Buchstaben, außer das Zeilenende. |
[ a-zA-Z0-9 ] |
Ein Zeichen aus der Menge Klein- und Großbuchstaben und Ziffern , oder [ a,3-6 ] |
A/+ |
Das dem Operator \+ voranstehende Zeichen ein mal oder öfter, hier A |
A/? |
Das A null- oder 1-Mal. |
$ |
Zeilenende |
\< |
Wortanfang |
\> |
Wortende |
/. |
edes Zeichen nach dem Backslash verliert seine Sonderbedeutung, hier ist ein Punkt nur ein Punkt |
!A |
alle Zeichen außer A |
Reguläre Ausdrücke dürfen beliebig miteinander verknüpft werden. So spricht das Konstrukt
[A-Z]*.[0-9][0-9][0-9]_[!B]
jede Datei an, deren Name mit einem Großbuchstaben [A-Z] beginnt. Danach folgt irgendwas *, beliebig lang, dann folgt ein Punkt , gefolgt von drei Ziffern ([0-9]). Danach kommt ein Unterstrich und dann ein beliebiges Zeichen - außer B.
Seitenanfang oder Hauptseite
Umgebungsvariablen werden mit der Anweisung Variablenname=Wert angelegt, bzw. verändert. Angezeigt wird sie mit einem führenden $-Zeichen $Variablenname. Variablennamen werden üblicherweise in Großbuchstaben geschrieben. Inhalt können Zahlen(ohne Komma) und Strings "mit Leerzeichen und dann Anführungszeichen herum" sein.
Beispiel:
NAME=schubert
VORNAME=Franz
echo Hallo $VORNAME $NAME
Hallo Franz Schubert
ist dann die Ausgabe in der shell.
Mit set erhält man alle definierten Variablen und deren Funktionen. Mit unset NAME wird die Variable NAME gelöscht.
Wird eine neue shell z.B. mit bash neu erzeugt, werden nur die StandardVariablen übernommen. Selbst kreierte Variablen kann man deshalb für die Subshells exportieren oder gleich so definieren.
export Variablenname
export Variablenname=Wert
Wird diese Variable in der Obershell verändert, verändert sich die Variable in der subshell nicht(Kopie).
Variablen, die immer wieder benötigt werden, können in der Datei ~/.profile im Homeverzeichnis jedes Users definiert werden.
env -i Programm ruft das Proggramm in einer Sub-shell ohne Umgebungsvariablen auf.
Es gelten die Variablen ($1 - $9, $#, $*, $@) innerhalb einer Funktion als lokale Parameter. $1 bezeichnet den ersten übergebenen Parameter, $2 den zweiten usw. $*, $@ und $# beziehen sich auf die Parameter der Funktion und nicht mehr auf die des Scripts. $0 bezeichnet das Kommando selbst.
Seitenanfang oder Hauptseite
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
| alias Wunschname="Befehl" | alias anlegen , Datei erhält damit neuen Namen, keine Parameter oder Rekursion |
| alien --to-rpm | wandelt DebianPakete zu rpm's, auch --to-dep=wandelt rpmPakete zu DebianPaketen |
| apropos | suche nach Begriffen in ManPages |
at |
Kommandos erst später ausführen lassen |
Befehle alphabetisch sortiert, Seitenanfang oder Hauptseite
bg Jobnummer |
schiebt Prozess in den Hintergrund und gibt ihm wieder Rechenzeit, nachdem er mit Strg-Z gestoppt wurde, mit fg holt man ihn wieder vor |
Befehle alphabetisch sortiert, Seitenanfang oder Hauptseite
cat Datei1 Datei2 > film.mpg |
Dateien anzeigen lassen, hier aus 2 Dateien eine Große machen |
| cd .. | in ein Verzeichnis wechseln, hier ein Verzeichnis höher, auch nach /verzeichnis wechseln oder ~=home, /=root |
| chattr +a Datei | Sonderrechte für ext2-Filesystem setzen, hier auf Datei das a-Attribut ergänzen, siehe Rechte |
| chgrp users /home | Gruppenzugehörigkeit von Dateien ändern |
| chmod -R :users /home | Zugriffsrechte von Dateien ändern, hier Gruppenzugehörigkeit ändern, siehe Rechte |
| chown -R fred:groups | Eigentümer von Dateien ändern, hier fred mit Gruppe users |
| clear | Löschen des ganzen Bildschirms |
| cksum | berechnet die CRC. Prüfsumme einer Datei |
| cp | Kopieren von Dateien |
| cpio | Kopieren von Dateien und Verzeichnisbäumen in bzw. aus Archiven |
| crontab | Kommandos in Zeitintervallen ausführen lassen |
| cut -d: -f1 /etc/passwd | schneidet Felder aus Zeilen aus hier schneidet cut alle Usernamen aus der Datei /etc/passwd |
Befehle alphabetisch sortiert, Seitenanfang oder Hauptseite
dd if=media/cdrom/disk/bootdisk of=dev/fd0 |
Konvertieren und Kopieren von Dateien, hier bootdisk mit CDrom erstellen, siehe auch MBR |
| dd_rescue | wie dd, bricht aber bei Fehlern nicht ab, hat andere Syntax |
| df | freien Speicherplatz einer Datei ausgeben |
| dfspace | freien Speicherplatz auf einem Dateisystem ausgeben |
| diff | Vergleich von 2 Dateien und Anzeigen der Unterschiede |
| du | disk usage, belegten Speicherplatz ausgeben |
Befehle alphabetisch sortiert, Seitenanfang oder Hauptseite
| e2fsck | bzw. fsck.ext2 für das Überprüfen des Second Extended Filesystem, siehe auch Partitionierung und Formatierung |
echo Hallo | wall |
Text ausgeben, hier ein Hallo an alle user senden, echo $?=Returncode des letzten Kommandos |
| ed | editieren von Textdateien |
| edquota | quotaeinträge hinzufügen oder ändern, siehe auch Quotas |
| egrep | suchen in Dateien |
| exit | beendet die shell, auch Strg-d oder logout |
| expand | macht Tabs zu Leerzeichen |
| export | Variablen werden in Subshells übernommen |
Befehle alphabetisch sortiert, Seitenanfang oder Hauptseite
| fdupes | sucht doppelt vorhandene Dateien |
| fg JobID | schiebt Job in den Fordergrund(nachdem er mit bg in den Hintergrund geschoben wurde ) |
| file | Anzeige des Dateityps |
| fmt -80 Datei | formatiert Text, hier zu 80 Zeichen Breite |
find /verzeichnis -name "Dat*" |
Suchen nach Dateien , hier in /verzeichnis nach Name Dat-irgendwas, auch find -perm 2755=Suche nach Dateien mit Recht 2755 |
| finger | Informationen zu anderem Benutzer ausgeben |
| format | Formatieren von Floppy-Disks |
| fsck -f /dev/hda7 | Partition überprüfen, f= force(Überprüfung auch bei gesetztem Valid-Flag), auch fsck.vfat oder fsck.xfs, siehe auch Partitionierung und Formatierung |
| ftp | Kopierenvon Dateien auf fremde Systeme |
| fuser | zeigt Prozesse an, die auf Dateien undDateisysteme zugreifen |
Befehle alphabetisch sortiert, Seitenanfang oder Hauptseite
| gcc | c-compiler, zur Installation von Programmen aus Quellcode, siehe sourcecode |
| grep "^[^#]" | Suchen in Dateien, hier alle Zeilen ohne # am Anfang |
| groups | Gruppenzugehörigkeit eines Benutzers ausgeben |
| groupadd –G gruppe1,gruppe2 fred | fred wird Mitglied der Gruppe 1 und 2(Eintrag in /etc/group), siehe auch Benutzer und Gruppen |
| groupmod | GruppenID, siehe auch Benutzer und Gruppen |
| gpasswd -a fred steintal | Gruppenpasswort anlegen, hier fred als admin festlegen , siehe auch Benutzer und Gruppen |
Befehle alphabetisch sortiert, Seitenanfang oder Hauptseite
head -c20 Datei |
Ausgeben von Anfangszeilen in Dateien, hier die ersten 20 Zeilen, Standard 10 Zeilen |
| howto | Handbücher in /usr/share/doc/howto, wie Aufgaben gelöst werden, muß installiert werden |
Befehle alphabetisch sortiert, Seitenanfang oder Hauptseite
id |
eigene UID und GID ausgeben, siehe auch Benutzer und Gruppen |
| ifconfig eth0:1 IP-Adr netmask Netzmaske broadcast Br-cast-Adr | Netzwekeinstellung anschauen und Ändern, hier die 2.logische Karte am 1. Anschluß, mit IP-Adresse, Netzwerkmaske und BroadcastAdresse |
| insmod mii | Netzwerktreiber mii aktivieren |
| isapnp /etc/isapnp.conf | schreibt die Einstellungen aus seiner Konfigurationsdatei wieder zurück an die Karten. Dieser Vorgang muß nach jedem Booten wiederholt werden. Das Programm isapnp sollte über ein Startscript bei jedem Systemstart aufgerufen werden, siehe pnpdump sowie linux-praxis |
| iptables | FirewallEinstellungen |
Befehle alphabetisch sortiert, Seitenanfang oder Hauptseite
| jobs | Liste aller Jobs, Vordergrund- Hintergrund und gestoppte Jobs mit ihren JobIDs |
join |
Mischen von 2 Dateien , indem je zwei Zeilen mit identischen Schlüsselfeldern zu einer Ausgabezeile verbunden werden. |
Befehle alphabetisch sortiert, Seitenanfang oder Hauptseite
kill -Signalnummer PID |
Beenden von Prozessen , Signalnummern: 15=Standard=Programm kann noch abschließen, 9=kill=Holzhammer, 1=HUB=reload |
| killall Befehl | alle Prozesse, die zu Befehl gehöhren werden geschlossen (Eltern + Kind) |
Befehle alphabetisch sortiert, Seitenanfang oder Hauptseite
last |
An- und Abmeldezeiten von Benutzern ausgeben |
| ldconfig | integriert alle Libraries die gefunden werden in die Datei /etc/ld.so.cache, siehe auch shared libraries |
| ldd /pfad/Datei | benötigte Bibliothek einer Binärdatei anzeigen, siehe auch shared libraries |
| less Datei | Anzeigen von Datei |
| ln -s Ziel Linkname | Anlegen von Links, -s=symbolic Link, siehe Dateitypen und Flags |
| lp | Drucken von Dateien |
| lpstat | Drucker-StatusInformationen ausgeben |
| ls -lai | Auflisten von Dateinamen hier -la=lange Version + alles + inodeNummer, siehe Dateitypen und Flags |
| lsattr Datei | Attribute(Sonderrechte) von Datei anzeigen, siehe Rechte |
| lsmod | Anzeige aktiver Treiber |
| lsof | Anzeige geöffneter Dateien |
| lspci | ermöglicht es zu bestimmen, welche Karten am PCI-Bus angeschlossen sind und als was sie sich ausgeben |
| lsusb | Infos über angeschlossene USB-Geräte |
Befehle alphabetisch sortiert, Seitenanfang oder Hauptseite
mail $Empfänger -s $Betreff < Datei |
Mail schicken und empfangen, hier mail senden mit Betreff und Inhalt aus Datei |
| make | erzeugt makefile zum Installieren von QuellcodeProgrammen, siehe auch sourcecode |
| makeswap | Swap-Partition formatieren , siehe auch Partitionierung und Formatierung |
| man man | HilfeInformation abrufen, hier wird der Umgang mit den man-pages beschrieben |
| mc | Norton-Clone |
| md5sum | erzeugt und überprüft MD5 Prüfsummen(128 Bit, RFC 1321) |
| mkdir | Verzeichnis erstellen |
| mkfs -t reiserfs /dev/hda1 | Formatieren, hier auf hda1 das Dateisystem reiserFS erstellen , siehe auch Partitionierung und Formatierung |
| modprobe usbcore | Einhängen eines Treibers, hier des USB-Treibers, dazu ist noch der Aufruf von usb-ohci.o oder usb-uhci.o nötig |
| more | Seitenweises Anzeigen von Dateien |
| mount | Einbinden von Geräten und Dateisystemen , siehe mounten |
| mv | Umbenennen und Bewegen von Dateien , Dateisystegrenzen beachten , bei mehreren Dateien oder einem Baum muß das Ziel ein Verzeichnis sein |
Befehle alphabetisch sortiert, Seitenanfang oder Hauptseite
newgrg |
Gruppenzugehörigkeit wechseln |
| nice -n PrioZahl Befehl | Starten von Programmen mit veränderter Priorität, Nettigkeit zum Prozessor , 0 bis 20 für user, -19 bis 20 für root |
| ni | Nummerieren der Zeilen von Dateien |
| nl Datei | nummeriert die Zeilen einer Datei |
| nohup Befehl | startet einen Befehl und ignoriert dann das Hangup-Signal (SIGHUP) für diesen Prozeß, std-out > nohup.out |
| nslookup | Namen zu IP-Adresse und umgekehrt herausfinden |
Befehle alphabetisch sortiert, Seitenanfang oder Hauptseite
od |
gibt Dateien oder einen Eingabedatenstrom als dezimalen, oktalen oder hexadezimalen Dump aus |
Befehle alphabetisch sortiert, Seitenanfang oder Hauptseite
| PATH=$PATH:/usr/local | Pfad festlegen, hier den Pfad um /usr/local erweitern, Suchreihenfolge:alias, Pfad, Anzeige mit $PATH |
passwd fred |
Passwort für fred vergeben und ändern, wird in /etc/shadow verschlüsselt gespeichert |
| paste | verknüpft zwei oder mehrere Dateien zeilenweise |
| pg | Seitenweises Ausgeben von Dateien |
| pinfo Befehl | Kurzhilfe zu Befehl, muß nachinstalliert werden |
| ping -c1 -W1 10.0.0.1 &> /dev/null | Verbindung von entfernten Systemen testen, hier nur 1 Ping innerhalb 1 Sekunde, Ausgabe umgeleitet in Mülleimer |
| pnpdump > /etc/isapnp.conf | scannt ISA-Bus nach PnP-Karten und gibt die Ergebnisse in für Menschen lesbarer Form aus, hier schreiben in eine Datei, siehe isapnp |
| pr | Datei druckformatiert ausgeben |
| ps -h | Prozesse ausgeben , human-like=Kilo, Mega, Giga, -uax=alle Prozesse ansehen, incl. user, f=Baum mit Eltern |
| pstree -p | Prozesse in Abhängigkeit zeigen |
| pwd | aktuelles Verzeichnis ausgeben |
Befehle alphabetisch sortiert, Seitenanfang oder Hauptseite
| quota | Quota ansehen, siehe auch Quotas |
| quotacheck -avug | Quotaanalyse, siehe auch Quotas |
quotaon avug |
Quotaeinträge aktivieren, siehe auch Quotas |
| quotaoff | Quota deaktivieren, siehe auch Quotas |
Befehle alphabetisch sortiert, Seitenanfang oder Hauptseite
| readlink | zeigt das symbolische Ziel eines Links | |
| renice PrioZahl PID | Priorität eines laufenden Befehls verändern, Priorität kann nur 1* verändert werden | |
| repquota -a | Quotabericht erstellen, siehe auch Quotas | |
rpc |
Kopieren von Dateien auf entfernte Systeme |
|
| rlogin | Anmelden auf entfernten Rechner | |
| rm -r Verzeichnis | löschen von Dateien , Option -r=Verzeichnis rekursiv löschen | |
| rmdir | Löschen von leeren Verzeichnissen | |
| rmmod 8139too | Netzwerktreiber 8129too deaktivieren | |
| route add default gw 10.0.0.1 | Routingtabelle anzeigen(-n=ohne DNS), hier wird das default Gateway auf 10.0.0.1 gesetzt | |
| rpm qpi xnc-5.0.2-1.i386.rmp | Red Hat Packet Management, q=Query, p=packages, i=infos, siehe auch rpm | |
| rsh | Shell auf entfernten Rechner starten | |
Befehle alphabetisch sortiert, Seitenanfang oder Hauptseite
| scp Qelle Ziel | secure copy |
| sed -e "s/8139too/treiber/" | streaming editor, bearbeitet in Kombination mit anderen Programmen Dateien , hier ersetzen von 8139too mit treiber :1,$, s/.../.../g =Anfangszeile bis Ende, in der ganzen Datei, Punkt-aktuelle Position, [...]+=ein oder mehrmals \<=Wortanfang, \>=Wortende |
| setserial /dev/ttyS0 spd_vhi | Konfigurationsinformation einer seriellen Schnittstelle setzen oder lesen, hier , hier wird die Geschwindigkeit der 1. seriellen Schnittstelle auf 115kb eingestellt |
sleep |
Stilllegen von Prozessen |
| shred | sicheres Löschen von Dateien |
| sort | Sortieren von Dateien, gebräuchlich: ls -l | sort |
| split -b 1m netscape.tgz | Zerteilen von Datei in Dateien mit vorgegebener Größe, hier 1 MB, zusammenbauen mit cat |
| ssh IP-Adresse | login in remote-Rechner mir ssh-Server, möglich auch mit loginname und hostname , Kennwort ist nötig |
| startx xserver :1 | Starten der grafischen Oberfläche mittels eines xservers wie z.B.KDE, hier auf Terminal1, zu erreichen mit Alt- F8 , siehe auch X |
| stty | Terminal-Einstellung setzen und ausgeben |
| su | Benutzer wechseln , auch -=behalte Umgebung oder -l=behalte root-Umgebung oder sux=behalte Umgebung in X |
| sum | Prüfsumme von Dateien berechnen (16 Bit) |
Befehle alphabetisch sortiert, Seitenanfang oder Hauptseite
| tac | gibt wie cat Dateien aus, nur diesmal in umgekehrter Reihenfolge, Zeile für Zeile |
tail -f -n 5 /var/log/messages |
Letzte Zeilen einer Datei ausgeben, Gegenteil von head, f=hier wird die sich ändernde Fehleranzeige laufend überprüft, n 5= die letzten 5 Zeilen |
| tar xzf archiv.tar.gz -c /usr/local | Kopieren von Dateien und Verzeichnisbäumen , hier entpacken nach /usr/local x=extract=entpacken(c=compare=packen), z=gzip-Archivv, f=file, -c=Ziel, siehe Sichern |
| tcpdump -nti ippp0 port !22 | Mitlesen des Netzwerkverkehrs, n=ohne DNS, t=timestamp, i=interface, ipp0=Internet , port !22=außer port 22 |
| tee | Aufspalten der Ausgabe für eine Pipe |
| telnete | Remote Login auf anderen Rechenr |
| top | Anzeige laufender Prozesse in Echtzeit, Optionen im Programm mit h aufrufen , Anzeige:s=sleeping, r=running, T=stopped, Z=Zombie, D=uninteruptable sleep, ??w=Systemprozesse, nicht auslagerbar |
| tftp | vereinfachtes FTP |
| time Befehl | Zeitmessung für Programme , wie lange braucht der Befehl für seine Abarbeitung? |
| touch Datei | Zeitstempel, existiert die Datei noch nicht, wird eine leere Datei angelegt, auch möglich mit >Datei oder cp /dev/null Datei |
| tr | Löschen oder Ändern von Zeichen in einem Text |
| traceroute -n 10.0.0.1 | Verfolgen der Strecke, die ein Datenpacket nimmt, -n=ohne DNS |
| tree | Anzeige eines Verzeichnisbaums |
| tty | Terminalnamen ausgeben |
Befehle alphabetisch sortiert, Seitenanfang oder Hauptseite
umask 022 |
Rechte-Maske zum Anlegen und Anzeigen von Dateien und Verzeichnissen, hier bekommen Dateien die Rechte 644, Verzeichnisse 755, siehe Rechte |
| uname | Systemname ausgeben |
| unexpand | macht aus Leerzeichen Tabs |
| uniq | löscht hintereinanderliegende gleiche Zeilen, z.B. Leerzeilen |
| usbmgr | ein Daemon, der benötigte USB-Module etsprechend seiner Konfigurationsdateien läd und entläd, siehe usb |
| usbmodules | Programm für den usb-Agenten, siehe usb |
| useradd –m -c "Fred Feuerstein" | user fred wird incl. Voreinstellungen im /home –Verzeichnis angelegt(/etc/users, mit -m), er erhält den langen Namen "Fred Feuerstein"(mit -c) , siehe auch Benutzer-Verwaltung |
| userdel -r fred | Löschen des User fred incl. seines Homverzeichnisses , siehe auch Benutzer-Verwaltung |
| usermod -g 101 | user ändern, hier Gruppenzugehörigkeit eintragen, siehe auch Benutzer-Verwaltung |
| usermod -G 101,102,103 Hannes | user Hannes wird Mitglied der Gruppen 101, 102, 103, siehe auch Benutzer und Gruppen |
Befehle alphabetisch sortiert, Seitenanfang oder Hauptseite
vi |
StandardEditor, zum Schreiben erst in den Eingabemodus wechseln, i=einf=a=Eingabemodus, Esc=Kommandomodus
yy=Zeile kopieren, p=einfügen, dd=Zeile löschen, dw=Zeichen löschen, /text=text suchen, h=Zeichen nach rechts, j=zeichen nach oben, k=Zeichen nach unten, l=Zeichen nach Links, 7l=7Zeichen nach Links Esc:q!=vi verlassen ohne zu speichern, Esc:wq=Datei speichern und verlassen , siehe vi |
Befehle alphabetisch sortiert, Seitenanfang oder Hauptseite
wall |
Nachrichten an Benutzer schicken |
| wc | Zeilen, Wörter und Zeichen einer Datei zählen |
| whatis Befehl | Kurzbeschreibung |
| which Befehl | findet Pfad eines Befehls |
| who | Anzeigen dere aktiven Benutzer |
| wipe | sicheres Löschen von Dateien und Verzeichnissen |
Befehle alphabetisch sortiert, Seitenanfang oder Hauptseite
xinit |
Initialisierung von X, siehe X |
| xnc | Norton Clone im grafischen Modus |
Befehle alphabetisch sortiert, Seitenanfang oder Hauptseite
Befehle alphabetisch sortiert, Seitenanfang oder Hauptseite
zcat |
zeigt eine komprimierte Textdatei an |
Befehle alphabetisch sortiert, Seitenanfang oder Hauptseite
| Befehl& | der Befehl startet im Hintergrund |
| jobs -l | Liste aller Jobs, Vordergrund- Hintergrund und gestoppte Jobs mit ihren JobIDs, l=auch ProzessIDs werden angezeigt |
| bg Jobnummer | schiebt Prozess in den Hintergrund und gibt ihm wieder Rechenzeit, nachdem er mit Strg-Z gestoppt wurde, mit fg holt man ihn wieder vor |
| fg Jobnummer oder fg Befehl | schiebt Job in den Vordergrund(nachdem er mit bg in den Hintergrund geschoben wurde) |
| nice -n PrioZahl Befehl | Starten von Programmen mit veränderter Priorität, Nettigkeit zum Prozessor , 0 bis 20 für user, -19 bis 20 für root |
| renice PrioZahl PID | Priorität eines laufenden Befehls verändern, Priorität kann nur 1* verändert werden, kann alle Prozesse eines Users gleichzeitig ändern |
| ps h ps ax | grep Befehl |
Prozesse ausgeben , h=human-like=Kilo, Mega, Giga, -uax=alle Prozesse ansehen, incl. user, f=Baum mit Eltern ps ax | grep Befehl wenn man einen bestimmten Befehl oder mehrere Prozesse sucht |
| kill -Signalnummer PID | Beenden von Prozessen , Sinalnummern: 15=Standard=Programm kann noch abschließen, 9=kill=Holzhammer, 1=HUB=reload |
| killall Befehl | alle Prozesse, die zu Befehl gehöhren werden geschlossen(Eltern + Kind) |
| top | Anzeige laufender Prozesse in Echtzeit, Optionen im Programm mit h aufrufen , aktivste Programme sind oben, Ende mit q Anzeige:s=sleeping, r=running, T=stopped, Z=Zombie, D=uninteruptable sleep, ??w=Systemprozesse, nicht auslagerbar |
| nohup Befehl | startet einen Befehl und ignoriert dann das Hangup-Signal (SIGHUP) für diesen Prozeß, std-out > nohup.out |
ls -R / > datei 2>&1 & schreibt std-out und Fehler in Datei und tut das im Hintergrund.
ping 127.0.0.1
Konfigurationsdateien und Pfade werden der Reihe nach abgearbeitet. Der erste passende Eintrag wird benutzt.
Seitenanfang oder Hauptseite
| echo Path | Ausgabe des aktuellen Pfades |
| wich Befehl | gibt das erste passende Kommando incl. Pfad aus |
| type Befehl | arbeitet wie which, aber etwas ausführlicher |
| whereis Befehl | findet Programm, Handbücher und Quellcode |
| find /usr -size +12k -name "M*" -exec cp {} /tmp \; | sucht die angegebene Datei, hier kopiere alle Dateien des ganzen /usr Verzeichnisses, die größer als 12 Kilobyte sind und deren Namen mit M beginnt in das Verzeichnis /tmp |
| locate Befehl | durch sucht sehr schnell die Datenbank, die durch updatedb erstellt wurde, bei Neuinstallation muß dafür vorher updatedb aufgerufen werden (normalerweise 1* täglich mittels cron-job) |
Fehlersuche
Mit der Datei /var/log/messages kann man Fehlern auf den Grund gehen. Zur Laufzeit hilft hier der Befehl
tail -f /var/log/messages
Die Eintragungen, welche dort erfolgen sollen, werden über den syslog-daemon(syslogd muß gestartet sein), in der Datei /etc/syslog.conf in Regeln, in Form von Herkunft.Priorität Aktion, festgelegt.
Herkunftskategorien sind
| kern | Systemmeldungen direkt vom Kernel |
| auth | Meldungen vom Sicherheitsdienst des Systems |
| authpriv | Vertrauliche Meldungen der internen Sicherheitsdienste |
| Meldungen des Mail-Systems | |
| news | Meldungen des News-Systems |
| uucp | Meldungen des UUCP-Systems |
| lpr | Meldungen des Druckerdaemons |
| cron | Meldungen des Cron-Daemons |
| syslog | Meldungen des syslog-Daemons selbst |
| daemon | Meldungen aller anderer Daemon-Prozesse |
| user | Meldungen aus normalen Anwenderprogrammen |
| local0-local7 | frei verwendbar |
Prioritäten in absteigender Reihenfolge:
| emerg | Der letzte Spruch vor dem Absturz |
| alert | Alarmierende Nachricht, die sofortiges Eingreifen erforderlich macht |
| crit | Meldung über eine kritische Situation, die gerade nochmal gut gegangen ist |
| err | Fehlermeldungen aller Art aus dem laufenden Betrieb |
| warn | Warnungen aller Art aus dem laufenden Betrieb |
| notice | Dokumentation besonders bemerkenswerter Situationen im Rahmen des normalen Betriebs |
| info | Protokollierung des normalen Betriebsablaufes |
| debug | Mitteilungen interner Programmzustände bei der Fehlersuche |
| none | Ist keine Priorität im eigentlichen Sinn, sondern dient zum Ausschluß einzelner Herkünfte |
Steht vor der Priorität kein Gleichheitszeichen, bedeutet die Angabe der Priorität immer diese und alle höheren.
Als Aktion können die Meldungen in eine Datei geschrieben, dem syslog-daemon übergeben, auf den Bildschirm eines bestimmten Users oder an aller User geschrieben werden.
Beispiele:
*.*;authpriv.none /var/log/messages
kern.warn root,foo
kern.warn;*.err;authpriv.none /dev/tty10
*.*;authpriv.none @admhost
wobei beim letzten Beispiel der zentrale Server admhost die logs speichert.
Die Datei kann schell wachsen. Deshalb sollte man per cron-job den Befehl logrotate ausführen lassen, der die Datei komprimiert.
Seitenanfang oder Hauptseite
Ein script beginnt immer mit der Zeile
#!/bin/bash
damit die richtige shell zum script aufgerufen wird. Beginnende Zeilen mit Doppelkreuz werden ansonsten nicht interpretiert. Es braucht Ausführungsrechte, die mit
chmod +x script
gesetzt werden. Es können Parameter(Variablen) übergeben werden:
Kommando Parameter1 Parameter2
addiere 10
20
| #!/bin/bash # Addition von 2 Zahlen let Summe=$1+$2 echo $1 + $2 = $Summe |
| Script | Parameter1 | Parameter2 | Parameter3 | Parameter4 | alle Parameter | Anzahl der Parameter | Parameterangabe über 9 |
| $0 | $1 | $2 | $3 | $4 | $*, $@ | $# | ${n} |
Start-Stop-script
Start-Stop-scripte werden zum Beispiel für die RunlevelVerwaltung benutzt:
#!/bin/bash
case &1 in
start) /usr/local/thttpd
;;
stop) killall thttpd
;;
esac
if then else elif fi case while for done
Die if-Anweisung überprüft einen Wahrheitsgehalt und gibt bei erfüllter Bedingung eine 0 aus. Ansonsten wird nochmal die elif-Bedingung abgefragt. Trifft Beides nicht zu wird nichts oder der else-Befehl wird ausgeführt..
if [ Ausdruck ]
then
Kommandos
elif [ Ausdruck ]
then
Kommandos
else
Kommandos
fi
Etwas vereinfachen kann man die Abfrage nach unterschiedlichen Bedingungen mit case.
case Variable in
Muster1) Kommando1 ;;
Muster2) Kommando2 ;;
Muster3) Kommando3 ;;
...
esac
Eine for-Schleife durchläuft die Schleife so oft, wie die Liste Elemente hat. Bei jedem Schleifendurchlauf bekommt die Variable den Wert des jeweiligen Listenelements.
for Variable1 Variable2
do
Kommando
done
Die Aufgabe von Funktionen in Programmiersprachen ist, wiederkehrende Aufgaben oder logisch zusammenhängende Teile eines Programms zu einzuteilen. Funktionen können sich rekursiv selbst aufrufen. Einer Funktion können Parameter übergeben werden. Funktionen werden mit abschließender leeren Klammer aufgerufen. die Shell erkennt an der leeren Klammer den Funktionsaufruf und braucht damit nicht notwendigerweise den Befehl funktion.
function Funktionsname()
{
Kommando1
...
}
Vergleichsoperatoren
| -gt | > | greater than |
| -ge | > = | greater equal |
| -eg | = | equal |
| -le | < = | lower equal |
| -lt | < | lower than |
| $? | Vergleichsoperator letzter Befehl | |
| == | = = | ZeichenkettenVergleich gleich |
| != | != | ZeichenkettenVergleich ungleich |
Seitenanfang oder Hauptseite
Beim booten wird die Hardwareuhr des Motherboards gelesen. Danach verwaltet Linux die Zeit unabhängig davon in einer Softwareuhr. Die Hardwareuhr wird mit dem Befehl hwclock, die Softwareuhr mit dem Befehl date angezeigt und gestellt. Normalerweise wird die Hardwareuhr nach GMT gestellt und dann mittels script tzselect auf die Zeitzone zugewiesen oder in der Datei /etc/timezone eingetragen. Statt tzselect kann man auch manuell die Zeit mit dem Befehl
ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime
einstellen.
Genauere Zeiten lassen sich über das NTP(Netware Time Protokoll) realisieren. Mit dem Daemon ntpd kann man sowohl timeserver, als auch client sein. Ansonsten läßt sich in der crontab z.B. auch dieser Eintrag machen:
30 * * * * root /usr/sbin/ntpdate ntp3.fau.de
Nur Eine der beiden Möglichkeiten kann zeitgleich laufen. Eine Liste von Zeitservern gibt es beispielsweise hier. Die eingestellte Zeit darf 1000 Sekunden Unterschied zur Hardwarezeit nicht überschreiten.
Wiederkehrende Abläufe kann man mittels cron-Daemon automatisieren. Einmalig zeitgesteuerte Befehle kann man mit dem at-Befehl absetzen.
cron prüft jede Minute seine Konfigurationsdateien nach Einträgen, die abgearteitet werden sollen. User können Anweisungen mit dem Befehl crontab eintragen. Systemweite Eintragungen trägt man mit einem Editor in die Datei /etc/crontab(bzw. ev. Dateien im Verzeichnis /etc/cron.d) ein. Außerdem gibt es die Verzeichnisse(dessen Dateien auch mit crontab benannt werden) /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly und /etc/cron.monthly, welche scripe enthalten können, die entsprechend stündlich(immer Halb), täglich(0:00), wöchentlich(Sa 0:00)oder monatlich(am 1. 0:00) ausgeführt werden.
Zuerst werden in crontab verschiedene Variablen definiert. Das Format der eigentlichen Einträge lautet:
Minute(0-59) Stunde(0-23) Tag(0-31) Monat(1-12) Wochentag(0-7[0 und 7 entsprechen Sonntag]) Kommando
Erlaubt sind Bereiche(2-6), Listen(1,4,15-17,31) und Schrittweiten( 0-23/2).
| * * 13 * 5 username Befehl | heißt nicht Freitag, der 13., sondern jeden Freitag und jeden 13. des Monats |
Wenn das Stundenformat gewählt wurde müssen auch Minuten gewählt werden, da ansonsten in der angegebenen Stunde der Befehl jede Minute(*) ausgeführt wird.
Die Verwendung von crontab kann mit den Dateien
/etc/cron.allow
/etc/cron.deny
eingeschränkt werden. Jeder Username belegt eine Zeile.
Anacron führ Kommandos auch aus, wenn der Rechner zur angegebenen Zeit nicht lief. Die zugehörige /etc/anacrontab hat folgende Form:
Periode Verzögerung Job-Identifikation Kommando
7 14 logrotate logrotate /etc/logrotate.conf
Die Periode kann täglich(1), wöchendlich(7) oder monatlich(31) angegeben werden. Die Verzögerung wird in Minuten angegeben. Wenn die Verzögerungszeit abgelaufen ist wird der Befehl abgearbeitet. Mit Hilfe der Verzögerungszeit können gleichzeitige Befehle zeitversetzt gestartet werden. Mit dem Namen der Job-Identifikation wird eine Zeitmarkendatei erstellt.
Mit at lassen sich einmalige zeitgesteuerte Abläufe starten.
at Zeit < Datei
at -f Datei Zeit
atq zeigt die Aufträge, atrm löscht sie und atd ist der zugehörige Daemon. Nach der Abarbeitung wird dem user eine Mail geschickt. Mit den Dateien
/etc/at.allow
/etc/at.deny
wird der Zugriff auf die at-Kommandos geregelt.
Seitenanfang oder Hauptseite
Server werden oft ohne Tastatur betrieben. Hier muß man im BIOS "Halt on all errors, but keyboard" einstellen.
Die angeschlossenen Geräte findet man im /proc Verzeichnis wieder. Entsprechend ihren Erfordernissen gibt es Unterverzeichnisse:
/dma, /ioports, /interrupts, /pci, /iomem, /cpuinfo, /devices, /partitions und viele andere mehr. Es gibt weiterhin die Möglichkeit mit Befehlen an die Informationen zu kommen: lspci, pnpdump, isapnp.
Seitenanfang oder Hauptseite