Как установить высоту строки в xterm?

Для вашей фактической проблемы , которая заключается в том, что «дана строка, создайте ту же -длину строку = = Я согласен с другими ответами на изменение строки с использованием bash, zsh, tr, sed и т. д.

Но для вашего поставленного вопроса , который заключается в том, что «данное число создает строку такой длины», причина, по которой ваш подход не сработал, заключается в том, что bash выполняет «расширение параметров» который включает${#1}после расширения скобки ; см. руководство или информацию в разделе «Расширения оболочки» .

Некоторые способы, которыми вы можете создать строку, заданную только длиной:

  1. используйте ваш трюк %.0s, но с программойseqвместо раскрытия фигурных скобок (, потому что подстановка команд создает подоболочку, которая выполняется первой, и выполняет раскрытие параметров):
    printf '%s\n' "$1"; printf '=%.0s' $( seq ${#1} ); printf '\n'
  1. используйте формат «переменной ширины» в printfдля создания заполнения, а затем измените его:
    # create a string of spaces equal to length of $1, then convert spaces to =
    t=$(printf '%*s' ${#1} ''); printf '%s\n' "$1" "${t// /=}"

    # create a string of zeros equal to length of $1, then convert zeros to =
    t=$(printf '%0*d' ${#1} 0); printf '%s\n' "$1" "${t//0/=}"
  1. использовать perl, что довольно часто встречается в современных системах, но не POSIX:
    printf '%s\n' "$1" "$( perl -e "print '='x${#1}" )"
    # quoting $(perl...) isn't needed when we know (all) the chars are =
    # but is good practice in general
    # note I reverse the more common method of singlequoting a perl script
    # with internal strings doublequoted, because I _want_ shell expansion

0
27.10.2020, 00:08
1 ответ

Нашел! Просто было следующее.Xresources

UXTerm*vt100.scaleHeight: 1.45

1
18.03.2021, 22:54

Теги

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