A pergunta diz para você usar cada uma das listas de comandos e fazer com que o comando imprima a string blotz
e nada mais. Se o seu professor quiser ter uma nova linha impressa após cada blotz
(o que não está claro na sua pergunta), você poderia fazer:
$ echo "blotz"
blotz
$ echo "blotz" > file && cat file
blotz
$ touch blotz && ls blotz
blotz
$ echo blotz | grep b ## This might also include (invisible) color codes
blotz
$ echo blotz | grep --color=never b ## This one avoids the color codes
blotz
Usar !!
é mais complicado, pois, por padrão, ele também imprime o comando executado. Por exemplo:
$ blotz ## run blotz to get that saved as !!
blotz: command not found
$ echo !! ## print the value of !!
echo blotz ## Unfortunately, this also prints the command being run.
blotz
Para contornar isso, você pode criar um pequeno script:
set -o histexpand
set -o history
blotz
echo !!
E, em seguida, execute da seguinte forma:
$ bash foo.sh 2> /dev/null
blotz
Pode haver um hack inteligente para isso usando subshells, mas não consegui encontrá-lo.
Se o seu professor nem quiser a nova linha, use-o:
$ echo -n "blotz"
$ echo -n "blotz" > file && cat file
$ touch blotz && ls blotz | tr -d $'\n'
$ echo blotz | grep --color=never b | tr -d $'\n'
E para o script !!
:
$ bash foo.sh 2> /dev/null | tr -d $'\n'