Dr. Luthardt's Chemieseiten 

weiter


Valid HTML 4.01!Achtung Ein direkter Aufruf des Validators ist von https-Seiten aus nicht möglich. Hier muss die zu prüfende Seite händisch auf der Validator-Seite eingeben werden.
Valid CSS!Achtung Ein direkter Aufruf des Validators ist von https-Seiten aus nicht möglich. Hier muss die zu prüfende Seite händisch auf der Validator-Seite eingeben werden.

last modified
18.04.2024

Ihr Browser unterstützt kein CSS. Das für die Darstellung dieser Webseiten intendierte Seitenlayout wird deshalb nicht angewandt / angezeigt. Ist dies nicht Ihre Absicht, so haben Sie wahrscheinlich in Ihrem Browser den Autorenmodus deaktiviert. Dennoch sind diese Seiten les- und navigierbar.
Texte der Infoboxen werden inline ausgegeben.
Bitte erlauben Sie den Autorenmodus oder verwenden Sie einen CSS-fähigen Browser, wenn Sie diese Seiten so anschauen möchten, wie sie vom Autor gestaltet wurden.

Tipps und Tricks

von Michael Luthardtauthor: Michael Luthardt

Aliase & Funktionen für .bashrc

Wer auf der Konsole arbeitet, wird bald den Wunsch haben, oft verwendete längere oder komplexe Befehle als Aliase oder Funktionen in kürzerer Form zu schreiben. Einige Aliase bringt Linux von Haus aus mit, eigene kann man in seiner .bashrc speichern. Die .bashrc (bash - die textbasierte Schnittstelle zu Ihrem Computer, rc - Ressource) ist eine Datei und wird jedes mal aufgerufen und abgearbeitet, wenn Sie ein Terminal öffnen. Sie ist eine versteckte Datei in Ihrem Stammverzeichnis /home/ihr_benutzername/. Um sie im Dateimanager zu sehen und mit einem Texteditor öffnen zu können geben Sie strg h ein.

Ein Unterschied zwischen Aliasen und Funktionen ist, dass sich innerhalb von Alias-Befehlen keine Parameter befinden können. Ist dies erforderlich, verwendet man eine Funktion.

Man kann shell-eigene (builtins) oder im Suchpfad vorhandene Kommandos durch Aliase ersetzen. Das ursprüngliche Kommando kann durch 'command' oder, falls noch weiter differenziert werden muss, mit builtin command oder /path/to/command ausgefürt werden.

Hier finden Sie einige Beispiele für Aliase1 und Funktionen.
Für das Arbeiten mit Verzeichnissen: alias ls='ls --color=always' 1
alias ll='ls -lh'
alias la='ls -A
alias l='ls -C'
alias lla='ls -lAh'
alias ll.='ls -dlh \.*'
Probieren Sie aus, wie diese Aliase die Ausgabe erweitern/verändern.

alias less='less -R' Falls sich die Datei währen der Anzeige ändert.
alias sudo='sudo ' Der um ein Leerzeichen erweiterte Befehl ermöglicht die Verarbeitung von Alias-Kommandos nach dem ersten Befehl. Besonders wichtig für sudo.
alias cmd='history | grep -iE' Befehle in der History schnell wiederfinden. Es empfiehlt sich, cmd selbst und 1- und 2-Buchstaben Befehle von der Aufnahme in die History auszuschließen.
alias click='import -frame -quality 80 "$HOME/Bilder/Capture/$(date +%Y%m%d%H%M%S).png"' Der Cursor verwandelt sich in ein Fadenkreuz und kann zur Aufnahme eines Screenshots, auch außerhalb des Terminalfensters, verwendet werden.
alias pps='ps -o user,pid,ppid,command axf' liefert eine ausführliche Übersicht über alle laufenden Prozesse.

Möchte man weiter Zugriffsberechtigungen oktal anzeigen lassen, ist eine Funktion erforderlich:

function lo() {
  [ $# = 0 ] && stat --printf "%a\t%U\t%G\t%n (%F)\n" * \
             || stat --printf "%a\t%U\t%G\t%n (%F)\n" "$@"
}

Beim Aufruf ohne Paramater wird das aktuelle Verzeichnis aufgelistet, sonst entsprechend der Parameterübergabe. Z. B. gibt lo /path/to/* t* alle Dateien in to/ aus und alle Dateien im Arbeitsverzeichnis, die mit t beginnen.

Die Anzeige von ausschließlich Dateien oder Ordnern2 gelingt mit diesen Funktionen,

function ld() {
  find $1 -maxdepth 1 -mindepth 1 -type d ! -name '\.'* \
  -execdir ls -dlh --color=always {} + | sed -r 's/.\///'
}

function ld.() {
  find $1 -maxdepth 1 -mindepth 1 -type d -name '\.'* \
  -execdir ls -dlh --color=always {} + | sed -r 's/.\///'
}

function lf() {
  find $1 -maxdepth 1 -mindepth 1 -type f ! -name '\.'* \
  -execdir ls -lh --color=always {} + | sed -r 's/.\///'
}

function lf.() {
  find $1 -maxdepth 1 -mindepth 1 -type f -name '\.'* \
  -execdir ls -lh --color=always {} + | sed -r 's/.\///'
}

jeweils für normale oder versteckte. Der Aufruf erfolgt mit z. B. ld [directory].

Hardlinks für eine Datei zeigt die Funktion

function hl() {
  INODE=`stat --printf %i "$1"`
  find `dirname "$1"` -inum $INODE 2>/dev/null
}

Das Kopieren eines Verzeichnisbaums (Verzeichnisstruktur), hier ohne versteckte Dateien und Ordner, geht am besten mit tar:

function rcp() {
  tar "$3" --ignore-failed-read --exclude "*./.*" --exclude "*/.*" -cf - $1 \
  | (cd $2 && tar -xvBf -)
}

