indeviral
а какое преимущество этого?…
Лёгкость редактирования, например, в редакторе такой текст выглядит как обычно, но моя функция напечатает его в цвете.

запусти мой скрипт run без параметров и глянь на справку.
Справка создаётся автоматически из заголовков case-команд и функций. (БОЛЬШЕ НЕ НУЖНО ЗАДАВАТЬ ВОПРОС НЕ ПО ТЕМЕ)
раскраска справки, например как это показано в скриншоте или в моей утилите run из дистрибутива IceArch.

2) проще запустить скрипт, там происходит только посимвольный вывод текста, массивы не меняются.
в массиве sp указаны ключевые пробелы, которые заменяются цветом из массива col.
Если в тексте встречается ключевой пробел, он заменяется на сооответствующую ему \e[0 последовательность.
Просьба к знатокам — наваять команду на awk с запуском bash-функции для каждой части текста, совпадающей с шаблоном.

bash-скрипт работает медленно (нужен awk), заменяя ключевые пробелы на коды цвета вида \e[0;…

ЗАДАЧА: bash-функция должна вызываться на цепочке управляющих пробелов плюс любой другой символ после неё.
шаблон нужен примерно такой: [ \uA0[\u2000-200A]\u202F ]. где точка означает любой символ (одно вхождение), КРОМЕ тех, что в []
в функцию должны попадать: [\unicode2001любой_символ] или [\uA0\u2001\u202Fлюбой_символ] где любой символ не равен тем, что в []
НЮАНС: bash-функция использует две свои глобальные переменные, которые не должны теряться.
то есть функция должна считать то, что записала в эти переменные в предыдущий вызов, на предыдущем совпадении.

Плюсы: в консоли текст выглядит как обычно (нет затрудняющих восприятие ${color}), но скрипт напечатает текст в цвете.
Данный код работает не так, как описано в задаче: обход текста посимвольно:
man_ex(){ #цветной вывод, управляющие пробелы заменяются на \e[… сочетания
	local e t="$@" sp=(A0 2000 2001 2003 2004 2005 2006 2007 2008 2009 202F 200A) col=(R 30 31 32 33 34 35 36 37 F B L)
	for ((i=0;i<${#t};i++)); do     # обход текста посимвольно
		if ! [[ ${t:$i:1} =~  | | |[ - ]|  ]]; then #A0 2000 2001 2003-200A 202F
			printf %s "${t:$i:1}" #обычный символ
			continue
		fi
		c=$(printf %02X "'${t:$i:1}"); local a #массив 1 ключевые пробелы, массив 2 цвета
		if a=$(printf "%s\n" "${sp[@]}"| grep -nwm1 "$c"); then
			e="${col[$((${a%%:*}-1))]}" #sp ключевой пробел
			if [[ "$e" =~ F|B|L ]]; then #за sp идёт цвет. сначала цвет, затем фон:   Help…
				ctl="$e"
				continue
			fi # reset  Black  Red  Green  Yellow  Blue  Purple  Cyan  White  Backgr  Bold  Link
			case "${ctl:-0}" in
				F) esc="\e[4${e:(-1)}";		ctl=;; # fone \e[0;36m > \e[46m
				B) esc="\e[1;3${e:(-1)}"; ctl=;; # bold \e[0;36m > \e[1;36m
				L) esc="\e[4;3${e:(-1)}"; ctl=;; # link \e[0;36m > \e[4;36m
				*) [ "$esc" = "\e[0;$e" ] && esc="\e[1;7" || esc="\e[0;$e"; [[ $e = R ]] && esc="\e[0";;
			esac
			printf %s "${esc}m" #цвет, повтор добавит яркость: \e[1;7
		else
			printf \\u$c #обычный символ, нет совпадения с ключевым пробелом
		fi
	done #это символ. глобальные переменные: esc (пред. цвет), ctl (пред. код)
}
man="   ◢  ◤   ◢   ◤      ◤X Spectrum

   Retro    computer  "

echo -e "$(man_ex "$man")"
отлично, оба варианта работают. (в стандартной awk-документации только развёрнутые программы, без {}…)

но даже двойная цепочка с тремя sed-командами получается короче (конечно, не учитывая скорость)
sed -n '/^# <tag>/,$p' $0| sed '1d;/^# <.*>/,$d'
tags='# <x_alls> ~/.xinitrc всех Desktop Environment (этот текст расположен в скрипте после команда exit)
xrdb ~/.Xresources
echo more commands…
# <x_i3>
echo i3wm commands…
# <x_end>'

awk "/^# <x_alls>/{i=1;next}/^# <x_i3/{exit}i" <<<$tags
Проблема данной команды в том, что поиск не работает, если указать маску <x_.*> во втором шаблоне

Задача: завершить печать, когда в печатаемом тексте встретится любой тэг, т.е. строка '# <x_.*>'.
т.е. вывести текст между первым указанным тэгом-шаблоном и следующим, который может быть любым: '# <x_.*>'
вопрос по WindowsPE на мультизагрузочной флэшке от conty9:

/2k10/WinPE/W8x86PE.WIM и прочие WindowsPE в BIOS-режиме загружаются без проблем, но не загружается до конца из режима EFI, возможно из-за отсутствия подписи grub-загрузчика?
LDD /usr/bin
LDD(){ # файл[ы] или каталог: проверка зависимостей от общих объектов
	local flag bin=$(ls ${@:-/usr/bin}); for exe in $bin; do
		[[ $exe =~ / ]] || exe="$1/$exe"
		file -b --mime-type $(realpath "$exe") | grep -qE 'x-.*executable' || continue
		ldd=$(ldd "$exe" | grep 'not found')
		((${#ldd})) && flag=$flag"\nERROR $exe\n$ldd"
	done; #/usr/lib/jvm/java-*-openjdk/lib работают, но показывают: libjli.so => not found
	echo ${flag:-[${@:-/usr/bin}] $(wc -l <<<$bin) shared objects dependencies OK}; beep
}
Mirk
на десктопах только nm предлагает удобное выпадающее меню с выбором сетей в пару кликов, поэтому его и использую. Был ещё такой wicd, но из-за багов перестал использовать
netgui GUI for netctl или cmst-git QT GUI for Connman тоже довольно удобные.
red
ссылка на довольно интересную статью : Computer latency: 1977-2017
Очень показательная статья в плане глобального ухудшения качества товара, в частности, вычислительной техники.
Хотя в данной статье говорится, что игровые консоли имеют быстрый отклик, но это не совсем так: Задержка ввода на ретро-консолях
Вот моя светлая тема с патчами для XFCE http://victor-dobrov.narod.ru/share/gtk_dobrov-theme.tgz

Вот ещё одна, более новая: https://sourceforge.net/projects/xfce-evolution/files/