Как создается столбец [OK] или [FAIL]?

Я хотел бы знать, как оболочка может отобразить последний столбец (OK или FAIL), как показано на этом изображении

(из этого вопроса .)

Может ли кто-нибудь помочь мне разобраться, как это делается?

1
задан 13 April 2017 в 15:24

1 ответ

Программа, отображающая этот вывод, не является оболочкой. Это 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'
7
ответ дан 23 May 2018 в 04:25

Другие вопросы по тегам:

Похожие вопросы: