The kdb command

From Elektra Initiative

Contents

Description

The kdb command provide ways to manipulate the Elektra keys database keys.

The subcommands implemented are very similar to regular UNIX commands like ls, and rm, specially in their output and options. Subcommands

Subcommands

get

Get the value from the specified key. Accepts options: -d, -l, -f, -s

set

Set the value to the specified key. Accepts options: -c, -t, -m, -b

ls

As the ls(1) command, list key names for the specified key, or children keys, if specified a folder key. The -v argument will make it show also the values of each key. The -d (descriptive) will make it show the comment, key name and its value, as you are watching a plain text file. Accepts options: -x, -d, -l, -f, -v, -R

ln

Creates a key that is a symbolic links to another key.

mv

Move, or renames a key. Currently it can't move keys across different filesystems.

rm

As the rm(1) command, removes the key specified.

edit

A very powerfull subcommand that lets you edit an XML representation of the keys. The parameters it accepts is usually a parent key, so its child keys will be gathered. Can be used with the -R flag to work recursively. The editor used is the one set in the $EDITOR environment variable, or vi. After editing the keys, kdb edit will analyze them and commit only the changed keys, remove the keys removed, and add the keys added.

export, save

Export a subtree of keys to XML. If no subtree is defined right after the export command, system and current user trees will be exported. Output is written to standard output. The output encoding will allways be UTF-8, regardeless of your system encoding. UTF-8 is the most universal charset you can get when exchanging data between multiple systems. Accepts -f. import, load,

Import an XML representation of keys and save it to the keys database. If no filename is passed right after the import command, standard input is used.

monitor, mon

Monitor a key for some value change. It will block your command line until a change in the key value is detected, then return its new value.

Options

-R

Causes to work recursively. In ls, will list recursively.

-x

Makes ls output an XML representation of the keys, instead of an ls-compatible output.

-l

Causes to display long results. With ls, will generate lists similar to ls -l. With get, will show also the key name.

-a

Causes ls to display also inactive keys. Generate lists similar to ls -a. Inactive keys are keys which basename begins with a '.' (dot). An example of inactive key: system/sw/XFree/current/Monitor/.Monitor1

-f

Causes to work with full key names. A full key name makes sense only on user/* keys, and differentiate from the regular key names in specifying the owner user. If the current user is someuser, the user/some/key full name is user:someuser/some/key. Makes effect in ls, export and get subcommands.

-d

Causes get to work descriptivelly. When requesting a key it will show the comment, key name and its value in a fancy format

-s

Causes get to be more friendly to Shell scripts. For example, when requesting user/env/env2/PATH, the output will be PATH="the value", that is, only the basename of the key will be showed and the value will be surrounded by ' " '.

-t type

When setting a key's value, you can specify the type with this switch. Currently accepted types are string for plain text, bin for binary as-is values, dir to create folder keys and link to create symbolic links between keys. Plain text are always stored as UTF-8(7) in Elektra, regardeless of your current encoding ($LANG). If you want to force a value to be stored without the UTF-8(7) encoding (a bad idea), you can set it as binary. Binary values should be avoided, because they are black boxes for system administrators.

-b filename

Set the key value as the content of file filename. This option is more usefull when setting binary keys.

-m mode

For the set command. Will set the key access permission to mode, which must be an octal number as for chmod(1).

-u uid

Create the key with uid user ID. It can be a user name or a uid number.

-g gid

Create the key with gid group ID. It can be a group name or a gid number

-c comment

When setting keys, you can use this argument to set a descriptive comment for it. This comment is exactly as a comment in a plain text configuration file. The comment is stored as UTF-8(7) regardeless of your current encoding ($LANG).

-v

With the ls subcommand, will make it show also the value stored in the key.

--

With the set subcommand, everything after it will be considered the value, even text with dashes (-).

Examples

Setting Keys

  bash$ kdb set -c "My first key" user/example/key "Some nice value"
  bash$ kdb set user:luciana/example/key -- "Some - nice - value with dashes"
  bash# KDB_ROOT=user:http/sw/httpd kdb set -u nobody -g http key "Some value"
  bash$ kdb set -b image.png -t bin user/example/binaryKey
  bash$ kdb set -b file.txt user/example/regularKey
  bash# kdb set -t link system/sw/XFree/current system/sw/XFree/handmade

Getting Keys

  bash$ KDB_ROOT=user/example kdb get key
  bash$ KDB_BACKEND=gconf kdb get user/sw/gnome-terminal/global/active_encodings

Listing

  bash$ kdb ls -laR user:valeria
  bash$ kdb ls -lR system/sw/xorg/current
  bash$ KDB_ROOT=system/sw kdb ls -lR xorg
  bash$ KDB_BACKEND=fstab kdb ls -Rv system/filesystems

Miscelaneous

  bash# kdb ln system/sw/xorg/handmade system/sw/xorg/current
  bash# kdb mv system/sw/xorg/current system/sw/xorg/old
  bash# kdb rm system/inittab/rc4
  bash$ KDB_BACKEND=gconf kdb rm user/gconfKey

XML Import and Export

  bash# kdb export user/sw/app | sed -e 's|/app/|/app2/|g' | kdb import
  bash# KDB_ROOT=system/sw kdb export myapp > myappconf.xml
  bash# kdb import myappconf.xml
  bash$ KDB_BACKEND=gconf kdb export user/sw

Easily Editing Elektra Keys

The kdb edit command provides an easy way to edit a group of keys using your prefered editor. It will dump the selected keys into an XML representation, and run the editor to let the user edit them. After user modifications, it will update, remove or include the keys based on the modified XML file. This real screenshot shows me using kate to modify the XFree configuration keys related to the monitor. If I didn't force it with the $EDITOR environment, vi would be used.

Image:kdbedit.png

But the de-facto administration tool is kdbedit.

Views
MediaWiki