Previous: Purpose, Up: Introduction

1.2 A Little Example

Everyone loves to grow a nice book collection at home. Unfortunately, in most cases the management of our private books gets uncontrolled: some books get lost, some of them may be loaned to some friend, there are some duplicated (or even triplicated!) titles because we forgot about the existence of the previous copy, and many more details.

In order to improve the management of our little book collection we could make use of a complex data storage system such as a relational database. The problem with that approach, as explained in the previous section, is that the tool is too complicated for the simple task: we do not need the full power of a relational database system to maintain a simple collection of books.

With GNU recutils it is possible to maintain such a little database in a text file. Let's call it books.rec. The following table resumes the information items that we want to store for each title, along with some common-sense restrictions.

The contents of the rec file follows:

     # -*- mode: rec -*-
     %rec: Book
     %mandatory: Title
     %type: Location enum loaned home unknown
     + A book in my personal collection.
     Title: GNU Emacs Manual
     Author: Richard M. Stallman
     Publisher: FSF
     Location: home
     Title: The Colour of Magic
     Author: Terry Pratchett
     Location: loaned
     Title: Mio Cid
     Author: Anonymous
     Location: home
     Title: administration guide
     Author: Nacho Gonzalez
     Author: Jose E. Marchesi
     Location: unknown
     Title: Yeelong User Manual
     Location: home
     # End of books.rec

Simple. The file contains a set of records separated by blank lines. Each record comprises a set of fields with a name and a value.

The GNU recutils can then be used to access the contents of the file. For example, we could get a list of the names of loaned books by invoking recsel in the following way:

     $ recsel -e "Location = 'loaned'" -P Title books.rec
     The Colour of Magic