GNU Recutils

栏目: IT技术 · 发布时间: 6年前

内容简介:There are hundreds of cool command line tools that have been made over the years built on theOne such package is GNU Recutils, a set of tools and libraries to access human-editable, plain text databases called recfiles. Using plain text that isRecutils is
GNU Recutils

Fred and George, Turtles in love

There are hundreds of cool command line tools that have been made over the years built on the unix philosophy . Plain text is powerful, ubiquitous, and human-centric. It was also the only option for computing for quite a while. It’s no surprise that some of the most sophisticated tools are focused on it.

One such package is GNU Recutils, a set of tools and libraries to access human-editable, plain text databases called recfiles. Using plain text that is primarily human-readable as a database is just frankly cool as hell.

Recutils is a collection of tools, like recins , recdel , and recsel used to manage these recfiles/databases. They allow for all the normal basic relational database operations, typing, auto-incrementing, and even field-level crypto. All of this power is yours with the bonus that your database is a human-readable text file that you can grep/awk/sed freely, and a line-oriented structure makes it perfect for version control systems.

Recfiles

%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

A recfile begins with an optional structure definition using % prefixes. There’s a lot of power available in this, including the defining of relations between tables, constraints, types, and more. You can use the built-in type definitions or define your own using regular expressions (plain text woo).

Following this header bit, the individual records are listed with a blank line separating entries. Have a look at how amazingly readable the data is!

Here’s a more sophisticated example that shows a relationship in action:

%rec: Service
%key: Id
%auto: Id
%type: Provider rec Provider
%type: Mileage int
%sort: Mileage
%mandatory: Id Date Mileage Description Provider

%rec: Provider
%key: Id
%auto: Id
%mandatory: Id Name

Car service examples courtesy of dbucklin’s gopher post .

Queries & other operations

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

Querying your recfile database is usually done with recsel (recfile select). You specify the table to query, expressions, fields to return, and the file and the output comes to standard out.

To insert data you use the recins (recfile insert) command:

$ recins -t Task              \
    -f Id -v 10               \
    -f Title  -v "New issue." \
    -f Status -v NEW          \
    TODO.rec

Again it’s a simple syntax. You provide the table to insert into, a list of fields & values (-f & -v, respectively), and the filename. If you prefer, you can use the -r switch to provide the field & value as one string.

How about deleting records? Can you guess the syntax?

$ recdel -c -t Task -e "Status = 'CLOSED'" TODO.rec

Yep, it’s pretty much the same as the select, as one would expect.

What else?

There’s other convenient tools, like the ability to convert to and from CSV formats, alternative output modes that make it work well with awk, password-protected fields, and so on. The package is quite robust and well maintained by Jose E. Marchesi, who can be found in the #recutils room on irc.freenode.net.

Thefull documentationis seriously impressive. Check it out.

I’ll be adopting it into my tools immediately!

(yes, the offical package image is two gay turtles )


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

浪潮之巅(上册)

浪潮之巅(上册)

吴军 / 人民邮电出版社 / 2013-5-1 / 35.00元

《浪潮之巅(第2版)(上册)》不是一本科技产业发展历史集,而是在这个数字时代,一本IT人非读不可,而非IT人也应该阅读的作品。一个企业的发展与崛起,绝非只是空有领导强人即可达成。任何的决策、同期的商业环境,都在都影响着企业的兴衰。《浪潮之巅》不只是一本历史书,除了讲述科技顶尖企业的发展规律,对于华尔街如何左右科技公司,以及金融风暴对科技产业的冲击,也多有着墨。此外,《浪潮之巅》也着力讲述很多尚在普......一起来看看 《浪潮之巅(上册)》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换