other sections
KDB(1) | [FIXME: manual] | KDB(1) |
NAME¶
kdb - Elektra key database command line administration toolSYNOPSIS¶
kdb
get [ -dlr] key/name
kdb
set [ -t type] [-d]
[-c "A comment about this key"]
[ -m mode] [-u uid]
[-g gid] key/name "the value"
kdb
set [ -t type] [-m mode]
[-c "A comment"] key/name --
"the value"
kdb
set [ -t type] [-b file]
key/name
kdb ls
[ -lRfvs] [key/dir | key/name]
kdb ls
[ -lRfvx] [key/dir | key/name] > keys.xml
kdb
edit [ -R] [key/dir | key/name]
kdb rm
key/name
kdb mv
key/src key/dest
kdb ln
key/src key/dest
kdb
export [ -f] system/some/tree.root > [file.xml]
kdb
import < file.xml
kdb
import file.xml
kdb
monitor some/key/name Description.PP The kdb command provide ways
to manipulate the Elektra keys database.
The subcommands implemented are very similar to regular UNIX commands like
ls, and rm, specially in their output and options.
Subcommands.PP 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, -d, -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, -s
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 powerful 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. This command is only available when
/usr/lib/libelektratools.so is available.
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. This command is only available
when /usr/lib/libelektratools.so is available.
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.PP -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. Causes set to mark the key as a directory key.
-s
Causes get and ls 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 useful 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 (-).
Best Practices When Creating Keys.PP When using Elektra to store your
application's configuration and state, please keep in mind the following
rules:
•You are not allowed to create keys
right under system or user.
•You are not allowed to create folder
keys right under system or user. They are reserved for very essential OS
subsystems.
•The keys for your application, called
say MyApp, should be created under system/sw/MyApp and/or
user/sw/MyApp.
ENVIRONMENT¶
KDB_ROOT if defined, prepends it to key names. KDB_BACKEND defines the name of another backend plugin library to use ExamplesSetting Keys.PP 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.PP bash$ KDB_ROOT=user/example kdb get some/key/name bash$ eval `kdb get -s user/env/env1/PS1` bash$ KDB_BACKEND=gconf kdb get user/sw/gnome-terminal/global/active_encodings Listing.PP 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 bash$ eval `kdb ls -Rvs user/env/env2` Miscelaneous.PP 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.PP 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/swSEE ALSO¶
AUTHOR¶
Avi Alkalay <avi at unix.sh>Author.
COPYRIGHT¶
Copyright © 2004 Avi AlkalayMarch 2004 | Elektra Initiative |