Archiv

Archive for the ‘VIM’ Category

filedeleter – Automatisches Löschen von Dateien

August 25, 2011 2 Kommentare

Wer schomal von Windows zu Linux umgezogen ist kennt das Problem eventuell. In der Musik oder Filmesammlung finden sich eine Menge desktop.ini-Dateien, die da eigentlich nix verloren haben und die man unter Linux auch nicht benötigt.

Dieses Phänomen hat mich dazu bewogen ein kleines Tool zu schreiben, das von einem angegebenen Verzeichnis ab rekursiv alle Ordner nach den im zweiten Programmparametern übergebenen Dateinamen sucht und die gefundene Datei löscht.

Das Tool ist in C geschrieben.

Hier eine Beispielanwendung:

– Ich möchte alle „.ini“ Files in dem Ordner „/home/fabi/test“ und den vorhandenen Unterordnern löschen.

Verzeichnis, dass noch alle *.ini-Dateien enthält:

Anzeige des Ordnerinhalts mit "tree"

Anzeige des Ordnerinhalts mit "tree"

Aufruf von filedeleter:

Aufruf filedeleter

Aufruf filedeleter - Löschen alle *.ini-Dateien in /home/fabi/test

 Achtung: Der Ordnerpfad der im ersten Parameter des Tools übergeben wird, darf nicht mit einem Slash beendet werden!

 Ordnerinhalt nach dem Aufruf von filedeleter:

Ordnerinhalt /home/fabi/test nach dem Aufruf von filedeleter

"Bereinigter" Ordner

Getestet und Programmiert habe ich das ganze unter Gentoo Linux mit 2.6.39er Kernel und gcc 4.4.5. Das ganze läuft auch unter OS X ( Snow Leopard ) und XCode 3.
Für eventuelle Schäden die durch das Programm entstehen übernehme ich keine Haftung!!!

Das Programm wird natürlich unter der GPL veröffentlicht. Für Kritik und Anregungen bin ich wie immer dankbar.

Um das Programm zu kann das beigelegte make-File verwendet werden. Download: http://dl.dropbox.com/u/2497774/FileDeleter.tar

Kategorien:C, Linux, Mac OS X, Programmierung, VIM Schlagwörter: , , ,

ConfigParser

Ich bin gerade dabei mir eine kleine Toolchain zu bauen.
Ein Teil davon ist ein simpler Config-File-Parser der in C++ geschrieben ist.

Er kann „einfache“ Config-Dateien wie z.B. .Xdefaults, ssh_config, etc. parsen und zeigt die Attribute mit zugehörigen Werten an.

Hier mal ein paar Beispiele:
.Xdefaults

fabi@schnecki-workstation ~/Programmierung/C_C++/ConfigParser $ ./configparser /home/fabi/.Xdefaults "#" ":" ""
Number of attributes: 11
Option: URxvt*transparent       Value: false
Option: URxvt*savelines Value: 12000
Option: URxvt*scrollBar Value: false
Option: URxvt*urlLauncher       Value: firefox
Option: URxvt*geometry  Value: 80x50
Option: URxvt*secondaryScroll   Value: true
Option: URxvt*inheritPixmap     Value: true
Option: URxvt*shading   Value: 25
Option: URxvt*font      Value: xft:Bitstream Vera Sans mono:size=9
Option: URxvt*foreground        Value: white
Option: URxvt*background        Value: black

/etc/ssh/ssh_config

fabi@schnecki-workstation ~/Programmierung/C_C++/ConfigParser $ ./configparser /etc/ssh/ssh_config "#" " " ";"
Number of attributes: 3
Option: ForwardX11      Value: yes
Option: Port    Value: 22
Option: Host    Value: * XAuthLocation /usr/bin/xauth

Das eigentliche Ziel ist nicht das Programm „configparser“, sondern die Klassen, da ich diese dann in weiteren Programmen verwenden kann.

Hier der Link zum Download: http://dl.dropbox.com/u/2497774/ConfigParser.tar

Darin ist der Source Code und ein Makefile enthalten mit dem sich das ganze übersetzen lässt.

Getestet habe ich das ganze unter Gentoo Linux 2.6.36-gentoo-r5 (Ich weiß ein Kernelupdate ist fällig ;-)) und mit GCC 4.4.5.

Also viel Spaß damit.

Für Kritik und Anregungen bin ich wie immer dankbar.

(g)Vim + GDB + DDD = IDE

Ich bin schon seit langer Zeit nach einer vernünftigen IDE unter Linux und bin nie so richtig fündig geworden.
Der Editor meiner Wahl, ist und bleibt, im Linux-/Unix-Umfeld Vim mit GVim als grafischen Aufsatz.
Was mir immer nur gefehlt hat war ein guter Debugger. Ich bin da ziemlich verwöhnt von Visual Studio (2008 u. 2010), dass meiner
Meinung nach einen sehr guten Debugger hat.

