Linux 打印一个字符直到行尾
我想知道是否可以打印任何字符直到行尾。我知道这样问很愚蠢。 但如果可能的话,这将帮助我改善我的脚本的外观,因为人们使用不同大小的腻子窗口 目前我正在根据窗口大小打印“-”直到下线。但大小不同,其他终端的下一行是“-”。 如下图所示: echo“---------------------------------------------------------------------------------------” 我需要这个在shell脚本中完成。有没有办法找到屏幕宽度并相应打印 您可以使用:Linux 打印一个字符直到行尾,linux,shell,printing,scripting,echo,Linux,Shell,Printing,Scripting,Echo,我想知道是否可以打印任何字符直到行尾。我知道这样问很愚蠢。 但如果可能的话,这将帮助我改善我的脚本的外观,因为人们使用不同大小的腻子窗口 目前我正在根据窗口大小打印“-”直到下线。但大小不同,其他终端的下一行是“-”。 如下图所示: echo“---------------------------------------------------------------------------------------” 我需要这个在shell脚本中完成。有没有办法找到屏幕宽度并相应打印 您可以使用
tput cols
获取屏幕宽度。您可以使用:
tput cols
获取屏幕宽度。您可以使用:
cols=$(tput cols)
for ((i=0; i<cols; i++));do printf "-"; done; echo
您可以使用:
cols=$(tput cols)
for ((i=0; i<cols; i++));do printf "-"; done; echo
正如其他人所说,
tput cols
是获得端子宽度的合理标准方法。当您调整终端大小时,现代终端应发送一个可捕获并用于重新确定终端大小的数据。一些shell内置了对此的支持。如果使用bash shell并启用了checkwinsize
shell选项,bash
将尝试通过捕获此信号来保持环境变量行
和列
正确
你甚至会发疯,把自己困在陷阱里。我发现这两个相等的部分具有教育性和误导性:
trap 'tput cols' SIGWINCH
上述操作会导致外壳输出当前术语宽度,而不是在调整大小时立即输出,而是在调整大小后的下一次输入时输出。我假设这不是因为信号稍后触发,而是因为这是
trap
运行命令的最早机会。我认为这是外壳限制。正如其他人所说,tput cols
是获得终端宽度的合理标准方法。当您调整终端大小时,现代终端应发送一个可捕获并用于重新确定终端大小的数据。一些shell内置了对此的支持。如果使用bash shell并启用了checkwinsize
shell选项,bash
将尝试通过捕获此信号来保持环境变量行
和列
正确
你甚至会发疯,把自己困在陷阱里。我发现这两个相等的部分具有教育性和误导性:
trap 'tput cols' SIGWINCH
上述操作会导致外壳输出当前术语宽度,而不是在调整大小时立即输出,而是在调整大小后的下一次输入时输出。我假设这不是因为信号稍后触发,而是因为这是
trap
运行命令的最早机会。我认为这是一个外壳限制。它在zsh中工作,没有评估
eval printf '=%.0s' {1..$(tput cols)}
- bash eval将$(tput cols)替换为终端列计数
- bash用空格分隔的整数列表替换{1..count}
- bash printf根据其每个参数计算format=%.0s
- printf回显等号,因为它未转换格式
- printf%1格式加密
- printf%。宽度规格
- printf%.0指定零个字符宽
- printf%.0s指定结束宽度规范,并表示参数将被视为字符串,还将结束格式序列
eval printf '=%.0s' {1..$(tput cols)}
- bash eval将$(tput cols)替换为终端列计数
- bash用空格分隔的整数列表替换{1..count}
- bash printf根据其每个参数计算format=%.0s
- printf回显等号,因为它未转换格式
- printf%1格式加密
- printf%。宽度规格
- printf%.0指定零个字符宽
- printf%.0s指定结束宽度规范,并表示参数将被视为字符串,还将结束格式序列