如何重复命令 bash 代码/脚本等效键入 Alt n

如何重复命令 bash 代码/脚本等效键入 Alt n

如何在 bash 代码/脚本中重复命令来表示输入 Alt n 作为重复次数,然后按一个键,然后按 Enter?

例如有行代码/脚本(typing Alt 7) f (Enter)

答案1

如果您的意思是重复一个字符n次,你可以这样做:

printf -v string X%.0s {1..12}

X将在 中存储 12 秒的序列$string

或者:

$ echo "$(printf X%.0s {1..12})"
XXXXXXXXXXXX

尽管这意味着分叉一个额外的过程。

您还可以使用辅助函数,例如:

repeat_string() {
  awk -- 'BEGIN{for (i = 0; i < ARGV[1]; i++) printf "%s", ARGV[2]}' "$@"
}

进而:

echo "$(repeat_string 12 X)"

在 中zsh,您可以使用其填充运算符:

$ echo ${(l[12][X])}
XXXXXXXXXXXX

这是一个l用 s 填充到长度 12 的空扩展 eft X。还有一个类似的right padding 参数扩展标志。

对于存储在变量中的计数和字符:

n=12 c=X
echo ${(pl[$n][$c])}

zsh还有一个repeat关键字(灵感来自tcsh's):

$ echo "$(repeat 12 printf %s X)"
XXXXXXXXXXXX

使用bash,您始终可以编写一个repeat可以重复简单命令的函数:

repeat() {
  local n="$1"
  shift
  while ((n-- > 0)); do
    "$@"
  done
}

然后echo "$(repeat 12 printf %s X)"像上面那样。

您可以模拟repeat关键字以使用别名重复复合命令:

alias repeat='i=0; while test "$((i++))" -lt'

然后再做echo "$(repeat 12; do printf %s X; done)"例子。

相关内容