Ich hab begonnen mich vor ca. zwei Wochen intensiv mit GDB zu beschäftigen und muss sagen, dass das Ding echt klasse ist.
Das einzige was ein bisschen störend war, ist das ich keine GUI dafür hatt. Eine GUI ist für mich in diesem Fall einfach
angenehmer als die Shell. Obwohl es damit auch ginge.  Und nach kurzer Suche bin ich dann auf DDD gestoßen.
Die GUI ist zwar nicht mehr die neuste, dafür ist der Aufbau echt super. Das Debuggen geht echt schnell und ich bekomme
alle nötigen Infos die ich benötige.
Außerdem bietet DDD auch Funktionen um z.B. den Assembler-Code des Programms anzuzeigen, etc.

Für mich ist das ein klasse Trio….

Getestet habe ich das ganze mit C und C++.

Backup Script

September 24, 2010 Hinterlasse einen Kommentar

Hier mal mein Backupscript zum sicher meiner /home-Partition.
Das Script steht unter der LGPL.

Ich nutze es in Verbindung mit vixie-cron. Das Script macht eine alles 15 min ein Backup.

Abhängigkeiten:
rdiff-backup

</span>#!/bin/bash

#Backup-Script um Backups der Ordner /home und /etc
#Mit kleiner Logging-Funktion
#Die Log-Files werden nach /home/$user/BackupLog geschrieben

#Definition des Backup-Directories für den /home-Ordner
bkphome="/mnt/backup/workstation/home"
#Definition des Backup-Log-Files
bkplog="/home/fabi/BackupLog/log.txt"
#Definition des Backup Devices
bkpdev="/dev/sdb1"


#Überpfüfen ob das Tool rdiff-backup installiert ist
bkptool=`which rdiff-backup`

if [ $bkptool ]
then
 #Auslesen ob auf dem Backup-Medium genügen Speicher vorhanden ist.
 devinf=`df -h | grep $bkpdev | awk '{print $5}'` #Used Ausgabe von df-h
 rest=`expr match "$devinf" '\(.*[0-9]\)'` #Zahlen von Buchstaben trennen; für Vergleich
 echo $rest
 #Wenn mehr als 90% belegt sind erhält der User eine Meldung
 if [ $rest -lt "90" ]
 then
 #------------------------------/home-Backup----------------------------start
 rdiff-backup --exclude /home/lost+found /home $bkphome


 #Überprüfen des Return-Codes
 if [ $? -eq 0 ]
 then
 date >> $bkplog #Ausgabe des Datums
 echo "/home-Backup wurde erfolgreich ausgeführt." >> $bkplog
 echo "Verwendeter Speicher: " >> $bkplog
 echo $rest"%" >> $bkplog
 echo >> $bkplog #Leerzeile ausgeben
 else
 errcode=$?
 date >> $bkplog #Ausgabe des Datums
 echo "/home-Backup konnte nicht erfolgreich ausgeführt werden." >> $bkplog
 echo "Verwendeter Speicher: " >> $bkplog
 echo $rest"%" >> $bkplog
 echo "Return-Code = " >> $bkplog
 echo $errcode >> $bkplog #Return-Code ausgeben
 echo >> $bkplog #Leerzeile ausgeben
 fi
 #------------------------------/home-Backup----------------------------end
 else
 xmessage -center "Weniger als 10% Speicherplatz sind auf dem Backupmedium vorhanden."
 date >> $bkplog
 echo "Zu wenig Speicher auf dem Medium vorhanden." >> $bkplog
 echo "Genutzter Speicherplatz: " >> $bkplog
 echo $rest"%" >> $bkplog
 echo $bkplog
 fi
else
 xmessage -center "Bitte rdiff-backup installieren! Programm wird beendet."
 date >> $bkplog
 echo "Bitte rdiff-backup installieren! Programm wird beendet." >> $bkplog
 echo >> $bkplog
fi
<span style="color: #000000;">

Kategorien:BASH, Debian, Gentoo, Linux, Terminal, VIM

Ein bisschen UNIX unter Windows

Für einen C/C++ Entwickler, der seine Programme auch verteilen will sind makefiles und ein vernünftiger Compiler, der auch die jeweiligen Standards wei den C99 Standard unter C unterstützen das tägliche Handwerkszeug.

Da ich unter OS X seit geraumer zeit viel mit C mache und meine Software auch hier zum Download bereit stellen möchte habe ich mir einen weg überlegt, wie ich das machen kann.

Da ich auch ab und zu am Notebook entwickle wollte ich auch dort die mir bekannten und leistungsfähigen Tools zu Verfügung haben.

Dabei bin ich über MinGW für Windows gestossen.

Mit diesen Tools habe ich den gcc (g++) für Winodows und kann alle makefiles übersetzen.

Zu finden ist das Paket hier: http://sourceforge.net/projects/mingw/files/

Die makefiles geben mir die Möglichkeit einen Editor, nämlich GVIM respektive MacVIM zu nutzen und damit unabhängig von einer Entwicklungsumgebung zu sein.
Wenn ich meine .vimrc fertig habe, werde ich sie natürlich hier posten.

Ein Plugin das ich aufjedenfall sehr gut finde, ist das c.vim plugin, zu finden hier:
http://vim.sourceforge.net/scripts/script.php?script_id=213

Kategorien:C, Mac OS X, Programmierung, VIM, Windows Schlagwörter: , ,