假设我想打印一行,以便在执行命令后填充终端中剩余的空间。它可能看起来像这样:
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
因此,这将在每次使用回车时执行指定命令之前运行。
我如何计算刚刚执行的命令中使用的字符数,以便结合所有这些技巧以允许一行填充命令之后的剩余部分?