Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 打印一个字符直到行尾_Linux_Shell_Printing_Scripting_Echo - Fatal编程技术网

Linux 打印一个字符直到行尾

Linux 打印一个字符直到行尾,linux,shell,printing,scripting,echo,Linux,Shell,Printing,Scripting,Echo,我想知道是否可以打印任何字符直到行尾。我知道这样问很愚蠢。 但如果可能的话,这将帮助我改善我的脚本的外观,因为人们使用不同大小的腻子窗口 目前我正在根据窗口大小打印“-”直到下线。但大小不同,其他终端的下一行是“-”。 如下图所示: echo“---------------------------------------------------------------------------------------” 我需要这个在shell脚本中完成。有没有办法找到屏幕宽度并相应打印 您可以使用

我想知道是否可以打印任何字符直到行尾。我知道这样问很愚蠢。 但如果可能的话,这将帮助我改善我的脚本的外观,因为人们使用不同大小的腻子窗口

目前我正在根据窗口大小打印“-”直到下线。但大小不同,其他终端的下一行是“-”。 如下图所示:

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指定结束宽度规范,并表示参数将被视为字符串,还将结束格式序列

它在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指定结束宽度规范,并表示参数将被视为字符串,还将结束格式序列

对于我来说(konsole 2.11.3;bash 4.2.45;ubuntu 12.04),输出会立即调整大小,通常会在调整大小时进行几次。可能是您的终端仿真器。@rici可能是。除了经验本身,最后一段大部分都是猜测。作为记录,这是OSX终端版本2.4(326)。我使用的是bash 4.3.18(1)版本(用自制软件构建)。对我来说(konsole 2.11.3;bash 4.2.45;ubuntu 12.04),输出会立即调整大小,通常是调整大小时的几次。可能是您的终端仿真器。@rici可能是。除了经验本身,最后一段大部分都是猜测。作为记录,这是OSX终端版本2.4(326)。我使用的是bash4.3.18(1)版本(用自制软件构建)。