Scripting HAL

Recent releases of Fedora and other GNU/Linux distributions include a Hardware Abstraction Layer (HAL) which is used to support device plug-and-play capabilities.  In this post I will show you how your shell scripts can use HAL to retrieve device and system information. The term HAL is overloaded as it used to refer both to a specification and the actual software which implements the specification.  From an application developers viewpoint, HAL is way to enumerate the capabilities and features of hardware attached to a system and receive notification when something about the hardware changes. First, a very quick overview of HAL. 

KSH93 Extended Patterns

Pattern matching is an important component of any modern shell. The ksh93 shell supports both regular expressions as well as what is called extended patterns. Extended patterns can be thought of as class or type of extended regular expressions. The purpose of this post is to explain, with some examples, how to use the power of extended patterns in your ksh93 scripts.

JavaScript E4X

In previous posts, I discussed the SpiderMonkey command line shell js and how to add support to it to enable full access (read, write, create, copy, delete, etc.) to the local filesystem via the File object and the NSPR library. While rumaging around in the source code and documentation for js, I found that js partially supported the EX4 XML extension via a user configurable option. This post looks at what it takes to load an XML document into js from your local filesystem, process it and write out the resulting document to your local filesystem using File objects and

JavaScript File Object

As you are probably aware JavaScript engines such as SpiderMonkey typically do not allow access to the local filesystem for reasons of security.  To enable developers to test the scripts from a command line, js includes the load() function which enables you to load one or more JavaScript scripts into the SpiderMonkey engine.  However this is not sufficient for our purposes as no means is provided to write to the filesystem.  Looking more closely at the source code, I noticed support for File objects.  This support is not enabled by default however.  It is not sufficient to simply recompile SpiderMonkey

Korn Shell 93 Stat Builtin

This post demonstrates how to write a loadable stat builtin for Korn shell 93.