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 %doc: + 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: chapters.gnu.org 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