0

假设我想打印一行,以便在执行命令后填充终端中剩余的空间。它可能看起来像这样:

user1@host1:~>ls----------------------------------------------------------------

我有一些功能可以在终端上打印一行。这些最终使用有关终端尺寸的信息来执行此操作。功能如下:

returnTerminalDimension(){
    dimension="${1}"
    if [ "${dimension}" = "size" ]; then
        stty size
    else
        if [ "${dimension}" = "height" ]; then
            stty size | cut -d" " -f1
        else
            if [ "${dimension}" = "width" ]; then
                stty size | cut -d" " -f2
            fi
        fi
    fi
}

printCharacter(){
    character="${1}"
    numberOfTimesToPrintCharacter="${2}"
    for ((  currentPrintNumber = 0;  currentPrintNumber<=${numberOfTimesToPrintCharacter};  currentPrintNumber++  ))
    do
        echo -n "${character}"
    done
}

printLine(){
    numberOfLines=1
    terminalWidth="$(returnTerminalDimension "width")"
    numberOfCharactersToPrint=$(echo "${numberOfLines}*(${terminalWidth})-1" | bc)
    printCharacter "_" "${numberOfCharactersToPrint}"
}

有一种方法可以在执行指定命令之前立即执行命令。该命令(此处date以示例为例)可以指定如下:

trap 'date' DEBUG

因此,这将在每次使用回车时执行指定命令之前运行。

我如何计算刚刚执行的命令中使用的字符数,以便结合所有这些技巧以允许一行填充命令之后的剩余部分?

4

0 回答 0