Duda minishell

Lyric
14 de Noviembre del 2010
Hola, estoy programando un minishell que hace los mandatos básicos de una consola.
Mi problema es para cuando quiero que ejecute un comando mediante '!2' en donde 2 es el numero de entrada en el historial.
Por ejemplo:
history
1 ls
2 date
// al hacer !1 ejecutaria un 'ls'

El código que llevo hecho hasta ahora me lo hace bien, PERO no poniendo '!1' sino '! 1' necesito una manera en la que el signo y el número esten juntos.
Por el momento '!' lo identifica como el primer argumento y el numero como segundo argumento.

Alguna idea?
Muchas gracias de antemano.