Es sei daran erinnert, dass der Befehl mv zwar einen Ordner umbenennen, nicht aber kopieren kann. Kopieren/verschieben ist hier nur eine Namensänderung des kompletten Pfades! Der Ort auf der Festplatte (Dateisystem) bleibt gleich. Das sieht man am einfachsten an der weiter crtime. Diese ist die Geburt des Inode, nicht einer Datei oder Ordners.
Der Aufruf erolgt mit rcprecursive cp6 path/from path/to. Als dritter Funktionsparameter können tar-Parameter übergeben werden, die bei der Ausgabe auf stdout zulässig sind, insbesondere -N Date. Mit -N läßt sich das erneute Kopieren schon vorhanderner Dateien verhindern. Dabei muss das Datum absolut im Format YYYY-MM-DD angegeben und der ganze Parameter in Hochkommata eingeschlossen werden.
rcp foo bar '-N 2021-10-01' z. B. kopiert den Ordner foo mit allen Unterordnern und Dateien in den (vorhandenen) Ordner bar, Dateien aber nur, sofern sie neuer als das angegebene Datum sind.
Sollen Dateieigentümer und -berechtigungen erhalten bleiben, muss der Befehl als root7 ausgeführt werden.

Dateien, die im aktuellen Verzeichniss in/zu einem bestimmten Zeitraum geändert wurden, findet die Funktion h. 4 Für mich oft Retter in der Not, wenn man zwar noch weiß dass und wann man eine Datei gespeichert hat, sie aber partout nicht wiederfindet.

Ihr Browser kann das Objekt leider nicht anzeigen!

Den Zeitpunkt/Zeitraum legen das oder die Argumente für den Parameter -‍mtime der find-Funktion fest. Ohne Argument werden in Verbindung mit -daytime heute geänderte Dateien gefunden; mit einem Argument zur Übergabe an -‍mtime Dateien von vor n Tagen, mehr als +‍n Tagen oder weniger als -‍n Tagen; mit zwei Argumenten für den Zeitraum von vor mehr als +‍n aber weniger als -‍n Tagen. Ein Beispiel für letzteres wäre h +‍0 -‍3 für alle Dateien, die von Vorgestern bis Gestern geändert wurden. h +‍5 -‍7 ist demzufolge geleichbedeutend mit h 6.
Ausgeschlossen von der Suche sind versteckte Dateien (-name '[^.]'*) und Dateien in versteckten Ordnern (! -wholename *'/\.'*).
Der erste awk-Befehl liefert Name, Dateigröße, Änderungsdatum und -zeit und den Pfad. Die for-Schleife ist erforderlich, um bei Datei-/Ordnernamen mit Leerzeichen alle Namensbestandteile zu bekommen. Der zweite awk-Befehl entfernt mit dem Trenner "$DIR/" das aktuelle Verzeichnis; hier ist die for-Schleife erforderlich, weil die Ordnertiefe des verbleibenden relativen Pfades unterschiedlich ist.
Die Sortierung erfolgt nach Datum und Uhrzeit.
--color=always ist hier auch bei entsprechend gesetztem Alias für ls notwendig.
Einen Bildschirmüberlauf der Ausgabe kann man mit <Umschalt>{<Bild auf>|<Bild ab>} scrollen. Für mehr Bequemlichkeit läßt sich eine weitere Pipe zu less -R5 anfügen.

           
1 Die üblichen Aliase l, ll und la muss sich unter Ubuntu jeder Benutzer in seiner .bashrc selbst aktivieren. Der dort schon vorhandene Alias für ls muss von auto auf always geändert werden, um zusammen mit less zu funktionieren.
2 Für eine Auswahlanzeige von directories ohne deren Inhalt aufzulisten verwendet man ll -d directory.
4 Alle drei sudo-Befehle sind ein Kommando/Zeile.
5 Mit dem oben erwähnten Alias für less kann die Übergabe an less ohne Parameter erfolgen.
6 Das originale rcp=remote cp wird in neuen Distributionen nicht mehr unterstützt.
7 Dazu müssen Sie rcp in die .bashrc von root übernehmen und mit sudo su in ein root-Terminal wechseln.

29.02.2008/18.04.2024

 nach oben

Änderungen dieser Seite verfolgen:

it's private by ChangeDetection