Globenaut

Jeder hat das Recht auf Meinungsfreiheit und freie Meinungsäußerung; dieses Recht schließt die Freiheit ein, Meinungen ungehindert anzuhängen sowie über Medien jeder Art und ohne Rücksicht auf Grenzen Informationen und Gedankengut zu suchen, zu empfangen und zu verbreiten.
Die Allgemeine Erklärung der Menschenrechte
Resolution 217 A (III) vom 10.12.1948/Artikel 19
Zensoren sind Verbrecher!
BPjM: Trusted Censorship
Christliche Werte — Neine Danke!

Skripttipp #8: Notizen für jedes Verzeichnis anzeigen

von Globenaut am 2.8.09

Wohin mit Notizen und/oder Erledigungen? Benutzt man ein darauf spezialisiertes Programm und sammelt alle Notizen in einer Datei oder legt man einfach nur Textdateien an und wenn ja, wo legt man sie dann ab? Eine universelle Lösung habe ich auch nicht anzubieten, aber für Kleinigkeiten die in ein Verzeichnis gehören (etwa Erledigungen zu einem Projekt) kann man mit der Bash etwas Brauchbares basteln.

Zunächst wird die Variable PROMPT_COMMAND in der .bashrc so modifiziert, daß immer dann, wenn der Prompt angezeigt wird auch der Inhalt einer Datei ausgegeben wird. Jetzt kann man einfach immer wenn es etwas zu Notieren gibt mit seinem Texteditor eine (unsichtbare) Datei bspw. .Erledigungen anlegen und in diese seine Notizen hieninschreiben.

export PROMPT_COMMAND="if [ -a .Erledigungen ]; then echo 'Erledigungen zu diesem Verzeichnis:'; \ 
cat .Erledigungen; fi"

Diese Zeile in die .bashrc einfügen und die .bashrc neu einlesen. Befindet sich nun eine Datei .Erledigungen in dem aktuellen Vezeichnis, wird deren Inhalt jedesmal beim Aufruf des Promptes, nach einem Kommando angezeigt, andernfalls erscheint nichts:

#:~>cd Globenautblog/
Erledigungen zu diesem Verzeichnis:
    1 Skripttipp zur ToDo-Liste schreiben
    2 Kommentardarstellung überarbeiten
#:~>

Die Zeilennummerierung ist eine Funktion von cat, nämlich cat -n. Ich habe bei mir in der .bashrc ein Alias defniert, welches mir immer bei Verwendung von cat (ebenso bei grep) die Zeilennummern anzeigt:

alias cat='cat -n'
alias grep='grep -aEin --color'

Wer dieses Aliase nicht haben möchte, muss halt die PROMPT_COMMAND-Zeile anpassen und einfach ein -n nach dem cat einfügen.

Für meine Arbeitsweise hat es sich als praktisch erwiesen, zwei Dateien zu verwenden. Eine .Erledigungen und eine .Notizen:

export PROMPT_COMMAND="if [ -a .Erledigungen ]; then echo 'Erledigungen zu diesem Verzeichnis:'; \ 
cat .Erledigungen; fi; if [ -a .Notizen  ]; then echo 'Notizen zu diesem Verzeichnis:'; cat .Notizen; fi;"

Zu Erinnerung, die Lösung ist für Kleinigkeiten gedacht, werden die Listen zu groß wird es unpraktisch. Natürlich kann man auch wesentlich größere Programmabläufe an den PROMPT_COMMAND übergeben, aber da der Prompt so gut wie andauernd angesprochen wird, sollte man sich gut überlegen, wie groß solche Prgramme werden sollen. Es macht absolut keinen Sinn an dieser Stelle einen Ablauf zu integrieren, in dessen Folge man jedesmal sekundenlang auf das Erscheinen des Promptes warten muss.

Labels: , , , , , ,

#  0 Kommentare

Skripttipp #6: Auf der Kommanozeile immer sicher löschen

von Globenaut am 24.6.09

Mit zu den ersten Kommandos die man lernt wenn man im Terminal arbeitet, heißt rm (remove) zum Löschen von Dateien. rm arbeitet sehr schnell und man kann in weniger als einer Sekunde das gesamte System ruinieren. Jedoch hat rm den Nachteil, nicht die Datei selbst zu löschen, sondern nur den Eintrag der Datei aus dem Index, mit der Folge, daß sich Daten im Zweifelsfall rekonstruieren lassen. Für das sichere Löschen der Datei gibt es srm (secure remove), welches vor dem Löschen des Indexeintrages die Datei überschreibt, umbenennt und abschneidet. Ein einmaliges Überschreiben der Datei ist hierbei vollkommen ausreichend.[1, 2] (Löschorgien wie die Empfehlung 35mal (!) zu überschreiben sind sowieso Unfug [3]). Damit man immer auf der sicheren Seite ist, sollte man rm grundsätzlich auf das sichere srm umleiten. Mit einem kurzen Alias-Eintrag in der .bashrc läßt sich dies leicht bewerkstelligen.

Mit einem beliebigen Texteditor die Datei .bashrc öffnen und folgende Aliase einfügen:

alias rm='echo "srm -srf"; srm -srf'
alias srm='srm -srf'

Eingentlich würde ein Eintrag alias rm='srm' vollkommen ausreichen, aber ich bevorzuge eine kurze Rückmeldung was umgeleitet worden ist. Daher füge ich immer ein echo Kommando dazwischen, welches kurz wiedergibt welcher Befehl ausgeführt wurde. Das zweite Alias dient nur dazu, gleich noch die Standardoptionen von srm festzulegen (-s simple, einmal überschreiben; -r rekursiv, Verzeichnisse löschen; -f force, nicht existente Dateien ignorieren, keine Rückfragen).

Die Datei sichern und auf der Kommanodzeile neu einlesen („sourcen“):

#:~>. .bashrc

Das Ergebnis sieht dann etwas so aus:

#:~>rm Regierung
srm -srf
#:~>

Soll jetzt wirklich mal das originale rm verwendet werden, bspw. weil eine große Datei schnell gelöscht werden muß, kennt die Bash den vorgesetzten \ als Umgehung definierter Aliase:

#:~>\rm Regierung

Hinweis: Wer sicherheitsbewußt ist und an fremden Rechnern arbeitet sollte kontrollieren, ob der Befehl srm auch tatsächlich das tut, von dem man annimmt das er es tun sollte: sicher löschen. Die beschriebene Methode mit dem Alias funktioniert nämlich auch andersherum, die Umleitung vom sicheren srm auf das einfache rm:

alias srm='rm'

  1. http://www.heise.de/security/Sicheres-Loeschen-Einmal-ueberschreiben-genuegt--/news/meldung/121855
  2. Overwriting Hard Drive Data: The Great Wiping Controversy
    Craig Wright, Dave Kleiman, Shyaam Sundhar R.S.
    In: Information Systems Security, Springer 2008, ISBN 978-3-540-89861-0, Seiten 243-257
    DOI 10.1007/978-3-540-89862-7
    http://www.springerlink.com/content/408263ql11460147/
  3. http://www.computerwoche.de/knowledge_center/security/1884445/: In fünf Schritten zur sauberen Festplatte (Bild 3)

Labels: , , , , , , ,

#  0 Kommentare

Piratenblogger
Glauben ist die mutwillige Nichtbenutzung des Verstandes!
Bundestagswahl 2009: Weg mit dem Gesindel von SPD und C*U!
© 2005-2009, GlobenautDieses Blog wird unterstützt von Blogger.