首先,大部分情况下,它不用单独安装,在Linux发行版本中已经包含了。
它支持命令行补齐,历史操作记录,其他shell的快捷键定义和操作,下面是一个支持命令行补齐,和历史命令记录的例子,代码如下。
#include <stdio.h>
#include <stdlib.h>
#include <readline/readline.h>
#include <readline/history.h>
static char *line_read = (char *)NULL;
char *commands[] = {"ls -l","top -p","rm -rf"};
static char* command_generator(const char *text, int state)
{
const char *name;
static int list_index, len;
if (!state)
{
list_index = 0;
len = strlen (text);
}
while (name = commands[list_index])
{
list_index++;
if (strncmp (name, text, len) == 0)
return strdup(name);
}
return ((char *)NULL);
}
char** command_completion (const char *text, int start, int end)
{
char **matches = NULL;
if (start == 0)
{
matches = rl_completion_matches (text, command_generator);
}
return (matches);
}
void initialize_readline ()
{
rl_readline_name = "jdbshell";
rl_attempted_completion_function = command_completion;
return ;
}
char *rl_gets()
{
if(line_read)
{
free (line_read);
line_read = (char *)NULL;
}
line_read = readline("Please Enter:");
if(line_read && *line_read)
add_history(line_read);
return(line_read);
}
int main()
{
initialize_readline();
char *mline;
while(1)
{
mline = rl_gets();
printf("%s\n",mline);
}
}