Für ein bestimmtes Konto exportiere ich die Umsatzdaten aus dem Web-Frontend meiner Bank. Diese (merkwürdige) csv-Datei wandle ich dann in qif um, da GnuCash kein csv importiert (den verwendeten Konverter findet man im Archiv der GnuCash-De liste).
Da ich die cvs-Dateien und die qif-Dateien nebeneinander archiviere habe ich manchmal beim konvertieren das Problem, das ich nicht mehr so genau weiß, was es nun zu konvertieren gilt (bzw. welche csv-Dateien noch nicht konvertiert sind)....
Abhilfe habe ich mir von der programmierbaren Eingabe-Vervollständigung der Bash versprochen. Meine Idee: Für die Eingabe-Vervollständigung sollten nur csv-Dateien in Betracht kommen und hier auch nur diese, für die noch keine Datei mit Endung qif besteht. Gedacht, getippt:
_csv2qif_possible_csvFiles() | |
{ | |
local csvs optfiles | |
optfiles="" | |
csvs=$(find . -maxdepth 1 -iname "*.csv" | sed "s/\.\///g") | |
for file in ${csvs}; do | |
if [ ! -f ${file/\.csv/.qif} ]; then | |
optfiles="${optfiles} ${file}" | |
fi | |
done | |
echo $optfiles | |
} | |
_csv2qif() | |
{ | |
local cur opts | |
cur="${COMP_WORDS[COMP_CWORD]}" | |
opts=$(_csv2qif_possible_csvFiles) | |
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) | |
return 0 | |
} | |
complete -F _csv2qif csv2qif.py |
Diese Datei beim Starten der Bash mit einlesen oder bei gentoo einfach in /etc/.bash_completion.d/
oder ${HOME}/.bash_completion.d/
kopieren und schon klappt's auch mit der Eingabe-Vervollständigung.
Geholfen hat mir übrigens die Debian-Einführung zu bash completion.
Screenshots finde ich bei Kommandozeilen-Tools immer nicht so toll, hier ist Trotzdem einer:
Als mögliche Verbesserung bleibt noch die Suche der csv-Dateien nicht nur auf das aktuelle Verzeichnis zu beschränken, sondern einen eingegebenen pfad (z.B.: ../csv/2010/Q3/
) mit zu beachten, aber das hebe ich mir wohl mal für einen „Urlaub“ auf...
Edit: Eine verbesserte Version findet sich in: bash Autovervollstandigung die Zweite.