我需要一个命令,在terminal中绘制一条水平的“线”。 该行必须与terminal的长度完全相同(不pipe当前的terminal宽度),并且由一个破折号字符组成(尽pipe也可以使用一个水平行的unicode符号)。
如果它能被着色,它会更好。
我需要像这样使用它:
echo some text drawline echo more text
输出结果如下所示:
echo some text --------------------------------------------------------------------------------- echo more text
试试:
echo some text printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' - echo some text
在bash和zsh中可以使用$COLUMNS
变量。
我为此目的使用这条线:
printf %"$COLUMNS"s |tr " " "-"
您也可以使用seq
,但这不像其他解决方案那么直观:
seq -s- $COLUMNS|tr -d '[:digit:]'
编辑:
看来$COLUMNS
是一个本地的bash变量,你将需要导出它。 所以现在有(至少)2个选项。
在调用脚本之前导出变量:
export COLUMNS; ./your_script.sh
使用tput
Zumo de Vidrio建议。
printf %"$(tput cols)"s |tr " " "-"
一个简单的Perl单线程
stty size | perl -ale 'print "-"x$F[1]'
注意
您可以看到stty size
终端的高度和宽度