SHELL
Die Shell (engl.für Muschel) ist das Programm, das die Benutzung des Computer ermöglicht. Sie wird Shell genannt, da sie eine Umgebung zum arbeiten am Computer zur Verfügung stellt.
Die einfachste Aufgabe der Shell besteht im Starten anderer Programme. Sie geben den Namen des Programmes ein, das gestartet werden soll, gefolgt von den Argumenten die es benötigt. Die Shell fordert dann das System auf das Programm zu starten.
Es gibt eine Zahlreiche unterschiedlicher Shells. Viele basieren auf die Bourne Shell oder die C-Shell, der beiden ältesten unter den Shells. Der Programmname der Orginal Bourne Shell ist sh, und der C-Shell csh. Bourne Shell Varianten wie zum Beispiel die Bourne Again Shell bash des GNU-Projekts die Standartmäßig bei den meisten Distributionen eingesetzt wird, die Korn Shell ksh und die Z-Shell zsh. Die verbreiteste C Shell ist die tcsh.
Zum wechseln der Shell auf der Konsole reicht als Befehl meist der Name der zu verwendeten Shell zshoder tcsh, ksh oder bash. Zum dauerhaften wechsel der Shell gibt es das Programm chsh, nach deren Ausführung man nur den (absoluten) Pfad zur jeweiligen Shell eingibt.
Ich selbst benutze seit kurzem die Z-Shell da sie einige Features besitzt wie Suffix Aliasse, eine verbesserte automtische Vervollständigung und Korekturbehebung (sie koregiert bei geringen Abweichungen der eigentlichen Schreibweise). Für das Arbeiten auf der Shell Ebene für Anfänger sehr nützliche Eigenschaften.
Tips und Tricks auf der Shell
echo $HISTSIZE
Zeigt an wieviele Befehle in der History gespeichert werden kann. Wenn man nun in der jeweiligen ~/.shellrc (in meinem Fall die .zshrc) ein :
export HISTSIZE=2000
hinzufügt, wird sich die Shell die nächsten 2000 Befehle die eingegeben werden (Befehl:history) merken.
bck-i-search: _ oder (reverse-i-search)`':
Ist die Ausgabe (der Z-Shell od. BASH) bei [Strg-R]. Um einen Befehl wiederzufinden gibt es diese Suchfunktion mit der man auf der Eingabezeile die ersten Buchstaben eingeben brauch und die Shell den zutreffenden Befehl aus der History als Ausgabe wieder gibt.
mmv
Um mehrere Dateien umzubenennen oder deren Dateiendungen (z.B. htm in html od. bei Kamereas .JPG in .jpg) gibt es das tool mmv . Beim erfassen aller Dateien mit der Endung htm wird hier die Wildcard (*) benutzt. Die Ausgabe des zweiten Argument (#1) wird durch den teil des Dateinamens ersetzt auf den das Sternchen passt: wie datei1 in datei1.htm. Wichtig sind die Hochkomma bei * und # da sie sonst von der Shell interpretiert wird.
mmv -v "*.htm" "#1.html"
1.htm -> 1.html : done
2.htm -> 2.html : done
3.htm -> 3.html : done
4.htm -> 4.html : done
Praktisch ist wenn man hinter der # als Buchstabe u oder l setzen tut. Damit läst sich die Groß und Kleinschreibung von Dateien beeinflussen. Liegen in einem Verzeichnis Dateien deren Namen nur aus Großbuchstaben bestehen werden sie mit :
mmv -v "*.JPG" "#l1.jpg"
1.JPG -> 1.jpg : done
2.JPG -> 2.jpg : done
3.JPG -> 3.jpg : done
4.JPG -> 4.jpg : done
alle gleichzeitig umbenannt.
Vertauschen von Wildcards
mmv -v "*.*" "#2-#1.bak"
test1.txt -> txt-test1.bak : done
test2.txt -> txt-test2.bak : done
test3.txt -> txt-test3.bak : done
Die beiden Wildcards aus dem ersten Parameter werden im zweiten Teil vertauscht (#2 bezieht sich dabei auf das Sternchen hinter dem ".") Der Bindestrich zwischen den beiden Teilen ("#2-#1.bak") fügt die neue Endung .bak ein.
top
Der Prozessmonitor top ist gut um schnell einen Blick auf die laufenden Programme und deren Prozesse zu werfen. In den Spalten % CPU und %MEM verrät topwie sehr die jeweiligen Programme CPU und RAM verbrauchen. Nachteil: Es gibt keine Scrollbalken. Abhilfe schafft die Option -b . Er startet 'top' im Batch Modus gibt man Ihm noch ein -n gefolgt von einer Zahl (z.B. 2) widerholt sich top zwei mal bevor es Seine Ausgabe stoppt. Man kann die Ausgabe auch in eine Datei umlenken um sich alle Angaben in Ruhe anzusehn. Beispiel:
top -n 2 -b > prozesse.txt
Um sich nur die Prozesse eines einzelnen User anzusehen reicht:
top -U Benutzer
Verweise erstellen mit "ln"
Verweise erstellt man mit dem Befehl ln. Dieser kann auf verscheidene Arten verwendet werden. Wenn man eine Datei(die woanders liegt) mit dem selben Namen auch auch im aktuellen (Arbeits) Verzeichnis liegen haben möchte, genügt es in das Verzeichnis zu wechseln (cd /Pfad/zum/Verzeichnis/) wo der Verweis liegen soll. Mit :
ln -s [Quelle] [Ziel] oder ln -s /der/absolute/pfad/zur/Datei/ neuer_name_des_verweis.dateiformat
Es geht auch ganz einfach mit (wechseln in das Verzeichnis wo der Verweis liegen soll)
ln -s /datei/quelle
dadurch wird ein Verweis im aktuellen Arbeitsverzeichnis erstellt.
Das gleiche gilt auch für Verzeichnisse!
Wenn der Verweis (Link) von einem anderen Ort aus gesestzt werden soll, gibt man das gewünschte Verzeichnis als zweiten Parameter hinzu. Wichtig zu beachten ist das bei der definition der Quelle immer der "absolute" Pfad benutzt werden muss. Wärend bei dem Ziel auch der "relative" Pfad zum Verzeichnis ausreicht. (solange man den Verweis nicht oberhalb des ausgehenden Arbeitsverzeichnis setzen tut)
ln -s /absoluter/pfad relativer/pfad
ln ist ein vergleichsweise sicheres Werkzeug das nicht ungwewollt echte Dateien überschreibt. ln -s wird ohne zusätzliche Option immer warnen das eine solche Datei schon existiert.
ln: beispiel.txt: Datei existiert
Sollte dennoch erwünscht sein das ln vorhandene Dateien überschreibt muss die Option -f (für "force" zwingen) benutzt werden. Ist man nicht sicher, oder sind es nicht viele Dateien kann auch die Option -i (für "interactiv") verwendet werden, sie fragt bei jeder Datei nach, ob sie löschen soll oder nicht. Will man aber auf Nummer sicher gehen z.B. bei aufwendigen Scripts die auf viele Dateien angewand werden soll, empfiehlt sich die Option -b (für "Backup") zu benutzen. Unter Linux werden an solche Dateien meistens eine Tilde (~) angehangen. Es ist aber auch möglich dies zu definieren (--suffix="bak" Windows-konvention für Backupdateien). Wer nicht will das bei einem Script erneut die Backupdatei wieder neu geschrieben wird muss statt -b den Parameter --backup verwenden. Diese Option versteht verschiedene Backup-Methoden. Um beispielsweise ein nummeriertes Backup durchzuführen, lautet der Befehl:
ln -s --backup=numered beispiel.txt uebersicht.txt
Optionen für den Parameter "--backup" |
Option
Funktion
none, off
Niemals Backups anfertigen, trotz Angabe von --backup
simple never
Nur einfache Backups machen (Standarteinstellung)
numbered,t
Nummerierte Backups anfertigen
existing, nil
Nur nummerieren, wenn es bereits ein einfaches Backup gibt