Программа, отображающая этот вывод, не является оболочкой. Это systemd, который написан на C.
. Вероятно, что программа, вероятно, определяет ширину экрана / окна (технически «количество столбцов», т.е. пробелы, доступные для символов), а затем соответствующим образом выровняйте столбец OK / fail.
Чтобы сделать то же самое в Bash, вы можете получить столбцы из $COLUMNS, а затем использовать printf для печати вывода с выравниванием по правому краю. Например:
print_status(){
local message="$1"
local status="$2"
# Get the number of columns, but subtact 8 to leave space for the status.
local columns=$((COLUMNS-8))
# Print left-aligned message and right-aligned status.
printf "%-*s [%s] \n" "$columns" "$message" "$status"
}
# Print a status.
print_status "Doing something..." " OK "
# Print another status.
print_status "Doing something else..." "fail"
Для раскраски вы можете сделать это:
print_status "Doing something else..." $'\e[31mfail\e[m'