Bash

如何重複命令 bash 程式碼/腳本等效鍵入 Alt n

  • September 3, 2022

如何在 bash 程式碼/腳本中重複命令以將輸入 Alt n 表示為重複次數,後跟一個鍵,然後按 Enter?

例如有行程式碼/腳本(typing Alt 7) f (Enter)

如果你的意思是,重複一個字元n次,你可以這樣做:

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

將儲存 12X秒的序列$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)"例如。

引用自:https://unix.stackexchange.com/questions/716021