Каждому символу соответствует определённый код, например - код ASCII. И соответственно символы можно выводить, используя соответствующие им коды. Например:
echo -e "\x48 \x65 \x6C \x6C \x6F \x21"
Эта команда выведет на терминал строку "H e l l o !". Я намеренно вставил пробелы между кодами символов для лучшей читаемости. Каждый символ представлен своим ASCII-кодом в шестандцатеричном виде. Ключ -e команды echo нужен для того, чтобы задействовать при выводе распознавание управляющих символов.
Для вывода символов по кодам в восьмеричном виде используется запись символа вида \0Z, где Z - это восьмеричный код символа в диапазоне от 0 до 177. Например, вывод строки "H e l l o !" в восьмеричных кодах:
echo -e "\0110 \0145 \0154 \0154 \0157 \041"
Таким образом можно выводить на терминал управляющие последовательности. Например, символ табуляции \t или символ перевода строки \n.
echo -e "\tОднажды, в студённую зимнюю пору\n\tЯ из лесу вышел, был сильный мороз..."
А также для вывода управляющих последовательностей эмулируемого терминала. Например в режиме эмуляции терминала VT-100, следующая команда очистит экран:
echo -en "\033c"
С помощью ключа -n команды echo при выводе строки на терминал не будет добавлен символ перевода строки \n.